/* Returns: %-ENODEV if the SSP port is unavailable %-EBUSY if the resources are already in use %0 on success  */
int ssp_init(void)
/* Returns: %-ENODEV if the SSP port is unavailable %-EBUSY if the resources are already in use %0 on success  */
int ssp_init(void)
{
	int ret;
	if (!(PPAR & PPAR_SPR) && (Ser4MCCR0 & MCCR0_MCE))
		return -ENODEV;
	if (!request_mem_region(__PREG(Ser4SSCR0), 0x18, "SSP")) {
		return -EBUSY;
	}
	Ser4SSSR = SSSR_ROR;
	ret = request_irq(IRQ_Ser4SSP, ssp_interrupt, 0, "SSP", NULL);
	if (ret)
		goto out_region;
	return 0;
 out_region:
	release_mem_region(__PREG(Ser4SSCR0), 0x18);
	return ret;
}