Changeset 41917


Ignore:
Timestamp:
2014-08-01T01:40:49+02:00 (4 years ago)
Author:
nbd
Message:

cns3xxx: update to linux 3.10

Signed-off-by: Felix Fietkau <nbd@…>

Location:
trunk/target/linux/cns3xxx
Files:
10 added
1 deleted
13 edited
15 copied
2 moved

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/cns3xxx/Makefile

    r39778 r41917  
    1515MAINTAINER:=Imre Kaloz <kaloz@openwrt.org> 
    1616 
    17 LINUX_VERSION:=3.8.13 
     17LINUX_VERSION:=3.10.49 
    1818 
    1919include $(INCLUDE_DIR)/target.mk 
  • trunk/target/linux/cns3xxx/config-3.10

    r41916 r41917  
    33CONFIG_ARCH_CNS3XXX=y 
    44CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y 
     5CONFIG_ARCH_HAS_TICK_BROADCAST=y 
    56CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y 
     7CONFIG_ARCH_MULTIPLATFORM=y 
     8# CONFIG_ARCH_MULTI_CPU_AUTO is not set 
     9CONFIG_ARCH_MULTI_V6=y 
     10CONFIG_ARCH_MULTI_V6_V7=y 
     11# CONFIG_ARCH_MULTI_V7 is not set 
    612# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set 
    713CONFIG_ARCH_NR_GPIO=0 
     
    1016# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set 
    1117CONFIG_ARCH_SUSPEND_POSSIBLE=y 
    12 # CONFIG_ARCH_VT8500_SINGLE is not set 
    1318CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y 
     19# CONFIG_ARCH_WM8750 is not set 
    1420CONFIG_ARM=y 
     21# CONFIG_ARM_APPENDED_DTB is not set 
    1522# CONFIG_ARM_CPU_SUSPEND is not set 
    1623CONFIG_ARM_GIC=y 
     
    2734CONFIG_CACHE_L2X0=y 
    2835CONFIG_CLKDEV_LOOKUP=y 
     36CONFIG_CLKSRC_OF=y 
    2937CONFIG_CLONE_BACKWARDS=y 
    3038CONFIG_CNS3XXX_ETH=y 
     39CONFIG_COMMON_CLK=y 
    3140CONFIG_CPU_32v6=y 
    3241CONFIG_CPU_32v6K=y 
     
    4352CONFIG_CPU_RMAP=y 
    4453CONFIG_CPU_TLB_V6=y 
     54CONFIG_CPU_V6=y 
    4555CONFIG_CPU_V6K=y 
    4656CONFIG_DCACHE_WORD_ACCESS=y 
    4757CONFIG_DEBUG_BUGVERBOSE=y 
     58CONFIG_DEBUG_CNS3XXX=y 
    4859CONFIG_DEBUG_LL=y 
    49 CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S" 
    50 CONFIG_DEBUG_LL_UART_NONE=y 
     60CONFIG_DEBUG_LL_INCLUDE="debug/cns3xxx.S" 
     61CONFIG_DEBUG_UNCOMPRESS=y 
    5162# CONFIG_DEBUG_USER is not set 
    52 CONFIG_DECOMPRESS_LZMA=y 
     63CONFIG_DMA_CACHE_FIQ_BROADCAST=y 
     64CONFIG_DTC=y 
    5365# CONFIG_DWC_DEBUG is not set 
    5466# CONFIG_DWC_DEVICE_ONLY is not set 
     
    5971CONFIG_FIQ=y 
    6072CONFIG_FRAME_POINTER=y 
     73CONFIG_GENERIC_ATOMIC64=y 
    6174CONFIG_GENERIC_BUG=y 
    6275CONFIG_GENERIC_CLOCKEVENTS=y 
    6376CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y 
    6477CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 
    65 CONFIG_GENERIC_GPIO=y 
     78CONFIG_GENERIC_IDLE_POLL_SETUP=y 
    6679CONFIG_GENERIC_IO=y 
    6780CONFIG_GENERIC_IRQ_CHIP=y 
     
    7285CONFIG_GENERIC_STRNLEN_USER=y 
    7386CONFIG_GPIOLIB=y 
     87CONFIG_GPIO_DEVRES=y 
    7488CONFIG_GPIO_PCA953X=y 
    7589CONFIG_GPIO_PCA953X_IRQ=y 
     
    7993CONFIG_HAS_IOMEM=y 
    8094CONFIG_HAS_IOPORT=y 
    81 CONFIG_HAVE_AOUT=y 
     95# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set 
    8296CONFIG_HAVE_ARCH_JUMP_LABEL=y 
    8397CONFIG_HAVE_ARCH_KGDB=y 
     
    87101CONFIG_HAVE_ARM_SCU=y 
    88102CONFIG_HAVE_ARM_TWD=y 
     103# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set 
    89104CONFIG_HAVE_BPF_JIT=y 
    90105CONFIG_HAVE_CLK=y 
     106CONFIG_HAVE_CLK_PREPARE=y 
     107CONFIG_HAVE_CONTEXT_TRACKING=y 
    91108CONFIG_HAVE_C_RECORDMCOUNT=y 
    92109CONFIG_HAVE_DEBUG_KMEMLEAK=y 
     
    101118CONFIG_HAVE_GENERIC_HARDIRQS=y 
    102119CONFIG_HAVE_IDE=y 
    103 CONFIG_HAVE_IRQ_WORK=y 
     120CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y 
    104121CONFIG_HAVE_KERNEL_GZIP=y 
    105122CONFIG_HAVE_KERNEL_LZMA=y 
     
    117134CONFIG_HWMON=y 
    118135CONFIG_HW_RANDOM=m 
     136CONFIG_HZ_PERIODIC=y 
    119137CONFIG_I2C=y 
    120138CONFIG_I2C_BOARDINFO=y 
     
    122140CONFIG_I2C_CNS3XXX=y 
    123141CONFIG_INITRAMFS_SOURCE="" 
     142CONFIG_IRQCHIP=y 
    124143CONFIG_IRQ_DOMAIN=y 
     144CONFIG_IRQ_WORK=y 
    125145CONFIG_KTIME_SCALAR=y 
    126146CONFIG_LEDS_GPIO=y 
     
    143163CONFIG_MPCORE_WATCHDOG=y 
    144164CONFIG_MTD_M25P80=y 
     165# CONFIG_MTD_OF_PARTS is not set 
    145166CONFIG_MTD_PHYSMAP=y 
     167# CONFIG_MTD_PHYSMAP_OF is not set 
    146168CONFIG_MULTI_IRQ_HANDLER=y 
    147169CONFIG_MUTEX_SPIN_ON_OWNER=y 
     
    151173CONFIG_NR_CPUS=2 
    152174CONFIG_NTP_PPS=y 
     175CONFIG_OF=y 
     176CONFIG_OF_ADDRESS=y 
     177CONFIG_OF_DEVICE=y 
     178CONFIG_OF_EARLY_FLATTREE=y 
     179CONFIG_OF_FLATTREE=y 
     180CONFIG_OF_GPIO=y 
     181CONFIG_OF_I2C=y 
     182CONFIG_OF_IRQ=y 
     183CONFIG_OF_MDIO=y 
     184CONFIG_OF_MTD=y 
     185CONFIG_OF_NET=y 
     186CONFIG_OF_PCI=y 
     187CONFIG_OF_PCI_IRQ=y 
     188CONFIG_OLD_SIGACTION=y 
     189CONFIG_OLD_SIGSUSPEND3=y 
    153190CONFIG_OUTER_CACHE=y 
    154191CONFIG_OUTER_CACHE_SYNC=y 
     
    158195CONFIG_PCI_DISABLE_COMMON_QUIRKS=y 
    159196CONFIG_PCI_DOMAINS=y 
    160 CONFIG_PERCPU_RWSEM=y 
    161197CONFIG_PERF_USE_VMALLOC=y 
    162198CONFIG_PHYLIB=y 
     
    169205# CONFIG_PROC_STRIPPED is not set 
    170206CONFIG_RAID_ATTRS=y 
     207CONFIG_RCU_STALL_COMMON=y 
    171208CONFIG_RFS_ACCEL=y 
    172209CONFIG_RPS=y 
     
    175212CONFIG_SATA_AHCI=y 
    176213CONFIG_SATA_AHCI_PLATFORM=y 
     214CONFIG_SCHED_HRTICK=y 
    177215CONFIG_SCSI=y 
    178216# CONFIG_SCSI_MULTI_LUN is not set 
     
    183221CONFIG_SMP=y 
    184222CONFIG_SMP_ON_UP=y 
     223CONFIG_SPARSE_IRQ=y 
    185224CONFIG_SPI=y 
    186225CONFIG_SPI_BITBANG=y 
     
    190229CONFIG_STOP_MACHINE=y 
    191230CONFIG_SYS_SUPPORTS_APM_EMULATION=y 
     231# CONFIG_TEGRA_HOST1X is not set 
    192232CONFIG_TICK_CPU_ACCOUNTING=y 
    193233CONFIG_TREE_RCU=y 
    194234CONFIG_UID16=y 
    195235CONFIG_UIDGID_CONVERTED=y 
     236CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h" 
    196237CONFIG_USB=y 
    197 # CONFIG_USB_AMD5536UDC is not set 
    198238CONFIG_USB_ANNOUNCE_NEW_DEVICES=y 
    199239CONFIG_USB_ARCH_HAS_XHCI=y 
     
    202242CONFIG_USB_COMMON=y 
    203243CONFIG_USB_DWC_OTG=y 
    204 # CONFIG_USB_EG20T is not set 
    205244CONFIG_USB_EHCI_HCD=y 
    206245CONFIG_USB_EHCI_HCD_PLATFORM=y 
     
    208247# CONFIG_USB_ETH is not set 
    209248CONFIG_USB_GADGET=y 
    210 # CONFIG_USB_GOKU is not set 
    211 # CONFIG_USB_NET2280 is not set 
    212249# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 
    213250# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set 
     
    217254# CONFIG_USB_UHCI_HCD is not set 
    218255CONFIG_USE_GENERIC_SMP_HELPERS=y 
     256CONFIG_USE_OF=y 
    219257CONFIG_VECTORS_BASE=0xffff0000 
    220258CONFIG_VFP=y 
  • trunk/target/linux/cns3xxx/files/arch/arm/mach-cns3xxx/cns3xxx_fiq.S

    r34101 r41917  
    2121 * R11 - DMA type 
    2222 * R12 - fiq_buffer Address 
    23  * R13 - DMA type Address 
    2423*/ 
    2524 
    2625        .global cns3xxx_fiq_end 
    2726ENTRY(cns3xxx_fiq_start) 
    28         mov r8, #0 
    29         str r8, [r13] 
     27        str     r8, [r13] 
    3028 
    31         ldr r9, [r12] 
    32         ldr r8, [r9] 
    33         add r8, r8, #1 
    34         str r8, [r9] 
     29        ldmia   r12, {r8, r9, r10} 
     30        and     r11, r10, #0x3000000 
     31        and     r10, r10, #0xff 
    3532 
    36         ldmib r12, {r8, r9, r10} 
    37         and r11, r10, #0x3000000 
    38         and r10, r10, #0xff 
    39  
    40         teq r11, #0x1000000 
    41         beq cns3xxx_dma_map_area 
    42         teq r11, #0x2000000 
    43         beq cns3xxx_dma_unmap_area 
    44         b cns3xxx_dma_flush_range 
    45  
     33        teq     r11, #0x1000000 
     34        beq     cns3xxx_dma_map_area 
     35        teq     r11, #0x2000000 
     36        beq     cns3xxx_dma_unmap_area 
     37        /* fall through */ 
     38cns3xxx_dma_flush_range: 
     39        bic     r8, r8, #D_CACHE_LINE_SIZE - 1 
     401: 
     41        mcr     p15, 0, r8, c7, c14, 1          @ clean & invalidate D line 
     42        add     r8, r8, #D_CACHE_LINE_SIZE 
     43        cmp     r8, r9 
     44        blo     1b 
     45        /* fall through */ 
    4646cns3xxx_fiq_exit: 
    47         mov r8, #0 
    48         str r8, [r12, #12] 
    49         mcr p15, 0, r8, c7, c10, 4    @ drain write buffer 
    50         subs pc, lr, #4 
     47        mov     r8, #0 
     48        str     r8, [r12, #8] 
     49        mcr     p15, 0, r8, c7, c10, 4          @ drain write buffer 
     50        subs    pc, lr, #4 
    5151 
    5252cns3xxx_dma_map_area: 
    53         add r9, r9, r8 
    54         teq r10, #DMA_FROM_DEVICE 
    55         beq cns3xxx_dma_inv_range 
    56         b cns3xxx_dma_clean_range 
     53        add     r9, r9, r8 
     54        teq     r10, #DMA_FROM_DEVICE 
     55        beq     cns3xxx_dma_inv_range 
     56        teq     r10, #DMA_TO_DEVICE 
     57        bne     cns3xxx_dma_flush_range 
     58        /* fall through */ 
     59cns3xxx_dma_clean_range: 
     60        bic     r8, r8, #D_CACHE_LINE_SIZE - 1 
     611: 
     62        mcr     p15, 0, r8, c7, c10, 1          @ clean D line 
     63        add     r8, r8, #D_CACHE_LINE_SIZE 
     64        cmp     r8, r9 
     65        blo     1b 
     66        b       cns3xxx_fiq_exit 
    5767 
    5868cns3xxx_dma_unmap_area: 
    59         add r9, r9, r8 
    60         teq r10, #DMA_TO_DEVICE 
    61         bne cns3xxx_dma_inv_range 
    62         b cns3xxx_fiq_exit 
    63  
    64 cns3xxx_dma_flush_range: 
    65         bic r8, r8, #D_CACHE_LINE_SIZE - 1 
     69        add     r9, r9, r8 
     70        teq     r10, #DMA_TO_DEVICE 
     71        beq     cns3xxx_fiq_exit 
     72        /* fall through */ 
     73cns3xxx_dma_inv_range: 
     74        tst     r8, #D_CACHE_LINE_SIZE - 1 
     75        bic     r8, r8, #D_CACHE_LINE_SIZE - 1 
     76        mcrne   p15, 0, r8, c7, c10, 1          @ clean D line 
     77        tst     r9, #D_CACHE_LINE_SIZE - 1 
     78        bic     r9, r9, #D_CACHE_LINE_SIZE - 1 
     79        mcrne   p15, 0, r9, c7, c14, 1          @ clean & invalidate D line 
    66801: 
    67         mcr p15, 0, r8, c7, c14, 1   @ clean & invalidate D line 
    68         add r8, r8, #D_CACHE_LINE_SIZE 
    69         cmp r8, r9 
    70         blo 1b 
    71         b cns3xxx_fiq_exit 
    72  
    73 cns3xxx_dma_clean_range: 
    74         bic r8, r8, #D_CACHE_LINE_SIZE - 1 
    75 1: 
    76         mcr p15, 0, r8, c7, c10, 1    @ clean D line 
    77         add r8, r8, #D_CACHE_LINE_SIZE 
    78         cmp r8, r9 
    79         blo 1b 
    80         b cns3xxx_fiq_exit 
    81  
    82 cns3xxx_dma_inv_range: 
    83         tst r8, #D_CACHE_LINE_SIZE - 1 
    84         bic r8, r8, #D_CACHE_LINE_SIZE - 1 
    85         mcrne p15, 0, r8, c7, c10, 1    @ clean D line 
    86         tst r9, #D_CACHE_LINE_SIZE - 1 
    87         bic r9, r9, #D_CACHE_LINE_SIZE - 1 
    88         mcrne p15, 0, r9, c7, c14, 1    @ clean & invalidate D line 
    89 1: 
    90         mcr p15, 0, r8, c7, c6, 1   @ invalidate D line 
    91         add r8, r8, #D_CACHE_LINE_SIZE 
    92         cmp r8, r9 
    93         blo 1b 
    94         b cns3xxx_fiq_exit 
     81        mcr     p15, 0, r8, c7, c6, 1           @ invalidate D line 
     82        add     r8, r8, #D_CACHE_LINE_SIZE 
     83        cmp     r8, r9 
     84        blo     1b 
     85        b       cns3xxx_fiq_exit 
    9586 
    9687cns3xxx_fiq_end: 
  • trunk/target/linux/cns3xxx/files/arch/arm/mach-cns3xxx/gpio.c

    r35078 r41917  
    1212#include <linux/init.h> 
    1313#include <linux/interrupt.h> 
     14#include <linux/irqchip/chained_irq.h> 
    1415#include <linux/io.h> 
    1516#include <linux/gpio.h> 
     
    142143        struct cns3xxx_gpio_chip *cchip = irq_get_handler_data(irq); 
    143144        struct irq_chip *chip = irq_get_chip(irq); 
    144         struct irq_chip_generic *gc = irq_desc_get_chip_data(desc); 
    145         struct irq_chip_type *ct = gc->chip_types; 
    146145        u16 i; 
    147146        u32 reg; 
  • trunk/target/linux/cns3xxx/files/arch/arm/mach-cns3xxx/laguna.c

    r39894 r41917  
    4040#include <linux/usb/ehci_pdriver.h> 
    4141#include <linux/usb/ohci_pdriver.h> 
     42#include <linux/clk-provider.h> 
     43#include <linux/clkdev.h> 
     44#include <linux/platform_data/cns3xxx.h> 
    4245#include <asm/setup.h> 
    4346#include <asm/mach-types.h> 
     
    4548#include <asm/mach/map.h> 
    4649#include <asm/mach/time.h> 
    47 #include <mach/cns3xxx.h> 
    48 #include <mach/irqs.h> 
    49 #include <mach/platform.h> 
    50 #include <mach/pm.h> 
    5150#include <mach/gpio.h> 
    52 #include <asm/hardware/gic.h> 
    5351#include "core.h" 
    5452#include "devices.h" 
     53#include "cns3xxx.h" 
     54#include "pm.h" 
    5555 
    5656#define ARRAY_AND_SIZE(x)       (x), ARRAY_SIZE(x) 
     
    193193}; 
    194194 
     195static struct resource laguna_spi_resource = { 
     196        .start    = CNS3XXX_SSP_BASE + 0x40, 
     197        .end      = CNS3XXX_SSP_BASE + 0x6f, 
     198        .flags    = IORESOURCE_MEM, 
     199}; 
     200 
    195201static struct platform_device laguna_spi_controller = { 
    196202        .name = "cns3xxx_spi", 
     203        .resource = &laguna_spi_resource, 
     204        .num_resources = 1, 
    197205}; 
    198206 
     
    315323}; 
    316324 
     325static struct resource laguna_net_resource[] = { 
     326        { 
     327                .name = "eth0_mem", 
     328                .start = CNS3XXX_SWITCH_BASE, 
     329                .end = CNS3XXX_SWITCH_BASE + SZ_4K - 1, 
     330                .flags = IORESOURCE_MEM 
     331        }, { 
     332                .name = "eth_rx", 
     333                .start = IRQ_CNS3XXX_SW_R0RXC, 
     334                .end = IRQ_CNS3XXX_SW_R0RXC, 
     335                .flags = IORESOURCE_IRQ 
     336        }, { 
     337                .name = "eth_stat", 
     338                .start = IRQ_CNS3XXX_SW_STATUS, 
     339                .end = IRQ_CNS3XXX_SW_STATUS, 
     340                .flags = IORESOURCE_IRQ 
     341        } 
     342}; 
     343 
    317344static struct platform_device laguna_net_device = { 
    318345        .name = "cns3xxx_eth", 
    319346        .id = 0, 
     347        .resource = laguna_net_resource, 
     348        .num_resources = ARRAY_SIZE(laguna_net_resource), 
    320349        .dev.platform_data = &laguna_net_data, 
    321350}; 
     
    362391static struct plat_serial8250_port laguna_uart_data[] = { 
    363392        { 
    364                 .membase        = (char*) (CNS3XXX_UART0_BASE_VIRT), 
    365393                .mapbase        = (CNS3XXX_UART0_BASE), 
    366394                .irq            = IRQ_CNS3XXX_UART0, 
    367395                .iotype         = UPIO_MEM, 
    368                 .flags          = UPF_BOOT_AUTOCONF | UPF_FIXED_TYPE | UPF_NO_TXEN_TEST, 
     396                .flags          = UPF_BOOT_AUTOCONF | UPF_FIXED_TYPE | UPF_NO_TXEN_TEST | UPF_IOREMAP, 
    369397                .regshift       = 2, 
    370398                .uartclk        = 24000000, 
    371399                .type           = PORT_16550A, 
    372400        },{ 
    373                 .membase        = (char*) (CNS3XXX_UART1_BASE_VIRT), 
    374401                .mapbase        = (CNS3XXX_UART1_BASE), 
    375402                .irq            = IRQ_CNS3XXX_UART1, 
    376403                .iotype         = UPIO_MEM, 
    377                 .flags          = UPF_BOOT_AUTOCONF | UPF_FIXED_TYPE | UPF_NO_TXEN_TEST, 
     404                .flags          = UPF_BOOT_AUTOCONF | UPF_FIXED_TYPE | UPF_NO_TXEN_TEST | UPF_IOREMAP, 
    378405                .regshift       = 2, 
    379406                .uartclk        = 24000000, 
    380407                .type           = PORT_16550A, 
    381408        },{ 
    382                 .membase        = (char*) (CNS3XXX_UART2_BASE_VIRT), 
    383409                .mapbase        = (CNS3XXX_UART2_BASE), 
    384410                .irq            = IRQ_CNS3XXX_UART2, 
    385411                .iotype         = UPIO_MEM, 
    386                 .flags          = UPF_BOOT_AUTOCONF | UPF_FIXED_TYPE | UPF_NO_TXEN_TEST, 
     412                .flags          = UPF_BOOT_AUTOCONF | UPF_FIXED_TYPE | UPF_NO_TXEN_TEST | UPF_IOREMAP, 
    387413                .regshift       = 2, 
    388414                .uartclk        = 24000000, 
     
    527553        { 
    528554                .start    = CNS3XXX_SSP_BASE + 0x20, 
    529                 .end      = 0x7100003f, 
     555                .end      = CNS3XXX_SSP_BASE + 0x3f, 
    530556                .flags    = IORESOURCE_MEM, 
    531557        },{ 
     
    772798static void __init laguna_init(void) 
    773799{ 
     800        struct clk *clk; 
     801        u32 __iomem *reg; 
     802 
     803        clk = clk_register_fixed_rate(NULL, "cpu", NULL, 
     804                                      CLK_IS_ROOT | CLK_IGNORE_UNUSED, 
     805                                      cns3xxx_cpu_clock() * (1000000 / 8)); 
     806        clk_register_clkdev(clk, "cpu", NULL); 
     807 
    774808        platform_device_register(&laguna_watchdog); 
    775809 
    776810        platform_device_register(&laguna_i2c_controller); 
     811 
     812        /* Set ext_int 0-3 drive strength to 21 mA */ 
     813        reg = MISC_IO_PAD_DRIVE_STRENGTH_CTRL_B; 
     814        *reg |= 0x300; 
     815 
     816        /* Enable SCL/SDA for I2C */ 
     817        reg = MISC_GPIOB_PIN_ENABLE_REG; 
     818        *reg |= BIT(12) | BIT(13); 
     819 
     820        /* Enable MMC/SD pins */ 
     821        reg = MISC_GPIOA_PIN_ENABLE_REG; 
     822        *reg |= 0xf80; 
     823 
     824        cns3xxx_pwr_clk_en(1 << PM_CLK_GATE_REG_OFFSET_SPI_PCM_I2C); 
     825        cns3xxx_pwr_power_up(1 << PM_CLK_GATE_REG_OFFSET_SPI_PCM_I2C); 
     826        cns3xxx_pwr_soft_rst(1 << PM_CLK_GATE_REG_OFFSET_SPI_PCM_I2C); 
     827 
     828        cns3xxx_pwr_clk_en(CNS3XXX_PWR_CLK_EN(SPI_PCM_I2C)); 
     829        cns3xxx_pwr_soft_rst(CNS3XXX_PWR_SOFTWARE_RST(SPI_PCM_I2C)); 
    777830 
    778831        i2c_register_board_info(0, ARRAY_AND_SIZE(laguna_i2c_devices)); 
     
    787840                .length         = SZ_4K, 
    788841                .type           = MT_DEVICE, 
    789         },{ 
    790                 .virtual        = CNS3XXX_UART1_BASE_VIRT, 
    791                 .pfn            = __phys_to_pfn(CNS3XXX_UART1_BASE), 
    792                 .length         = SZ_4K, 
    793                 .type           = MT_DEVICE, 
    794         },{ 
    795                 .virtual        = CNS3XXX_UART2_BASE_VIRT, 
    796                 .pfn            = __phys_to_pfn(CNS3XXX_UART2_BASE), 
    797                 .length         = SZ_4K, 
    798                 .type           = MT_DEVICE, 
    799842        }, 
    800843}; 
     
    802845static void __init laguna_map_io(void) 
    803846{ 
    804         cns3xxx_common_init(); 
     847        cns3xxx_map_io(); 
    805848        cns3xxx_pcie_iotable_init(); 
    806849        iotable_init(ARRAY_AND_SIZE(laguna_io_desc)); 
     
    10231066 
    10241067MACHINE_START(GW2388, "Gateworks Corporation Laguna Platform") 
     1068        .smp            = smp_ops(cns3xxx_smp_ops), 
    10251069        .atag_offset    = 0x100, 
    10261070        .map_io         = laguna_map_io, 
    10271071        .init_irq       = cns3xxx_init_irq, 
    1028         .timer          = &cns3xxx_timer, 
    1029         .handle_irq     = gic_handle_irq, 
     1072        .init_time      = cns3xxx_timer_init, 
    10301073        .init_machine   = laguna_init, 
    10311074        .restart        = cns3xxx_restart, 
  • trunk/target/linux/cns3xxx/files/arch/arm/mach-cns3xxx/platsmp.c

    r35908 r41917  
    2222 
    2323#include <asm/cacheflush.h> 
    24 #include <asm/hardware/gic.h> 
    2524#include <asm/smp_scu.h> 
    2625#include <asm/unified.h> 
    2726#include <asm/fiq.h> 
    2827#include <mach/smp.h> 
    29 #include <mach/cns3xxx.h> 
     28#include "cns3xxx.h" 
    3029 
    3130static struct fiq_handler fh = { 
     
    3332}; 
    3433 
    35 static unsigned int fiq_buffer[8]; 
     34struct fiq_req { 
     35        union { 
     36                struct { 
     37                        const void *addr; 
     38                        size_t size; 
     39                } map; 
     40                struct { 
     41                        const void *addr; 
     42                        size_t size; 
     43                } unmap; 
     44                struct { 
     45                        const void *start; 
     46                        const void *end; 
     47                } flush; 
     48        }; 
     49        volatile uint flags; 
     50        void __iomem *reg; 
     51} ____cacheline_aligned; 
     52 
     53extern unsigned int fiq_number[2]; 
     54 
     55DEFINE_PER_CPU(struct fiq_req, fiq_data); 
    3656 
    3757#define FIQ_ENABLED         0x80000000 
    38 #define FIQ_GENERATE                            0x00010000 
     58#define FIQ_GENERATE        0x00010000 
    3959#define CNS3XXX_MAP_AREA    0x01000000 
    4060#define CNS3XXX_UNMAP_AREA  0x02000000 
     
    4363extern void cns3xxx_secondary_startup(void); 
    4464extern unsigned char cns3xxx_fiq_start, cns3xxx_fiq_end; 
    45 extern unsigned int fiq_number[2]; 
    46 extern struct cpu_cache_fns cpu_cache; 
    47 struct cpu_cache_fns cpu_cache_save; 
    4865 
    4966#define SCU_CPU_STATUS 0x08 
    5067static void __iomem *scu_base; 
    5168 
    52 static void __init cns3xxx_set_fiq_regs(void) 
     69static inline void __cpuinit cns3xxx_set_fiq_regs(unsigned int cpu) 
    5370{ 
    5471        struct pt_regs FIQ_regs; 
    55         unsigned int cpu = smp_processor_id(); 
    56  
    57         if (cpu) { 
    58                 FIQ_regs.ARM_ip = (unsigned int)&fiq_buffer[4]; 
    59                 FIQ_regs.ARM_sp = (unsigned int)MISC_FIQ_CPU(0); 
    60         } else { 
    61                 FIQ_regs.ARM_ip = (unsigned int)&fiq_buffer[0]; 
    62                 FIQ_regs.ARM_sp = (unsigned int)MISC_FIQ_CPU(1); 
    63         } 
     72        struct fiq_req *fiq_req = &per_cpu(fiq_data, !cpu); 
     73 
     74        FIQ_regs.ARM_r8 = 0; 
     75        FIQ_regs.ARM_ip = (unsigned int)fiq_req; 
     76        FIQ_regs.ARM_sp = (int) MISC_FIQ_CPU(!cpu); 
     77        fiq_req->reg = MISC_FIQ_CPU(!cpu); 
     78 
    6479        set_fiq_regs(&FIQ_regs); 
    6580} 
     
    7590 
    7691        ret = claim_fiq(&fh); 
    77  
    78         if (ret) { 
     92        if (ret) 
    7993                return; 
    80         } 
    8194 
    8295        set_fiq_handler(fiqhandler_start, fiqhandler_length); 
    83         fiq_buffer[0] = (unsigned int)&fiq_number[0]; 
    84         fiq_buffer[3] = 0; 
    85         fiq_buffer[4] = (unsigned int)&fiq_number[1]; 
    86         fiq_buffer[7] = 0; 
    8796} 
    8897 
     
    106115{ 
    107116        /* 
    108          * if any interrupts are already enabled for the primary 
    109          * core (e.g. timer irq), then they will not have been enabled 
    110          * for us: do so 
    111          */ 
    112         gic_secondary_init(0); 
    113  
    114         /* 
    115117         * Setup Secondary Core FIQ regs 
    116118         */ 
    117         cns3xxx_set_fiq_regs(); 
     119        cns3xxx_set_fiq_regs(1); 
    118120 
    119121        /* 
     
    122124         */ 
    123125        write_pen_release(-1); 
    124  
    125         /* 
    126          * Fixup DMA Operations 
    127          * 
    128          */ 
    129         cpu_cache.dma_map_area = (void *)smp_dma_map_area; 
    130         cpu_cache.dma_unmap_area = (void *)smp_dma_unmap_area; 
    131         cpu_cache.dma_flush_range = (void *)smp_dma_flush_range; 
    132126 
    133127        /* 
     
    163157         * and branch to the address found there. 
    164158         */ 
    165         gic_raise_softirq(cpumask_of(cpu), 1); 
     159        arch_send_wakeup_ipi_mask(cpumask_of(cpu));; 
    166160 
    167161        timeout = jiffies + (1 * HZ); 
     
    205199        } 
    206200        ncores = i; 
    207  
    208         set_smp_cross_call(gic_raise_softirq); 
    209201} 
    210202 
     
    239231         */ 
    240232        cns3xxx_init_fiq(); 
    241         cns3xxx_set_fiq_regs(); 
    242         memcpy((void *)&cpu_cache_save, (void *)&cpu_cache, sizeof(struct cpu_cache_fns)); 
    243 } 
    244  
    245  
    246 static inline unsigned long cns3xxx_cpu_id(void) 
    247 { 
    248         unsigned long cpu; 
    249  
    250         asm volatile( 
    251                 " mrc p15, 0, %0, c0, c0, 5  @ cns3xxx_cpu_id\n" 
    252                 : "=r" (cpu) : : "memory", "cc"); 
    253         return (cpu & 0xf); 
    254 } 
    255  
    256 void smp_dma_map_area(const void *addr, size_t size, int dir) 
    257 { 
    258         unsigned int cpu; 
     233        cns3xxx_set_fiq_regs(0); 
     234} 
     235 
     236extern void v6_dma_map_area(const void *, size_t, int); 
     237extern void v6_dma_unmap_area(const void *, size_t, int); 
     238extern void v6_dma_flush_range(const void *, const void *); 
     239extern void v6_flush_kern_dcache_area(void *, size_t); 
     240 
     241void fiq_dma_map_area(const void *addr, size_t size, int dir) 
     242{ 
    259243        unsigned long flags; 
     244        struct fiq_req *req; 
     245 
    260246        raw_local_irq_save(flags); 
    261         cpu = cns3xxx_cpu_id(); 
    262         if (cpu) { 
    263                 fiq_buffer[1] = (unsigned int)addr; 
    264                 fiq_buffer[2] = size; 
    265                 fiq_buffer[3] = dir | CNS3XXX_MAP_AREA | FIQ_ENABLED; 
    266                 smp_mb(); 
    267                 __raw_writel(FIQ_GENERATE, MISC_FIQ_CPU(1)); 
    268  
    269                 cpu_cache_save.dma_map_area(addr, size, dir); 
    270                 while ((fiq_buffer[3]) & FIQ_ENABLED) { barrier(); } 
    271         } else { 
    272  
    273                 fiq_buffer[5] = (unsigned int)addr; 
    274                 fiq_buffer[6] = size; 
    275                 fiq_buffer[7] = dir | CNS3XXX_MAP_AREA | FIQ_ENABLED; 
    276                 smp_mb(); 
    277                 __raw_writel(FIQ_GENERATE, MISC_FIQ_CPU(0)); 
    278  
    279                 cpu_cache_save.dma_map_area(addr, size, dir); 
    280                 while ((fiq_buffer[7]) & FIQ_ENABLED) { barrier(); } 
    281         } 
     247        /* currently, not possible to take cpu0 down, so only check cpu1 */ 
     248        if (!cpu_online(1)) { 
     249                raw_local_irq_restore(flags); 
     250                v6_dma_map_area(addr, size, dir); 
     251                return; 
     252        } 
     253 
     254        req = this_cpu_ptr(&fiq_data); 
     255        req->map.addr = addr; 
     256        req->map.size = size; 
     257        req->flags = dir | CNS3XXX_MAP_AREA; 
     258        smp_mb(); 
     259 
     260        writel_relaxed(FIQ_GENERATE, req->reg); 
     261 
     262        v6_dma_map_area(addr, size, dir); 
     263        while (req->flags) 
     264                barrier(); 
     265 
    282266        raw_local_irq_restore(flags); 
    283267} 
    284268 
    285 void smp_dma_unmap_area(const void *addr, size_t size, int dir) 
    286 { 
    287         unsigned int cpu; 
     269void fiq_dma_unmap_area(const void *addr, size_t size, int dir) 
     270{ 
    288271        unsigned long flags; 
     272        struct fiq_req *req; 
    289273 
    290274        raw_local_irq_save(flags); 
    291         cpu = cns3xxx_cpu_id(); 
    292         if (cpu) { 
    293  
    294                 fiq_buffer[1] = (unsigned int)addr; 
    295                 fiq_buffer[2] = size; 
    296                 fiq_buffer[3] = dir | CNS3XXX_UNMAP_AREA | FIQ_ENABLED; 
    297                 smp_mb(); 
    298                 __raw_writel(FIQ_GENERATE, MISC_FIQ_CPU(1)); 
    299  
    300                 cpu_cache_save.dma_unmap_area(addr, size, dir); 
    301                 while ((fiq_buffer[3]) & FIQ_ENABLED) { barrier(); } 
    302         } else { 
    303  
    304                 fiq_buffer[5] = (unsigned int)addr; 
    305                 fiq_buffer[6] = size; 
    306                 fiq_buffer[7] = dir | CNS3XXX_UNMAP_AREA | FIQ_ENABLED; 
    307                 smp_mb(); 
    308                 __raw_writel(FIQ_GENERATE, MISC_FIQ_CPU(0)); 
    309  
    310                 cpu_cache_save.dma_unmap_area(addr, size, dir); 
    311                 while ((fiq_buffer[7]) & FIQ_ENABLED) { barrier(); } 
    312         } 
     275        /* currently, not possible to take cpu0 down, so only check cpu1 */ 
     276        if (!cpu_online(1)) { 
     277                raw_local_irq_restore(flags); 
     278                v6_dma_unmap_area(addr, size, dir); 
     279                return; 
     280        } 
     281 
     282        req = this_cpu_ptr(&fiq_data); 
     283        req->unmap.addr = addr; 
     284        req->unmap.size = size; 
     285        req->flags = dir | CNS3XXX_UNMAP_AREA; 
     286        smp_mb(); 
     287 
     288        writel_relaxed(FIQ_GENERATE, req->reg); 
     289 
     290        v6_dma_unmap_area(addr, size, dir); 
     291        while (req->flags) 
     292                barrier(); 
     293 
    313294        raw_local_irq_restore(flags); 
    314295} 
    315296 
    316 void smp_dma_flush_range(const void *start, const void *end) 
    317 { 
    318         unsigned int cpu; 
     297void fiq_dma_flush_range(const void *start, const void *end) 
     298{ 
    319299        unsigned long flags; 
     300        struct fiq_req *req; 
     301 
    320302        raw_local_irq_save(flags); 
    321         cpu = cns3xxx_cpu_id(); 
    322         if (cpu) { 
    323  
    324                 fiq_buffer[1] = (unsigned int)start; 
    325                 fiq_buffer[2] = (unsigned int)end; 
    326                 fiq_buffer[3] = CNS3XXX_FLUSH_RANGE | FIQ_ENABLED; 
    327                 smp_mb(); 
    328                 __raw_writel(FIQ_GENERATE, MISC_FIQ_CPU(1)); 
    329  
    330                 cpu_cache_save.dma_flush_range(start, end); 
    331                 while ((fiq_buffer[3]) & FIQ_ENABLED) { barrier(); } 
    332         } else { 
    333  
    334                 fiq_buffer[5] = (unsigned int)start; 
    335                 fiq_buffer[6] = (unsigned int)end; 
    336                 fiq_buffer[7] = CNS3XXX_FLUSH_RANGE | FIQ_ENABLED; 
    337                 smp_mb(); 
    338                 __raw_writel(FIQ_GENERATE, MISC_FIQ_CPU(0)); 
    339  
    340                 cpu_cache_save.dma_flush_range(start, end); 
    341                 while ((fiq_buffer[7]) & FIQ_ENABLED) { barrier(); } 
    342         } 
     303        /* currently, not possible to take cpu0 down, so only check cpu1 */ 
     304        if (!cpu_online(1)) { 
     305                raw_local_irq_restore(flags); 
     306                v6_dma_flush_range(start, end); 
     307                return; 
     308        } 
     309 
     310        req = this_cpu_ptr(&fiq_data); 
     311 
     312        req->flush.start = start; 
     313        req->flush.end = end; 
     314        req->flags = CNS3XXX_FLUSH_RANGE; 
     315        smp_mb(); 
     316 
     317        writel_relaxed(FIQ_GENERATE, req->reg); 
     318 
     319        v6_dma_flush_range(start, end); 
     320 
     321        while (req->flags) 
     322                barrier(); 
     323 
    343324        raw_local_irq_restore(flags); 
     325} 
     326 
     327void fiq_flush_kern_dcache_area(void *addr, size_t size) 
     328{ 
     329        fiq_dma_flush_range(addr, addr + size); 
    344330} 
    345331 
  • trunk/target/linux/cns3xxx/files/drivers/i2c/busses/i2c-cns3xxx.c

    r35908 r41917  
    2222#include <linux/i2c.h> 
    2323#include <linux/slab.h> 
    24 #include <mach/pm.h> 
    25 #include <mach/cns3xxx.h> 
     24#include <linux/clk.h> 
    2625 
    2726/* 
     
    2928 */ 
    3029 
    31  
    32 #define MISC_MEM_MAP_VALUE(reg_offset)  (*((uint32_t volatile *)(CNS3XXX_MISC_BASE_VIRT + reg_offset))) 
    33 #define MISC_IOCDB_CTRL                         MISC_MEM_MAP_VALUE(0x020) 
    34  
    35 #define I2C_MEM_MAP_ADDR(x)         (CNS3XXX_SSP_BASE_VIRT + x) 
     30#define I2C_MEM_MAP_ADDR(x)         (i2c->base + x) 
    3631#define I2C_MEM_MAP_VALUE(x)        (*((unsigned int volatile*)I2C_MEM_MAP_ADDR(x))) 
    3732 
    38 #define I2C_CONTROLLER_REG                    I2C_MEM_MAP_VALUE(0x20) 
    39 #define I2C_TIME_OUT_REG                      I2C_MEM_MAP_VALUE(0x24) 
    40 #define I2C_SLAVE_ADDRESS_REG                 I2C_MEM_MAP_VALUE(0x28) 
    41 #define I2C_WRITE_DATA_REG                    I2C_MEM_MAP_VALUE(0x2C) 
    42 #define I2C_READ_DATA_REG                     I2C_MEM_MAP_VALUE(0x30) 
    43 #define I2C_INTERRUPT_STATUS_REG              I2C_MEM_MAP_VALUE(0x34) 
    44 #define I2C_INTERRUPT_ENABLE_REG              I2C_MEM_MAP_VALUE(0x38) 
    45 #define I2C_TWI_OUT_DLY_REG                                                     I2C_MEM_MAP_VALUE(0x3C) 
     33#define I2C_CONTROLLER_REG                    I2C_MEM_MAP_VALUE(0x00) 
     34#define I2C_TIME_OUT_REG                      I2C_MEM_MAP_VALUE(0x04) 
     35#define I2C_SLAVE_ADDRESS_REG                 I2C_MEM_MAP_VALUE(0x08) 
     36#define I2C_WRITE_DATA_REG                    I2C_MEM_MAP_VALUE(0x0C) 
     37#define I2C_READ_DATA_REG                     I2C_MEM_MAP_VALUE(0x10) 
     38#define I2C_INTERRUPT_STATUS_REG              I2C_MEM_MAP_VALUE(0x14) 
     39#define I2C_INTERRUPT_ENABLE_REG              I2C_MEM_MAP_VALUE(0x18) 
     40#define I2C_TWI_OUT_DLY_REG                                                     I2C_MEM_MAP_VALUE(0x1C) 
    4641 
    4742#define I2C_BUS_ERROR_FLAG     (0x1) 
     
    204199static void cns3xxx_i2c_adapter_init(struct cns3xxx_i2c *i2c) 
    205200{ 
    206         cns3xxx_pwr_clk_en(1 << PM_CLK_GATE_REG_OFFSET_SPI_PCM_I2C); 
    207         cns3xxx_pwr_power_up(1 << PM_CLK_GATE_REG_OFFSET_SPI_PCM_I2C); 
    208         cns3xxx_pwr_soft_rst(1 << PM_CLK_GATE_REG_OFFSET_SPI_PCM_I2C); 
     201        struct clk *clk; 
     202 
     203        clk = devm_clk_get(i2c->dev, "cpu"); 
     204        if (WARN_ON(!clk)) 
     205                return; 
    209206 
    210207        /* Disable the I2C */ 
    211208        I2C_CONTROLLER_REG = 0; /* Disabled the I2C */ 
    212209 
    213         //enable SCL and SDA which share pin with GPIOB_PIN_EN(0x18) 
    214         //GPIOB[12]: SCL 
    215         //GPIOB[13]: SDA 
    216         (*(u32*)(CNS3XXX_MISC_BASE_VIRT+0x18)) |= ((1<<12)|(1<<13)); 
    217  
    218         MISC_IOCDB_CTRL &= ~0x300; 
    219         MISC_IOCDB_CTRL |= 0x300; //21mA... 
    220  
    221210        /* Check the Reg Dump when testing */ 
    222211        I2C_TIME_OUT_REG = 
    223             ((((((cns3xxx_cpu_clock()*(1000000/8)) / (2 * CNS3xxx_I2C_CLK)) - 
     212            (((((clk_get_rate(clk) / (2 * CNS3xxx_I2C_CLK)) - 
    224213                1) & 0x3FF) << 8) | (1 << 7) | 0x7F); 
    225214        I2C_TWI_OUT_DLY_REG |= 0x3; 
     
    359348} 
    360349 
    361 #ifdef CONFIG_PM 
    362 #warning "CONFIG_PM defined: suspend and resume not implemented" 
    363 #define cns3xxx_i2c_suspend     NULL 
    364 #define cns3xxx_i2c_resume      NULL 
    365 #else 
    366 #define cns3xxx_i2c_suspend     NULL 
    367 #define cns3xxx_i2c_resume      NULL 
    368 #endif 
    369  
    370350static struct platform_driver cns3xxx_i2c_driver = { 
    371351        .probe = cns3xxx_i2c_probe, 
    372352        .remove = cns3xxx_i2c_remove, 
    373         .suspend = cns3xxx_i2c_suspend, 
    374         .resume = cns3xxx_i2c_resume, 
    375353        .driver = { 
    376354                .owner = THIS_MODULE, 
  • trunk/target/linux/cns3xxx/files/drivers/net/ethernet/cavium/cns3xxx_eth.c

    r40592 r41917  
    2121#include <linux/phy.h> 
    2222#include <linux/platform_device.h> 
     23#include <linux/platform_data/cns3xxx.h> 
    2324#include <linux/skbuff.h> 
    24 #include <mach/irqs.h> 
    25 #include <mach/platform.h> 
    2625 
    2726#define DRV_NAME "cns3xxx_eth" 
     
    283282 
    284283struct sw { 
    285         struct resource *mem_res; 
    286284        struct switch_regs __iomem *regs; 
    287285        struct napi_struct napi; 
     
    291289        struct sk_buff *frag_first; 
    292290        struct sk_buff *frag_last; 
     291        int rx_irq; 
     292        int stat_irq; 
    293293}; 
    294294 
     
    378378} 
    379379 
    380 static int cns3xxx_mdio_register(void) 
     380static int cns3xxx_mdio_register(void __iomem *base) 
    381381{ 
    382382        int err; 
     
    385385                return -ENOMEM; 
    386386 
    387         mdio_regs = (struct switch_regs __iomem *)CNS3XXX_SWITCH_BASE_VIRT; 
     387        mdio_regs = base; 
    388388 
    389389        spin_lock_init(&mdio_lock); 
     
    442442                return; 
    443443 
    444         disable_irq_nosync(IRQ_CNS3XXX_SW_R0RXC); 
     444        disable_irq_nosync(sw->rx_irq); 
    445445        __napi_schedule(&sw->napi); 
    446446} 
     
    717717        if (!received) { 
    718718                napi_complete(napi); 
    719                 enable_irq(IRQ_CNS3XXX_SW_R0RXC); 
     719                enable_irq(sw->rx_irq); 
    720720 
    721721                /* if rx descriptors are full schedule another poll */ 
     
    10081008 
    10091009        if (!ports_open) { 
    1010                 request_irq(IRQ_CNS3XXX_SW_R0RXC, eth_rx_irq, IRQF_SHARED, "gig_switch", napi_dev); 
    1011                 request_irq(IRQ_CNS3XXX_SW_STATUS, eth_stat_irq, IRQF_SHARED, "gig_stat", napi_dev); 
     1010                request_irq(sw->rx_irq, eth_rx_irq, IRQF_SHARED, "gig_switch", napi_dev); 
     1011                request_irq(sw->stat_irq, eth_stat_irq, IRQF_SHARED, "gig_stat", napi_dev); 
    10121012                napi_enable(&sw->napi); 
    10131013                netif_start_queue(napi_dev); 
     
    10531053 
    10541054        if (!ports_open) { 
    1055                 disable_irq(IRQ_CNS3XXX_SW_R0RXC); 
    1056                 free_irq(IRQ_CNS3XXX_SW_R0RXC, napi_dev); 
    1057                 disable_irq(IRQ_CNS3XXX_SW_STATUS); 
    1058                 free_irq(IRQ_CNS3XXX_SW_STATUS, napi_dev); 
     1055                disable_irq(sw->rx_irq); 
     1056                free_irq(sw->rx_irq, napi_dev); 
     1057                disable_irq(sw->stat_irq); 
     1058                free_irq(sw->stat_irq, napi_dev); 
    10591059                napi_disable(&sw->napi); 
    10601060                netif_stop_queue(napi_dev); 
     
    11731173        struct net_device *dev; 
    11741174        struct cns3xxx_plat_info *plat = pdev->dev.platform_data; 
    1175         u32 regs_phys; 
    11761175        char phy_id[MII_BUS_ID_SIZE + 3]; 
    11771176        int err; 
    11781177        u32 temp; 
    1179  
    1180         if (!(napi_dev = alloc_etherdev(sizeof(struct sw)))) 
    1181                 return -ENOMEM; 
     1178        struct resource *res; 
     1179        void __iomem *regs; 
     1180 
     1181        res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 
     1182        regs = devm_ioremap_resource(&pdev->dev, res); 
     1183        if (IS_ERR(regs)) 
     1184                return PTR_ERR(regs); 
     1185 
     1186        err = cns3xxx_mdio_register(regs); 
     1187        if (err) 
     1188                return err; 
     1189 
     1190        if (!(napi_dev = alloc_etherdev(sizeof(struct sw)))) { 
     1191                err = -ENOMEM; 
     1192                goto err_remove_mdio; 
     1193        } 
     1194 
    11821195        strcpy(napi_dev->name, "switch%d"); 
    11831196        napi_dev->features = NETIF_F_IP_CSUM | NETIF_F_SG | NETIF_F_FRAGLIST; 
     
    11861199        sw = netdev_priv(napi_dev); 
    11871200        memset(sw, 0, sizeof(struct sw)); 
    1188         sw->regs = (struct switch_regs __iomem *)CNS3XXX_SWITCH_BASE_VIRT; 
    1189         regs_phys = CNS3XXX_SWITCH_BASE; 
    1190         sw->mem_res = request_mem_region(regs_phys, REGS_SIZE, napi_dev->name); 
    1191         if (!sw->mem_res) { 
    1192                 err = -EBUSY; 
    1193                 goto err_free; 
    1194         } 
     1201        sw->regs = regs; 
     1202 
     1203        sw->rx_irq = platform_get_irq_byname(pdev, "eth_rx"); 
     1204        sw->stat_irq = platform_get_irq_byname(pdev, "eth_stat"); 
    11951205 
    11961206        temp = __raw_readl(&sw->regs->phy_auto_addr); 
     
    12531263 
    12541264                snprintf(phy_id, MII_BUS_ID_SIZE + 3, PHY_ID_FMT, "0", plat->phy[i]); 
    1255                 port->phydev = phy_connect(dev, phy_id, &cns3xxx_adjust_link, 0, 
     1265                port->phydev = phy_connect(dev, phy_id, &cns3xxx_adjust_link, 
    12561266                        PHY_INTERFACE_MODE_RGMII); 
    12571267                if ((err = IS_ERR(port->phydev))) { 
     
    12911301err_free: 
    12921302        free_netdev(napi_dev); 
     1303err_remove_mdio: 
     1304        cns3xxx_mdio_remove(); 
    12931305        return err; 
    12941306} 
     
    13121324        } 
    13131325 
    1314         release_resource(sw->mem_res); 
    13151326        free_netdev(napi_dev); 
     1327        cns3xxx_mdio_remove(); 
     1328 
    13161329        return 0; 
    13171330} 
     
    13251338static int __init eth_init_module(void) 
    13261339{ 
    1327         int err; 
    1328         if ((err = cns3xxx_mdio_register())) 
    1329                 return err; 
    13301340        return platform_driver_register(&cns3xxx_eth_driver); 
    13311341} 
     
    13341344{ 
    13351345        platform_driver_unregister(&cns3xxx_eth_driver); 
    1336         cns3xxx_mdio_remove(); 
    13371346} 
    13381347 
  • trunk/target/linux/cns3xxx/files/drivers/spi/spi-cns3xxx.c

    r35908 r41917  
    4646#include <asm/dma.h> 
    4747#include <asm/delay.h> 
    48 #include <mach/cns3xxx.h> 
    4948#include <linux/module.h> 
    50 #include <mach/pm.h> 
    5149 
    5250/* 
    5351 * define access macros 
    5452 */ 
    55 #define SPI_MEM_MAP_VALUE(reg_offset)           (*((u32 volatile *)(CNS3XXX_SSP_BASE_VIRT + reg_offset))) 
    56  
    57 #define SPI_CONFIGURATION_REG                   SPI_MEM_MAP_VALUE(0x40) 
    58 #define SPI_SERVICE_STATUS_REG                  SPI_MEM_MAP_VALUE(0x44) 
    59 #define SPI_BIT_RATE_CONTROL_REG                SPI_MEM_MAP_VALUE(0x48) 
    60 #define SPI_TRANSMIT_CONTROL_REG                SPI_MEM_MAP_VALUE(0x4C) 
    61 #define SPI_TRANSMIT_BUFFER_REG                 SPI_MEM_MAP_VALUE(0x50) 
    62 #define SPI_RECEIVE_CONTROL_REG                 SPI_MEM_MAP_VALUE(0x54) 
    63 #define SPI_RECEIVE_BUFFER_REG                  SPI_MEM_MAP_VALUE(0x58) 
    64 #define SPI_FIFO_TRANSMIT_CONFIG_REG            SPI_MEM_MAP_VALUE(0x5C) 
    65 #define SPI_FIFO_TRANSMIT_CONTROL_REG           SPI_MEM_MAP_VALUE(0x60) 
    66 #define SPI_FIFO_RECEIVE_CONFIG_REG             SPI_MEM_MAP_VALUE(0x64) 
    67 #define SPI_INTERRUPT_STATUS_REG                SPI_MEM_MAP_VALUE(0x68) 
    68 #define SPI_INTERRUPT_ENABLE_REG                SPI_MEM_MAP_VALUE(0x6C) 
    69  
    70 #define SPI_TRANSMIT_BUFFER_REG_ADDR            (CNS3XXX_SSP_BASE +0x50) 
    71 #define SPI_RECEIVE_BUFFER_REG_ADDR             (CNS3XXX_SSP_BASE +0x58) 
     53#define SPI_MEM_MAP_VALUE(reg_offset)           (*((u32 volatile *)(hw->base + reg_offset))) 
     54 
     55#define SPI_CONFIGURATION_REG                   SPI_MEM_MAP_VALUE(0x00) 
     56#define SPI_SERVICE_STATUS_REG                  SPI_MEM_MAP_VALUE(0x04) 
     57#define SPI_BIT_RATE_CONTROL_REG                SPI_MEM_MAP_VALUE(0x08) 
     58#define SPI_TRANSMIT_CONTROL_REG                SPI_MEM_MAP_VALUE(0x0C) 
     59#define SPI_TRANSMIT_BUFFER_REG                 SPI_MEM_MAP_VALUE(0x10) 
     60#define SPI_RECEIVE_CONTROL_REG                 SPI_MEM_MAP_VALUE(0x14) 
     61#define SPI_RECEIVE_BUFFER_REG                  SPI_MEM_MAP_VALUE(0x18) 
     62#define SPI_FIFO_TRANSMIT_CONFIG_REG            SPI_MEM_MAP_VALUE(0x1C) 
     63#define SPI_FIFO_TRANSMIT_CONTROL_REG           SPI_MEM_MAP_VALUE(0x20) 
     64#define SPI_FIFO_RECEIVE_CONFIG_REG             SPI_MEM_MAP_VALUE(0x24) 
     65#define SPI_INTERRUPT_STATUS_REG                SPI_MEM_MAP_VALUE(0x28) 
     66#define SPI_INTERRUPT_ENABLE_REG                SPI_MEM_MAP_VALUE(0x2C) 
     67 
     68#define SPI_TRANSMIT_BUFFER_REG_ADDR            (CNS3XXX_SSP_BASE +0x10) 
     69#define SPI_RECEIVE_BUFFER_REG_ADDR             (CNS3XXX_SSP_BASE +0x18) 
    7270 
    7371/* Structure for SPI controller of CNS3XXX SOCs */ 
     
    8684        unsigned char *rx; 
    8785 
     86        void __iomem *base; 
    8887        struct spi_master *master; 
    8988        struct platform_device *pdev; 
     
    9190}; 
    9291 
    93 static inline u8 cns3xxx_spi_bus_idle(void) 
     92static inline u8 cns3xxx_spi_bus_idle(struct cns3xxx_spi *hw) 
    9493{ 
    9594        return ((SPI_SERVICE_STATUS_REG & 0x1) ? 0 : 1); 
    9695} 
    9796 
    98 static inline u8 cns3xxx_spi_tx_buffer_empty(void) 
     97static inline u8 cns3xxx_spi_tx_buffer_empty(struct cns3xxx_spi *hw) 
    9998{ 
    10099        return ((SPI_INTERRUPT_STATUS_REG & (0x1 << 3)) ? 1 : 0); 
    101100} 
    102101 
    103 static inline u8 cns3xxx_spi_rx_buffer_full(void) 
     102static inline u8 cns3xxx_spi_rx_buffer_full(struct cns3xxx_spi *hw) 
    104103{ 
    105104        return ((SPI_INTERRUPT_STATUS_REG & (0x1 << 2)) ? 1 : 0); 
    106105} 
    107106 
    108 u8 cns3xxx_spi_tx_rx(u8 tx_channel, u8 tx_eof, u32 tx_data, 
    109                             u32 * rx_data) 
     107u8 cns3xxx_spi_tx_rx(struct cns3xxx_spi *hw, u8 tx_channel, u8 tx_eof, 
     108                     u32 tx_data, u32 * rx_data) 
    110109{ 
    111110        u8 rx_channel; 
    112111        u8 rx_eof; 
    113112 
    114         while (!cns3xxx_spi_bus_idle()) ;       // do nothing 
    115  
    116         while (!cns3xxx_spi_tx_buffer_empty()) ;        // do nothing 
     113        while (!cns3xxx_spi_bus_idle(hw)) ;     // do nothing 
     114 
     115        while (!cns3xxx_spi_tx_buffer_empty(hw)) ;      // do nothing 
    117116 
    118117        SPI_TRANSMIT_CONTROL_REG &= ~(0x7); 
     
    121120        SPI_TRANSMIT_BUFFER_REG = tx_data; 
    122121 
    123         while (!cns3xxx_spi_rx_buffer_full()) ; // do nothing 
     122        while (!cns3xxx_spi_rx_buffer_full(hw)) ;       // do nothing 
    124123 
    125124        rx_channel = SPI_RECEIVE_CONTROL_REG & 0x3; 
     
    135134} 
    136135 
    137 u8 cns3xxx_spi_tx(u8 tx_channel, u8 tx_eof, u32 tx_data) 
    138 { 
    139  
    140         while (!cns3xxx_spi_bus_idle()) ;       // do nothing 
    141  
    142         while (!cns3xxx_spi_tx_buffer_empty()) ;        // do nothing 
     136u8 cns3xxx_spi_tx(struct cns3xxx_spi *hw, u8 tx_channel, u8 tx_eof, u32 tx_data) 
     137{ 
     138 
     139        while (!cns3xxx_spi_bus_idle(hw)) ;       // do nothing 
     140 
     141        while (!cns3xxx_spi_tx_buffer_empty(hw)) ;        // do nothing 
    143142 
    144143        SPI_TRANSMIT_CONTROL_REG &= ~(0x7); 
     
    163162static void cns3xxx_spi_chipselect(struct spi_device *spi, int value) 
    164163{ 
     164        struct cns3xxx_spi *hw = to_hw(spi); 
    165165        unsigned int spi_config; 
    166166 
     
    222222                                "[SPI_CNS3XXX_DEBUG] hw->tx[%02d]: 0x%02x\n", i, 
    223223                                hw->tx[i]); 
    224                         cns3xxx_spi_tx_rx(spi->chip_select, 0, hw->tx[i], 
     224                        cns3xxx_spi_tx_rx(hw, spi->chip_select, 0, hw->tx[i], 
    225225                                          &rx_data); 
    226226                        if (hw->rx) { 
     
    233233 
    234234                if (t->last_in_message_list) { 
    235                         cns3xxx_spi_tx_rx(spi->chip_select, 1, hw->tx[i], 
     235                        cns3xxx_spi_tx_rx(hw, spi->chip_select, 1, hw->tx[i], 
    236236                                          &rx_data); 
    237237                        if (hw->rx) { 
     
    242242                        } 
    243243                } else { 
    244                         cns3xxx_spi_tx_rx(spi->chip_select, 0, hw->tx[i], 
     244                        cns3xxx_spi_tx_rx(hw, spi->chip_select, 0, hw->tx[i], 
    245245                                          &rx_data); 
    246246                } 
     
    252252                u32 rx_data; 
    253253                for (i = 0; i < (hw->len - 1); i++) { 
    254                         cns3xxx_spi_tx_rx(spi->chip_select, 0, 0xff, &rx_data); 
     254                        cns3xxx_spi_tx_rx(hw, spi->chip_select, 0, 0xff, &rx_data); 
    255255                        hw->rx[i] = rx_data; 
    256256                        dev_dbg(&spi->dev, 
     
    260260 
    261261                if (t->last_in_message_list) { 
    262                         cns3xxx_spi_tx_rx(spi->chip_select, 1, 0xff, &rx_data); 
     262                        cns3xxx_spi_tx_rx(hw, spi->chip_select, 1, 0xff, &rx_data); 
    263263                } else { 
    264                         cns3xxx_spi_tx_rx(spi->chip_select, 0, 0xff, &rx_data); 
     264                        cns3xxx_spi_tx_rx(hw, spi->chip_select, 0, 0xff, &rx_data); 
    265265                } 
    266266                hw->rx[i] = rx_data; 
     
    272272} 
    273273 
    274 static void __init cns3xxx_spi_initial(void) 
    275 { 
    276         u32 __iomem *gpiob = (void __iomem *) (CNS3XXX_MISC_BASE_VIRT + 0x0018); 
    277         u32 gpiob_pins = __raw_readl(gpiob); 
    278  
    279         /* MMC/SD pins share with GPIOA */ 
    280         gpiob_pins |= 0xf80; 
    281         __raw_writel(gpiob_pins, gpiob); 
    282  
    283         /* share pin config. */ 
    284         //PM_PLL_HM_PD_CTRL_REG &= ~(0x1 << 5); 
    285         //HAL_MISC_ENABLE_SPI_PINS(); 
    286         cns3xxx_pwr_clk_en(CNS3XXX_PWR_CLK_EN(SPI_PCM_I2C)); 
    287         cns3xxx_pwr_soft_rst(CNS3XXX_PWR_SOFTWARE_RST(SPI_PCM_I2C)); 
    288  
     274static void __init cns3xxx_spi_initial(struct cns3xxx_spi *hw) 
     275{ 
    289276        SPI_CONFIGURATION_REG = (((0x0 & 0x3) << 0) |   /* 8bits shift length */ 
    290277                                 (0x0 << 9) |   /* SPI mode */ 
     
    329316        struct spi_master *master; 
    330317        struct cns3xxx_spi *hw; 
     318        struct resource *res; 
    331319        int err = 0; 
    332320 
    333321        printk("%s: setup CNS3XXX SPI Controller\n", __FUNCTION__); 
     322 
     323        res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 
     324        if (!res) 
     325                return -ENODEV; 
    334326 
    335327        /* Allocate master with space for cns3xxx_spi */ 
     
    347339        hw->dev = &pdev->dev; 
    348340 
     341        hw->base = devm_ioremap_resource(hw->dev, res); 
     342        if (IS_ERR(hw->base)) { 
     343                dev_err(hw->dev, "Unable to map registers\n"); 
     344                err = PTR_ERR(hw->base); 
     345                goto err_register; 
     346        } 
     347 
    349348        platform_set_drvdata(pdev, hw); 
    350349        init_completion(&hw->done); 
     
    366365 
    367366        /* SPI controller initializations */ 
    368         cns3xxx_spi_initial(); 
     367        cns3xxx_spi_initial(hw); 
    369368 
    370369        /* register SPI controller */ 
  • trunk/target/linux/cns3xxx/files/drivers/usb/dwc/otg_attr.c

    r39892 r41917  
    695695} 
    696696 
    697 DEVICE_ATTR(regdump, S_IRUGO|S_IWUSR, regdump_show, 0); 
     697DEVICE_ATTR(regdump, S_IRUGO, regdump_show, 0); 
    698698 
    699699/** 
     
    712712} 
    713713 
    714 DEVICE_ATTR(spramdump, S_IRUGO|S_IWUSR, spramdump_show, 0); 
     714DEVICE_ATTR(spramdump, S_IRUGO, spramdump_show, 0); 
    715715 
    716716/** 
     
    730730} 
    731731 
    732 DEVICE_ATTR(hcddump, S_IRUGO|S_IWUSR, hcddump_show, 0); 
     732DEVICE_ATTR(hcddump, S_IRUGO, hcddump_show, 0); 
    733733 
    734734/** 
     
    749749} 
    750750 
    751 DEVICE_ATTR(hcd_frrem, S_IRUGO|S_IWUSR, hcd_frrem_show, 0); 
     751DEVICE_ATTR(hcd_frrem, S_IRUGO, hcd_frrem_show, 0); 
    752752 
    753753/** 
     
    778778} 
    779779 
    780 DEVICE_ATTR(rd_reg_test, S_IRUGO|S_IWUSR, rd_reg_test_show, 0); 
     780DEVICE_ATTR(rd_reg_test, S_IRUGO, rd_reg_test_show, 0); 
    781781 
    782782/** 
     
    807807} 
    808808 
    809 DEVICE_ATTR(wr_reg_test, S_IRUGO|S_IWUSR, wr_reg_test_show, 0); 
     809DEVICE_ATTR(wr_reg_test, S_IRUGO, wr_reg_test_show, 0); 
    810810/**@}*/ 
    811811 
  • trunk/target/linux/cns3xxx/files/drivers/usb/dwc/otg_driver.c

    r35908 r41917  
    6464 
    6565#include <asm/sizes.h> 
    66 #include <mach/pm.h> 
    6766 
    6867#include "otg_plat.h" 
  • trunk/target/linux/cns3xxx/files/drivers/usb/dwc/otg_hcd.c

    r39892 r41917  
    5151#include <linux/dma-mapping.h> 
    5252#include <linux/version.h> 
    53  
    54 #include <mach/irqs.h> 
    5553 
    5654#include "otg_driver.h" 
  • trunk/target/linux/cns3xxx/files/drivers/usb/dwc/otg_hcd_queue.c

    r39892 r41917  
    4949#include <linux/string.h> 
    5050#include <linux/version.h> 
    51  
    52 #include <mach/irqs.h> 
    5351 
    5452#include "otg_driver.h" 
  • trunk/target/linux/cns3xxx/files/drivers/usb/dwc/otg_pcd.c

    r35908 r41917  
    7676#include <linux/version.h> 
    7777 
    78 #include <mach/irqs.h> 
    7978#include <linux/usb/ch9.h> 
    8079 
  • trunk/target/linux/cns3xxx/patches-3.10/020-watchdog_support.patch

    r41916 r41917  
    1414--- a/arch/arm/configs/cns3420vb_defconfig 
    1515+++ b/arch/arm/configs/cns3420vb_defconfig 
    16 @@ -53,6 +53,8 @@ CONFIG_LEGACY_PTY_COUNT=16 
     16@@ -56,6 +56,8 @@ CONFIG_LEGACY_PTY_COUNT=16 
    1717 # CONFIG_HW_RANDOM is not set 
    1818 # CONFIG_HWMON is not set 
     
    2525--- a/arch/arm/mach-cns3xxx/cns3420vb.c 
    2626+++ b/arch/arm/mach-cns3xxx/cns3420vb.c 
    27 @@ -208,10 +208,32 @@ static struct platform_device cns3xxx_us 
     27@@ -206,10 +206,32 @@ static struct platform_device cns3xxx_us 
    2828        }, 
    2929 }; 
  • trunk/target/linux/cns3xxx/patches-3.10/045-twd_base.patch

    r41916 r41917  
    11--- a/arch/arm/mach-cns3xxx/core.c 
    22+++ b/arch/arm/mach-cns3xxx/core.c 
    3 @@ -19,6 +19,7 @@ 
     3@@ -17,6 +17,7 @@ 
     4 #include <linux/platform_device.h> 
     5 #include <linux/usb/ehci_pdriver.h> 
     6 #include <linux/usb/ohci_pdriver.h> 
     7+#include <asm/smp_twd.h> 
     8 #include <asm/mach/arch.h> 
     9 #include <asm/mach/map.h> 
    410 #include <asm/mach/time.h> 
    5  #include <asm/mach/irq.h> 
    6  #include <asm/hardware/gic.h> 
    7 +#include <asm/smp_twd.h> 
    8  #include <asm/hardware/cache-l2x0.h> 
    9  #include <mach/cns3xxx.h> 
     11@@ -26,6 +27,8 @@ 
    1012 #include "core.h" 
    11 @@ -187,6 +188,17 @@ static struct irqaction cns3xxx_timer_ir 
     13 #include "pm.h" 
     14  
     15+#define IRQ_LOCALTIMER 29 
     16+ 
     17 static struct map_desc cns3xxx_io_desc[] __initdata = { 
     18        { 
     19                .virtual        = CNS3XXX_TC11MP_SCU_BASE_VIRT, 
     20@@ -159,6 +162,17 @@ static struct irqaction cns3xxx_timer_ir 
    1221        .handler        = cns3xxx_timer_interrupt, 
    1322 }; 
     
    2736  * Set up the clock source and clock events devices 
    2837  */ 
    29 @@ -240,6 +252,7 @@ static void __init __cns3xxx_timer_init( 
     38@@ -212,6 +226,7 @@ static void __init __cns3xxx_timer_init( 
    3039        setup_irq(timer_irq, &cns3xxx_timer_irq); 
    3140  
     
    3443 } 
    3544  
    36  static void __init cns3xxx_timer_init(void) 
     45 void __init cns3xxx_timer_init(void) 
  • trunk/target/linux/cns3xxx/patches-3.10/055-pcie_io.patch

    r41916 r41917  
    11--- a/arch/arm/mach-cns3xxx/core.c 
    22+++ b/arch/arm/mach-cns3xxx/core.c 
    3 @@ -69,6 +69,16 @@ static struct map_desc cns3xxx_io_desc[] 
    4                 .pfn            = __phys_to_pfn(CNS3XXX_SSP_BASE), 
     3@@ -50,6 +50,16 @@ static struct map_desc cns3xxx_io_desc[] 
     4                .pfn            = __phys_to_pfn(CNS3XXX_PM_BASE), 
    55                .length         = SZ_4K, 
    66                .type           = MT_DEVICE, 
  • trunk/target/linux/cns3xxx/patches-3.10/065-pcie_early_init.patch

    r41916 r41917  
    11--- a/arch/arm/mach-cns3xxx/cns3420vb.c 
    22+++ b/arch/arm/mach-cns3xxx/cns3420vb.c 
    3 @@ -263,11 +263,21 @@ static struct map_desc cns3420_io_desc[] 
     3@@ -261,11 +261,21 @@ static struct map_desc cns3420_io_desc[] 
    44 static void __init cns3420_map_io(void) 
    55 { 
     
    2222 MACHINE_START(CNS3420VB, "Cavium Networks CNS3420 Validation Board") 
    2323        .atag_offset    = 0x100, 
    24         .map_io         = cns3420_map_io, 
     24        .nr_irqs        = NR_IRQS_CNS3XXX, 
    2525--- a/arch/arm/mach-cns3xxx/core.h 
    2626+++ b/arch/arm/mach-cns3xxx/core.h 
    27 @@ -13,6 +13,8 @@ 
     27@@ -13,6 +13,7 @@ 
    2828  
    2929 extern struct smp_operations cns3xxx_smp_ops; 
    30  extern struct sys_timer cns3xxx_timer; 
     30 extern void cns3xxx_timer_init(void); 
    3131+extern void cns3xxx_pcie_iotable_init(void); 
    32 + 
    3332  
    3433 #ifdef CONFIG_CACHE_L2X0 
    3534 void __init cns3xxx_l2x0_init(void); 
    36 @@ -22,6 +24,7 @@ static inline void cns3xxx_l2x0_init(voi 
     35@@ -22,6 +23,7 @@ static inline void cns3xxx_l2x0_init(voi 
    3736  
    3837 void __init cns3xxx_map_io(void); 
  • trunk/target/linux/cns3xxx/patches-3.10/070-i2c_support.patch

    r41916 r41917  
    11--- a/drivers/i2c/busses/Kconfig 
    22+++ b/drivers/i2c/busses/Kconfig 
    3 @@ -347,6 +347,18 @@ config I2C_CBUS_GPIO 
     3@@ -375,6 +375,18 @@ config I2C_CBUS_GPIO 
    44          This driver can also be built as a module.  If so, the module 
    55          will be called i2c-cbus-gpio. 
     
    2222--- a/drivers/i2c/busses/Makefile 
    2323+++ b/drivers/i2c/busses/Makefile 
    24 @@ -87,6 +87,7 @@ obj-$(CONFIG_I2C_ACORN)               += i2c-acorn.o 
     24@@ -89,6 +89,7 @@ obj-$(CONFIG_I2C_ACORN)               += i2c-acorn.o 
    2525 obj-$(CONFIG_I2C_ELEKTOR)      += i2c-elektor.o 
    2626 obj-$(CONFIG_I2C_PCA_ISA)      += i2c-pca-isa.o 
  • trunk/target/linux/cns3xxx/patches-3.10/075-spi_support.patch

    r41916 r41917  
    11--- a/drivers/spi/Kconfig 
    22+++ b/drivers/spi/Kconfig 
    3 @@ -130,6 +130,13 @@ config SPI_CLPS711X 
     3@@ -142,6 +142,13 @@ config SPI_CLPS711X 
    44          This enables dedicated general purpose SPI/Microwire1-compatible 
    55          master mode interface (SSI1) for CLPS711X-based CPUs. 
     
    1717--- a/drivers/spi/Makefile 
    1818+++ b/drivers/spi/Makefile 
    19 @@ -19,6 +19,7 @@ obj-$(CONFIG_SPI_BFIN5XX)             += spi-bfin5x 
     19@@ -20,6 +20,7 @@ obj-$(CONFIG_SPI_BFIN5XX)             += spi-bfin5x 
    2020 obj-$(CONFIG_SPI_BFIN_SPORT)           += spi-bfin-sport.o 
    2121 obj-$(CONFIG_SPI_BITBANG)              += spi-bitbang.o 
     
    4242--- a/include/linux/spi/spi.h 
    4343+++ b/include/linux/spi/spi.h 
    44 @@ -511,6 +511,13 @@ struct spi_transfer { 
     44@@ -524,6 +524,13 @@ struct spi_transfer { 
    4545        u32             speed_hz; 
    4646  
  • trunk/target/linux/cns3xxx/patches-3.10/080-sata_support.patch

    r41916 r41917  
    11--- a/arch/arm/mach-cns3xxx/devices.c 
    22+++ b/arch/arm/mach-cns3xxx/devices.c 
    3 @@ -41,7 +41,7 @@ static struct resource cns3xxx_ahci_reso 
     3@@ -40,7 +40,7 @@ static struct resource cns3xxx_ahci_reso 
    44 static u64 cns3xxx_ahci_dmamask = DMA_BIT_MASK(32); 
    55  
  • trunk/target/linux/cns3xxx/patches-3.10/090-timers.patch

    r41916 r41917  
    11--- a/arch/arm/mach-cns3xxx/core.c 
    22+++ b/arch/arm/mach-cns3xxx/core.c 
    3 @@ -122,12 +122,13 @@ static void cns3xxx_timer_set_mode(enum 
     3@@ -103,12 +103,13 @@ static void cns3xxx_timer_set_mode(enum  
    44  
    55        switch (mode) { 
     
    1616                break; 
    1717        case CLOCK_EVT_MODE_UNUSED: 
    18 @@ -152,11 +153,11 @@ static int cns3xxx_timer_set_next_event( 
    19   
    20  static struct clock_event_device cns3xxx_tmr1_clockevent = { 
    21         .name           = "cns3xxx timer1", 
    22 -       .shift          = 8, 
    23 +       .shift          = 32, 
     18@@ -136,7 +137,7 @@ static struct clock_event_device cns3xxx 
    2419        .features       = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, 
    2520        .set_mode       = cns3xxx_timer_set_mode, 
     
    3025 }; 
    3126  
    32 @@ -209,6 +210,35 @@ static void __init cns3xxx_init_twd(void 
     27@@ -183,6 +184,35 @@ static void __init cns3xxx_init_twd(void 
    3328 #endif 
    3429 } 
     
    6661  * Set up the clock source and clock events devices 
    6762  */ 
    68 @@ -226,13 +256,12 @@ static void __init __cns3xxx_timer_init( 
     63@@ -200,13 +230,12 @@ static void __init __cns3xxx_timer_init( 
    6964        /* stop free running timer3 */ 
    7065        writel(0, cns3xxx_tmr1 + TIMER_FREERUN_CONTROL_OFFSET); 
     
    8378        irq_mask = readl(cns3xxx_tmr1 + TIMER1_2_INTERRUPT_MASK_OFFSET); 
    8479        irq_mask &= ~(1 << 2); 
    85 @@ -244,23 +273,9 @@ static void __init __cns3xxx_timer_init( 
     80@@ -218,23 +247,9 @@ static void __init __cns3xxx_timer_init( 
    8681        val |= (1 << 9); 
    8782        writel(val, cns3xxx_tmr1 + TIMER1_2_CONTROL_OFFSET); 
  • trunk/target/linux/cns3xxx/patches-3.10/097-l2x0_cmdline_disable.patch

    r41916 r41917  
    11--- a/arch/arm/mach-cns3xxx/core.c 
    22+++ b/arch/arm/mach-cns3xxx/core.c 
    3 @@ -293,13 +293,26 @@ struct sys_timer cns3xxx_timer = { 
     3@@ -273,13 +273,26 @@ void __init cns3xxx_timer_init(void) 
    44  
    55 #ifdef CONFIG_CACHE_L2X0 
     
    3131        /* 
    3232         * Tag RAM Control register 
    33 @@ -329,7 +342,10 @@ void __init cns3xxx_l2x0_init(void) 
     33@@ -309,7 +322,10 @@ void __init cns3xxx_l2x0_init(void) 
    3434  
    3535        /* 32 KiB, 8-way, parity disable */ 
     
    4444--- a/arch/arm/mach-cns3xxx/cns3420vb.c 
    4545+++ b/arch/arm/mach-cns3xxx/cns3420vb.c 
    46 @@ -241,8 +241,6 @@ static struct platform_device *cns3420_p 
     46@@ -239,8 +239,6 @@ static struct platform_device *cns3420_p 
    4747  
    4848 static void __init cns3420_init(void) 
     
    5353  
    5454        cns3xxx_ahci_init(); 
    55 --- a/arch/arm/mach-cns3xxx/core.h 
    56 +++ b/arch/arm/mach-cns3xxx/core.h 
    57 @@ -15,13 +15,6 @@ extern struct smp_operations cns3xxx_smp 
    58  extern struct sys_timer cns3xxx_timer; 
    59  extern void cns3xxx_pcie_iotable_init(void); 
    60   
    61 - 
    62 -#ifdef CONFIG_CACHE_L2X0 
    63 -void __init cns3xxx_l2x0_init(void); 
    64 -#else 
    65 -static inline void cns3xxx_l2x0_init(void) {} 
    66 -#endif /* CONFIG_CACHE_L2X0 */ 
    67 - 
    68  void __init cns3xxx_common_init(void); 
    69  void __init cns3xxx_init_irq(void); 
    70  int  __init cns3xxx_pcie_init(void); 
  • trunk/target/linux/cns3xxx/patches-3.10/200-dwc_otg_support.patch

    r41916 r41917  
    1 --- a/drivers/Makefile 
    2 +++ b/drivers/Makefile 
    3 @@ -81,6 +81,7 @@ obj-$(CONFIG_PARIDE)          += block/paride/ 
    4  obj-$(CONFIG_TC)               += tc/ 
    5  obj-$(CONFIG_UWB)              += uwb/ 
    6  obj-$(CONFIG_USB_OTG_UTILS)    += usb/ 
    7 +obj-$(CONFIG_USB_DWC_OTG)      += usb/dwc/ 
    8  obj-$(CONFIG_USB)              += usb/ 
    9  obj-$(CONFIG_PCI)              += usb/ 
    10  obj-$(CONFIG_USB_GADGET)       += usb/ 
    111--- a/drivers/usb/Kconfig 
    122+++ b/drivers/usb/Kconfig 
    13 @@ -138,6 +138,8 @@ source "drivers/usb/chipidea/Kconfig" 
     3@@ -136,6 +136,8 @@ source "drivers/usb/musb/Kconfig" 
    144  
    155 source "drivers/usb/renesas_usbhs/Kconfig" 
     
    3727--- a/include/linux/usb.h 
    3828+++ b/include/linux/usb.h 
    39 @@ -1401,6 +1401,9 @@ struct urb { 
     29@@ -1404,6 +1404,9 @@ struct urb { 
    4030        unsigned int transfer_flags;    /* (in) URB_SHORT_NOT_OK | ...*/ 
    4131        void *transfer_buffer;          /* (in) associated data buffer */ 
     
    4737        int num_mapped_sgs;             /* (internal) mapped sg entries */ 
    4838        int num_sgs;                    /* (in) number of entries in the sg list */ 
     39--- a/drivers/usb/Makefile 
     40+++ b/drivers/usb/Makefile 
     41@@ -7,6 +7,7 @@ 
     42 obj-$(CONFIG_USB)              += core/ 
     43  
     44 obj-$(CONFIG_USB_DWC3)         += dwc3/ 
     45+obj-$(CONFIG_USB_DWC_OTG)      += dwc/ 
     46  
     47 obj-$(CONFIG_USB_MON)          += mon/ 
     48  
  • trunk/target/linux/cns3xxx/patches-3.10/300-laguna_support.patch

    r41916 r41917  
    11--- a/arch/arm/mach-cns3xxx/Kconfig 
    22+++ b/arch/arm/mach-cns3xxx/Kconfig 
    3 @@ -9,4 +9,12 @@ config MACH_CNS3420VB 
     3@@ -27,4 +27,12 @@ config MACH_CNS3420VB 
    44          This is a platform with an on-board ARM11 MPCore and has support 
    55          for USB, USB-OTG, MMC/SD/SDIO, SATA, PCI-E, etc. 
     
    1616--- a/arch/arm/mach-cns3xxx/Makefile 
    1717+++ b/arch/arm/mach-cns3xxx/Makefile 
    18 @@ -1,5 +1,6 @@ 
    19  obj-$(CONFIG_ARCH_CNS3XXX)             += core.o gpio.o pm.o devices.o 
    20  obj-$(CONFIG_PCI)                      += pcie.o 
    21  obj-$(CONFIG_MACH_CNS3420VB)           += cns3420vb.o 
    22 +obj-$(CONFIG_MACH_GW2388)              += laguna.o 
    23  obj-$(CONFIG_SMP)                      += platsmp.o headsmp.o cns3xxx_fiq.o 
    24  obj-$(CONFIG_HOTPLUG_CPU)              += hotplug.o 
     18@@ -7,3 +7,5 @@ cns3xxx-$(CONFIG_PCI)                   += pcie.o 
     19 cns3xxx-$(CONFIG_MACH_CNS3420VB)       += cns3420vb.o 
     20 cns3xxx-$(CONFIG_SMP)                  += platsmp.o headsmp.o cns3xxx_fiq.o 
     21 cns3xxx-$(CONFIG_HOTPLUG_CPU)          += hotplug.o 
     22+cns3xxx-$(CONFIG_MACH_GW2388)          += laguna.o 
     23+ 
    2524--- a/arch/arm/mach-cns3xxx/devices.c 
    2625+++ b/arch/arm/mach-cns3xxx/devices.c 
    27 @@ -19,6 +19,7 @@ 
    28  #include <mach/cns3xxx.h> 
    29  #include <mach/irqs.h> 
    30  #include <mach/pm.h> 
     26@@ -16,6 +16,7 @@ 
     27 #include <linux/compiler.h> 
     28 #include <linux/dma-mapping.h> 
     29 #include <linux/platform_device.h> 
    3130+#include <asm/mach-types.h> 
     31 #include "cns3xxx.h" 
     32 #include "pm.h" 
    3233 #include "core.h" 
    33  #include "devices.h" 
    34   
    35 @@ -102,7 +103,11 @@ void __init cns3xxx_sdhci_init(void) 
     34@@ -101,7 +102,11 @@ void __init cns3xxx_sdhci_init(void) 
    3635        u32 gpioa_pins = __raw_readl(gpioa); 
    3736  
  • trunk/target/linux/cns3xxx/patches-3.10/305-laguna_sdhci_card_detect.patch

    r41916 r41917  
    11--- a/drivers/mmc/host/sdhci-cns3xxx.c 
    22+++ b/drivers/mmc/host/sdhci-cns3xxx.c 
    3 @@ -89,10 +89,11 @@ static struct sdhci_pltfm_data sdhci_cns 
     3@@ -88,10 +88,11 @@ static const struct sdhci_pltfm_data sdh 
    44        .ops = &sdhci_cns3xxx_ops, 
    55        .quirks = SDHCI_QUIRK_BROKEN_DMA | 
Note: See TracChangeset for help on using the changeset viewer.