source: trunk/target/linux/brcm63xx/patches-2.6.32/180-udc_preliminary_support.patch @ 21631

Last change on this file since 21631 was 21631, checked in by cshore, 6 years ago

brcm63xx: Fixed 96348GW (Tecom Gx00) LED definitions to match reality (vs reference design)

File size: 9.1 KB
  • arch/mips/bcm63xx/boards/board_bcm963xx.c

    old new  
    2828#include <bcm63xx_dev_pcmcia.h> 
    2929#include <bcm63xx_dev_usb_ohci.h> 
    3030#include <bcm63xx_dev_usb_ehci.h> 
     31#include <bcm63xx_dev_usb_udc.h> 
    3132#include <board_bcm963xx.h> 
    3233 
    3334#define PFX     "board_bcm963xx: " 
     
    390391        .has_ohci0 = 1, 
    391392        .has_pccard = 1, 
    392393        .has_ehci0 = 1, 
     394        .has_udc0                       = 1, 
    393395}; 
    394396 
    395397static struct board_info __initdata board_rta1025w_16 = { 
     
    934936        if (board.has_dsp) 
    935937                bcm63xx_dsp_register(&board.dsp); 
    936938 
     939        if (board.has_udc0) 
     940                bcm63xx_udc_register(); 
     941 
    937942        /* Generate MAC address for WLAN and 
    938943         * register our SPROM */ 
    939944#ifdef CONFIG_SSB_PCIHOST 
  • new file linux-2.6.32.13/arch/mips/bcm63xx/dev-usb-udc.c

    - +  
     1/* 
     2 * Copyright (C) 2009   Henk Vergonet <Henk.Vergonet@gmail.com> 
     3 * 
     4 * This program is free software; you can redistribute it and/or 
     5 * modify it under the terms of the GNU General Public License as 
     6 * published by the Free Software Foundation; either version 2 of 
     7 * the License, or (at your option) any later version. 
     8 * 
     9 * This program is distributed in the hope that it will be useful, 
     10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 
     11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
     12 * GNU General Public License for more details. 
     13 * 
     14 * You should have received a copy of the GNU General Public License 
     15 * along with this program; if not, write to the Free Software 
     16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 
     17 */ 
     18#include <linux/init.h> 
     19#include <linux/kernel.h> 
     20#include <linux/platform_device.h> 
     21#include <bcm63xx_cpu.h> 
     22 
     23static struct resource udc_resources[] = { 
     24        { 
     25                .start          = -1, /* filled at runtime */ 
     26                .end            = -1, /* filled at runtime */ 
     27                .flags          = IORESOURCE_MEM, 
     28        }, 
     29        { 
     30                .start          = -1, /* filled at runtime */ 
     31                .flags          = IORESOURCE_IRQ, 
     32        }, 
     33}; 
     34 
     35static u64 udc_dmamask = ~(u32)0; 
     36 
     37static struct platform_device bcm63xx_udc_device = { 
     38        .name           = "bcm63xx-udc", 
     39        .id             = 0, 
     40        .num_resources  = ARRAY_SIZE(udc_resources), 
     41        .resource       = udc_resources, 
     42        .dev            = { 
     43                .dma_mask               = &udc_dmamask, 
     44                .coherent_dma_mask      = 0xffffffff, 
     45        }, 
     46}; 
     47 
     48int __init bcm63xx_udc_register(void) 
     49{ 
     50        if (!BCMCPU_IS_6338() && !BCMCPU_IS_6345() && !BCMCPU_IS_6348()) 
     51                return 0; 
     52 
     53        udc_resources[0].start = bcm63xx_regset_address(RSET_UDC0); 
     54        udc_resources[0].end = udc_resources[0].start; 
     55        udc_resources[0].end += RSET_UDC_SIZE - 1; 
     56        udc_resources[1].start = bcm63xx_get_irq_number(IRQ_UDC0); 
     57        return platform_device_register(&bcm63xx_udc_device); 
     58} 
  • arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h

    old new  
    125125#define BCM_6338_UART0_BASE             (0xfffe0300) 
    126126#define BCM_6338_GPIO_BASE              (0xfffe0400) 
    127127#define BCM_6338_SPI_BASE               (0xfffe0c00) 
    128 #define BCM_6338_UDC0_BASE              (0xdeadbeef) 
     128#define BCM_6338_UDC0_BASE              (0xfffe3000) 
    129129#define BCM_6338_USBDMA_BASE            (0xfffe2400) 
    130130#define BCM_6338_OHCI0_BASE             (0xdeadbeef) 
    131131#define BCM_6338_OHCI_PRIV_BASE         (0xfffe3000) 
     
    155155#define BCM_6345_UART0_BASE             (0xfffe0300) 
    156156#define BCM_6345_GPIO_BASE              (0xfffe0400) 
    157157#define BCM_6345_SPI_BASE               (0xdeadbeef) 
    158 #define BCM_6345_UDC0_BASE              (0xdeadbeef) 
     158#define BCM_6345_UDC0_BASE              (0xfffe2100) 
    159159#define BCM_6345_USBDMA_BASE            (0xfffe2800) 
    160160#define BCM_6345_ENET0_BASE             (0xfffe1800) 
    161161#define BCM_6345_ENETDMA_BASE           (0xfffe2800) 
     
    210210#define BCM_6358_UART0_BASE             (0xfffe0100) 
    211211#define BCM_6358_GPIO_BASE              (0xfffe0080) 
    212212#define BCM_6358_SPI_BASE               (0xdeadbeef) 
    213 #define BCM_6358_UDC0_BASE              (0xfffe0800) 
     213#define BCM_6358_UDC0_BASE              (0xfffe0400) 
    214214#define BCM_6358_OHCI0_BASE             (0xfffe1400) 
    215215#define BCM_6358_OHCI_PRIV_BASE         (0xdeadbeef) 
    216216#define BCM_6358_USBH_PRIV_BASE         (0xfffe1500) 
     
    430430        IRQ_TIMER = 0, 
    431431        IRQ_UART0, 
    432432        IRQ_DSL, 
     433        IRQ_UDC0, 
    433434        IRQ_ENET0, 
    434435        IRQ_ENET1, 
    435436        IRQ_ENET_PHY, 
     
    472473#define BCM_6345_UART0_IRQ              (IRQ_INTERNAL_BASE + 2) 
    473474#define BCM_6345_DSL_IRQ                (IRQ_INTERNAL_BASE + 3) 
    474475#define BCM_6345_ATM_IRQ                (IRQ_INTERNAL_BASE + 4) 
    475 #define BCM_6345_USB_IRQ                (IRQ_INTERNAL_BASE + 5) 
     476#define BCM_6345_UDC0_IRQ               (IRQ_INTERNAL_BASE + 5) 
    476477#define BCM_6345_ENET0_IRQ              (IRQ_INTERNAL_BASE + 8) 
    477478#define BCM_6345_ENET_PHY_IRQ           (IRQ_INTERNAL_BASE + 12) 
    478479#define BCM_6345_ENET0_RXDMA_IRQ        (IRQ_INTERNAL_BASE + 13 + 1) 
     
    494495#define BCM_6348_TIMER_IRQ              (IRQ_INTERNAL_BASE + 0) 
    495496#define BCM_6348_UART0_IRQ              (IRQ_INTERNAL_BASE + 2) 
    496497#define BCM_6348_DSL_IRQ                (IRQ_INTERNAL_BASE + 4) 
     498#define BCM_6348_UDC0_IRQ               (IRQ_INTERNAL_BASE + 6) 
    497499#define BCM_6348_ENET1_IRQ              (IRQ_INTERNAL_BASE + 7) 
    498500#define BCM_6348_ENET0_IRQ              (IRQ_INTERNAL_BASE + 8) 
    499501#define BCM_6348_ENET_PHY_IRQ           (IRQ_INTERNAL_BASE + 9) 
    500502#define BCM_6348_OHCI0_IRQ              (IRQ_INTERNAL_BASE + 12) 
     503#define BCM_6348_USB_CNTL_RX_DMA_IRQ    (IRQ_INTERNAL_BASE + 14) 
     504#define BCM_6348_USB_CNTL_TX_DMA_IRQ    (IRQ_INTERNAL_BASE + 15) 
     505#define BCM_6348_USB_BULK_RX_DMA_IRQ    (IRQ_INTERNAL_BASE + 16) 
     506#define BCM_6348_USB_BULK_TX_DMA_IRQ    (IRQ_INTERNAL_BASE + 17) 
     507#define BCM_6348_USB_ISO_RX_DMA_IRQ     (IRQ_INTERNAL_BASE + 18) 
     508#define BCM_6348_USB_ISO_TX_DMA_IRQ     (IRQ_INTERNAL_BASE + 19) 
    501509#define BCM_6348_ENET0_RXDMA_IRQ        (IRQ_INTERNAL_BASE + 20) 
    502510#define BCM_6348_ENET0_TXDMA_IRQ        (IRQ_INTERNAL_BASE + 21) 
    503511#define BCM_6348_ENET1_RXDMA_IRQ        (IRQ_INTERNAL_BASE + 22) 
  • new file linux-2.6.32.13/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_usb_udc.h

    - +  
     1#ifndef BCM63XX_DEV_USB_UDC_H_ 
     2#define BCM63XX_DEV_USB_UDC_H_ 
     3 
     4int bcm63xx_udc_register(void); 
     5 
     6#endif /* BCM63XX_DEV_USB_UDC_H_ */ 
  • arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h

    old new  
    4545        unsigned int    has_ohci0:1; 
    4646        unsigned int    has_ehci0:1; 
    4747        unsigned int    has_dsp:1; 
     48        unsigned int    has_udc0:1; 
    4849 
    4950        /* ethernet config */ 
    5051        struct bcm63xx_enet_platform_data enet0; 
  • arch/mips/bcm63xx/Makefile

    old new  
    11obj-y           += clk.o cpu.o cs.o gpio.o irq.o prom.o setup.o timer.o \ 
    22                   dev-dsp.o dev-enet.o dev-pcmcia.o dev-uart.o dev-wdt.o \ 
    3                    dev-usb-ohci.o dev-usb-ehci.o 
     3                   dev-usb-ohci.o dev-usb-ehci.o dev-usb-udc.o 
    44obj-$(CONFIG_EARLY_PRINTK)      += early_printk.o 
    55 
    66obj-y           += boards/ 
  • arch/mips/bcm63xx/clk.c

    old new  
    141141}; 
    142142 
    143143/* 
     144 * USB slave clock 
     145 */ 
     146static void usbs_set(struct clk *clk, int enable) 
     147{ 
     148        u32 mask; 
     149 
     150        switch(bcm63xx_get_cpu_id()) { 
     151        case BCM6338_CPU_ID: 
     152                mask = CKCTL_6338_USBS_EN; 
     153                break; 
     154        case BCM6348_CPU_ID: 
     155                mask = CKCTL_6348_USBS_EN; 
     156                break; 
     157        default: 
     158                return; 
     159        } 
     160        bcm_hwclock_set(mask, enable); 
     161} 
     162 
     163static struct clk clk_usbs = { 
     164        .set    = usbs_set, 
     165}; 
     166 
     167/* 
    144168 * SPI clock 
    145169 */ 
    146170static void spi_set(struct clk *clk, int enable) 
     
    208232                return &clk_ephy; 
    209233        if (!strcmp(id, "usbh")) 
    210234                return &clk_usbh; 
     235        if (!strcmp(id, "usbs")) 
     236                return &clk_usbs; 
    211237        if (!strcmp(id, "spi")) 
    212238                return &clk_spi; 
    213239        if (!strcmp(id, "periph")) 
  • arch/mips/bcm63xx/Kconfig

    old new  
    77        select USB_ARCH_HAS_OHCI 
    88        select USB_OHCI_BIG_ENDIAN_DESC 
    99        select USB_OHCI_BIG_ENDIAN_MMIO 
     10        select USB_ARCH_HAS_UDC 
    1011 
    1112config BCM63XX_CPU_6345 
    1213        bool "support 6345 CPU" 
     
    1920        select USB_ARCH_HAS_OHCI 
    2021        select USB_OHCI_BIG_ENDIAN_DESC 
    2122        select USB_OHCI_BIG_ENDIAN_MMIO 
     23        select USB_ARCH_HAS_UDC 
    2224 
    2325config BCM63XX_CPU_6358 
    2426        bool "support 6358 CPU" 
Note: See TracBrowser for help on using the repository browser.