[PATCH 2/3] add platform_device for USB DR pheripheral driver
Kumar Gala
galak at kernel.crashing.org
Wed Feb 7 03:33:38 EST 2007
On Feb 6, 2007, at 3:05 AM, Li Yang wrote:
> Add platform_device setup code for OTG/peripheral mode of
> 834x DR module. It is needed for USB client driver to work.
>
> Signed-off-by: Li Yang <leoli at freescale.com>
> ---
> arch/powerpc/sysdev/fsl_soc.c | 76 ++++++++++++++++++++++++++++++
> +----------
> 1 files changed, 58 insertions(+), 18 deletions(-)
>
> diff --git a/arch/powerpc/sysdev/fsl_soc.c b/arch/powerpc/sysdev/
> fsl_soc.c
> index ad31e56..8e4837a 100644
> --- a/arch/powerpc/sysdev/fsl_soc.c
> +++ b/arch/powerpc/sysdev/fsl_soc.c
> @@ -440,7 +440,8 @@ static int __init fsl_usb_of_init(void)
> {
> struct device_node *np;
> unsigned int i;
> - struct platform_device *usb_dev_mph = NULL, *usb_dev_dr = NULL;
> + struct platform_device *usb_dev_mph = NULL, *usb_dev_dr_host = NULL,
> + *usb_dev_dr_client = NULL;
> int ret;
> for (np = NULL, i = 0;
> @@ -506,33 +507,72 @@ static int __init fsl_usb_of_init(void)
> of_irq_to_resource(np, 0, &r[1]);
> - usb_dev_dr =
> - platform_device_register_simple("fsl-ehci", i, r, 2);
> - if (IS_ERR(usb_dev_dr)) {
> - ret = PTR_ERR(usb_dev_dr);
> + prop = get_property(np, "dr_mode", NULL);
> +
We should handle the !prop case as equivalent to "host". The reason
is that if I accept this patch its going to break people until the
usb side is also in. I'd prefer to maintain the exact meaning of
'dr_mode' not existing as 'host'.
> + if (prop && !strcmp(prop, "host")) {
> + usb_data.operating_mode = FSL_USB2_DR_HOST;
> + usb_dev_dr_host = platform_device_register_simple(
> + "fsl-ehci", i, r, 2);
> + if (IS_ERR(usb_dev_dr_host)) {
> + ret = PTR_ERR(usb_dev_dr_host);
> + goto err;
> + }
> + } else if (prop && !strcmp(prop, "peripheral")) {
> + usb_data.operating_mode = FSL_USB2_DR_DEVICE;
> + usb_dev_dr_client = platform_device_register_simple(
> + "fsl-usb2-udc", i, r, 2);
> + if (IS_ERR(usb_dev_dr_client)) {
> + ret = PTR_ERR(usb_dev_dr_client);
> + goto err;
> + }
> + } else if (!prop || (prop && !strcmp(prop, "otg"))) {
> + usb_data.operating_mode = FSL_USB2_DR_OTG;
> + usb_dev_dr_host = platform_device_register_simple(
> + "fsl-ehci", i, r, 2);
> + if (IS_ERR(usb_dev_dr_host)) {
> + ret = PTR_ERR(usb_dev_dr_host);
> + goto err;
> + }
> + usb_dev_dr_client = platform_device_register_simple(
> + "fsl-usb2-udc", i, r, 2);
> + if (IS_ERR(usb_dev_dr_client)) {
> + ret = PTR_ERR(usb_dev_dr_client);
> + goto err;
> + }
> + } else {
- k
More information about the Linuxppc-dev
mailing list