Ignore:
Timestamp:
2009-12-26T15:19:13+01:00 (7 years ago)
Author:
juhosg
Message:

ar71xx: move USB host device support into a separate file

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/ar71xx/files/arch/mips/ar71xx/devices.c

    r18937 r18940  
    1515#include <linux/init.h> 
    1616#include <linux/delay.h> 
    17 #include <linux/dma-mapping.h> 
    1817#include <linux/etherdevice.h> 
    1918#include <linux/platform_device.h> 
     
    2524 
    2625static u8 ar71xx_mac_base[ETH_ALEN] __initdata; 
    27  
    28 /* 
    29  * OHCI (USB full speed host controller) 
    30  */ 
    31 static struct resource ar71xx_ohci_resources[] = { 
    32         [0] = { 
    33                 .start  = AR71XX_OHCI_BASE, 
    34                 .end    = AR71XX_OHCI_BASE + AR71XX_OHCI_SIZE - 1, 
    35                 .flags  = IORESOURCE_MEM, 
    36         }, 
    37         [1] = { 
    38                 .start  = AR71XX_MISC_IRQ_OHCI, 
    39                 .end    = AR71XX_MISC_IRQ_OHCI, 
    40                 .flags  = IORESOURCE_IRQ, 
    41         }, 
    42 }; 
    43  
    44 static struct resource ar7240_ohci_resources[] = { 
    45         [0] = { 
    46                 .start  = AR7240_OHCI_BASE, 
    47                 .end    = AR7240_OHCI_BASE + AR7240_OHCI_SIZE - 1, 
    48                 .flags  = IORESOURCE_MEM, 
    49         }, 
    50         [1] = { 
    51                 .start  = AR71XX_CPU_IRQ_USB, 
    52                 .end    = AR71XX_CPU_IRQ_USB, 
    53                 .flags  = IORESOURCE_IRQ, 
    54         }, 
    55 }; 
    56  
    57 static u64 ar71xx_ohci_dmamask = DMA_BIT_MASK(32); 
    58 static struct platform_device ar71xx_ohci_device = { 
    59         .name           = "ar71xx-ohci", 
    60         .id             = -1, 
    61         .resource       = ar71xx_ohci_resources, 
    62         .num_resources  = ARRAY_SIZE(ar71xx_ohci_resources), 
    63         .dev = { 
    64                 .dma_mask               = &ar71xx_ohci_dmamask, 
    65                 .coherent_dma_mask      = DMA_BIT_MASK(32), 
    66         }, 
    67 }; 
    68  
    69 /* 
    70  * EHCI (USB full speed host controller) 
    71  */ 
    72 static struct resource ar71xx_ehci_resources[] = { 
    73         [0] = { 
    74                 .start  = AR71XX_EHCI_BASE, 
    75                 .end    = AR71XX_EHCI_BASE + AR71XX_EHCI_SIZE - 1, 
    76                 .flags  = IORESOURCE_MEM, 
    77         }, 
    78         [1] = { 
    79                 .start  = AR71XX_CPU_IRQ_USB, 
    80                 .end    = AR71XX_CPU_IRQ_USB, 
    81                 .flags  = IORESOURCE_IRQ, 
    82         }, 
    83 }; 
    84  
    85  
    86 static u64 ar71xx_ehci_dmamask = DMA_BIT_MASK(32); 
    87 static struct ar71xx_ehci_platform_data ar71xx_ehci_data; 
    88  
    89 static struct platform_device ar71xx_ehci_device = { 
    90         .name           = "ar71xx-ehci", 
    91         .id             = -1, 
    92         .resource       = ar71xx_ehci_resources, 
    93         .num_resources  = ARRAY_SIZE(ar71xx_ehci_resources), 
    94         .dev = { 
    95                 .dma_mask               = &ar71xx_ehci_dmamask, 
    96                 .coherent_dma_mask      = DMA_BIT_MASK(32), 
    97                 .platform_data          = &ar71xx_ehci_data, 
    98         }, 
    99 }; 
    100  
    101 #define AR71XX_USB_RESET_MASK \ 
    102         (RESET_MODULE_USB_HOST | RESET_MODULE_USB_PHY \ 
    103         | RESET_MODULE_USB_OHCI_DLL) 
    104  
    105 #define AR7240_USB_RESET_MASK \ 
    106         (RESET_MODULE_USB_HOST | RESET_MODULE_USB_OHCI_DLL_7240) 
    107  
    108 static void __init ar71xx_usb_setup(void) 
    109 { 
    110         ar71xx_device_stop(AR71XX_USB_RESET_MASK); 
    111         mdelay(1000); 
    112         ar71xx_device_start(AR71XX_USB_RESET_MASK); 
    113  
    114         /* Turning on the Buff and Desc swap bits */ 
    115         ar71xx_usb_ctrl_wr(USB_CTRL_REG_CONFIG, 0xf0000); 
    116  
    117         /* WAR for HW bug. Here it adjusts the duration between two SOFS */ 
    118         ar71xx_usb_ctrl_wr(USB_CTRL_REG_FLADJ, 0x20c00); 
    119  
    120         mdelay(900); 
    121 } 
    122  
    123 static void __init ar7240_usb_setup(void) 
    124 { 
    125         ar71xx_ohci_device.resource = ar7240_ohci_resources; 
    126  
    127         ar71xx_device_stop(AR7240_USB_RESET_MASK); 
    128         mdelay(1000); 
    129         ar71xx_device_start(AR7240_USB_RESET_MASK); 
    130  
    131         /* WAR for HW bug. Here it adjusts the duration between two SOFS */ 
    132         ar71xx_usb_ctrl_wr(USB_CTRL_REG_FLADJ, 0x3); 
    133 } 
    134  
    135 static void __init ar91xx_usb_setup(void) 
    136 { 
    137         ar71xx_device_stop(RESET_MODULE_USBSUS_OVERRIDE); 
    138         mdelay(10); 
    139  
    140         ar71xx_device_start(RESET_MODULE_USB_HOST); 
    141         mdelay(10); 
    142  
    143         ar71xx_device_start(RESET_MODULE_USB_PHY); 
    144         mdelay(10); 
    145 } 
    146  
    147 void __init ar71xx_add_device_usb(void) 
    148 { 
    149         switch (ar71xx_soc) { 
    150         case AR71XX_SOC_AR7240: 
    151                 ar7240_usb_setup(); 
    152                 platform_device_register(&ar71xx_ohci_device); 
    153                 break; 
    154  
    155         case AR71XX_SOC_AR7130: 
    156         case AR71XX_SOC_AR7141: 
    157         case AR71XX_SOC_AR7161: 
    158                 ar71xx_usb_setup(); 
    159                 platform_device_register(&ar71xx_ohci_device); 
    160                 platform_device_register(&ar71xx_ehci_device); 
    161                 break; 
    162  
    163         case AR71XX_SOC_AR9130: 
    164         case AR71XX_SOC_AR9132: 
    165                 ar91xx_usb_setup(); 
    166                 ar71xx_ehci_data.is_ar91xx = 1; 
    167                 platform_device_register(&ar71xx_ehci_device); 
    168                 break; 
    169  
    170         default: 
    171                 BUG(); 
    172         } 
    173 } 
    17426 
    17527static struct resource ar71xx_uart_resources[] = { 
Note: See TracChangeset for help on using the changeset viewer.