diff options
Diffstat (limited to 'arch/arm/mach-ux500/cpu-db5500.c')
| -rw-r--r-- | arch/arm/mach-ux500/cpu-db5500.c | 36 | 
1 files changed, 29 insertions, 7 deletions
diff --git a/arch/arm/mach-ux500/cpu-db5500.c b/arch/arm/mach-ux500/cpu-db5500.c index 18aa5c05c69..bca47f32082 100644 --- a/arch/arm/mach-ux500/cpu-db5500.c +++ b/arch/arm/mach-ux500/cpu-db5500.c @@ -147,13 +147,13 @@ static resource_size_t __initdata db5500_gpio_base[] = {  	U5500_GPIOBANK7_BASE,  }; -static void __init db5500_add_gpios(void) +static void __init db5500_add_gpios(struct device *parent)  {  	struct nmk_gpio_platform_data pdata = {  		/* No custom data yet */  	}; -	dbx500_add_gpios(ARRAY_AND_SIZE(db5500_gpio_base), +	dbx500_add_gpios(parent, ARRAY_AND_SIZE(db5500_gpio_base),  			 IRQ_DB5500_GPIO0, &pdata);  } @@ -212,14 +212,36 @@ static int usb_db5500_tx_dma_cfg[] = {  	DB5500_DMA_DEV38_USB_OTG_OEP_8  }; -void __init u5500_init_devices(void) +static const char *db5500_read_soc_id(void)  { -	db5500_add_gpios(); +	return kasprintf(GFP_KERNEL, "u5500 currently unsupported\n"); +} + +static struct device * __init db5500_soc_device_init(void) +{ +	const char *soc_id = db5500_read_soc_id(); + +	return ux500_soc_device_init(soc_id); +} + +struct device * __init u5500_init_devices(void) +{ +	struct device *parent; +	int i; + +	parent = db5500_soc_device_init(); + +	db5500_add_gpios(parent);  	db5500_pmu_init(); -	db5500_dma_init(); -	db5500_add_rtc(); -	db5500_add_usb(usb_db5500_rx_dma_cfg, usb_db5500_tx_dma_cfg); +	db5500_dma_init(parent); +	db5500_add_rtc(parent); +	db5500_add_usb(parent, usb_db5500_rx_dma_cfg, usb_db5500_tx_dma_cfg); + +	for (i = 0; i < ARRAY_SIZE(db5500_platform_devs); i++) +		db5500_platform_devs[i]->dev.parent = parent;  	platform_add_devices(db5500_platform_devs,  			     ARRAY_SIZE(db5500_platform_devs)); + +	return parent;  }  |