Commit 4bec245f authored by David Brownell's avatar David Brownell Committed by Russell King

[ARM PATCH] 1711/1: pxa2xx_udc (3/5) add udc platform_device, platform_data

Patch from David Brownell

This declares the pxa2xx_udc platform device, defines
the platform_data made available to that driver, and
allows different machines to customize that platform_data.

Same idea as in the FB driver.  Be careful of patch conflicts
applying to other kernels, mostly due to different platform
devices being listed.
parent 885abe07
...@@ -30,6 +30,8 @@ ...@@ -30,6 +30,8 @@
#include <asm/pgtable.h> #include <asm/pgtable.h>
#include <asm/mach/map.h> #include <asm/mach/map.h>
#include <asm/arch/udc.h>
#include "generic.h" #include "generic.h"
/* /*
...@@ -168,8 +170,44 @@ static struct platform_device pxamci_device = { ...@@ -168,8 +170,44 @@ static struct platform_device pxamci_device = {
.resource = pxamci_resources, .resource = pxamci_resources,
}; };
static struct pxa2xx_udc_mach_info pxa_udc_info;
void __init pxa_set_udc_info(struct pxa2xx_udc_mach_info *info)
{
memcpy(&pxa_udc_info, info, sizeof *info);
}
EXPORT_SYMBOL(pxa_set_udc_info);
static struct resource pxa2xx_udc_resources[] = {
[0] = {
.start = 0x40600000,
.end = 0x4060ffff,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = IRQ_USB,
.end = IRQ_USB,
.flags = IORESOURCE_IRQ,
},
};
static u64 udc_dma_mask = ~(u32)0;
static struct platform_device udc_device = {
.name = "pxa2xx_udc",
.id = 0,
.resource = pxa2xx_udc_resources,
.num_resources = ARRAY_SIZE(pxa2xx_udc_resources),
.dev = {
.platform_data = &pxa_udc_info,
.dma_mask = &udc_dma_mask,
}
};
static struct platform_device *devices[] __initdata = { static struct platform_device *devices[] __initdata = {
&pxamci_device, &pxamci_device,
&udc_device,
}; };
static int __init pxa_init(void) static int __init pxa_init(void)
......
/*
* linux/include/asm-arm/arch-pxa/udc.h
*
* This supports machine-specific differences in how the PXA2xx
* USB Device Controller (UDC) is wired.
*
* It is set in linux/arch/arm/mach-pxa/<machine>.c and used in
* the probe routine of linux/drivers/usb/gadget/pxa2xx_udc.c
*/
struct pxa2xx_udc_mach_info {
int (*udc_is_connected)(void); /* do we see host? */
void (*udc_command)(int cmd);
#define PXA2XX_UDC_CMD_CONNECT 0 /* let host see us */
#define PXA2XX_UDC_CMD_DISCONNECT 1 /* so host won't see us */
};
extern void pxa_set_udc_info(struct pxa2xx_udc_mach_info *info);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment