Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 /*
  2  * USB
  3  */
  4 #include <linux/kernel.h>
  5 #include <linux/module.h>
  6 #include <linux/init.h>
  7 #include <linux/platform_device.h>
  8 #include <linux/dma-mapping.h>
  9 
 10 #include <linux/usb/musb.h>
 11 #include <linux/usb/otg.h>
 12 
 13 #include <mach/common.h>
 14 #include <mach/hardware.h>
 15 #include <mach/irqs.h>
 16 
 17 #define DAVINCI_USB_OTG_BASE 0x01C64000
 18 
 19 #if defined(CONFIG_USB_MUSB_HDRC) || defined(CONFIG_USB_MUSB_HDRC_MODULE)
 20 static struct musb_hdrc_eps_bits musb_eps[] = {
 21         { "ep1_tx", 8, },
 22         { "ep1_rx", 8, },
 23         { "ep2_tx", 8, },
 24         { "ep2_rx", 8, },
 25         { "ep3_tx", 5, },
 26         { "ep3_rx", 5, },
 27         { "ep4_tx", 5, },
 28         { "ep4_rx", 5, },
 29 };
 30 
 31 static struct musb_hdrc_config musb_config = {
 32         .multipoint     = true,
 33         .dyn_fifo       = true,
 34         .soft_con       = true,
 35         .dma            = true,
 36 
 37         .num_eps        = 5,
 38         .dma_channels   = 8,
 39         .ram_bits       = 10,
 40         .eps_bits       = musb_eps,
 41 };
 42 
 43 static struct musb_hdrc_platform_data usb_data = {
 44 #if defined(CONFIG_USB_MUSB_OTG)
 45         /* OTG requires a Mini-AB connector */
 46         .mode           = MUSB_OTG,
 47 #elif defined(CONFIG_USB_MUSB_PERIPHERAL)
 48         .mode           = MUSB_PERIPHERAL,
 49 #elif defined(CONFIG_USB_MUSB_HOST)
 50         .mode           = MUSB_HOST,
 51 #endif
 52         .clock          = "usb",
 53         .config         = &musb_config,
 54 };
 55 
 56 static struct resource usb_resources[] = {
 57         {
 58                 /* physical address */
 59                 .start          = DAVINCI_USB_OTG_BASE,
 60                 .end            = DAVINCI_USB_OTG_BASE + 0x5ff,
 61                 .flags          = IORESOURCE_MEM,
 62         },
 63         {
 64                 .start          = IRQ_USBINT,
 65                 .flags          = IORESOURCE_IRQ,
 66         },
 67 };
 68 
 69 static u64 usb_dmamask = DMA_BIT_MASK(32);
 70 
 71 static struct platform_device usb_dev = {
 72         .name           = "musb_hdrc",
 73         .id             = -1,
 74         .dev = {
 75                 .platform_data          = &usb_data,
 76                 .dma_mask               = &usb_dmamask,
 77                 .coherent_dma_mask      = DMA_BIT_MASK(32),
 78         },
 79         .resource       = usb_resources,
 80         .num_resources  = ARRAY_SIZE(usb_resources),
 81 };
 82 
 83 void __init setup_usb(unsigned mA, unsigned potpgt_msec)
 84 {
 85         usb_data.power = mA / 2;
 86         usb_data.potpgt = potpgt_msec / 2;
 87         platform_device_register(&usb_dev);
 88 }
 89 
 90 #else
 91 
 92 void __init setup_usb(unsigned mA, unsigned potpgt_msec)
 93 {
 94 }
 95 
 96 #endif  /* CONFIG_USB_MUSB_HDRC */
 97 
 98 
  This page was automatically generated by the LXR engine.