source: trunk/target/linux/gemini/patches-3.3/121-arm-gemini-add-ethernet-device.patch @ 31698

Last change on this file since 31698 was 31698, checked in by juhosg, 4 years ago

gemini: add support for 3.3

File size: 2.0 KB
  • arch/arm/mach-gemini/common.h

    a b  
    1313#define __GEMINI_COMMON_H__ 
    1414 
    1515struct mtd_partition; 
     16struct gemini_gmac_platform_data; 
    1617 
    1718extern void gemini_map_io(void); 
    1819extern void gemini_init_irq(void); 
    extern int platform_register_pflash(unsi 
    2627                                    struct mtd_partition *parts, 
    2728                                    unsigned int nr_parts); 
    2829extern int platform_register_watchdog(void); 
     30extern int platform_register_ethernet(struct gemini_gmac_platform_data *pdata); 
    2931 
    3032#endif /* __GEMINI_COMMON_H__ */ 
  • arch/arm/mach-gemini/devices.c

    a b  
    1717#include <mach/irqs.h> 
    1818#include <mach/hardware.h> 
    1919#include <mach/global_reg.h> 
     20#include <mach/gmac.h> 
    2021#include "common.h" 
    2122 
    2223static struct plat_serial8250_port serial_platform_data[] = { 
    int __init platform_register_watchdog(vo 
    134135{ 
    135136        return platform_device_register(&wdt_device); 
    136137} 
     138 
     139static struct resource gmac_resources[] = { 
     140        { 
     141                .start  = 0x60000000, 
     142                .end    = 0x6000ffff, 
     143                .flags  = IORESOURCE_MEM, 
     144        }, 
     145        { 
     146                .start  = IRQ_GMAC0, 
     147                .end    = IRQ_GMAC0, 
     148                .flags  = IORESOURCE_IRQ, 
     149        }, 
     150        { 
     151                .start  = IRQ_GMAC1, 
     152                .end    = IRQ_GMAC1, 
     153                .flags  = IORESOURCE_IRQ, 
     154        }, 
     155}; 
     156 
     157static u64 gmac_dmamask = 0xffffffffUL; 
     158 
     159static struct platform_device ethernet_device = { 
     160        .name   = "gemini-gmac", 
     161        .id     = 0, 
     162        .dev    = { 
     163                .dma_mask = &gmac_dmamask, 
     164                .coherent_dma_mask = DMA_BIT_MASK(32), 
     165        }, 
     166        .num_resources  = ARRAY_SIZE(gmac_resources), 
     167        .resource       = gmac_resources, 
     168}; 
     169 
     170int __init platform_register_ethernet(struct gemini_gmac_platform_data *pdata) 
     171{ 
     172        unsigned int reg; 
     173 
     174        reg = __raw_readl(IO_ADDRESS(GEMINI_GLOBAL_BASE) + GLOBAL_MISC_CTRL); 
     175        reg &= ~(GMAC_GMII | GMAC_1_ENABLE); 
     176 
     177        if (pdata->bus_id[1]) 
     178                reg |= GMAC_1_ENABLE; 
     179        else if (pdata->interface[0] == PHY_INTERFACE_MODE_GMII) 
     180                reg |= GMAC_GMII; 
     181 
     182        __raw_writel(reg, IO_ADDRESS(GEMINI_GLOBAL_BASE) + GLOBAL_MISC_CTRL); 
     183 
     184        ethernet_device.dev.platform_data = pdata; 
     185 
     186        return platform_device_register(&ethernet_device); 
     187} 
Note: See TracBrowser for help on using the repository browser.