diff options
Diffstat (limited to 'arch/arm/mach-omap2/devices.c')
| -rw-r--r-- | arch/arm/mach-omap2/devices.c | 76 | 
1 files changed, 58 insertions, 18 deletions
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c index 626f3ea3142..1ec7f059771 100644 --- a/arch/arm/mach-omap2/devices.c +++ b/arch/arm/mach-omap2/devices.c @@ -20,6 +20,7 @@  #include <linux/pinctrl/machine.h>  #include <linux/platform_data/omap4-keypad.h>  #include <linux/platform_data/omap_ocp2scp.h> +#include <linux/usb/omap_control_usb.h>  #include <asm/mach-types.h>  #include <asm/mach/map.h> @@ -61,14 +62,13 @@ static int __init omap3_l3_init(void)  	if (!oh)  		pr_err("could not look up %s\n", oh_name); -	pdev = omap_device_build("omap_l3_smx", 0, oh, NULL, 0, -							   NULL, 0, 0); +	pdev = omap_device_build("omap_l3_smx", 0, oh, NULL, 0);  	WARN(IS_ERR(pdev), "could not build omap_device for %s\n", oh_name);  	return IS_ERR(pdev) ? PTR_ERR(pdev) : 0;  } -postcore_initcall(omap3_l3_init); +omap_postcore_initcall(omap3_l3_init);  static int __init omap4_l3_init(void)  { @@ -96,14 +96,13 @@ static int __init omap4_l3_init(void)  			pr_err("could not look up %s\n", oh_name);  	} -	pdev = omap_device_build_ss("omap_l3_noc", 0, oh, 3, NULL, -						     0, NULL, 0, 0); +	pdev = omap_device_build_ss("omap_l3_noc", 0, oh, 3, NULL, 0);  	WARN(IS_ERR(pdev), "could not build omap_device for %s\n", oh_name);  	return IS_ERR(pdev) ? PTR_ERR(pdev) : 0;  } -postcore_initcall(omap4_l3_init); +omap_postcore_initcall(omap4_l3_init);  #if defined(CONFIG_VIDEO_OMAP2) || defined(CONFIG_VIDEO_OMAP2_MODULE) @@ -254,6 +253,49 @@ static inline void omap_init_camera(void)  #endif  } +#if IS_ENABLED(CONFIG_OMAP_CONTROL_USB) +static struct omap_control_usb_platform_data omap4_control_usb_pdata = { +	.type = 1, +}; + +struct resource omap4_control_usb_res[] = { +	{ +		.name	= "control_dev_conf", +		.start	= 0x4a002300, +		.end	= 0x4a002303, +		.flags	= IORESOURCE_MEM, +	}, +	{ +		.name	= "otghs_control", +		.start	= 0x4a00233c, +		.end	= 0x4a00233f, +		.flags	= IORESOURCE_MEM, +	}, +}; + +static struct platform_device omap4_control_usb = { +	.name = "omap-control-usb", +	.id = -1, +	.dev = { +		.platform_data = &omap4_control_usb_pdata, +	}, +	.num_resources = 2, +	.resource = omap4_control_usb_res, +}; + +static inline void __init omap_init_control_usb(void) +{ +	if (!cpu_is_omap44xx()) +		return; + +	if (platform_device_register(&omap4_control_usb)) +		pr_err("Error registering omap_control_usb device\n"); +} + +#else +static inline void omap_init_control_usb(void) { } +#endif /* CONFIG_OMAP_CONTROL_USB */ +  int __init omap4_keyboard_init(struct omap4_keypad_platform_data  			*sdp4430_keypad_data, struct omap_board_data *bdata)  { @@ -273,7 +315,7 @@ int __init omap4_keyboard_init(struct omap4_keypad_platform_data  	keypad_data = sdp4430_keypad_data;  	pdev = omap_device_build(name, id, oh, keypad_data, -			sizeof(struct omap4_keypad_platform_data), NULL, 0, 0); +				 sizeof(struct omap4_keypad_platform_data));  	if (IS_ERR(pdev)) {  		WARN(1, "Can't build omap_device for %s:%s.\n", @@ -297,7 +339,7 @@ static inline void __init omap_init_mbox(void)  		return;  	} -	pdev = omap_device_build("omap-mailbox", -1, oh, NULL, 0, NULL, 0, 0); +	pdev = omap_device_build("omap-mailbox", -1, oh, NULL, 0);  	WARN(IS_ERR(pdev), "%s: could not build device, err %ld\n",  						__func__, PTR_ERR(pdev));  } @@ -337,7 +379,7 @@ static void __init omap_init_mcpdm(void)  		return;  	} -	pdev = omap_device_build("omap-mcpdm", -1, oh, NULL, 0, NULL, 0, 0); +	pdev = omap_device_build("omap-mcpdm", -1, oh, NULL, 0);  	WARN(IS_ERR(pdev), "Can't build omap_device for omap-mcpdm.\n");  }  #else @@ -358,7 +400,7 @@ static void __init omap_init_dmic(void)  		return;  	} -	pdev = omap_device_build("omap-dmic", -1, oh, NULL, 0, NULL, 0, 0); +	pdev = omap_device_build("omap-dmic", -1, oh, NULL, 0);  	WARN(IS_ERR(pdev), "Can't build omap_device for omap-dmic.\n");  }  #else @@ -384,8 +426,7 @@ static void __init omap_init_hdmi_audio(void)  		return;  	} -	pdev = omap_device_build("omap-hdmi-audio-dai", -		-1, oh, NULL, 0, NULL, 0, 0); +	pdev = omap_device_build("omap-hdmi-audio-dai", -1, oh, NULL, 0);  	WARN(IS_ERR(pdev),  	     "Can't build omap_device for omap-hdmi-audio-dai.\n"); @@ -429,8 +470,7 @@ static int __init omap_mcspi_init(struct omap_hwmod *oh, void *unused)  	}  	spi_num++; -	pdev = omap_device_build(name, spi_num, oh, pdata, -				sizeof(*pdata),	NULL, 0, 0); +	pdev = omap_device_build(name, spi_num, oh, pdata, sizeof(*pdata));  	WARN(IS_ERR(pdev), "Can't build omap_device for %s:%s\n",  				name, oh->name);  	kfree(pdata); @@ -460,7 +500,7 @@ static void omap_init_rng(void)  	if (!oh)  		return; -	pdev = omap_device_build("omap_rng", -1, oh, NULL, 0, NULL, 0, 0); +	pdev = omap_device_build("omap_rng", -1, oh, NULL, 0);  	WARN(IS_ERR(pdev), "Can't build omap_device for omap_rng\n");  } @@ -689,8 +729,7 @@ static void __init omap_init_ocp2scp(void)  	pdata->dev_cnt	= dev_cnt; -	pdev = omap_device_build(name, bus_id, oh, pdata, sizeof(*pdata), NULL, -								0, false); +	pdev = omap_device_build(name, bus_id, oh, pdata, sizeof(*pdata));  	if (IS_ERR(pdev)) {  		pr_err("Could not build omap_device for %s %s\n",  						name, oh_name); @@ -721,6 +760,7 @@ static int __init omap2_init_devices(void)  	omap_init_mbox();  	/* If dtb is there, the devices will be created dynamically */  	if (!of_have_populated_dt()) { +		omap_init_control_usb();  		omap_init_dmic();  		omap_init_mcpdm();  		omap_init_mcspi(); @@ -734,4 +774,4 @@ static int __init omap2_init_devices(void)  	return 0;  } -arch_initcall(omap2_init_devices); +omap_arch_initcall(omap2_init_devices);  |