~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/arm/mach-davinci/usb.c

Version: ~ [ linux-5.11 ] ~ [ linux-5.10.17 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.99 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.176 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.221 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.257 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.257 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.140 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.85 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  * USB
  3  */
  4 #include <linux/init.h>
  5 #include <linux/platform_device.h>
  6 #include <linux/dma-mapping.h>
  7 
  8 #include <linux/usb/musb.h>
  9 
 10 #include <mach/common.h>
 11 #include <mach/irqs.h>
 12 #include <mach/cputype.h>
 13 #include <linux/platform_data/usb-davinci.h>
 14 
 15 #define DAVINCI_USB_OTG_BASE    0x01c64000
 16 
 17 #if IS_ENABLED(CONFIG_USB_MUSB_HDRC)
 18 static struct musb_hdrc_config musb_config = {
 19         .multipoint     = true,
 20 
 21         .num_eps        = 5,
 22         .ram_bits       = 10,
 23 };
 24 
 25 static struct musb_hdrc_platform_data usb_data = {
 26         /* OTG requires a Mini-AB connector */
 27         .mode           = MUSB_OTG,
 28         .clock          = "usb",
 29         .config         = &musb_config,
 30 };
 31 
 32 static struct resource usb_resources[] = {
 33         {
 34                 /* physical address */
 35                 .start          = DAVINCI_USB_OTG_BASE,
 36                 .end            = DAVINCI_USB_OTG_BASE + 0x5ff,
 37                 .flags          = IORESOURCE_MEM,
 38         },
 39         {
 40                 .start          = IRQ_USBINT,
 41                 .flags          = IORESOURCE_IRQ,
 42                 .name           = "mc"
 43         },
 44         {
 45                 /* placeholder for the dedicated CPPI IRQ */
 46                 .flags          = IORESOURCE_IRQ,
 47                 .name           = "dma"
 48         },
 49 };
 50 
 51 static u64 usb_dmamask = DMA_BIT_MASK(32);
 52 
 53 static struct platform_device usb_dev = {
 54         .name           = "musb-davinci",
 55         .id             = -1,
 56         .dev = {
 57                 .platform_data          = &usb_data,
 58                 .dma_mask               = &usb_dmamask,
 59                 .coherent_dma_mask      = DMA_BIT_MASK(32),
 60         },
 61         .resource       = usb_resources,
 62         .num_resources  = ARRAY_SIZE(usb_resources),
 63 };
 64 
 65 void __init davinci_setup_usb(unsigned mA, unsigned potpgt_ms)
 66 {
 67         usb_data.power = mA > 510 ? 255 : mA / 2;
 68         usb_data.potpgt = (potpgt_ms + 1) / 2;
 69 
 70         if (cpu_is_davinci_dm646x()) {
 71                 /* Override the defaults as DM6467 uses different IRQs. */
 72                 usb_dev.resource[1].start = IRQ_DM646X_USBINT;
 73                 usb_dev.resource[2].start = IRQ_DM646X_USBDMAINT;
 74         } else  /* other devices don't have dedicated CPPI IRQ */
 75                 usb_dev.num_resources = 2;
 76 
 77         platform_device_register(&usb_dev);
 78 }
 79 
 80 #else
 81 
 82 void __init davinci_setup_usb(unsigned mA, unsigned potpgt_ms)
 83 {
 84 }
 85 
 86 #endif  /* CONFIG_USB_MUSB_HDRC */
 87 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp