Changeset 13691


Ignore:
Timestamp:
2008-12-19T18:05:09+01:00 (9 years ago)
Author:
florian
Message:

[brcm63xx] add experimental support for bcm6338

Location:
trunk/target/linux/brcm63xx
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/brcm63xx/config-2.6.27

    r13687 r13691  
    1515# CONFIG_BCM47XX is not set 
    1616CONFIG_BCM63XX=y 
     17CONFIG_BCM63XX_CPU_6338=y 
    1718CONFIG_BCM63XX_CPU_6348=y 
    1819CONFIG_BCM63XX_CPU_6358=y 
  • trunk/target/linux/brcm63xx/files/arch/mips/bcm63xx/Kconfig

    r13368 r13691  
    11menu "CPU support" 
    22        depends on BCM63XX 
     3 
     4config BCM63XX_CPU_6338 
     5        bool "support 6338 CPU" 
     6        select HW_HAS_PCI 
     7        select USB_ARCH_HAS_OHCI 
     8        select USB_OHCI_BIG_ENDIAN_DESC 
     9        select USB_OHCI_BIG_ENDIAN_MMIO 
    310 
    411config BCM63XX_CPU_6348 
  • trunk/target/linux/brcm63xx/files/arch/mips/bcm63xx/cpu.c

    r13368 r13691  
    2525static unsigned int bcm63xx_cpu_freq; 
    2626static unsigned int bcm63xx_memory_size; 
     27 
     28/* 
     29 * 6338 register sets and irqs 
     30 */ 
     31 
     32static const unsigned long bcm96338_regs_base[] = { 
     33        [RSET_PERF]             = BCM_6338_PERF_BASE, 
     34        [RSET_TIMER]            = BCM_6338_TIMER_BASE, 
     35        [RSET_WDT]              = BCM_6338_WDT_BASE, 
     36        [RSET_UART0]            = BCM_6338_UART0_BASE, 
     37        [RSET_GPIO]             = BCM_6338_GPIO_BASE, 
     38        [RSET_SPI]              = BCM_6338_SPI_BASE, 
     39}; 
     40 
     41static const int bcm96338_irqs[] = { 
     42        [IRQ_TIMER]             = BCM_6338_TIMER_IRQ, 
     43        [IRQ_UART0]             = BCM_6338_UART0_IRQ, 
     44        [IRQ_DSL]               = BCM_6338_DSL_IRQ, 
     45        [IRQ_ENET0]             = BCM_6338_ENET0_IRQ, 
     46        [IRQ_ENET_PHY]          = BCM_6338_ENET_PHY_IRQ, 
     47        [IRQ_ENET0_RXDMA]       = BCM_6338_ENET0_RXDMA_IRQ, 
     48        [IRQ_ENET0_TXDMA]       = BCM_6338_ENET0_TXDMA_IRQ, 
     49}; 
    2750 
    2851/* 
     
    138161        unsigned int tmp, n1 = 0, n2 = 0, m1 = 0; 
    139162 
     163        if (BCMCPU_IS_6338()) { 
     164                return 240000000; 
     165        } 
     166 
    140167        /* 
    141168         * frequency depends on PLL configuration: 
     
    171198        u32 val; 
    172199 
    173         if (BCMCPU_IS_6348()) { 
     200        if (BCMCPU_IS_6338() || BCMCPU_IS_6348()) { 
    174201                val = bcm_sdram_readl(SDRAM_CFG_REG); 
    175202                rows = (val & SDRAM_CFG_ROW_MASK) >> SDRAM_CFG_ROW_SHIFT; 
     
    205232 
    206233        switch (c->cputype) { 
     234        case CPU_BCM6338: 
     235                expected_cpu_id = BCM6338_CPU_ID; 
     236                bcm63xx_regs_base = bcm96338_regs_base; 
     237                bcm63xx_irqs = bcm96338_irqs; 
     238                break; 
    207239        case CPU_BCM6348: 
    208240                expected_cpu_id = BCM6348_CPU_ID; 
  • trunk/target/linux/brcm63xx/files/include/asm-mips/mach-bcm63xx/bcm63xx_cpu.h

    r13688 r13691  
    1010 * arm mach-types) 
    1111 */ 
     12#define BCM6338_CPU_ID          0x6338 
    1213#define BCM6348_CPU_ID          0x6348 
    1314#define BCM6358_CPU_ID          0x6358 
     
    1718u16 bcm63xx_get_cpu_rev(void); 
    1819unsigned int bcm63xx_get_cpu_freq(void); 
     20 
     21#ifdef CONFIG_BCM63XX_CPU_6338 
     22# ifdef bcm63xx_get_cpu_id 
     23#  undef bcm63xx_get_cpu_id 
     24#  define bcm63xx_get_cpu_id()  __bcm63xx_get_cpu_id() 
     25#  define BCMCPU_RUNTIME_DETECT 
     26# else 
     27#  define bcm63xx_get_cpu_id()  BCM6338_CPU_ID 
     28# endif 
     29# define BCMCPU_IS_6338()       (bcm63xx_get_cpu_id() == BCM6338_CPU_ID) 
     30#else 
     31# define BCMCPU_IS_6338()       (0) 
     32#endif 
    1933 
    2034#ifdef CONFIG_BCM63XX_CPU_6348 
     
    89103 
    90104/* 
     105 * 6338 register sets base address 
     106 */ 
     107 
     108#define BCM_6338_PERF_BASE              (0xfffe0000) 
     109#define BCM_6338_TIMER_BASE             (0xfffe0000) 
     110#define BCM_6338_WDT_BASE               (0xfffe001c) 
     111#define BCM_6338_UART0_BASE             (0xfffe0300) 
     112#define BCM_6338_GPIO_BASE              (0xfffe0400) 
     113#define BCM_6338_SPI_BASE               (0xfffe0c00) 
     114#define BCM_6338_SAR_BASE               (0xfffe2000) 
     115#define BCM_6338_MEMC_BASE              (0xfffe3100) 
     116 
     117/* 
    91118 * 6348 register sets base address 
    92119 */ 
     
    148175        return bcm63xx_regs_base[set]; 
    149176#else 
     177#ifdef CONFIG_BCM63XX_CPU_6338 
     178        switch (set) { 
     179        case RSET_PERF: 
     180                return BCM_6338_PERF_BASE; 
     181        case RSET_TIMER: 
     182                return BCM_6338_TIMER_BASE; 
     183        case RSET_WDT: 
     184                return BCM_6338_WDT_BASE; 
     185        case RSET_UART0: 
     186                return BCM_6338_UART0_BASE; 
     187        case RSET_GPIO: 
     188                return BCM_6338_GPIO_BASE; 
     189        case RSET_SPI: 
     190                return BCM_6338_SPI_BASE; 
     191        case RSET_MEMC: 
     192                return BCM_6338_MEMC_BASE; 
     193        } 
     194#endif 
    150195#ifdef CONFIG_BCM63XX_CPU_6348 
    151196        switch (set) { 
     
    268313 
    269314/* 
     315 * 6338 irqs 
     316 */ 
     317#define BCM_6338_TIMER_IRQ              (IRQ_INTERNAL_BASE + 0) 
     318#define BCM_6338_SPI_IR                 (IRQ_INTERNAL_BASE + 1) 
     319#define BCM_6338_UART0_IRQ              (IRQ_INTERNAL_BASE + 2) 
     320#define BCM_6338_DG_IRQ                 (IRQ_INTERNAL_BASE + 4) 
     321#define BCM_6338_DSL_IRQ                (IRQ_INTERNAL_BASE + 5) 
     322#define BCM_6338_ATM_IRQ                (IRQ_INTERNAL_BASE + 6) 
     323#define BCM_6338_USBS_IRQ               (IRQ_INTERNAL_BASE + 7) 
     324#define BCM_6338_ENET0_IRQ              (IRQ_INTERNAL_BASE + 8) 
     325#define BCM_6338_ENET_PHY_IRQ           (IRQ_INTERNAL_BASE + 9) 
     326#define BCM_6338_SDRAM_IRQ              (IRQ_INTERNAL_BASE + 10) 
     327#define BCM_6338_USB_CNTL_RX_DMA_IRQ    (IRQ_INTERNAL_BASE + 11) 
     328#define BCM_6338_USB_CNTL_TX_DMA_IRQ    (IRQ_INTERNAL_BASE + 12) 
     329#define BCM_6338_USB_BULK_RX_DMA_IRQ    (IRQ_INTERNAL_BASE + 13) 
     330#define BCM_6338_USB_BULK_TX_DMA_IRQ    (IRQ_INTERNAL_BASE + 14) 
     331#define BCM_6338_ENET0_RXDMA_IRQ        (IRQ_INTERNAL_BASE + 15) 
     332#define BCM_6338_ENET0_TXDMA_IRQ        (IRQ_INTERNAL_BASE + 16) 
     333#define BCM_6338_SDIO_IRQ               (IRQ_INTERNAL_BASE + 17) 
     334 
     335/* 
    270336 * 6348 irqs 
    271337 */ 
  • trunk/target/linux/brcm63xx/files/include/asm-mips/mach-bcm63xx/bcm63xx_regs.h

    r13547 r13691  
    1515/* Clock Control register */ 
    1616#define PERF_CKCTL_REG                  0x4 
     17 
     18#define CKCTL_6338_ENET_EN              (1 << 4) 
     19#define CKCTL_6338_USBS_EN              (1 << 4) 
     20#define CKCTL_6338_SAR_EN               (1 << 5) 
     21#define CKCTL_6338_SPI_EN               (1 << 9) 
     22 
     23#define CKCTL_6338_ALL_SAFE_EN          (CKCTL_6338_ENET_EN |           \ 
     24                                        CKCTL_6338_SAR_EN |             \ 
     25                                        CKCTL_6338_SPI_EN) 
    1726 
    1827#define CKCTL_6348_ADSLPHY_EN           (1 << 0) 
     
    8392/* Soft Reset register */ 
    8493#define PERF_SOFTRESET_REG              0x28 
     94 
     95#define SOFTRESET_6338_SPI_MASK         (1 << 0) 
     96#define SOFTRESET_6338_ENET_MASK        (1 << 2) 
     97#define SOFTRESET_6338_USBH_MASK        (1 << 3) 
     98#define SOFTRESET_6338_USBS_MASK        (1 << 4) 
     99#define SOFTRESET_6338_ADSL_MASK        (1 << 5) 
     100#define SOFTRESET_6338_DMAMEM_MASK      (1 << 6)  
     101#define SOFTRESET_6338_SAR_MASK         (1 << 7) 
     102#define SOFTRESET_6338_ACLC_MASK        (1 << 8) 
     103#define SOFTRESET_6338_ADSLMIPSPLL_MASK (1 << 10) 
     104#define SOFTRESET_6338_ALL       (SOFTRESET_6338_SPI_MASK |             \ 
     105                                  SOFTRESET_6338_ENET_MASK |            \ 
     106                                  SOFTRESET_6338_USBH_MASK |            \ 
     107                                  SOFTRESET_6338_USBS_MASK |            \ 
     108                                  SOFTRESET_6338_ADSL_MASK |            \ 
     109                                  SOFTRESET_6338_DMAMEM_MASK |          \ 
     110                                  SOFTRESET_6338_SAR_MASK |             \ 
     111                                  SOFTRESET_6338_ACLC_MASK |            \ 
     112                                  SOFTRESET_6338_ADSLMIPSPLL_MASK) 
    85113 
    86114#define SOFTRESET_6348_SPI_MASK         (1 << 0) 
     
    764792#define SPI_INTR_CMD_DONE               0x01 
    765793#define SPI_INTR_RX_OVERFLOW            0x02 
    766 #define SPI_INTR_INTR_TX_UNDERFLOW      0x04 
     794#define SPI_INTR_TX_UNDERFLOW           0x04 
    767795#define SPI_INTR_TX_OVERFLOW            0x08 
    768796#define SPI_INTR_RX_UNDERFLOW           0x10 
Note: See TracChangeset for help on using the changeset viewer.