Changeset 27026


Ignore:
Timestamp:
2011-05-29T23:19:26+02:00 (7 years ago)
Author:
blogic
Message:

[lantiq]

  • backport 2.6.8 patches to .39 / .32.33
  • remove lqtapi
  • bump tapi/dsl to .39
  • migrate to new ltq_ style api
  • add amazon_se support
Location:
trunk
Files:
55 added
58 deleted
18 edited
21 copied
17 moved

Legend:

Unmodified
Added
Removed
  • trunk/package/ltq-dsl/Makefile

    r25274 r27026  
    156156endef 
    157157 
    158 define Package/ltq-dsl-firmware-a/install 
     158define Package/kmod-ltq-dsl-firmware-a/install 
    159159        $(INSTALL_DIR) $(1)/lib/firmware/ 
    160160        $(CP) $(PKG_BUILD_DIR)/$(FW_BASE_NAME)_a_$(FW_A_FILE_VER).bin $(1)/lib/firmware/ModemHWE.bin 
    161161endef 
    162162 
    163 define Package/ltq-dsl-firmware-b/install 
     163define Package/kmod-ltq-dsl-firmware-b/install 
    164164        $(INSTALL_DIR) $(1)/lib/firmware/ 
    165165        $(CP) $(PKG_BUILD_DIR)/$(FW_BASE_NAME)_b_$(FW_B_FILE_VER).bin $(1)/lib/firmware/ModemHWE.bin 
  • trunk/package/ltq-dsl/patches/500-portability.patch

    r24526 r27026  
    1 Index: drv_dsl_cpe_api-3.24.4.4/configure.in 
    2 =================================================================== 
    3 --- drv_dsl_cpe_api-3.24.4.4.orig/configure.in  2009-08-13 13:39:21.000000000 +0200 
    4 +++ drv_dsl_cpe_api-3.24.4.4/configure.in       2010-10-14 02:14:55.000000000 +0200 
     1--- a/configure.in 
     2+++ b/configure.in 
    53@@ -310,7 +310,7 @@ 
    64 AC_ARG_ENABLE(kernelbuild, 
     
    168166  
    169167 AC_CONFIG_FILES([Makefile src/Makefile]) 
    170 Index: drv_dsl_cpe_api-3.24.4.4/src/Makefile.am 
    171 =================================================================== 
    172 --- drv_dsl_cpe_api-3.24.4.4.orig/src/Makefile.am       2009-07-03 14:06:34.000000000 +0200 
    173 +++ drv_dsl_cpe_api-3.24.4.4/src/Makefile.am    2010-10-14 02:14:55.000000000 +0200 
     168--- a/src/Makefile.am 
     169+++ b/src/Makefile.am 
    174170@@ -303,7 +303,7 @@ 
    175171 drv_dsl_cpe_api_OBJS = "$(subst .c,.o,$(filter %.c,$(drv_dsl_cpe_api_SOURCES)))" 
     
    196192  
    197193 clean-generic: 
    198 Index: drv_dsl_cpe_api-3.24.4.4/src/include/drv_dsl_cpe_os_linux.h 
    199 =================================================================== 
    200 --- drv_dsl_cpe_api-3.24.4.4.orig/src/include/drv_dsl_cpe_os_linux.h    2010-10-14 02:14:55.000000000 +0200 
    201 +++ drv_dsl_cpe_api-3.24.4.4/src/include/drv_dsl_cpe_os_linux.h 2010-10-14 02:14:55.000000000 +0200 
     194--- a/src/include/drv_dsl_cpe_os_linux.h 
     195+++ b/src/include/drv_dsl_cpe_os_linux.h 
    202196@@ -16,8 +16,6 @@ 
    203197    extern "C" { 
     
    209203 #include <linux/kernel.h> 
    210204 #include <linux/init.h> 
    211 @@ -40,6 +38,7 @@ 
     205@@ -26,8 +24,10 @@ 
     206 #include <linux/spinlock.h> 
     207 #include <linux/sched.h> 
     208  
     209-#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17)) 
     210-   #include <generated/utsrelease.h> 
     211+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)) 
     212+#include <linux/utsrelease.h> 
     213+#else 
     214+#include <generated/utsrelease.h> 
     215 #endif 
     216  
     217 #include <linux/types.h> 
     218@@ -39,7 +39,8 @@ 
     219 #include <linux/delay.h> 
    212220 #include <linux/poll.h> 
    213221 #include <asm/uaccess.h> 
    214  #include <linux/smp_lock.h> 
     222-#include <linux/smp_lock.h> 
     223+//#include <linux/smp_lock.h> 
    215224+#include <asm/ioctl.h> 
    216225  
  • trunk/package/ltq-dsl/src/ifxmips_atm_core.c

    r26023 r27026  
    6060 *  Chip Specific Head File 
    6161 */ 
    62 #include <lantiq.h> 
    63 #include <lantiq_regs.h> 
     62#include <lantiq_soc.h> 
    6463#include "ifxmips_atm_core.h" 
    6564 
     
    24042403    /*  create devices  */ 
    24052404    for ( port_num = 0; port_num < ATM_PORT_NUMBER; port_num++ ) { 
    2406         g_atm_priv_data.port[port_num].dev = atm_dev_register("ifxmips_atm", NULL, &g_ifx_atm_ops, -1, NULL); 
     2405#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)) 
     2406        g_atm_priv_data.port[port_num].dev = atm_dev_register("ifxmips_atm", &g_ifx_atm_ops, -1, NULL); 
     2407#else 
     2408        g_atm_priv_data.port[port_num].dev = atm_dev_register("ifxmips_atm", NULL, &g_ifx_atm_ops, -1, NULL); 
     2409#endif 
    24072410        if ( !g_atm_priv_data.port[port_num].dev ) { 
    24082411            err("failed to register atm device %d!", port_num); 
  • trunk/package/ltq-dsl/src/ifxmips_atm_danube.c

    r24526 r27026  
    4646 *  Chip Specific Head File 
    4747 */ 
    48 #include <lantiq.h> 
    49 #include <lantiq_regs.h> 
     48#include <lantiq_soc.h> 
    5049#include "ifxmips_compat.h" 
    5150#include "ifxmips_atm_core.h" 
  • trunk/package/ltq-dsl/src/ifxmips_atm_ppe_danube.h

    r24526 r27026  
    9494 *  Mailbox IGU1 Interrupt 
    9595 */ 
    96 #define PPE_MAILBOX_IGU1_INT            LQ_PPE_MBOX_INT 
     96#define PPE_MAILBOX_IGU1_INT            LTQ_PPE_MBOX_INT 
    9797 
    9898 
  • trunk/package/ltq-dsl/src/ifxmips_compat.h

    r24526 r27026  
    2727#define IFX_PMU_MODULE_PPE_TOP    (1 << 29) 
    2828 
    29 #define ifx_pmu_set(a,b)        {if(a == IFX_PMU_ENABLE) lq_pmu_enable(b); else lq_pmu_disable(b);} 
     29#define ifx_pmu_set(a,b)        {if(a == IFX_PMU_ENABLE) ltq_pmu_enable(b); else ltq_pmu_disable(b);} 
    3030 
    3131#define PPE_TOP_PMU_SETUP(__x)    ifx_pmu_set(IFX_PMU_MODULE_PPE_TOP, (__x)) 
  • trunk/package/ltq-dsl/src/lantiq_mei.c

    r26158 r27026  
    3030#include <linux/module.h> 
    3131#include <linux/version.h> 
     32#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)) 
     33#include <linux/utsrelease.h> 
     34#else 
    3235#include <generated/utsrelease.h> 
     36#endif 
    3337#include <linux/types.h> 
    3438#include <linux/fs.h> 
     
    4751#include <asm/hardirq.h> 
    4852 
    49 #include <lantiq.h> 
    50 #include <lantiq_regs.h> 
     53#include <lantiq_soc.h> 
    5154#include "ifxmips_atm.h" 
    5255#define IFX_MEI_BSP 
    5356#include "ifxmips_mei_interface.h" 
    5457 
    55 /*#define LQ_RCU_RST                   IFX_RCU_RST_REQ 
    56 #define LQ_RCU_RST_REQ_ARC_JTAG      IFX_RCU_RST_REQ_ARC_JTAG 
    57 #define LQ_RCU_RST_REQ_DFE                IFX_RCU_RST_REQ_DFE 
    58 #define LQ_RCU_RST_REQ_AFE                IFX_RCU_RST_REQ_AFE 
     58/*#define LTQ_RCU_RST                   IFX_RCU_RST_REQ 
     59#define LTQ_RCU_RST_REQ_ARC_JTAG      IFX_RCU_RST_REQ_ARC_JTAG 
     60#define LTQ_RCU_RST_REQ_DFE               IFX_RCU_RST_REQ_DFE 
     61#define LTQ_RCU_RST_REQ_AFE               IFX_RCU_RST_REQ_AFE 
    5962#define IFXMIPS_FUSE_BASE_ADDR            IFX_FUSE_BASE_ADDR 
    6063#define IFXMIPS_ICU_IM0_IER               IFX_ICU_IM0_IER 
    6164#define IFXMIPS_ICU_IM2_IER               IFX_ICU_IM2_IER 
    62 #define LQ_MEI_INT                   IFX_MEI_INT 
    63 #define LQ_MEI_DYING_GASP_INT        IFX_MEI_DYING_GASP_INT 
    64 #define LQ_MEI_BASE_ADDR                  IFX_MEI_SPACE_ACCESS 
     65#define LTQ_MEI_INT                   IFX_MEI_INT 
     66#define LTQ_MEI_DYING_GASP_INT        IFX_MEI_DYING_GASP_INT 
     67#define LTQ_MEI_BASE_ADDR                 IFX_MEI_SPACE_ACCESS 
    6568#define IFXMIPS_PMU_PWDCR                 IFX_PMU_PWDCR 
    6669#define IFXMIPS_MPS_CHIPID                IFX_MPS_CHIPID 
     
    7477#define ifxmips_mask_and_ack_irq          bsp_mask_and_ack_irq 
    7578#define IFXMIPS_MPS_CHIPID_VERSION_GET    IFX_MCD_CHIPID_VERSION_GET 
    76 #define lq_r32(reg)                        __raw_readl(reg) 
    77 #define lq_w32(val, reg)                   __raw_writel(val, reg) 
    78 #define lq_w32_mask(clear, set, reg)       lq_w32((lq_r32(reg) & ~clear) | set, reg) 
     79#define ltq_r32(reg)                        __raw_readl(reg) 
     80#define ltq_w32(val, reg)                   __raw_writel(val, reg) 
     81#define ltq_w32_mask(clear, set, reg)       ltq_w32((ltq_r32(reg) & ~clear) | set, reg) 
    7982*/ 
    8083 
    81 #define LQ_RCU_RST_REQ_DFE              (1 << 7) 
    82 #define LQ_RCU_RST_REQ_AFE              (1 << 11) 
    83 #define LQ_PMU_PWDCR        ((u32 *)(LQ_PMU_BASE_ADDR + 0x001C)) 
    84 #define LQ_PMU_PWDSR        ((u32 *)(LQ_PMU_BASE_ADDR + 0x0020)) 
    85 #define LQ_RCU_RST          ((u32 *)(LQ_RCU_BASE_ADDR + 0x0010)) 
    86 #define LQ_RCU_RST_ALL      0x40000000 
    87 #define LQ_ICU_BASE_ADDR    (KSEG1 | 0x1F880200) 
    88  
    89 #define LQ_ICU_IM0_ISR      ((u32 *)(LQ_ICU_BASE_ADDR + 0x0000)) 
    90 #define LQ_ICU_IM0_IER      ((u32 *)(LQ_ICU_BASE_ADDR + 0x0008)) 
    91 #define LQ_ICU_IM0_IOSR     ((u32 *)(LQ_ICU_BASE_ADDR + 0x0010)) 
    92 #define LQ_ICU_IM0_IRSR     ((u32 *)(LQ_ICU_BASE_ADDR + 0x0018)) 
    93 #define LQ_ICU_IM0_IMR      ((u32 *)(LQ_ICU_BASE_ADDR + 0x0020)) 
    94  
    95  
    96 #define LQ_ICU_IM1_ISR      ((u32 *)(LQ_ICU_BASE_ADDR + 0x0028)) 
    97 #define LQ_ICU_IM2_ISR      ((u32 *)(LQ_ICU_BASE_ADDR + 0x0050)) 
    98 #define LQ_ICU_IM3_ISR      ((u32 *)(LQ_ICU_BASE_ADDR + 0x0078)) 
    99 #define LQ_ICU_IM4_ISR      ((u32 *)(LQ_ICU_BASE_ADDR + 0x00A0)) 
    100  
    101 #define LQ_ICU_OFFSET       (LQ_ICU_IM1_ISR - LQ_ICU_IM0_ISR) 
    102 #define LQ_ICU_IM2_IER          (LQ_ICU_IM0_IER + LQ_ICU_OFFSET) 
     84#define LTQ_RCU_RST_REQ_DFE             (1 << 7) 
     85#define LTQ_RCU_RST_REQ_AFE             (1 << 11) 
     86 
     87#define LTQ_PMU_BASE            (KSEG1 + LTQ_PMU_BASE_ADDR) 
     88#define LTQ_RCU_BASE            (KSEG1 + LTQ_RCU_BASE_ADDR) 
     89#define LTQ_ICU_BASE            (KSEG1 + LTQ_ICU_BASE_ADDR) 
     90 
     91#define LTQ_PMU_PWDCR        ((u32 *)(LTQ_PMU_BASE + 0x001C)) 
     92#define LTQ_PMU_PWDSR        ((u32 *)(LTQ_PMU_BASE + 0x0020)) 
     93#define LTQ_RCU_RST          ((u32 *)(LTQ_RCU_BASE + 0x0010)) 
     94#define LTQ_RCU_RST_ALL      0x40000000 
     95 
     96#define LTQ_ICU_IM0_ISR      ((u32 *)(LTQ_ICU_BASE + 0x0000)) 
     97#define LTQ_ICU_IM0_IER      ((u32 *)(LTQ_ICU_BASE + 0x0008)) 
     98#define LTQ_ICU_IM0_IOSR     ((u32 *)(LTQ_ICU_BASE + 0x0010)) 
     99#define LTQ_ICU_IM0_IRSR     ((u32 *)(LTQ_ICU_BASE + 0x0018)) 
     100#define LTQ_ICU_IM0_IMR      ((u32 *)(LTQ_ICU_BASE + 0x0020)) 
     101 
     102 
     103#define LTQ_ICU_IM1_ISR      ((u32 *)(LTQ_ICU_BASE + 0x0028)) 
     104#define LTQ_ICU_IM2_ISR      ((u32 *)(LTQ_ICU_BASE + 0x0050)) 
     105#define LTQ_ICU_IM3_ISR      ((u32 *)(LTQ_ICU_BASE + 0x0078)) 
     106#define LTQ_ICU_IM4_ISR      ((u32 *)(LTQ_ICU_BASE + 0x00A0)) 
     107 
     108#define LTQ_ICU_OFFSET       (LTQ_ICU_IM1_ISR - LTQ_ICU_IM0_ISR) 
     109#define LTQ_ICU_IM2_IER         (LTQ_ICU_IM0_IER + LTQ_ICU_OFFSET) 
    103110 
    104111#define IFX_MEI_EMSG(fmt, args...) pr_err("[%s %d]: " fmt,__FUNCTION__, __LINE__, ## args) 
    105112#define IFX_MEI_DMSG(fmt, args...) pr_debug("[%s %d]: " fmt,__FUNCTION__, __LINE__, ## args) 
    106113 
    107 #define LQ_FUSE_BASE          (KSEG1 + 0x1F107354) 
    108  
    109 #ifdef CONFIG_LQ_MEI_FW_LOOPBACK 
     114#define LTQ_FUSE_BASE          (KSEG1 + 0x1F107354) 
     115 
     116#ifdef CONFIG_LTQ_MEI_FW_LOOPBACK 
    110117//#define DFE_MEM_TEST 
    111118//#define DFE_PING_TEST 
     
    194201static u32 *mei_arc_swap_buff = NULL;   //  holding swap pages 
    195202 
    196 extern void lq_mask_and_ack_irq(unsigned int irq_nr); 
    197 #define MEI_MASK_AND_ACK_IRQ lq_mask_and_ack_irq 
    198  
     203#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39)) 
     204extern void ltq_mask_and_ack_irq(unsigned int irq_nr); 
     205#define MEI_MASK_AND_ACK_IRQ ltq_mask_and_ack_irq 
     206#else 
     207extern void ltq_mask_and_ack_irq(struct irq_data *d); 
     208static void inline MEI_MASK_AND_ACK_IRQ(int x) 
     209{ 
     210        struct irq_data d; 
     211        d.irq = x; 
     212        ltq_mask_and_ack_irq(&d); 
     213} 
     214#endif 
    199215#define MEI_MAJOR       105 
    200216static int dev_major = MEI_MAJOR; 
     
    705721        int i = 0; 
    706722 
    707         IFX_MEI_LongWordRead ((u32) LQ_RCU_RST, &reg_data); 
     723        IFX_MEI_LongWordRead ((u32) LTQ_RCU_RST, &reg_data); 
    708724        while ((reg_data & 0x10000000) == 0) { 
    709                 IFX_MEI_LongWordRead ((u32) LQ_RCU_RST,  &reg_data); 
     725                IFX_MEI_LongWordRead ((u32) LTQ_RCU_RST,  &reg_data); 
    710726                i++; 
    711727                /* 0x4000 translate to  about 16 ms@111M, so should be enough */ 
     
    715731        // STEP a: Prepare memory for external accesses 
    716732        // Write fuse_en bit24 
    717         IFX_MEI_LongWordRead ((u32) LQ_RCU_RST, &reg_data); 
    718         IFX_MEI_LongWordWrite ((u32) LQ_RCU_RST, reg_data | (1 << 24)); 
     733        IFX_MEI_LongWordRead ((u32) LTQ_RCU_RST, &reg_data); 
     734        IFX_MEI_LongWordWrite ((u32) LTQ_RCU_RST, reg_data | (1 << 24)); 
    719735 
    720736        IFX_MEI_FuseInit (pDev); 
    721737        for (i = 0; i < 4; i++) { 
    722                 IFX_MEI_LongWordRead ((u32) (LQ_FUSE_BASE) + i * 4, &fuse_value); 
     738                IFX_MEI_LongWordRead ((u32) (LTQ_FUSE_BASE) + i * 4, &fuse_value); 
    723739                switch (fuse_value & 0xF0000) { 
    724740                case 0x80000: 
     
    766782                } 
    767783        } 
    768         IFX_MEI_LongWordRead ((u32) LQ_RCU_RST, &reg_data); 
    769         IFX_MEI_LongWordWrite ((u32) LQ_RCU_RST, reg_data & ~(1 << 24)); 
    770         IFX_MEI_LongWordRead ((u32) LQ_RCU_RST, &reg_data); 
     784        IFX_MEI_LongWordRead ((u32) LTQ_RCU_RST, &reg_data); 
     785        IFX_MEI_LongWordWrite ((u32) LTQ_RCU_RST, reg_data & ~(1 << 24)); 
     786        IFX_MEI_LongWordRead ((u32) LTQ_RCU_RST, &reg_data); 
    771787} 
    772788 
     
    869885        IFX_MEI_HaltArc (pDev); 
    870886 
    871         IFX_MEI_LongWordRead ((u32) LQ_RCU_RST, &arc_debug_data); 
    872         IFX_MEI_LongWordWrite ((u32) LQ_RCU_RST, 
    873                 arc_debug_data | LQ_RCU_RST_REQ_DFE | LQ_RCU_RST_REQ_AFE); 
     887        IFX_MEI_LongWordRead ((u32) LTQ_RCU_RST, &arc_debug_data); 
     888        IFX_MEI_LongWordWrite ((u32) LTQ_RCU_RST, 
     889                arc_debug_data | LTQ_RCU_RST_REQ_DFE | LTQ_RCU_RST_REQ_AFE); 
    874890 
    875891        // reset ARC 
     
    10351051                ifxmips_port_set_open_drain(0, 11); 
    10361052        //enable ARC JTAG 
    1037         IFX_MEI_LongWordRead ((u32) LQ_RCU_RST, &reg_data); 
    1038         IFX_MEI_LongWordWrite ((u32) LQ_RCU_RST, reg_data | LQ_RCU_RST_REQ_ARC_JTAG); 
     1053        IFX_MEI_LongWordRead ((u32) LTQ_RCU_RST, &reg_data); 
     1054        IFX_MEI_LongWordWrite ((u32) LTQ_RCU_RST, reg_data | LTQ_RCU_RST_REQ_ARC_JTAG); 
    10391055                break; 
    10401056        case 0: 
     
    10461062                return DSL_DEV_MEI_ERR_FAILURE; 
    10471063*/ 
    1048         printk("%s:%s[%d]\n", __FILE__, __func__, __LINE__); 
    1049         printk("%s:%s[%d]\n", __FILE__, __func__, __LINE__); 
    10501064 
    10511065        return DSL_DEV_MEI_ERR_SUCCESS; 
     
    13341348        IFX_MEI_DownloadBootCode (pDev); 
    13351349 
    1336         im0_register = (*LQ_ICU_IM0_IER) & (1 << 20); 
    1337         im2_register = (*LQ_ICU_IM2_IER) & (1 << 20); 
     1350        im0_register = (*LTQ_ICU_IM0_IER) & (1 << 20); 
     1351        im2_register = (*LTQ_ICU_IM2_IER) & (1 << 20); 
    13381352        /* Turn off irq */ 
    1339         #ifdef CONFIG_LANTIQ_AMAZON_SE 
     1353        #ifdef CONFIG_SOC_AMAZON_SE 
    13401354        disable_irq (IFXMIPS_USB_OC_INT0); 
    13411355        disable_irq (IFXMIPS_USB_OC_INT2); 
     
    13431357        disable_irq (IFXMIPS_USB_OC_INT0); 
    13441358        disable_irq (IFXMIPS_USB_OC_INT2); 
    1345         #elif defined(CONFIG_SOC_LANTIQ_XWAY) 
    1346         disable_irq (LQ_USB_OC_INT); 
     1359        #elif defined(CONFIG_SOC_XWAY) 
     1360        disable_irq (LTQ_USB_OC_INT); 
    13471361        #else 
    13481362        #error unkonwn arch 
     
    13541368        MEI_WAIT_EVENT_TIMEOUT (DSL_DEV_PRIVATE(pDev)->wait_queue_modemready, 1000); 
    13551369 
    1356         #ifdef CONFIG_LANTIQ_AMAZON_SE 
     1370        #ifdef CONFIG_SOC_AMAZON_SE 
    13571371        MEI_MASK_AND_ACK_IRQ (IFXMIPS_USB_OC_INT0); 
    13581372        MEI_MASK_AND_ACK_IRQ (IFXMIPS_USB_OC_INT2); 
     
    13601374        MEI_MASK_AND_ACK_IRQ (IFXMIPS_USB_OC_INT0); 
    13611375        MEI_MASK_AND_ACK_IRQ (IFXMIPS_USB_OC_INT2); 
    1362         #elif defined(CONFIG_SOC_LANTIQ_XWAY) 
    1363         MEI_MASK_AND_ACK_IRQ (LQ_USB_OC_INT); 
     1376        #elif defined(CONFIG_SOC_XWAY) 
     1377        MEI_MASK_AND_ACK_IRQ (LTQ_USB_OC_INT); 
    13641378        #else 
    13651379        #error unkonwn arch 
     
    13691383        /* Re-enable irq */ 
    13701384        enable_irq(pDev->nIrq[IFX_DYING_GASP]); 
    1371         *LQ_ICU_IM0_IER |= im0_register; 
    1372         *LQ_ICU_IM2_IER |= im2_register; 
     1385        *LTQ_ICU_IM0_IER |= im0_register; 
     1386        *LTQ_ICU_IM2_IER |= im2_register; 
    13731387 
    13741388        if (DSL_DEV_PRIVATE(pDev)->modem_ready != 1) { 
     
    17811795        u32 scratch; 
    17821796        DSL_DEV_Device_t *pDev = (DSL_DEV_Device_t *) void0; 
    1783 #if defined(CONFIG_LQ_MEI_FW_LOOPBACK) && defined(DFE_PING_TEST) 
     1797#if defined(CONFIG_LTQ_MEI_FW_LOOPBACK) && defined(DFE_PING_TEST) 
    17841798        dfe_loopback_irq_handler (pDev); 
    17851799        return IRQ_HANDLED; 
     
    18901904#endif 
    18911905 
    1892 #ifdef CONFIG_LQ_MEI_FW_LOOPBACK 
     1906#ifdef CONFIG_LTQ_MEI_FW_LOOPBACK 
    18931907#define mte_reg_base    (0x4800*4+0x20000) 
    18941908 
     
    19501964 
    19511965        /* Write address register */ 
    1952         IFX_MEI_WRITE_REGISTER_L (address,  ME_DBG_WR_AD + LQ_MEI_BASE_ADDR); 
     1966        IFX_MEI_WRITE_REGISTER_L (address,  ME_DBG_WR_AD + LTQ_MEI_BASE_ADDR); 
    19531967 
    19541968        /* Write data register */ 
    1955         IFX_MEI_WRITE_REGISTER_L (value, ME_DBG_DATA + LQ_MEI_BASE_ADDR); 
     1969        IFX_MEI_WRITE_REGISTER_L (value, ME_DBG_DATA + LTQ_MEI_BASE_ADDR); 
    19561970 
    19571971        /* wait until complete - timeout at 40 */ 
    19581972        for (i = 0; i < 40; i++) { 
    1959                 check = IFX_MEI_READ_REGISTER_L (ME_ARC2ME_STAT + LQ_MEI_BASE_ADDR); 
     1973                check = IFX_MEI_READ_REGISTER_L (ME_ARC2ME_STAT + LTQ_MEI_BASE_ADDR); 
    19601974 
    19611975                if ((check & ARC_TO_MEI_DBG_DONE)) 
     
    19631977        } 
    19641978        /* clear the flag */ 
    1965         IFX_MEI_WRITE_REGISTER_L (ARC_TO_MEI_DBG_DONE, ME_ARC2ME_STAT + LQ_MEI_BASE_ADDR); 
     1979        IFX_MEI_WRITE_REGISTER_L (ARC_TO_MEI_DBG_DONE, ME_ARC2ME_STAT + LTQ_MEI_BASE_ADDR); 
    19661980} 
    19671981 
     
    21462160        temp = 0; 
    21472161        _IFX_MEI_DBGLongWordWrite (pDev, MEI_DEBUG_DEC_AUX_MASK, 
    2148                 (u32) ME_XDATA_BASE_SH +  LQ_MEI_BASE_ADDR, temp); 
     2162                (u32) ME_XDATA_BASE_SH +  LTQ_MEI_BASE_ADDR, temp); 
    21492163        IFX_MEI_ControlModeSet (pDev, JTAG_MASTER_MODE); 
    21502164 
     
    21562170                        DSL_DEV_PRIVATE(pDev)->adsl_mem_info[idx].type = FREE_RELOAD; 
    21572171                        IFX_MEI_WRITE_REGISTER_L ((((uint32_t) DSL_DEV_PRIVATE(pDev)->adsl_mem_info[idx].address) & 0x0fffffff), 
    2158                                                         LQ_MEI_BASE_ADDR + ME_XMEM_BAR_BASE  + idx * 4); 
     2172                                                        LTQ_MEI_BASE_ADDR + ME_XMEM_BAR_BASE  + idx * 4); 
    21592173                        IFX_MEI_DMSG("bar%d(%X)=%X\n", idx, 
    2160                                 LQ_MEI_BASE_ADDR + ME_XMEM_BAR_BASE  + 
     2174                                LTQ_MEI_BASE_ADDR + ME_XMEM_BAR_BASE  + 
    21612175                                idx * 4, (((uint32_t) 
    21622176                                           ((ifx_mei_device_private_t *) 
     
    22722286 
    22732287        if (num == 0) { 
    2274                 pDev->nIrq[IFX_DFEIR]      = LQ_MEI_INT; 
    2275                 pDev->nIrq[IFX_DYING_GASP] = LQ_MEI_DYING_GASP_INT; 
    2276                 pDev->base_address = LQ_MEI_BASE_ADDR; 
     2288                pDev->nIrq[IFX_DFEIR]      = LTQ_MEI_INT; 
     2289                pDev->nIrq[IFX_DYING_GASP] = LTQ_MEI_DYING_GASP_INT; 
     2290                pDev->base_address = KSEG1 + LTQ_MEI_BASE_ADDR; 
    22772291 
    22782292                /* Power up MEI */ 
    22792293#ifdef CONFIG_LANTIQ_AMAZON_SE 
    2280                 *LQ_PMU_PWDCR &= ~(1 << 9);  // enable dsl 
    2281                 *LQ_PMU_PWDCR &= ~(1 << 15); // enable AHB base 
     2294                *LTQ_PMU_PWDCR &= ~(1 << 9);  // enable dsl 
     2295                *LTQ_PMU_PWDCR &= ~(1 << 15); // enable AHB base 
    22822296#else 
    2283                 temp = lq_r32(LQ_PMU_PWDCR); 
     2297                temp = ltq_r32(LTQ_PMU_PWDCR); 
    22842298                temp &= 0xffff7dbe; 
    2285                 lq_w32(temp, LQ_PMU_PWDCR); 
     2299                ltq_w32(temp, LTQ_PMU_PWDCR); 
    22862300#endif 
    22872301        } 
     
    24442458        int i = 0; 
    24452459        int meierr = DSL_DEV_MEI_ERR_SUCCESS; 
    2446         u32 base_address = LQ_MEI_BASE_ADDR; 
     2460        u32 base_address = LTQ_MEI_BASE_ADDR; 
    24472461        DSL_DEV_WinHost_Message_t winhost_msg, m; 
    24482462        DSL_DEV_MeiDebug_t debugrdwr; 
     
    25702584                break; 
    25712585 
    2572 #define LQ_MPS_CHIPID_VERSION_GET(value)  (((value) >> 28) & ((1 << 4) - 1)) 
     2586#define LTQ_MPS_CHIPID_VERSION_GET(value)  (((value) >> 28) & ((1 << 4) - 1)) 
    25732587        case DSL_FIO_BSP_GET_CHIP_INFO: 
    25742588                bsp_chip_info.major = 1; 
    2575                 bsp_chip_info.minor = LQ_MPS_CHIPID_VERSION_GET(*LQ_MPS_CHIPID); 
     2589                bsp_chip_info.minor = LTQ_MPS_CHIPID_VERSION_GET(*LTQ_MPS_CHIPID); 
    25762590                IFX_MEI_IoctlCopyTo (from_kernel, (char *) lon, (char *) (&bsp_chip_info), sizeof (DSL_DEV_HwVersion_t)); 
    25772591                meierr = DSL_DEV_MEI_ERR_SUCCESS; 
     
    26092623{ 
    26102624        u32 *p, i; 
    2611         *LQ_RCU_RST |= LQ_RCU_RST_REQ_MUX_ARC; 
     2625        *LTQ_RCU_RST |= LTQ_RCU_RST_REQ_MUX_ARC; 
    26122626 
    26132627        p = (u32*)(DFE_LDST_BASE_ADDR + IRAM0_BASE); 
     
    26582672                        IFX_MEI_EMSG("%p: %#x\n", p, *p); 
    26592673        } 
    2660         *LQ_RCU_RST &= ~LQ_RCU_RST_REQ_MUX_ARC; 
     2674        *LTQ_RCU_RST &= ~LTQ_RCU_RST_REQ_MUX_ARC; 
    26612675} 
    26622676#endif 
     
    29602974                dsl_bsp_event_callback[i].function = NULL; 
    29612975 
    2962 #ifdef CONFIG_LQ_MEI_FW_LOOPBACK 
     2976#ifdef CONFIG_LTQ_MEI_FW_LOOPBACK 
    29632977        IFX_MEI_DMSG("Start loopback test...\n"); 
    29642978        DFE_Loopback_Test (); 
  • trunk/package/ltq-ifxos/patches/120-linaro.patch

    r26023 r27026  
    1010 #endif 
    1111  
     12--- a/src/linux/ifxos_linux_thread_drv.c 
     13+++ b/src/linux/ifxos_linux_thread_drv.c 
     14@@ -34,7 +34,9 @@ 
     15 #include <linux/sched.h> 
     16 #include <linux/version.h> 
     17 #include <linux/completion.h> 
     18+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)) 
     19 #include <linux/smp_lock.h> 
     20+#endif 
     21 #include <linux/signal.h> 
     22  
     23  
  • trunk/package/ltq-tapi/patches/200-linux-37.patch

    r26351 r27026  
    11--- a/src/drv_tapi_linux.c 
    22+++ b/src/drv_tapi_linux.c 
    3 @@ -146,8 +146,13 @@ static ssize_t ifx_tapi_write(struct fil 
     3@@ -47,7 +47,9 @@ 
     4 #include <linux/errno.h> 
     5 #include <asm/uaccess.h>               /* copy_from_user(), ... */ 
     6 #include <asm/byteorder.h> 
     7+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)) 
     8 #include <linux/smp_lock.h>         /* lock_kernel() */ 
     9+#endif 
     10 #include <asm/io.h> 
     11  
     12 #ifdef LINUX_2_6 
     13@@ -65,7 +67,9 @@ 
     14 #else 
     15    #include <linux/tqueue.h> 
     16    #include <linux/sched.h> 
     17+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)) 
     18    #include <linux/smp_lock.h>         /* lock_kernel() */ 
     19+#endif 
     20 #endif /* LINUX_2_6 */ 
     21  
     22 #include "drv_tapi.h" 
     23@@ -133,8 +137,13 @@ 
    424                               size_t count, loff_t * ppos); 
    525 static ssize_t ifx_tapi_read(struct file * filp, char *buf, 
     
    1535  
    1636 #ifdef CONFIG_PROC_FS 
    17 @@ -231,7 +236,11 @@ IFX_return_t TAPI_OS_RegisterLLDrv (IFX_ 
     37@@ -218,7 +227,11 @@ 
    1838    IFX_char_t   *pRegDrvName = IFX_NULL; 
    1939    IFX_int32_t ret = 0; 
     
    2747 #ifdef MODULE 
    2848       tapi_fops.owner =    THIS_MODULE; 
    29 @@ -239,7 +248,11 @@ IFX_return_t TAPI_OS_RegisterLLDrv (IFX_ 
     49@@ -226,7 +239,11 @@ 
    3050       tapi_fops.read =     ifx_tapi_read; 
    3151       tapi_fops.write =    ifx_tapi_write; 
     
    3959       tapi_fops.release =  ifx_tapi_release; 
    4060    } 
    41 @@ -894,8 +907,13 @@ static IFX_uint32_t ifx_tapi_poll (struc 
     61@@ -881,8 +898,13 @@ 
    4262    - 0 and positive values - success 
    4363    - negative value - ioctl failed 
     
    5373    TAPI_FD_PRIV_DATA_t *pTapiPriv; 
    5474    IFX_TAPI_ioctlCtx_t  ctx; 
     75@@ -3721,7 +3743,9 @@ 
     76             kernel lock (lock_kernel()). The lock must be 
     77             grabbed before changing the terminate 
     78             flag and released after the down() call. */ 
     79-         lock_kernel(); 
     80+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33) 
     81+        lock_kernel(); 
     82+#endif 
     83          mb(); 
     84 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28) 
     85          kill_proc(pThrCntrl->tid, SIGKILL, 1); 
     86@@ -3729,8 +3753,10 @@ 
     87          kill_pid(find_vpid(pThrCntrl->tid), SIGKILL, 1); 
     88 #endif 
     89          /* release the big kernel lock */ 
     90+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33) 
     91          unlock_kernel(); 
     92-         wait_for_completion (&pThrCntrl->thrCompletion); 
     93+#endif 
     94+        wait_for_completion (&pThrCntrl->thrCompletion); 
     95  
     96 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23) 
     97          /* Now we are sure the thread is in zombie state. 
    5598--- a/src/lib/lib_fifo/lib_fifo.c 
    5699+++ b/src/lib/lib_fifo/lib_fifo.c 
  • trunk/package/ltq-vmmc/patches/100-ifxmips.patch

    r26351 r27026  
    3434 #if defined SYSTEM_DANUBE 
    3535-#include <asm/ifx/ifx_gpio.h> 
    36 +#include <xway/xway.h> 
     36+#include <lantiq_soc.h> 
    3737+ 
    3838 #else 
     
    159159+ 
    160160+ 
    161 +#  define bsp_mask_and_ack_irq      lq_mask_and_ack_irq 
     161+#  define bsp_mask_and_ack_irq      ltq_mask_and_ack_irq 
    162162+#else 
    163163+#  include <asm/ifx/ifx_regs.h> 
     
    444444+IFX_uint32_t ifx_get_cp1_size(IFX_void_t) 
    445445+{ 
    446 +       return 2; 
     446+       return 1; 
    447447+} 
    448448+ 
    449 +unsigned int *lq_get_cp1_base(void); 
     449+unsigned int *ltq_get_cp1_base(void); 
    450450+ 
    451451+IFX_uint32_t *ifx_get_cp1_base(IFX_void_t) 
    452452+{ 
    453 +       return lq_get_cp1_base(); 
     453+       return ltq_get_cp1_base(); 
    454454+} 
    455455+#endif 
     
    502502+#  include <lantiq.h> 
    503503+#  include <irq.h> 
    504 +#  include <xway/xway.h> 
     504+#  include <lantiq_soc.h> 
    505505+#  include <gpio.h> 
    506506+#define IFXMIPS_MPS_SRAM               ((u32 *)(KSEG1 + 0x1F200000)) 
  • trunk/package/ltq-vmmc/patches/200-kernel-37.patch

    r26351 r27026  
    11--- a/src/drv_vmmc_init.c 
    22+++ b/src/drv_vmmc_init.c 
    3 @@ -784,7 +784,7 @@ IFX_int32_t VMMC_TAPI_LL_FW_Start(IFX_TA 
     3@@ -784,7 +784,7 @@ 
    44       dwld.fwDwld.length = IoInit.pram_size; 
    55  
     
    1010    } 
    1111  
    12 @@ -1594,7 +1594,7 @@ IFX_void_t VMMC_DeviceDriverStop(IFX_voi 
     12@@ -1594,7 +1594,7 @@ 
    1313 #ifdef VMMC_DRIVER_UNLOAD_HOOK 
    1414    if (VDevices[0].nDevState & DS_GPIO_RESERVED) 
     
    2121--- a/src/mps/drv_mps_vmmc_linux.c 
    2222+++ b/src/mps/drv_mps_vmmc_linux.c 
    23 @@ -110,7 +110,7 @@ IFX_int32_t ifx_mps_get_status_proc (IFX 
     23@@ -110,7 +110,7 @@ 
    2424 #ifndef __KERNEL__ 
    2525 IFX_int32_t ifx_mps_open (struct inode *inode, struct file *file_p); 
     
    3030 IFX_int32_t ifx_mps_read_mailbox (mps_devices type, mps_message * rw); 
    3131 IFX_int32_t ifx_mps_write_mailbox (mps_devices type, mps_message * rw); 
    32 @@ -171,7 +171,7 @@ IFX_char_t voice_channel_int_name[NUM_VO 
     32@@ -171,7 +171,7 @@ 
    3333 static struct file_operations ifx_mps_fops = { 
    3434  owner:THIS_MODULE, 
     
    3939  release:ifx_mps_close 
    4040 }; 
    41 @@ -614,7 +614,7 @@ static IFX_uint32_t ifx_mps_poll (struct 
     41@@ -614,7 +614,7 @@ 
    4242  * \return  -ENOIOCTLCMD Invalid command 
    4343  * \ingroup API 
     
    4848 { 
    4949    IFX_int32_t retvalue = -EINVAL; 
    50 @@ -629,17 +629,18 @@ IFX_int32_t ifx_mps_ioctl (struct inode  
     50@@ -629,17 +629,18 @@ 
    5151       'mps_devices' enum type, which in fact is [0..8]; So, if inode value is 
    5252       [0..NUM_VOICE_CHANNEL+1], then we make sure that we are calling from 
     
    7272--- a/src/drv_vmmc_ioctl.c 
    7373+++ b/src/drv_vmmc_ioctl.c 
    74 @@ -427,18 +427,18 @@ IFX_int32_t VMMC_Dev_Spec_Ioctl (IFX_TAP 
     74@@ -427,18 +427,18 @@ 
    7575          /* MPS driver will do the USR2KERN so just pass on the pointer. */ 
    7676          dwnld_struct.data = (IFX_void_t *)IoInit.pPRAMfw; 
     
    9696--- a/src/mps/drv_mps_vmmc.h 
    9797+++ b/src/mps/drv_mps_vmmc.h 
    98 @@ -279,7 +279,7 @@ typedef struct 
     98@@ -279,7 +279,7 @@ 
    9999 #include <linux/fs.h> 
    100100 IFX_int32_t ifx_mps_open (struct inode *inode, struct file *file_p); 
     
    105105 IFX_int32_t ifx_mps_register_data_callback (mps_devices type, IFX_uint32_t dir, 
    106106                                             IFX_void_t (*callback) (mps_devices 
     107--- a/src/drv_vmmc_linux.c 
     108+++ b/src/drv_vmmc_linux.c 
     109@@ -32,7 +32,11 @@ 
     110 #ifdef LINUX_2_6 
     111 #include <linux/version.h> 
     112 #ifndef UTS_RELEASE 
     113+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)) 
     114+#include <linux/utsrelease.h> 
     115+#else 
     116 #include <generated/utsrelease.h> 
     117+#endif 
     118 #endif /* UTC_RELEASE */ 
     119 #undef CONFIG_DEVFS_FS 
     120 #endif /* LINUX_2_6 */ 
     121--- a/src/mps/drv_mps_vmmc_common.c 
     122+++ b/src/mps/drv_mps_vmmc_common.c 
     123@@ -22,7 +22,11 @@ 
     124 #undef USE_PLAIN_VOICE_FIRMWARE 
     125 #undef PRINT_ON_ERR_INTERRUPT 
     126 #undef FAIL_ON_ERR_INTERRUPT 
     127-#include <generated/autoconf.h> 
     128+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)) 
     129+#include <linux/utsrelease.h> 
     130+#else 
     131+#include <generated/utsrelease.h> 
     132+#endif 
     133 #include <linux/interrupt.h> 
     134 #include <linux/delay.h> 
     135  
     136@@ -47,8 +51,19 @@ 
     137 #  define ifx_gptu_timer_free       lq_free_timer 
     138  
     139  
     140+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39)) 
     141 #  define bsp_mask_and_ack_irq      ltq_mask_and_ack_irq 
     142 #else 
     143+extern void ltq_mask_and_ack_irq(struct irq_data *d); 
     144+static void inline bsp_mask_and_ack_irq(int x) 
     145+{ 
     146+       struct irq_data d; 
     147+       d.irq = x; 
     148+       ltq_mask_and_ack_irq(&d); 
     149+} 
     150+#endif 
     151+ 
     152+#else 
     153 #  include <asm/ifx/ifx_regs.h> 
     154 #  include <asm/ifx/ifx_gptu.h> 
     155 #endif 
     156@@ -107,7 +122,9 @@ 
     157 extern mps_mbx_dev *ifx_mps_get_device (mps_devices type); 
     158  
     159 #ifdef LINUX_2_6 
     160+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39)) 
     161 extern IFX_void_t bsp_mask_and_ack_irq (IFX_uint32_t irq_nr); 
     162+#endif 
     163  
     164 #else /* */ 
     165 extern IFX_void_t mask_and_ack_danube_irq (IFX_uint32_t irq_nr); 
     166--- a/src/mps/drv_mps_vmmc_danube.c 
     167+++ b/src/mps/drv_mps_vmmc_danube.c 
     168@@ -16,11 +16,16 @@ 
     169 /* ============================= */ 
     170 /* Includes                      */ 
     171 /* ============================= */ 
     172+#include "linux/version.h" 
     173 #include "drv_config.h" 
     174  
     175 #ifdef SYSTEM_DANUBE            /* defined in drv_mps_vmmc_config.h */ 
     176  
     177+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33))  
     178+#include <linux/autoconf.h> 
     179+#else 
     180 #include <generated/autoconf.h> 
     181+#endif 
     182  
     183 /* lib_ifxos headers */ 
     184 #include "ifx_types.h" 
     185@@ -39,6 +44,7 @@ 
     186 #  include <linux/dma-mapping.h> 
     187  
     188  
     189+#define LQ_RCU_BASE_ADDR       (KSEG1 + LTQ_RCU_BASE_ADDR) 
     190 # define LQ_RCU_RST            ((u32 *)(LQ_RCU_BASE_ADDR + 0x0010)) 
     191 #define IFX_RCU_RST_REQ_CPU1             (1 << 3) 
     192 #  define IFX_RCU_RST_REQ        LQ_RCU_RST 
  • trunk/target/linux/lantiq/Makefile

    r26441 r27026  
    1111BOARDNAME:=Lantiq GPON/XWAY 
    1212FEATURES:=squashfs jffs2 
    13 SUBTARGETS:=falcon xway 
     13SUBTARGETS:=falcon xway ase 
    1414 
    15 LINUX_VERSION:=2.6.37.6 
     15LINUX_VERSION:=2.6.39 
     16#LINUX_VERSION:=2.6.32.33 
    1617 
    1718CFLAGS=-Os -pipe -mips32r2 -mtune=mips32r2 -fno-caller-saves 
  • trunk/target/linux/lantiq/ase/target.mk

    r27025 r27026  
    11ARCH:=mips 
    2 SUBTARGET:=xway 
    3 BOARDNAME:=Xway 
     2SUBTARGET:=ase 
     3BOARDNAME:=Amazon-SE 
    44FEATURES:=squashfs jffs2 atm 
    55 
     
    77 
    88define Target/Description 
    9         Lantiq XWAY (danube/twinpass/ar9/ase) 
     9        Lantiq ASE 
    1010endef 
  • trunk/target/linux/lantiq/base-files/etc/inittab

    r24526 r27026  
    11::sysinit:/etc/init.d/rcS S boot 
    22::shutdown:/etc/init.d/rcS K stop 
    3 ttyS0::askfirst:/bin/ash --login 
    4 ttyS1::askfirst:/bin/ash --login 
     3ttyLTQ0::askfirst:/bin/ash --login 
     4ttyLTQ1::askfirst:/bin/ash --login 
  • trunk/target/linux/lantiq/config-2.6.32

    r27025 r27026  
    66# CONFIG_ARCH_HAS_ILOG2_U64 is not set 
    77CONFIG_ARCH_HIBERNATION_POSSIBLE=y 
    8 # CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set 
    98CONFIG_ARCH_POPULATES_NODE_MAP=y 
    109CONFIG_ARCH_REQUIRE_GPIOLIB=y 
     
    1211CONFIG_ARCH_SUPPORTS_OPROFILE=y 
    1312CONFIG_ARCH_SUSPEND_POSSIBLE=y 
    14 # CONFIG_AUTO_IRQ_AFFINITY is not set 
    1513# CONFIG_BCM47XX is not set 
    1614# CONFIG_BCM63XX is not set 
    1715CONFIG_BITREVERSE=y 
    18 CONFIG_BKL=y 
     16CONFIG_BOOT_RAW=y 
    1917# CONFIG_CAVIUM_OCTEON_REFERENCE_BOARD is not set 
    2018# CONFIG_CAVIUM_OCTEON_SIMULATOR is not set 
    2119CONFIG_CEVT_R4K=y 
    2220CONFIG_CEVT_R4K_LIB=y 
     21CONFIG_CFG80211_DEFAULT_PS_VALUE=0 
    2322CONFIG_CPU_BIG_ENDIAN=y 
    2423# CONFIG_CPU_CAVIUM_OCTEON is not set 
     
    2726# CONFIG_CPU_LITTLE_ENDIAN is not set 
    2827# CONFIG_CPU_LOONGSON2E is not set 
    29 # CONFIG_CPU_LOONGSON2F is not set 
    3028CONFIG_CPU_MIPS32=y 
    3129# CONFIG_CPU_MIPS32_R1 is not set 
     
    5553CONFIG_CSRC_R4K_LIB=y 
    5654CONFIG_DECOMPRESS_LZMA=y 
    57 CONFIG_DEVPORT=y 
    58 # CONFIG_DM9000 is not set 
    5955CONFIG_DMA_NEED_PCI_MAP_STATE=y 
    6056CONFIG_DMA_NONCOHERENT=y 
    6157CONFIG_EARLY_PRINTK=y 
    6258# CONFIG_FSNOTIFY is not set 
    63 CONFIG_GENERIC_ATOMIC64=y 
    6459CONFIG_GENERIC_CLOCKEVENTS=y 
    6560CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 
     
    6863CONFIG_GENERIC_FIND_NEXT_BIT=y 
    6964CONFIG_GENERIC_GPIO=y 
    70 # CONFIG_GENERIC_HARDIRQS_NO_DEPRECATED is not set 
    7165CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 
    72 # CONFIG_GENERIC_PENDING_IRQ is not set 
    7366CONFIG_GPIOLIB=y 
    7467CONFIG_GPIO_SYSFS=y 
    75 # CONFIG_HARDIRQS_SW_RESEND is not set 
    7668CONFIG_HARDWARE_WATCHPOINTS=y 
    7769CONFIG_HAS_DMA=y 
     
    7971CONFIG_HAS_IOPORT=y 
    8072CONFIG_HAVE_ARCH_KGDB=y 
    81 CONFIG_HAVE_C_RECORDMCOUNT=y 
    82 CONFIG_HAVE_DMA_API_DEBUG=y 
    83 CONFIG_HAVE_DMA_ATTRS=y 
    84 CONFIG_HAVE_DYNAMIC_FTRACE=y 
    85 CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 
    86 CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 
    87 CONFIG_HAVE_FUNCTION_TRACER=y 
    88 CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y 
     73CONFIG_HAVE_CLK=y 
    8974CONFIG_HAVE_GENERIC_DMA_COHERENT=y 
    90 CONFIG_HAVE_GENERIC_HARDIRQS=y 
    91 # CONFIG_HAVE_IDE is not set 
     75CONFIG_HAVE_IDE=y 
    9276CONFIG_HAVE_OPROFILE=y 
    93 CONFIG_HAVE_PERF_EVENTS=y 
    94 # CONFIG_HAVE_SPARSE_IRQ is not set 
    9577CONFIG_HW_RANDOM=y 
    9678CONFIG_HZ=250 
    9779# CONFIG_HZ_100 is not set 
    9880CONFIG_HZ_250=y 
    99 # CONFIG_I2C_FALCON is not set 
    10081CONFIG_IFX_UDP_REDIRECT=y 
    10182CONFIG_IMAGE_CMDLINE_HACK=y 
    10283CONFIG_INITRAMFS_SOURCE="" 
    10384CONFIG_IRQ_CPU=y 
    104 # CONFIG_IRQ_PER_CPU is not set 
    10585CONFIG_LANTIQ=y 
    10686CONFIG_LANTIQ_WDT=y 
    10787CONFIG_LEDS_GPIO=y 
    108 CONFIG_LOONGSON_UART_BASE=y 
    10988# CONFIG_MACH_ALCHEMY is not set 
    11089# CONFIG_MACH_DECSTATION is not set 
    11190# CONFIG_MACH_JAZZ is not set 
    11291# CONFIG_MACH_LOONGSON is not set 
    113 CONFIG_MACH_NO_WESTBRIDGE=y 
    11492# CONFIG_MACH_TX39XX is not set 
    11593# CONFIG_MACH_TX49XX is not set 
     
    131109CONFIG_MTD_LANTIQ=y 
    132110CONFIG_MTD_UIMAGE_SPLIT=y 
    133 CONFIG_NEED_DMA_MAP_STATE=y 
    134 CONFIG_NEED_PER_CPU_KM=y 
    135111CONFIG_NLS=y 
    136112# CONFIG_NO_IOPORT is not set 
     
    138114# CONFIG_NXP_STB225 is not set 
    139115CONFIG_PAGEFLAGS_EXTENDED=y 
    140 CONFIG_PCI=y 
    141 CONFIG_PCI_DOMAINS=y 
    142 CONFIG_PERF_USE_VMALLOC=y 
    143116CONFIG_PHYLIB=y 
    144117# CONFIG_PMC_MSP is not set 
     
    146119# CONFIG_PNX8550_JBS is not set 
    147120# CONFIG_PNX8550_STB810 is not set 
    148 # CONFIG_POWERTV is not set 
    149 # CONFIG_PREEMPT_RCU is not set 
    150 # CONFIG_QUOTACTL is not set 
    151121CONFIG_SCHED_OMIT_FRAME_POINTER=y 
    152122# CONFIG_SCSI_DMA is not set 
    153123# CONFIG_SERIAL_8250 is not set 
    154 # CONFIG_SERIAL_8250_EXTENDED is not set 
    155124CONFIG_SERIAL_LANTIQ=y 
    156125# CONFIG_SGI_IP22 is not set 
     
    166135# CONFIG_SIBYTE_SENTOSA is not set 
    167136# CONFIG_SIBYTE_SWARM is not set 
    168 CONFIG_SOC_LANTIQ=y 
    169137CONFIG_SWAP_IO_SPACE=y 
    170138CONFIG_SWCONFIG=y 
     
    176144CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y 
    177145CONFIG_SYS_SUPPORTS_MULTITHREADING=y 
    178 # CONFIG_TC35815 is not set 
    179 CONFIG_TINY_RCU=y 
    180146CONFIG_TRAD_SIGNALS=y 
    181147# CONFIG_TREE_PREEMPT_RCU is not set 
  • trunk/target/linux/lantiq/config-default

    r26021 r27026  
    66# CONFIG_ARCH_HAS_ILOG2_U64 is not set 
    77CONFIG_ARCH_HIBERNATION_POSSIBLE=y 
    8 # CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set 
    98CONFIG_ARCH_POPULATES_NODE_MAP=y 
    109CONFIG_ARCH_REQUIRE_GPIOLIB=y 
     
    1211CONFIG_ARCH_SUPPORTS_OPROFILE=y 
    1312CONFIG_ARCH_SUSPEND_POSSIBLE=y 
    14 # CONFIG_AUTO_IRQ_AFFINITY is not set 
    1513# CONFIG_BCM47XX is not set 
    1614# CONFIG_BCM63XX is not set 
    1715CONFIG_BITREVERSE=y 
    18 CONFIG_BKL=y 
     16CONFIG_BOOT_RAW=y 
    1917# CONFIG_CAVIUM_OCTEON_REFERENCE_BOARD is not set 
    2018# CONFIG_CAVIUM_OCTEON_SIMULATOR is not set 
    2119CONFIG_CEVT_R4K=y 
    2220CONFIG_CEVT_R4K_LIB=y 
     21CONFIG_CFG80211_DEFAULT_PS_VALUE=0 
    2322CONFIG_CPU_BIG_ENDIAN=y 
    2423# CONFIG_CPU_CAVIUM_OCTEON is not set 
     
    2726# CONFIG_CPU_LITTLE_ENDIAN is not set 
    2827# CONFIG_CPU_LOONGSON2E is not set 
    29 # CONFIG_CPU_LOONGSON2F is not set 
    3028CONFIG_CPU_MIPS32=y 
    3129# CONFIG_CPU_MIPS32_R1 is not set 
     
    5553CONFIG_CSRC_R4K_LIB=y 
    5654CONFIG_DECOMPRESS_LZMA=y 
    57 CONFIG_DEVPORT=y 
    58 # CONFIG_DM9000 is not set 
    5955CONFIG_DMA_NEED_PCI_MAP_STATE=y 
    6056CONFIG_DMA_NONCOHERENT=y 
    6157CONFIG_EARLY_PRINTK=y 
    6258# CONFIG_FSNOTIFY is not set 
    63 CONFIG_GENERIC_ATOMIC64=y 
    6459CONFIG_GENERIC_CLOCKEVENTS=y 
    6560CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 
     
    6863CONFIG_GENERIC_FIND_NEXT_BIT=y 
    6964CONFIG_GENERIC_GPIO=y 
    70 # CONFIG_GENERIC_HARDIRQS_NO_DEPRECATED is not set 
    7165CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 
    72 # CONFIG_GENERIC_PENDING_IRQ is not set 
    7366CONFIG_GPIOLIB=y 
    7467CONFIG_GPIO_SYSFS=y 
    75 # CONFIG_HARDIRQS_SW_RESEND is not set 
    7668CONFIG_HARDWARE_WATCHPOINTS=y 
    7769CONFIG_HAS_DMA=y 
     
    7971CONFIG_HAS_IOPORT=y 
    8072CONFIG_HAVE_ARCH_KGDB=y 
    81 CONFIG_HAVE_C_RECORDMCOUNT=y 
    82 CONFIG_HAVE_DMA_API_DEBUG=y 
    83 CONFIG_HAVE_DMA_ATTRS=y 
    84 CONFIG_HAVE_DYNAMIC_FTRACE=y 
    85 CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 
    86 CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 
    87 CONFIG_HAVE_FUNCTION_TRACER=y 
    88 CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y 
     73CONFIG_HAVE_CLK=y 
    8974CONFIG_HAVE_GENERIC_DMA_COHERENT=y 
    90 CONFIG_HAVE_GENERIC_HARDIRQS=y 
    91 # CONFIG_HAVE_IDE is not set 
     75CONFIG_HAVE_IDE=y 
    9276CONFIG_HAVE_OPROFILE=y 
    93 CONFIG_HAVE_PERF_EVENTS=y 
    94 # CONFIG_HAVE_SPARSE_IRQ is not set 
    9577CONFIG_HW_RANDOM=y 
    9678CONFIG_HZ=250 
    9779# CONFIG_HZ_100 is not set 
    9880CONFIG_HZ_250=y 
    99 # CONFIG_I2C_FALCON is not set 
    10081CONFIG_IFX_UDP_REDIRECT=y 
    10182CONFIG_IMAGE_CMDLINE_HACK=y 
    10283CONFIG_INITRAMFS_SOURCE="" 
    10384CONFIG_IRQ_CPU=y 
    104 # CONFIG_IRQ_PER_CPU is not set 
    10585CONFIG_LANTIQ=y 
    10686CONFIG_LANTIQ_WDT=y 
    10787CONFIG_LEDS_GPIO=y 
    108 CONFIG_LOONGSON_UART_BASE=y 
    10988# CONFIG_MACH_ALCHEMY is not set 
    11089# CONFIG_MACH_DECSTATION is not set 
    11190# CONFIG_MACH_JAZZ is not set 
    11291# CONFIG_MACH_LOONGSON is not set 
    113 CONFIG_MACH_NO_WESTBRIDGE=y 
    11492# CONFIG_MACH_TX39XX is not set 
    11593# CONFIG_MACH_TX49XX is not set 
     
    131109CONFIG_MTD_LANTIQ=y 
    132110CONFIG_MTD_UIMAGE_SPLIT=y 
    133 CONFIG_NEED_DMA_MAP_STATE=y 
    134 CONFIG_NEED_PER_CPU_KM=y 
    135111CONFIG_NLS=y 
    136112# CONFIG_NO_IOPORT is not set 
     
    138114# CONFIG_NXP_STB225 is not set 
    139115CONFIG_PAGEFLAGS_EXTENDED=y 
    140 CONFIG_PCI=y 
    141 CONFIG_PCI_DOMAINS=y 
    142 CONFIG_PERF_USE_VMALLOC=y 
    143116CONFIG_PHYLIB=y 
    144117# CONFIG_PMC_MSP is not set 
     
    146119# CONFIG_PNX8550_JBS is not set 
    147120# CONFIG_PNX8550_STB810 is not set 
    148 # CONFIG_POWERTV is not set 
    149 # CONFIG_PREEMPT_RCU is not set 
    150 # CONFIG_QUOTACTL is not set 
    151121CONFIG_SCHED_OMIT_FRAME_POINTER=y 
    152122# CONFIG_SCSI_DMA is not set 
    153123# CONFIG_SERIAL_8250 is not set 
    154 # CONFIG_SERIAL_8250_EXTENDED is not set 
    155124CONFIG_SERIAL_LANTIQ=y 
    156125# CONFIG_SGI_IP22 is not set 
     
    166135# CONFIG_SIBYTE_SENTOSA is not set 
    167136# CONFIG_SIBYTE_SWARM is not set 
    168 CONFIG_SOC_LANTIQ=y 
    169137CONFIG_SWAP_IO_SPACE=y 
    170138CONFIG_SWCONFIG=y 
     
    176144CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y 
    177145CONFIG_SYS_SUPPORTS_MULTITHREADING=y 
    178 # CONFIG_TC35815 is not set 
    179 CONFIG_TINY_RCU=y 
    180146CONFIG_TRAD_SIGNALS=y 
    181147# CONFIG_TREE_PREEMPT_RCU is not set 
  • trunk/target/linux/lantiq/falcon/config-2.6.32

    r27025 r27026  
    55CONFIG_DM9000_DEBUGLEVEL=4 
    66CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL=y 
    7 CONFIG_HAVE_IDE=y 
    8 CONFIG_HW_HAS_PCI=y 
     7CONFIG_I2C=y 
     8CONFIG_I2C_BOARDINFO=y 
     9# CONFIG_I2C_DESIGNWARE is not set 
     10CONFIG_I2C_FALCON=y 
    911CONFIG_IFX_VPE_CACHE_SPLIT=y 
    1012CONFIG_IFX_VPE_EXT=y 
     
    1214CONFIG_LANTIQ_MACH_EASY98000=y 
    1315CONFIG_LANTIQ_MACH_EASY98020=y 
    14 CONFIG_LANTIQ_PROM_ASC0=y 
    15 # CONFIG_LANTIQ_PROM_ASC1 is not set 
    1616CONFIG_M25PXX_USE_FAST_READ=y 
    1717CONFIG_MIPS_MT=y 
     
    2121CONFIG_MTD_M25P80=y 
    2222CONFIG_MTSCHED=y 
    23 # CONFIG_PCI is not set 
    2423# CONFIG_PERFCTRS is not set 
    25 CONFIG_SOC_LANTIQ_FALCON=y 
    26 # CONFIG_SOC_LANTIQ_XWAY is not set 
     24# CONFIG_SOC_AMAZON_SE is not set 
     25CONFIG_SOC_FALCON=y 
     26# CONFIG_SOC_TYPE_XWAY is not set 
     27# CONFIG_SOC_XWAY is not set 
    2728CONFIG_SPI=y 
    2829# CONFIG_SPI_BITBANG is not set 
     
    3031# CONFIG_SPI_GPIO is not set 
    3132CONFIG_SPI_MASTER=y 
     33# CONFIG_SPI_SPIDEV is not set 
  • trunk/target/linux/lantiq/falcon/config-default

    r26021 r27026  
     1# CONFIG_ALTERA_STAPL is not set 
     2# CONFIG_ARCH_DMA_ADDR_T_64BIT is not set 
     3# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set 
     4# CONFIG_ATH79 is not set 
    15CONFIG_CPU_MIPSR2_IRQ_EI=y 
    26CONFIG_CPU_MIPSR2_IRQ_VI=y 
     
    59CONFIG_DM9000_DEBUGLEVEL=4 
    610CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL=y 
    7 CONFIG_HAVE_IDE=y 
    8 CONFIG_HW_HAS_PCI=y 
     11CONFIG_GENERIC_ATOMIC64=y 
     12CONFIG_GENERIC_IRQ_SHOW=y 
     13CONFIG_HAVE_ARCH_JUMP_LABEL=y 
     14CONFIG_HAVE_C_RECORDMCOUNT=y 
     15CONFIG_HAVE_DMA_API_DEBUG=y 
     16CONFIG_HAVE_DMA_ATTRS=y 
     17CONFIG_HAVE_DYNAMIC_FTRACE=y 
     18CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 
     19CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 
     20CONFIG_HAVE_FUNCTION_TRACER=y 
     21CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y 
     22CONFIG_HAVE_GENERIC_HARDIRQS=y 
     23CONFIG_HAVE_IRQ_WORK=y 
     24CONFIG_HAVE_PERF_EVENTS=y 
     25CONFIG_I2C=y 
     26CONFIG_I2C_BOARDINFO=y 
     27CONFIG_I2C_FALCON=y 
     28# CONFIG_I2C_PXA_PCI is not set 
    929CONFIG_IFX_VPE_CACHE_SPLIT=y 
    1030CONFIG_IFX_VPE_EXT=y 
     
    1232CONFIG_LANTIQ_MACH_EASY98000=y 
    1333CONFIG_LANTIQ_MACH_EASY98020=y 
    14 CONFIG_LANTIQ_PROM_ASC0=y 
    15 # CONFIG_LANTIQ_PROM_ASC1 is not set 
     34# CONFIG_LEDS_LM3530 is not set 
    1635CONFIG_M25PXX_USE_FAST_READ=y 
     36CONFIG_MACH_NO_WESTBRIDGE=y 
     37# CONFIG_MFD_MAX8997 is not set 
     38# CONFIG_MFD_WL1273_CORE is not set 
     39# CONFIG_MINIX_FS_NATIVE_ENDIAN is not set 
    1740CONFIG_MIPS_MT=y 
    1841# CONFIG_MIPS_VPE_APSP_API is not set 
    1942CONFIG_MIPS_VPE_LOADER=y 
    2043CONFIG_MIPS_VPE_LOADER_TOM=y 
     44# CONFIG_MTD_LATCH_ADDR is not set 
    2145CONFIG_MTD_M25P80=y 
    2246CONFIG_MTSCHED=y 
    23 # CONFIG_PCI is not set 
     47CONFIG_NEED_DMA_MAP_STATE=y 
     48CONFIG_NEED_PER_CPU_KM=y 
    2449# CONFIG_PERFCTRS is not set 
    25 CONFIG_SOC_LANTIQ_FALCON=y 
    26 # CONFIG_SOC_LANTIQ_XWAY is not set 
     50CONFIG_PERF_USE_VMALLOC=y 
     51# CONFIG_PREEMPT_RCU is not set 
     52# CONFIG_QUOTACTL is not set 
     53# CONFIG_SOC_AMAZON_SE is not set 
     54CONFIG_SOC_FALCON=y 
     55# CONFIG_SOC_TYPE_XWAY is not set 
     56# CONFIG_SOC_XWAY is not set 
    2757CONFIG_SPI=y 
    2858# CONFIG_SPI_BITBANG is not set 
     
    3060# CONFIG_SPI_GPIO is not set 
    3161CONFIG_SPI_MASTER=y 
     62# CONFIG_TPS6105X is not set 
     63CONFIG_XZ_DEC=y 
  • trunk/target/linux/lantiq/image/Makefile

    r26354 r27026  
    1010JFFS2_BLOCKSIZE = 64k 128k 256k 
    1111 
    12 xway_cmdline=-console=ttyS1,115200 rootfstype=squashfs,jffs2 
    13 falcon_cmdline=-console=ttyS0,115200 rootfstype=squashfs,jffs2 
     12ase_cmdline=-console=ttyLTQ1,115200 rootfstype=squashfs,jffs2 
     13xway_cmdline=-console=ttyLTQ1,115200 rootfstype=squashfs,jffs2 
     14falcon_cmdline=-console=ttyLTQ0,115200 rootfstype=squashfs,jffs2 
    1415 
    1516define CompressLzma 
     
    185186endif 
    186187 
     188ifeq ($(CONFIG_TARGET_lantiq_ase),y) 
     189define Image/BuildKernel/Profile/EASY50601 
     190        $(call Image/BuildKernel/Template,EASY50601,$(ase_cmdline)) 
     191endef 
     192 
     193define Image/Build/Profile/EASY50601 
     194        $(call Image/Build/$(1),$(1),EASY50601) 
     195endef 
     196 
     197define Image/BuildKernel/Profile/Generic 
     198        $(call Image/BuildKernel/Template,EASY50601,$(ase_cmdline)) 
     199        $(call Image/BuildKernel/Template,NONE) 
     200endef 
     201 
     202define Image/Build/Profile/Generic 
     203        $(call Image/Build/$(1),$(1),EASY50601) 
     204        $(call Image/Build/$(1),$(1),NONE) 
     205        $(CP) $(KDIR)/root.$(1) $(BIN_DIR)/$(IMG_PREFIX)-$(1).rootfs 
     206endef 
     207endif 
     208 
    187209define Image/BuildKernel 
    188210        $(call Image/BuildKernel/Profile/$(PROFILE)) 
  • trunk/target/linux/lantiq/patches-2.6.32/0009-SERIAL-Lantiq-Add-driver-for-MIPS-Lantiq-SOCs.patch

    r27025 r27026  
    1 --- a/drivers/serial/Kconfig 
    2 +++ b/drivers/serial/Kconfig 
    3 @@ -1454,6 +1454,14 @@ 
    4         help 
    5           Support for Console on the NWP serial ports. 
    6   
    7 +config SERIAL_LANTIQ 
    8 +       bool "Lantiq serial driver" 
    9 +       depends on LANTIQ 
    10 +       select SERIAL_CORE 
    11 +       select SERIAL_CORE_CONSOLE 
    12 +       help 
    13 +         Driver for the Lantiq SoC ASC hardware 
    14 + 
    15  config SERIAL_QE 
    16         tristate "Freescale QUICC Engine serial port support" 
    17         depends on QUICC_ENGINE 
    18 --- a/drivers/serial/Makefile 
    19 +++ b/drivers/serial/Makefile 
    20 @@ -89,3 +89,4 @@ 
    21  obj-$(CONFIG_SERIAL_MRST_MAX3110)      += mrst_max3110.o 
    22  obj-$(CONFIG_SERIAL_MFD_HSU)   += mfd.o 
    23  obj-$(CONFIG_SERIAL_OMAP) += omap-serial.o 
    24 +obj-$(CONFIG_SERIAL_LANTIQ) += lantiq.o 
     1From 1d2b44b1afa3ef081cd817dbf947d48eb8f5d21a Mon Sep 17 00:00:00 2001 
     2From: John Crispin <blogic@openwrt.org> 
     3Date: Tue, 5 Apr 2011 14:10:57 +0200 
     4Subject: [PATCH 09/13] SERIAL: Lantiq: Add driver for MIPS Lantiq SOCs. 
     5 
     6Signed-off-by: John Crispin <blogic@openwrt.org> 
     7Signed-off-by: Ralph Hempel <ralph.hempel@lantiq.com> 
     8Signed-off-by: Felix Fietkau <nbd@openwrt.org> 
     9Cc: alan@lxorguk.ukuu.org.uk 
     10Cc: linux-mips@linux-mips.org 
     11Cc: linux-serial@vger.kernel.org 
     12Patchwork: https://patchwork.linux-mips.org/patch/2269/ 
     13Acked-by: Alan Cox <alan@linux.intel.com> 
     14Signed-off-by: Ralf Baechle <ralf@linux-mips.org> 
     15--- 
     16 drivers/tty/serial/Kconfig  |    8 + 
     17 drivers/tty/serial/Makefile |    1 + 
     18 drivers/tty/serial/lantiq.c |  756 +++++++++++++++++++++++++++++++++++++++++++ 
     19 3 files changed, 765 insertions(+), 0 deletions(-) 
     20 create mode 100644 drivers/tty/serial/lantiq.c 
     21 
    2522--- /dev/null 
    2623+++ b/drivers/serial/lantiq.c 
    27 @@ -0,0 +1,772 @@ 
     24@@ -0,0 +1,756 @@ 
    2825+/* 
    2926+ *  Based on drivers/char/serial.c, by Linus Torvalds, Theodore Ts'o. 
     
    4542+ * Copyright (C) 2007 Felix Fietkau <nbd@openwrt.org> 
    4643+ * Copyright (C) 2007 John Crispin <blogic@openwrt.org> 
    47 + * Copyright (C) 2010 Thomas Langer, Lantiq Deutschland 
     44+ * Copyright (C) 2010 Thomas Langer, <thomas.langer@lantiq.com> 
    4845+ */ 
    4946+ 
     
    6360+#include <linux/clk.h> 
    6461+ 
    65 +#define lq_r32(reg)                    __raw_readl(reg) 
    66 +#define lq_r8(reg)                             __raw_readb(reg) 
    67 +#define lq_w32(val, reg)                       __raw_writel(val, reg) 
    68 +#define lq_w8(val, reg)                        __raw_writeb(val, reg) 
    69 +#define lq_w32_mask(clear, set, reg)   lq_w32((lq_r32(reg) & ~(clear)) | (set), reg) 
    70 + 
    71 +#define PORT_IFXMIPSASC                111 
     62+#include <lantiq_soc.h> 
     63+ 
     64+#define PORT_LTQ_ASC           111 
    7265+#define MAXPORTS               2 
    73 + 
    74 +#define UART_DUMMY_UER_RX 1 
    75 + 
    76 +#define DRVNAME "lq_asc" 
    77 + 
     66+#define UART_DUMMY_UER_RX      1 
     67+#define DRVNAME                        "ltq_asc" 
    7868+#ifdef __BIG_ENDIAN 
    79 +#define IFXMIPS_ASC_TBUF               (0x0020 + 3) 
    80 +#define IFXMIPS_ASC_RBUF               (0x0024 + 3) 
     69+#define LTQ_ASC_TBUF           (0x0020 + 3) 
     70+#define LTQ_ASC_RBUF           (0x0024 + 3) 
    8171+#else 
    82 +#define IFXMIPS_ASC_TBUF               0x0020 
    83 +#define IFXMIPS_ASC_RBUF               0x0024 
     72+#define LTQ_ASC_TBUF           0x0020 
     73+#define LTQ_ASC_RBUF           0x0024 
    8474+#endif 
    85 + 
    86 +#define IFXMIPS_ASC_FSTAT              0x0048 
    87 +#define IFXMIPS_ASC_WHBSTATE           0x0018 
    88 +#define IFXMIPS_ASC_STATE              0x0014 
    89 +#define IFXMIPS_ASC_IRNCR              0x00F8 
    90 +#define IFXMIPS_ASC_CLC                        0x0000 
    91 +#define IFXMIPS_ASC_ID                 0x0008 
    92 +#define IFXMIPS_ASC_PISEL              0x0004 
    93 +#define IFXMIPS_ASC_TXFCON             0x0044 
    94 +#define IFXMIPS_ASC_RXFCON             0x0040 
    95 +#define IFXMIPS_ASC_CON                        0x0010 
    96 +#define IFXMIPS_ASC_BG                 0x0050 
    97 +#define IFXMIPS_ASC_IRNREN             0x00F4 
    98 + 
    99 +#define ASC_IRNREN_TX                  0x1 
    100 +#define ASC_IRNREN_RX                  0x2 
    101 +#define ASC_IRNREN_ERR                 0x4 
    102 +#define ASC_IRNREN_TX_BUF              0x8 
    103 +#define ASC_IRNCR_TIR                  0x1 
    104 +#define ASC_IRNCR_RIR                  0x2 
    105 +#define ASC_IRNCR_EIR                  0x4 
    106 + 
    107 +#define ASCOPT_CSIZE                   0x3 
    108 +#define ASCOPT_CS7                     0x1 
    109 +#define ASCOPT_CS8                     0x2 
    110 +#define ASCOPT_PARENB                  0x4 
    111 +#define ASCOPT_STOPB                   0x8 
    112 +#define ASCOPT_PARODD                  0x0 
    113 +#define ASCOPT_CREAD                   0x20 
    114 +#define TXFIFO_FL                      1 
    115 +#define RXFIFO_FL                      1 
    116 +#define ASCCLC_DISS                    0x2 
    117 +#define ASCCLC_RMCMASK                 0x0000FF00 
    118 +#define ASCCLC_RMCOFFSET               8 
    119 +#define ASCCON_M_8ASYNC                        0x0 
    120 +#define ASCCON_M_7ASYNC                        0x2 
    121 +#define ASCCON_ODD                     0x00000020 
    122 +#define ASCCON_STP                     0x00000080 
    123 +#define ASCCON_BRS                     0x00000100 
    124 +#define ASCCON_FDE                     0x00000200 
    125 +#define ASCCON_R                       0x00008000 
    126 +#define ASCCON_FEN                     0x00020000 
    127 +#define ASCCON_ROEN                    0x00080000 
    128 +#define ASCCON_TOEN                    0x00100000 
    129 +#define ASCSTATE_PE                    0x00010000 
    130 +#define ASCSTATE_FE                    0x00020000 
    131 +#define ASCSTATE_ROE                   0x00080000 
    132 +#define ASCSTATE_ANY                   (ASCSTATE_ROE|ASCSTATE_PE|ASCSTATE_FE) 
    133 +#define ASCWHBSTATE_CLRREN             0x00000001 
    134 +#define ASCWHBSTATE_SETREN             0x00000002 
    135 +#define ASCWHBSTATE_CLRPE              0x00000004 
    136 +#define ASCWHBSTATE_CLRFE              0x00000008 
    137 +#define ASCWHBSTATE_CLRROE             0x00000020 
    138 +#define ASCTXFCON_TXFEN                        0x0001 
    139 +#define ASCTXFCON_TXFFLU               0x0002 
    140 +#define ASCTXFCON_TXFITLMASK           0x3F00 
    141 +#define ASCTXFCON_TXFITLOFF            8 
    142 +#define ASCRXFCON_RXFEN                        0x0001 
    143 +#define ASCRXFCON_RXFFLU               0x0002 
    144 +#define ASCRXFCON_RXFITLMASK           0x3F00 
    145 +#define ASCRXFCON_RXFITLOFF            8 
    146 +#define ASCFSTAT_RXFFLMASK             0x003F 
    147 +#define ASCFSTAT_TXFFLMASK             0x3F00 
    148 +#define ASCFSTAT_TXFFLOFF              8 
    149 +#define ASCFSTAT_RXFREEMASK            0x003F0000 
    150 +#define ASCFSTAT_RXFREEOFF             16 
    151 +#define ASCFSTAT_TXFREEMASK            0x3F000000 
    152 +#define ASCFSTAT_TXFREEOFF             24 
     75+#define LTQ_ASC_FSTAT          0x0048 
     76+#define LTQ_ASC_WHBSTATE       0x0018 
     77+#define LTQ_ASC_STATE          0x0014 
     78+#define LTQ_ASC_IRNCR          0x00F8 
     79+#define LTQ_ASC_CLC            0x0000 
     80+#define LTQ_ASC_ID             0x0008 
     81+#define LTQ_ASC_PISEL          0x0004 
     82+#define LTQ_ASC_TXFCON         0x0044 
     83+#define LTQ_ASC_RXFCON         0x0040 
     84+#define LTQ_ASC_CON            0x0010 
     85+#define LTQ_ASC_BG             0x0050 
     86+#define LTQ_ASC_IRNREN         0x00F4 
     87+ 
     88+#define ASC_IRNREN_TX          0x1 
     89+#define ASC_IRNREN_RX          0x2 
     90+#define ASC_IRNREN_ERR         0x4 
     91+#define ASC_IRNREN_TX_BUF      0x8 
     92+#define ASC_IRNCR_TIR          0x1 
     93+#define ASC_IRNCR_RIR          0x2 
     94+#define ASC_IRNCR_EIR          0x4 
     95+ 
     96+#define ASCOPT_CSIZE           0x3 
     97+#define TXFIFO_FL              1 
     98+#define RXFIFO_FL              1 
     99+#define ASCCLC_DISS            0x2 
     100+#define ASCCLC_RMCMASK         0x0000FF00 
     101+#define ASCCLC_RMCOFFSET       8 
     102+#define ASCCON_M_8ASYNC                0x0 
     103+#define ASCCON_M_7ASYNC                0x2 
     104+#define ASCCON_ODD             0x00000020 
     105+#define ASCCON_STP             0x00000080 
     106+#define ASCCON_BRS             0x00000100 
     107+#define ASCCON_FDE             0x00000200 
     108+#define ASCCON_R               0x00008000 
     109+#define ASCCON_FEN             0x00020000 
     110+#define ASCCON_ROEN            0x00080000 
     111+#define ASCCON_TOEN            0x00100000 
     112+#define ASCSTATE_PE            0x00010000 
     113+#define ASCSTATE_FE            0x00020000 
     114+#define ASCSTATE_ROE           0x00080000 
     115+#define ASCSTATE_ANY           (ASCSTATE_ROE|ASCSTATE_PE|ASCSTATE_FE) 
     116+#define ASCWHBSTATE_CLRREN     0x00000001 
     117+#define ASCWHBSTATE_SETREN     0x00000002 
     118+#define ASCWHBSTATE_CLRPE      0x00000004 
     119+#define ASCWHBSTATE_CLRFE      0x00000008 
     120+#define ASCWHBSTATE_CLRROE     0x00000020 
     121+#define ASCTXFCON_TXFEN                0x0001 
     122+#define ASCTXFCON_TXFFLU       0x0002 
     123+#define ASCTXFCON_TXFITLMASK   0x3F00 
     124+#define ASCTXFCON_TXFITLOFF    8 
     125+#define ASCRXFCON_RXFEN                0x0001 
     126+#define ASCRXFCON_RXFFLU       0x0002 
     127+#define ASCRXFCON_RXFITLMASK   0x3F00 
     128+#define ASCRXFCON_RXFITLOFF    8 
     129+#define ASCFSTAT_RXFFLMASK     0x003F 
     130+#define ASCFSTAT_TXFFLMASK     0x3F00 
     131+#define ASCFSTAT_TXFREEMASK    0x3F000000 
     132+#define ASCFSTAT_TXFREEOFF     24 
    153133+ 
    154134+static void lqasc_tx_chars(struct uart_port *port); 
    155 +extern void prom_printf(const char *fmt, ...); 
    156 +static struct lq_uart_port *lqasc_port[2]; 
     135+static struct ltq_uart_port *lqasc_port[MAXPORTS]; 
    157136+static struct uart_driver lqasc_reg; 
    158 + 
    159 +struct lq_uart_port { 
     137+static DEFINE_SPINLOCK(ltq_asc_lock); 
     138+ 
     139+struct ltq_uart_port { 
    160140+       struct uart_port        port; 
    161 +       struct clk                      *clk; 
     141+       struct clk              *clk; 
    162142+       unsigned int            tx_irq; 
    163143+       unsigned int            rx_irq; 
     
    166146+ 
    167147+static inline struct 
    168 +lq_uart_port *to_lq_uart_port(struct uart_port *port) 
    169 +{ 
    170 +       return container_of(port, struct lq_uart_port, port); 
     148+ltq_uart_port *to_ltq_uart_port(struct uart_port *port) 
     149+{ 
     150+       return container_of(port, struct ltq_uart_port, port); 
    171151+} 
    172152+ 
     
    181161+{ 
    182162+       unsigned long flags; 
    183 +       local_irq_save(flags); 
     163+       spin_lock_irqsave(&ltq_asc_lock, flags); 
    184164+       lqasc_tx_chars(port); 
    185 +       local_irq_restore(flags); 
     165+       spin_unlock_irqrestore(&ltq_asc_lock, flags); 
    186166+       return; 
    187167+} 
     
    190170+lqasc_stop_rx(struct uart_port *port) 
    191171+{ 
    192 +       lq_w32(ASCWHBSTATE_CLRREN, port->membase + IFXMIPS_ASC_WHBSTATE); 
     172+       ltq_w32(ASCWHBSTATE_CLRREN, port->membase + LTQ_ASC_WHBSTATE); 
    193173+} 
    194174+ 
     
    198178+} 
    199179+ 
    200 +static void 
     180+static int 
    201181+lqasc_rx_chars(struct uart_port *port) 
    202182+{ 
    203 +       struct tty_struct *tty = port->state->port.tty; 
     183+       struct tty_struct *tty = tty_port_tty_get(&port->state->port); 
    204184+       unsigned int ch = 0, rsr = 0, fifocnt; 
    205185+ 
    206 +       fifocnt = lq_r32(port->membase + IFXMIPS_ASC_FSTAT) & ASCFSTAT_RXFFLMASK; 
     186+       if (!tty) { 
     187+               dev_dbg(port->dev, "%s:tty is busy now", __func__); 
     188+               return -EBUSY; 
     189+       } 
     190+       fifocnt = 
     191+               ltq_r32(port->membase + LTQ_ASC_FSTAT) & ASCFSTAT_RXFFLMASK; 
    207192+       while (fifocnt--) { 
    208193+               u8 flag = TTY_NORMAL; 
    209 +               ch = lq_r8(port->membase + IFXMIPS_ASC_RBUF); 
    210 +               rsr = (lq_r32(port->membase + IFXMIPS_ASC_STATE) 
     194+               ch = ltq_r8(port->membase + LTQ_ASC_RBUF); 
     195+               rsr = (ltq_r32(port->membase + LTQ_ASC_STATE) 
    211196+                       & ASCSTATE_ANY) | UART_DUMMY_UER_RX; 
    212197+               tty_flip_buffer_push(tty); 
     
    220205+                       if (rsr & ASCSTATE_PE) { 
    221206+                               port->icount.parity++; 
    222 +                               lq_w32_mask(0, ASCWHBSTATE_CLRPE, 
    223 +                                       port->membase + IFXMIPS_ASC_WHBSTATE); 
     207+                               ltq_w32_mask(0, ASCWHBSTATE_CLRPE, 
     208+                                       port->membase + LTQ_ASC_WHBSTATE); 
    224209+                       } else if (rsr & ASCSTATE_FE) { 
    225210+                               port->icount.frame++; 
    226 +                               lq_w32_mask(0, ASCWHBSTATE_CLRFE, 
    227 +                                       port->membase + IFXMIPS_ASC_WHBSTATE); 
     211+                               ltq_w32_mask(0, ASCWHBSTATE_CLRFE, 
     212+                                       port->membase + LTQ_ASC_WHBSTATE); 
    228213+                       } 
    229214+                       if (rsr & ASCSTATE_ROE) { 
    230215+                               port->icount.overrun++; 
    231 +                               lq_w32_mask(0, ASCWHBSTATE_CLRROE, 
    232 +                                       port->membase + IFXMIPS_ASC_WHBSTATE); 
     216+                               ltq_w32_mask(0, ASCWHBSTATE_CLRROE, 
     217+                                       port->membase + LTQ_ASC_WHBSTATE); 
    233218+                       } 
    234219+ 
     
    254239+       if (ch != 0) 
    255240+               tty_flip_buffer_push(tty); 
    256 +       return; 
     241+       tty_kref_put(tty); 
     242+       return 0; 
    257243+} 
    258244+ 
     
    266252+       } 
    267253+ 
    268 +       while (((lq_r32(port->membase + IFXMIPS_ASC_FSTAT) & 
     254+       while (((ltq_r32(port->membase + LTQ_ASC_FSTAT) & 
    269255+               ASCFSTAT_TXFREEMASK) >> ASCFSTAT_TXFREEOFF) != 0) { 
    270256+               if (port->x_char) { 
    271 +                       lq_w8(port->x_char, port->membase + IFXMIPS_ASC_TBUF); 
     257+                       ltq_w8(port->x_char, port->membase + LTQ_ASC_TBUF); 
    272258+                       port->icount.tx++; 
    273259+                       port->x_char = 0; 
     
    278264+                       break; 
    279265+ 
    280 +               lq_w8(port->state->xmit.buf[port->state->xmit.tail], 
    281 +                       port->membase + IFXMIPS_ASC_TBUF); 
     266+               ltq_w8(port->state->xmit.buf[port->state->xmit.tail], 
     267+                       port->membase + LTQ_ASC_TBUF); 
    282268+               xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1); 
    283269+               port->icount.tx++; 
     
    291277+lqasc_tx_int(int irq, void *_port) 
    292278+{ 
     279+       unsigned long flags; 
    293280+       struct uart_port *port = (struct uart_port *)_port; 
    294 +       lq_w32(ASC_IRNCR_TIR, port->membase + IFXMIPS_ASC_IRNCR); 
     281+       spin_lock_irqsave(&ltq_asc_lock, flags); 
     282+       ltq_w32(ASC_IRNCR_TIR, port->membase + LTQ_ASC_IRNCR); 
     283+       spin_unlock_irqrestore(&ltq_asc_lock, flags); 
    295284+       lqasc_start_tx(port); 
    296285+       return IRQ_HANDLED; 
     
    300289+lqasc_err_int(int irq, void *_port) 
    301290+{ 
     291+       unsigned long flags; 
    302292+       struct uart_port *port = (struct uart_port *)_port; 
     293+       spin_lock_irqsave(&ltq_asc_lock, flags); 
    303294+       /* clear any pending interrupts */ 
    304 +       lq_w32_mask(0, ASCWHBSTATE_CLRPE | ASCWHBSTATE_CLRFE | ASCWHBSTATE_CLRROE, 
    305 +               port->membase + IFXMIPS_ASC_WHBSTATE); 
     295+       ltq_w32_mask(0, ASCWHBSTATE_CLRPE | ASCWHBSTATE_CLRFE | 
     296+               ASCWHBSTATE_CLRROE, port->membase + LTQ_ASC_WHBSTATE); 
     297+       spin_unlock_irqrestore(&ltq_asc_lock, flags); 
    306298+       return IRQ_HANDLED; 
    307299+} 
     
    310302+lqasc_rx_int(int irq, void *_port) 
    311303+{ 
     304+       unsigned long flags; 
    312305+       struct uart_port *port = (struct uart_port *)_port; 
    313 +       lq_w32(ASC_IRNCR_RIR, port->membase + IFXMIPS_ASC_IRNCR); 
     306+       spin_lock_irqsave(&ltq_asc_lock, flags); 
     307+       ltq_w32(ASC_IRNCR_RIR, port->membase + LTQ_ASC_IRNCR); 
    314308+       lqasc_rx_chars(port); 
     309+       spin_unlock_irqrestore(&ltq_asc_lock, flags); 
    315310+       return IRQ_HANDLED; 
    316311+} 
     
    320315+{ 
    321316+       int status; 
    322 +       status = lq_r32(port->membase + IFXMIPS_ASC_FSTAT) & ASCFSTAT_TXFFLMASK; 
     317+       status = ltq_r32(port->membase + LTQ_ASC_FSTAT) & ASCFSTAT_TXFFLMASK; 
    323318+       return status ? 0 : TIOCSER_TEMT; 
    324319+} 
     
    343338+lqasc_startup(struct uart_port *port) 
    344339+{ 
    345 +       struct lq_uart_port *ifx_port = to_lq_uart_port(port); 
     340+       struct ltq_uart_port *ltq_port = to_ltq_uart_port(port); 
    346341+       int retval; 
    347342+ 
    348 +       port->uartclk = clk_get_rate(ifx_port->clk); 
    349 + 
    350 +       lq_w32_mask(ASCCLC_DISS | ASCCLC_RMCMASK, (1 << ASCCLC_RMCOFFSET), 
    351 +               port->membase + IFXMIPS_ASC_CLC); 
    352 + 
    353 +       lq_w32(0, port->membase + IFXMIPS_ASC_PISEL); 
    354 +       lq_w32( 
     343+       port->uartclk = clk_get_rate(ltq_port->clk); 
     344+ 
     345+       ltq_w32_mask(ASCCLC_DISS | ASCCLC_RMCMASK, (1 << ASCCLC_RMCOFFSET), 
     346+               port->membase + LTQ_ASC_CLC); 
     347+ 
     348+       ltq_w32(0, port->membase + LTQ_ASC_PISEL); 
     349+       ltq_w32( 
    355350+               ((TXFIFO_FL << ASCTXFCON_TXFITLOFF) & ASCTXFCON_TXFITLMASK) | 
    356351+               ASCTXFCON_TXFEN | ASCTXFCON_TXFFLU, 
    357 +               port->membase + IFXMIPS_ASC_TXFCON); 
    358 +       lq_w32( 
     352+               port->membase + LTQ_ASC_TXFCON); 
     353+       ltq_w32( 
    359354+               ((RXFIFO_FL << ASCRXFCON_RXFITLOFF) & ASCRXFCON_RXFITLMASK) 
    360355+               | ASCRXFCON_RXFEN | ASCRXFCON_RXFFLU, 
    361 +               port->membase + IFXMIPS_ASC_RXFCON); 
    362 +       /* make sure other settings are written to hardware before setting enable bits */ 
     356+               port->membase + LTQ_ASC_RXFCON); 
     357+       /* make sure other settings are written to hardware before 
     358+        * setting enable bits 
     359+        */ 
    363360+       wmb(); 
    364 +       lq_w32_mask(0, ASCCON_M_8ASYNC | ASCCON_FEN | ASCCON_TOEN | 
    365 +               ASCCON_ROEN, port->membase + IFXMIPS_ASC_CON); 
    366 + 
    367 +       retval = request_irq(ifx_port->tx_irq, lqasc_tx_int, 
     361+       ltq_w32_mask(0, ASCCON_M_8ASYNC | ASCCON_FEN | ASCCON_TOEN | 
     362+               ASCCON_ROEN, port->membase + LTQ_ASC_CON); 
     363+ 
     364+       retval = request_irq(ltq_port->tx_irq, lqasc_tx_int, 
    368365+               IRQF_DISABLED, "asc_tx", port); 
    369366+       if (retval) { 
     
    372369+       } 
    373370+ 
    374 +       retval = request_irq(ifx_port->rx_irq, lqasc_rx_int, 
     371+       retval = request_irq(ltq_port->rx_irq, lqasc_rx_int, 
    375372+               IRQF_DISABLED, "asc_rx", port); 
    376373+       if (retval) { 
     
    379376+       } 
    380377+ 
    381 +       retval = request_irq(ifx_port->err_irq, lqasc_err_int, 
     378+       retval = request_irq(ltq_port->err_irq, lqasc_err_int, 
    382379+               IRQF_DISABLED, "asc_err", port); 
    383380+       if (retval) { 
     
    386383+       } 
    387384+ 
    388 +       lq_w32(ASC_IRNREN_RX | ASC_IRNREN_ERR | ASC_IRNREN_TX, 
    389 +               port->membase + IFXMIPS_ASC_IRNREN); 
     385+       ltq_w32(ASC_IRNREN_RX | ASC_IRNREN_ERR | ASC_IRNREN_TX, 
     386+               port->membase + LTQ_ASC_IRNREN); 
    390387+       return 0; 
    391388+ 
    392389+err2: 
    393 +       free_irq(ifx_port->rx_irq, port); 
     390+       free_irq(ltq_port->rx_irq, port); 
    394391+err1: 
    395 +       free_irq(ifx_port->tx_irq, port); 
     392+       free_irq(ltq_port->tx_irq, port); 
    396393+       return retval; 
    397394+} 
     
    400397+lqasc_shutdown(struct uart_port *port) 
    401398+{ 
    402 +       struct lq_uart_port *ifx_port = to_lq_uart_port(port); 
    403 +       free_irq(ifx_port->tx_irq, port); 
    404 +       free_irq(ifx_port->rx_irq, port); 
    405 +       free_irq(ifx_port->err_irq, port); 
    406 + 
    407 +       lq_w32(0, port->membase + IFXMIPS_ASC_CON); 
    408 +       lq_w32_mask(ASCRXFCON_RXFEN, ASCRXFCON_RXFFLU, 
    409 +               port->membase + IFXMIPS_ASC_RXFCON); 
    410 +       lq_w32_mask(ASCTXFCON_TXFEN, ASCTXFCON_TXFFLU, 
    411 +               port->membase + IFXMIPS_ASC_TXFCON); 
     399+       struct ltq_uart_port *ltq_port = to_ltq_uart_port(port); 
     400+       free_irq(ltq_port->tx_irq, port); 
     401+       free_irq(ltq_port->rx_irq, port); 
     402+       free_irq(ltq_port->err_irq, port); 
     403+ 
     404+       ltq_w32(0, port->membase + LTQ_ASC_CON); 
     405+       ltq_w32_mask(ASCRXFCON_RXFEN, ASCRXFCON_RXFFLU, 
     406+               port->membase + LTQ_ASC_RXFCON); 
     407+       ltq_w32_mask(ASCTXFCON_TXFEN, ASCTXFCON_TXFFLU, 
     408+               port->membase + LTQ_ASC_TXFCON); 
    412409+} 
    413410+ 
     
    418415+       unsigned int cflag; 
    419416+       unsigned int iflag; 
    420 +       unsigned int quot; 
     417+       unsigned int divisor; 
    421418+       unsigned int baud; 
    422419+       unsigned int con = 0; 
     
    434431+       case CS6: 
    435432+       default: 
     433+               new->c_cflag &= ~ CSIZE; 
     434+               new->c_cflag |= CS8; 
    436435+               con = ASCCON_M_8ASYNC; 
    437436+               break; 
    438437+       } 
     438+ 
     439+       cflag &= ~CMSPAR; /* Mark/Space parity is not supported */ 
    439440+ 
    440441+       if (cflag & CSTOPB) 
     
    471472+       con |= ASCCON_FEN | ASCCON_TOEN | ASCCON_ROEN; 
    472473+ 
    473 +       local_irq_save(flags); 
     474+       spin_lock_irqsave(&ltq_asc_lock, flags); 
    474475+ 
    475476+       /* set up CON */ 
    476 +       lq_w32_mask(0, con, port->membase + IFXMIPS_ASC_CON); 
     477+       ltq_w32_mask(0, con, port->membase + LTQ_ASC_CON); 
    477478+ 
    478479+       /* Set baud rate - take a divider of 2 into account */ 
    479480+       baud = uart_get_baud_rate(port, new, old, 0, port->uartclk / 16); 
    480 +       quot = uart_get_divisor(port, baud); 
    481 +       quot = quot / 2 - 1; 
     481+       divisor = uart_get_divisor(port, baud); 
     482+       divisor = divisor / 2 - 1; 
    482483+ 
    483484+       /* disable the baudrate generator */ 
    484 +       lq_w32_mask(ASCCON_R, 0, port->membase + IFXMIPS_ASC_CON); 
     485+       ltq_w32_mask(ASCCON_R, 0, port->membase + LTQ_ASC_CON); 
    485486+ 
    486487+       /* make sure the fractional divider is off */ 
    487 +       lq_w32_mask(ASCCON_FDE, 0, port->membase + IFXMIPS_ASC_CON); 
     488+       ltq_w32_mask(ASCCON_FDE, 0, port->membase + LTQ_ASC_CON); 
    488489+ 
    489490+       /* set up to use divisor of 2 */ 
    490 +       lq_w32_mask(ASCCON_BRS, 0, port->membase + IFXMIPS_ASC_CON); 
     491+       ltq_w32_mask(ASCCON_BRS, 0, port->membase + LTQ_ASC_CON); 
    491492+ 
    492493+       /* now we can write the new baudrate into the register */ 
    493 +       lq_w32(quot, port->membase + IFXMIPS_ASC_BG); 
     494+       ltq_w32(divisor, port->membase + LTQ_ASC_BG); 
    494495+ 
    495496+       /* turn the baudrate generator back on */ 
    496 +       lq_w32_mask(0, ASCCON_R, port->membase + IFXMIPS_ASC_CON); 
     497+       ltq_w32_mask(0, ASCCON_R, port->membase + LTQ_ASC_CON); 
    497498+ 
    498499+       /* enable rx */ 
    499 +       lq_w32(ASCWHBSTATE_SETREN, port->membase + IFXMIPS_ASC_WHBSTATE); 
    500 + 
    501 +       local_irq_restore(flags); 
     500+       ltq_w32(ASCWHBSTATE_SETREN, port->membase + LTQ_ASC_WHBSTATE); 
     501+ 
     502+       spin_unlock_irqrestore(&ltq_asc_lock, flags); 
     503+ 
     504+       /* Don't rewrite B0 */ 
     505+        if (tty_termios_baud_rate(new)) 
     506+               tty_termios_encode_baud_rate(new, baud, baud); 
    502507+} 
    503508+ 
     
    505510+lqasc_type(struct uart_port *port) 
    506511+{ 
    507 +       if (port->type == PORT_IFXMIPSASC) 
     512+       if (port->type == PORT_LTQ_ASC) 
    508513+               return DRVNAME; 
    509514+       else 
     
    524529+{ 
    525530+       struct platform_device *pdev = to_platform_device(port->dev); 
    526 +       struct resource *mmres; 
     531+       struct resource *res; 
    527532+       int size; 
    528533+ 
    529 +       mmres = platform_get_resource(pdev, IORESOURCE_MEM, 0); 
    530 +       if (!mmres) 
     534+       res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 
     535+       if (!res) { 
     536+               dev_err(&pdev->dev, "cannot obtain I/O memory region"); 
    531537+               return -ENODEV; 
    532 +       size = resource_size(mmres); 
     538+       } 
     539+       size = resource_size(res); 
     540+ 
     541+       res = devm_request_mem_region(&pdev->dev, res->start, 
     542+               size, dev_name(&pdev->dev)); 
     543+       if (!res) { 
     544+               dev_err(&pdev->dev, "cannot request I/O memory region"); 
     545+               return -EBUSY; 
     546+       } 
    533547+ 
    534548+       if (port->flags & UPF_IOREMAP) { 
    535 +               port->membase = ioremap_nocache(port->mapbase, size); 
     549+               port->membase = devm_ioremap_nocache(&pdev->dev, 
     550+                       port->mapbase, size); 
    536551+               if (port->membase == NULL) 
    537552+                       return -ENOMEM; 
     
    544559+{ 
    545560+       if (flags & UART_CONFIG_TYPE) { 
    546 +               port->type = PORT_IFXMIPSASC; 
     561+               port->type = PORT_LTQ_ASC; 
    547562+               lqasc_request_port(port); 
    548563+       } 
     
    554569+{ 
    555570+       int ret = 0; 
    556 +       if (ser->type != PORT_UNKNOWN && ser->type != PORT_IFXMIPSASC) 
     571+       if (ser->type != PORT_UNKNOWN && ser->type != PORT_LTQ_ASC) 
    557572+               ret = -EINVAL; 
    558573+       if (ser->irq < 0 || ser->irq >= NR_IRQS) 
     
    591606+ 
    592607+       do { 
    593 +               fifofree = (lq_r32(port->membase + IFXMIPS_ASC_FSTAT) 
     608+               fifofree = (ltq_r32(port->membase + LTQ_ASC_FSTAT) 
    594609+                       & ASCFSTAT_TXFREEMASK) >> ASCFSTAT_TXFREEOFF; 
    595610+       } while (fifofree == 0); 
    596 +       lq_w8(ch, port->membase + IFXMIPS_ASC_TBUF); 
     611+       ltq_w8(ch, port->membase + LTQ_ASC_TBUF); 
    597612+} 
    598613+ 
     
    601616+lqasc_console_write(struct console *co, const char *s, u_int count) 
    602617+{ 
    603 +       struct lq_uart_port *ifx_port; 
     618+       struct ltq_uart_port *ltq_port; 
    604619+       struct uart_port *port; 
    605620+       unsigned long flags; 
     
    608623+               return; 
    609624+ 
    610 +       ifx_port = lqasc_port[co->index]; 
    611 +       if (!ifx_port) 
     625+       ltq_port = lqasc_port[co->index]; 
     626+       if (!ltq_port) 
    612627+               return; 
    613628+ 
    614 +       port = &ifx_port->port; 
    615 + 
    616 +       local_irq_save(flags); 
     629+       port = &ltq_port->port; 
     630+ 
     631+       spin_lock_irqsave(&ltq_asc_lock, flags); 
    617632+       uart_console_write(port, s, count, lqasc_console_putchar); 
    618 +       local_irq_restore(flags); 
     633+       spin_unlock_irqrestore(&ltq_asc_lock, flags); 
    619634+} 
    620635+ 
     
    622637+lqasc_console_setup(struct console *co, char *options) 
    623638+{ 
    624 +       struct lq_uart_port *ifx_port; 
     639+       struct ltq_uart_port *ltq_port; 
    625640+       struct uart_port *port; 
    626641+       int baud = 115200; 
     
    632647+               return -ENODEV; 
    633648+ 
    634 +       ifx_port = lqasc_port[co->index]; 
    635 +       if (!ifx_port) 
     649+       ltq_port = lqasc_port[co->index]; 
     650+       if (!ltq_port) 
    636651+               return -ENODEV; 
    637652+ 
    638 +       port = &ifx_port->port; 
    639 + 
    640 +       port->uartclk = clk_get_rate(ifx_port->clk); 
     653+       port = &ltq_port->port; 
     654+ 
     655+       port->uartclk = clk_get_rate(ltq_port->clk); 
    641656+ 
    642657+       if (options) 
     
    646661+ 
    647662+static struct console lqasc_console = { 
    648 +       .name =         "ttyS", 
     663+       .name =         "ttyLTQ", 
    649664+       .write =        lqasc_console_write, 
    650665+       .device =       uart_console_device, 
     
    666681+       .owner =        THIS_MODULE, 
    667682+       .driver_name =  DRVNAME, 
    668 +       .dev_name =     "ttyS", 
    669 +       .major =        TTY_MAJOR, 
    670 +       .minor =        64, 
     683+       .dev_name =     "ttyLTQ", 
     684+       .major =        0, 
     685+       .minor =        0, 
    671686+       .nr =           MAXPORTS, 
    672687+       .cons =         &lqasc_console, 
    673688+}; 
    674689+ 
    675 +static int __devinit 
     690+static int __init 
    676691+lqasc_probe(struct platform_device *pdev) 
    677692+{ 
    678 +       struct lq_uart_port *ifx_port; 
     693+       struct ltq_uart_port *ltq_port; 
    679694+       struct uart_port *port; 
    680695+       struct resource *mmres, *irqres; 
     
    701716+ 
    702717+       tx_irq = platform_get_irq_byname(pdev, "tx"); 
    703 +       if (tx_irq < 0) { 
    704 +               /* without named resources: assume standard irq scheme */ 
    705 +               tx_irq = irqres->start; 
    706 +               rx_irq = irqres->start+2; 
    707 +               err_irq = irqres->start+3; 
    708 +       } else { 
    709 +               /* other irqs must be named also! */ 
    710 +               rx_irq = platform_get_irq_byname(pdev, "rx"); 
    711 +               err_irq = platform_get_irq_byname(pdev, "err"); 
    712 +               if ((rx_irq < 0) | (err_irq < 0)) 
    713 +                       return -ENODEV; 
    714 +       } 
    715 + 
    716 +       ifx_port = kzalloc(sizeof(struct lq_uart_port), GFP_KERNEL); 
    717 +       if (!ifx_port) 
     718+       rx_irq = platform_get_irq_byname(pdev, "rx"); 
     719+       err_irq = platform_get_irq_byname(pdev, "err"); 
     720+       if ((tx_irq < 0) | (rx_irq < 0) | (err_irq < 0)) 
     721+               return -ENODEV; 
     722+ 
     723+       ltq_port = kzalloc(sizeof(struct ltq_uart_port), GFP_KERNEL); 
     724+       if (!ltq_port) 
    718725+               return -ENOMEM; 
    719726+ 
    720 +       port = &ifx_port->port; 
     727+       port = &ltq_port->port; 
    721728+ 
    722729+       port->iotype    = SERIAL_IO_MEM; 
     
    724731+       port->ops       = &lqasc_pops; 
    725732+       port->fifosize  = 16; 
    726 +       port->type      = PORT_IFXMIPSASC, 
     733+       port->type      = PORT_LTQ_ASC, 
    727734+       port->line      = pdev->id; 
    728735+       port->dev       = &pdev->dev; 
     
    731738+       port->mapbase   = mmres->start; 
    732739+ 
    733 +       ifx_port->clk   = clk; 
    734 + 
    735 +       ifx_port->tx_irq = tx_irq; 
    736 +       ifx_port->rx_irq = rx_irq; 
    737 +       ifx_port->err_irq = err_irq; 
    738 + 
    739 +       lqasc_port[pdev->id] = ifx_port; 
    740 +       platform_set_drvdata(pdev, ifx_port); 
     740+       ltq_port->clk   = clk; 
     741+ 
     742+       ltq_port->tx_irq = tx_irq; 
     743+       ltq_port->rx_irq = rx_irq; 
     744+       ltq_port->err_irq = err_irq; 
     745+ 
     746+       lqasc_port[pdev->id] = ltq_port; 
     747+       platform_set_drvdata(pdev, ltq_port); 
    741748+ 
    742749+       ret = uart_add_one_port(&lqasc_reg, port); 
     
    745752+} 
    746753+ 
    747 +static int __devexit 
    748 +lqasc_remove(struct platform_device *pdev) 
    749 +{ 
    750 +       struct lq_uart_port *ifx_port = platform_get_drvdata(pdev); 
    751 +       int ret; 
    752 + 
    753 +       clk_put(ifx_port->clk); 
    754 +       platform_set_drvdata(pdev, NULL); 
    755 +       lqasc_port[pdev->id] = NULL; 
    756 +       ret = uart_remove_one_port(&lqasc_reg, &ifx_port->port); 
    757 +       kfree(ifx_port); 
    758 + 
    759 +       return 0; 
    760 +} 
    761 + 
    762754+static struct platform_driver lqasc_driver = { 
    763 +       .probe          = lqasc_probe, 
    764 +       .remove         = __devexit_p(lqasc_remove), 
    765 + 
    766755+       .driver         = { 
    767756+               .name   = DRVNAME, 
     
    779768+               return ret; 
    780769+ 
    781 +       ret = platform_driver_register(&lqasc_driver); 
     770+       ret = platform_driver_probe(&lqasc_driver, lqasc_probe); 
    782771+       if (ret != 0) 
    783772+               uart_unregister_driver(&lqasc_reg); 
     
    786775+} 
    787776+ 
    788 +void __exit 
    789 +exit_lqasc(void) 
    790 +{ 
    791 +       platform_driver_unregister(&lqasc_driver); 
    792 +       uart_unregister_driver(&lqasc_reg); 
    793 +} 
    794 + 
    795777+module_init(init_lqasc); 
    796 +module_exit(exit_lqasc); 
    797778+ 
    798779+MODULE_DESCRIPTION("Lantiq serial port driver"); 
    799780+MODULE_LICENSE("GPL"); 
     781--- a/drivers/serial/Kconfig 
     782+++ b/drivers/serial/Kconfig 
     783@@ -1383,6 +1383,14 @@ 
     784        help 
     785          Support for Console on the NWP serial ports. 
     786  
     787+config SERIAL_LANTIQ 
     788+       bool "Lantiq serial driver" 
     789+       depends on LANTIQ 
     790+       select SERIAL_CORE 
     791+       select SERIAL_CORE_CONSOLE 
     792+       help 
     793+         Support for console and UART on Lantiq SoCs. 
     794+ 
     795 config SERIAL_QE 
     796        tristate "Freescale QUICC Engine serial port support" 
     797        depends on QUICC_ENGINE 
     798--- a/drivers/serial/Makefile 
     799+++ b/drivers/serial/Makefile 
     800@@ -81,3 +81,4 @@ 
     801 obj-$(CONFIG_KGDB_SERIAL_CONSOLE) += kgdboc.o 
     802 obj-$(CONFIG_SERIAL_QE) += ucc_uart.o 
     803 obj-$(CONFIG_SERIAL_TIMBERDALE)        += timbuart.o 
     804+obj-$(CONFIG_SERIAL_LANTIQ)    += lantiq.o 
  • trunk/target/linux/lantiq/patches-2.6.32/100-falcon_header.patch

    r27025 r27026  
    1240712407+ 
    1240812408+#endif /* __FALCON_SYSCTRL_H */ 
    12409 --- a/arch/mips/include/asm/mach-lantiq/lantiq_regs.h 
    12410 +++ b/arch/mips/include/asm/mach-lantiq/lantiq_regs.h 
    12411 @@ -12,6 +12,9 @@ 
    12412  #ifdef CONFIG_SOC_LANTIQ_XWAY 
    12413  #include <xway.h> 
    12414  #include <xway_irq.h> 
    12415 +#elif defined(CONFIG_SOC_LANTIQ_FALCON) 
    12416 +#include <lantiq_falcon.h> 
    12417 +#include <lantiq_falcon_irq.h> 
    12418  #endif 
    12419   
    12420  #endif 
    1242112409--- /dev/null 
    1242212410+++ b/arch/mips/include/asm/mach-lantiq/falcon/cpu-feature-overrides.h 
  • trunk/target/linux/lantiq/patches-2.6.32/110-falcon_board.patch

    r27025 r27026  
    22+++ b/arch/mips/lantiq/falcon/Kconfig 
    33@@ -0,0 +1,11 @@ 
    4 +if SOC_LANTIQ_FALCON 
     4+if SOC_FALCON 
    55+ 
    66+menu "Mips Machine" 
     
    2121--- /dev/null 
    2222+++ b/arch/mips/lantiq/falcon/clk-falcon.c 
    23 @@ -0,0 +1,46 @@ 
     23@@ -0,0 +1,48 @@ 
    2424+/* 
    2525+ * This program is free software; you can redistribute it and/or modify 
     
    3939+#include <asm/div64.h> 
    4040+ 
     41+#include <lantiq_soc.h> 
     42+ 
    4143+#include <falcon.h> 
    42 + 
    43 +#include <falcon/sys1_reg.h> 
     44+#include <gpon_reg_base.h> 
     45+#include <sys1_reg.h> 
    4446+ 
    4547+static struct gpon_reg_sys1 * const pSYS1 = (struct gpon_reg_sys1 *)GPON_SYS1_BASE; 
    4648+ 
    4749+unsigned int 
    48 +lq_get_io_region_clock(void) 
     50+ltq_get_io_region_clock(void) 
    4951+{ 
    5052+       return 200000000; /* 200 MHz */ 
    5153+} 
    52 +EXPORT_SYMBOL(lq_get_io_region_clock); 
     54+EXPORT_SYMBOL(ltq_get_io_region_clock); 
    5355+ 
    5456+unsigned int 
    55 +lq_get_cpu_hz(void) 
    56 +{ 
    57 +       if ((lq_r32(&pSYS1->cpu0cc) & CPU0CC_CPUDIV) == CPU0CC_CPUDIV_SELFHALF) 
     57+ltq_get_cpu_hz(void) 
     58+{ 
     59+       if ((ltq_r32(&pSYS1->cpu0cc) & CPU0CC_CPUDIV) == CPU0CC_CPUDIV_SELFHALF) 
    5860+               return 200000000; /* 200 MHz */ 
    5961+       else 
    6062+               return 400000000; /* 400 MHz */ 
    6163+} 
    62 +EXPORT_SYMBOL(lq_get_cpu_hz); 
     64+EXPORT_SYMBOL(ltq_get_cpu_hz); 
    6365+ 
    6466+unsigned int 
    65 +lq_get_fpi_hz(void) 
     67+ltq_get_fpi_hz(void) 
    6668+{ 
    6769+       return 100000000; 
    6870+} 
    69 +EXPORT_SYMBOL(lq_get_fpi_hz); 
     71+EXPORT_SYMBOL(ltq_get_fpi_hz); 
    7072--- /dev/null 
    7173+++ b/arch/mips/lantiq/falcon/devices.c 
     
    102104+#include "devices.h" 
    103105+ 
    104 +unsigned char lq_ethaddr[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; 
    105 +EXPORT_SYMBOL(lq_ethaddr); 
     106+unsigned char ltq_ethaddr[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; 
     107+EXPORT_SYMBOL(ltq_ethaddr); 
    106108+ 
    107109+static int __init 
     
    109111+{ 
    110112+       sscanf(str, "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx", 
    111 +               &lq_ethaddr[0], &lq_ethaddr[1], &lq_ethaddr[2], 
    112 +               &lq_ethaddr[3], &lq_ethaddr[4], &lq_ethaddr[5]); 
     113+               &ltq_ethaddr[0], &ltq_ethaddr[1], &ltq_ethaddr[2], 
     114+               &ltq_ethaddr[3], &ltq_ethaddr[4], &ltq_ethaddr[5]); 
    113115+       return 0; 
    114116+} 
     
    136138+       switch (port) { 
    137139+       case 0: 
    138 +               platform_device_register_simple("lq_asc", 0, 
     140+               platform_device_register_simple("ltq_asc", 0, 
    139141+                       falcon_asc0_resources, ARRAY_SIZE(falcon_asc0_resources)); 
    140142+               break; 
    141143+       case 1: 
    142 +               platform_device_register_simple("lq_asc", 1, 
     144+               platform_device_register_simple("ltq_asc", 1, 
    143145+                       falcon_asc1_resources, ARRAY_SIZE(falcon_asc1_resources)); 
    144146+               break; 
     
    149151+ 
    150152+/* nor flash */ 
    151 +static struct resource lq_nor_resource = 
    152 +       MEM_RES("nor",LQ_FLASH_START,LQ_FLASH_START + LQ_FLASH_MAX - 1); 
    153 + 
    154 +static struct platform_device lq_nor = { 
    155 +       .name                   = "lq_nor", 
    156 +       .resource               = &lq_nor_resource, 
     153+static struct resource ltq_nor_resource = 
     154+       MEM_RES("nor",LTQ_FLASH_START,LTQ_FLASH_START + LTQ_FLASH_MAX - 1); 
     155+ 
     156+static struct platform_device ltq_nor = { 
     157+       .name                   = "ltq_nor", 
     158+       .resource               = &ltq_nor_resource, 
    157159+       .num_resources  = 1, 
    158160+}; 
     
    160162+void __init falcon_register_nor(struct physmap_flash_data *data) 
    161163+{ 
    162 +       lq_nor.dev.platform_data = data; 
    163 +       platform_device_register(&lq_nor); 
     164+       ltq_nor.dev.platform_data = data; 
     165+       platform_device_register(&ltq_nor); 
    164166+} 
    165167+ 
    166168+/* spi flash */ 
    167 +static struct resource lq_spi_resources[] = { 
     169+static struct resource ltq_spi_resources[] = { 
    168170+       MEM_RES("ebu", GPON_EBU_BASE, GPON_EBU_END), 
    169171+       MEM_RES("sys1", GPON_SYS1_BASE, GPON_SYS1_END) 
    170172+}; 
    171173+ 
    172 +static struct platform_device lq_spi = { 
     174+static struct platform_device ltq_spi = { 
    173175+       .name                   = "falcon_spi", 
    174 +       .resource               = lq_spi_resources, 
    175 +       .num_resources          = ARRAY_SIZE(lq_spi_resources) 
     176+       .resource               = ltq_spi_resources, 
     177+       .num_resources          = ARRAY_SIZE(ltq_spi_resources) 
    176178+}; 
    177179+ 
     
    179181+{ 
    180182+       spi_register_board_info(data, 1); 
    181 +       platform_device_register(&lq_spi); 
     183+       platform_device_register(&ltq_spi); 
    182184+} 
    183185+ 
     
    188190+void __init falcon_register_wdt(void) 
    189191+{ 
    190 +       platform_device_register_simple("lq_wdt", 0, &falcon_wdt_resource, 1); 
     192+       platform_device_register_simple("ltq_wdt", 0, &falcon_wdt_resource, 1); 
    191193+} 
    192194+ 
     
    249251+void __init falcon_register_crypto(void) 
    250252+{ 
    251 +       platform_device_register_simple("lq_falcon_deu", 0, NULL, 0); 
     253+       platform_device_register_simple("ltq_falcon_deu", 0, NULL, 0); 
    252254+} 
    253255--- /dev/null 
     
    277279--- /dev/null 
    278280+++ b/arch/mips/lantiq/falcon/prom.c 
    279 @@ -0,0 +1,44 @@ 
     281@@ -0,0 +1,52 @@ 
    280282+/* 
    281283+ * This program is free software; you can redistribute it and/or modify 
     
    292294+#include <asm/time.h> 
    293295+ 
     296+#include <lantiq_soc.h> 
     297+ 
    294298+#include <falcon.h> 
    295299+ 
     
    305309+ 
    306310+void __init 
    307 +lq_soc_detect(struct lq_soc_info *i) 
    308 +{ 
    309 +       i->partnum = (lq_r32(&pSTATUS->chipid) & STATUS_CHIPID_PARTNR_MASK) >> STATUS_CHIPID_PARTNR_OFFSET; 
    310 +       i->rev = (lq_r32(&pSTATUS->chipid) & STATUS_CHIPID_VERSION_MASK) >> STATUS_CHIPID_VERSION_OFFSET; 
     311+ltq_soc_setup(void) 
     312+{ 
     313+       /* not used */ 
     314+} 
     315+ 
     316+void __init 
     317+ltq_soc_detect(struct ltq_soc_info *i) 
     318+{ 
     319+       i->partnum = (ltq_r32(&pSTATUS->chipid) & STATUS_CHIPID_PARTNR_MASK) >> STATUS_CHIPID_PARTNR_OFFSET; 
     320+       i->rev = (ltq_r32(&pSTATUS->chipid) & STATUS_CHIPID_VERSION_MASK) >> STATUS_CHIPID_VERSION_OFFSET; 
    311321+       switch (i->partnum) 
    312322+       { 
     
    11741184--- /dev/null 
    11751185+++ b/arch/mips/include/asm/mach-lantiq/falcon/falcon.h 
    1176 @@ -0,0 +1,30 @@ 
     1186@@ -0,0 +1,16 @@ 
    11771187+/* 
    11781188+ *   This program is free software; you can redistribute it and/or modify 
     
    11851195+ */ 
    11861196+ 
    1187 +#ifdef CONFIG_SOC_LANTIQ_FALCON 
    1188 + 
    1189 +#ifndef _LQ_FALCON_H__ 
    1190 +#define _LQ_FALCON_H__ 
    1191 + 
    1192 +#include <lantiq.h> 
     1197+#ifdef CONFIG_SOC_FALCON 
     1198+ 
     1199+#include <lantiq_soc.h> 
    11931200+#include <falcon/gpon_reg_base.h> 
    1194 + 
    1195 +/*------------ GENERAL */ 
    1196 +#define BOARD_SYSTEM_TYPE              "LANTIQ" 
    1197 + 
    1198 +/*------------ Chip IDs */ 
    1199 +#define SOC_ID_FALCON          0x01B8 
    1200 + 
    1201 +/*------------ SoC Types */ 
    1202 +#define SOC_TYPE_FALCON                0x01 
    1203 + 
    1204 +#endif 
    12051201+ 
    12061202+#endif 
    12071203--- /dev/null 
    12081204+++ b/arch/mips/lantiq/falcon/reset.c 
    1209 @@ -0,0 +1,72 @@ 
     1205@@ -0,0 +1,80 @@ 
    12101206+/* 
    12111207+ * This program is free software; you can redistribute it and/or modify 
     
    12211217+#include <linux/pm.h> 
    12221218+#include <asm/reboot.h> 
     1219+#include <linux/module.h> 
    12231220+ 
    12241221+#include <falcon.h> 
     
    12331230+#define WDT_REG_BASE           (KSEG1 | 0x1F8803F0) 
    12341231+ 
     1232+/* This function is used by the watchdog driver */ 
     1233+int ltq_reset_cause(void) 
     1234+{ 
     1235+       return 0; 
     1236+} 
     1237+EXPORT_SYMBOL_GPL(ltq_reset_cause); 
     1238+ 
    12351239+static void 
    1236 +lq_machine_restart(char *command) 
     1240+ltq_machine_restart(char *command) 
    12371241+{ 
    12381242+       printk(KERN_NOTICE "System restart\n"); 
    12391243+       local_irq_disable(); 
    1240 +       lq_w32(0, (void*)0xBF200000); /* reset Bootreg RVEC */ 
     1244+       ltq_w32(0, (void*)0xBF200000); /* reset Bootreg RVEC */ 
    12411245+#if 0 
    1242 +       lq_w32(RBT_CPU_TRIG, &pSYS1->rbt); 
     1246+       ltq_w32(RBT_CPU_TRIG, &pSYS1->rbt); 
    12431247+#else 
    12441248+       /* use workaround via watchdog timer */ 
    1245 +       lq_w32(WDT_PW1, (void*)WDT_REG_BASE); 
    1246 +       lq_w32(WDT_PW2 | 
     1249+       ltq_w32(WDT_PW1, (void*)WDT_REG_BASE); 
     1250+       ltq_w32(WDT_PW2 | 
    12471251+               (0x3 << 26) | /* PWL */ 
    12481252+               (0x2 << 24) | /* CLKDIV */ 
     
    12551259+ 
    12561260+static void 
    1257 +lq_machine_halt(void) 
     1261+ltq_machine_halt(void) 
    12581262+{ 
    12591263+       printk(KERN_NOTICE "System halted.\n"); 
     
    12631267+ 
    12641268+static void 
    1265 +lq_machine_power_off(void) 
     1269+ltq_machine_power_off(void) 
    12661270+{ 
    12671271+       printk(KERN_NOTICE "Please turn off the power now.\n"); 
     
    12731277+mips_reboot_setup(void) 
    12741278+{ 
    1275 +       _machine_restart = lq_machine_restart; 
    1276 +       _machine_halt = lq_machine_halt; 
    1277 +       pm_power_off = lq_machine_power_off; 
     1279+       _machine_restart = ltq_machine_restart; 
     1280+       _machine_halt = ltq_machine_halt; 
     1281+       pm_power_off = ltq_machine_power_off; 
    12781282+       return 0; 
    12791283+} 
     
    12821286--- /dev/null 
    12831287+++ b/arch/mips/lantiq/falcon/mach-easy98000.c 
    1284 @@ -0,0 +1,246 @@ 
     1288@@ -0,0 +1,247 @@ 
    12851289+#include <linux/init.h> 
    12861290+#include <linux/platform_device.h> 
     
    13001304+#include <linux/spi/spi_gpio.h> 
    13011305+#include <linux/spi/eeprom.h> 
    1302 +#include <machine.h> 
     1306+ 
     1307+#include "../machtypes.h" 
    13031308+ 
    13041309+#include "devices.h" 
     
    13121317+#define EASY98000_GPIO_LED_5 14 
    13131318+ 
    1314 +extern unsigned char lq_ethaddr[6]; 
     1319+extern unsigned char ltq_ethaddr[6]; 
    13151320+ 
    13161321+#ifdef CONFIG_MTD_PARTITIONS 
     
    14211426+static void __init register_davicom(void) 
    14221427+{ 
    1423 +       if (!is_valid_ether_addr(lq_ethaddr)) 
     1428+       if (!is_valid_ether_addr(ltq_ethaddr)) 
    14241429+               random_ether_addr(dm9000_plat_data.dev_addr); 
    14251430+       else { 
    1426 +               memcpy(dm9000_plat_data.dev_addr, lq_ethaddr, 6); 
     1431+               memcpy(dm9000_plat_data.dev_addr, ltq_ethaddr, 6); 
    14271432+               /* change to "Locally Administered Address" */ 
    14281433+               dm9000_plat_data.dev_addr[0] |= 0x2; 
     
    15011506+       platform_device_register(&easy98000_i2c_gpio_device); 
    15021507+       register_davicom(); 
    1503 +       lq_add_device_leds_gpio(-1, ARRAY_SIZE(easy98000_leds_gpio), 
     1508+       ltq_add_device_leds_gpio(-1, ARRAY_SIZE(easy98000_leds_gpio), 
    15041509+                                       easy98000_leds_gpio); 
    15051510+       register_easy98000_cpld_led(); 
     
    16901695--- a/arch/mips/lantiq/Kconfig 
    16911696+++ b/arch/mips/lantiq/Kconfig 
    1692 @@ -21,16 +21,16 @@ choice 
    1693         prompt "SoC Type" 
    1694         default SOC_LANTIQ_XWAY 
    1695   
    1696 -#config SOC_LANTIQ_FALCON 
    1697 -#      bool "FALCON" 
    1698 -#      select SOC_LANTIQ 
    1699 +config SOC_LANTIQ_FALCON 
     1697@@ -16,8 +16,12 @@ 
     1698        bool "XWAY" 
     1699        select SOC_TYPE_XWAY 
     1700        select HW_HAS_PCI 
     1701+ 
     1702+config SOC_FALCON 
    17001703+       bool "FALCON" 
    1701 +       select SOC_LANTIQ 
    1702   
    1703  config SOC_LANTIQ_XWAY 
    1704         bool "XWAY" 
    1705         select SOC_LANTIQ 
    17061704 endchoice 
    17071705  
    1708 -#source "arch/mips/lantiq/falcon/Kconfig" 
     1706 source "arch/mips/lantiq/xway/Kconfig" 
    17091707+source "arch/mips/lantiq/falcon/Kconfig" 
    1710  source "arch/mips/lantiq/xway/Kconfig" 
    17111708  
    1712  if EARLY_PRINTK 
    1713 --- a/arch/mips/include/asm/mach-lantiq/machine.h 
    1714 +++ b/arch/mips/include/asm/mach-lantiq/machine.h 
    1715 @@ -5,6 +5,7 @@ enum lantiq_mach_type { 
    1716   
    1717         /* FALCON */ 
    1718         LANTIQ_MACH_EASY98000,          /* Falcon Eval Board, NOR Flash */ 
    1719 +       LANTIQ_MACH_EASY98000SF,        /* Falcon Eval Board, Serial Flash */ 
    1720         LANTIQ_MACH_EASY98020,          /* Falcon Reference Board */ 
    1721   
    1722         /* XWAY */ 
     1709 endif 
    17231710--- a/arch/mips/lantiq/Makefile 
    17241711+++ b/arch/mips/lantiq/Makefile 
    1725 @@ -1,3 +1,4 @@ 
    1726  obj-y := dev-leds-gpio.o irq.o setup.o clk.o prom.o 
     1712@@ -9,3 +9,4 @@ 
    17271713 obj-$(CONFIG_EARLY_PRINTK) += early_printk.o 
    1728 +obj-$(CONFIG_SOC_LANTIQ_FALCON) += falcon/ 
    1729  obj-$(CONFIG_SOC_LANTIQ_XWAY) += xway/ 
     1714  
     1715 obj-$(CONFIG_SOC_TYPE_XWAY) += xway/ 
     1716+obj-$(CONFIG_SOC_FALCON) += falcon/ 
    17301717--- a/arch/mips/lantiq/Platform 
    17311718+++ b/arch/mips/lantiq/Platform 
    1732 @@ -5,4 +5,5 @@ 
    1733  platform-$(CONFIG_LANTIQ)      += lantiq/ 
    1734  cflags-$(CONFIG_LANTIQ)       += -I$(srctree)/arch/mips/include/asm/mach-lantiq 
    1735  load-$(CONFIG_LANTIQ)          = 0xffffffff80002000 
    1736 +cflags-$(CONFIG_SOC_LANTIQ_FALCON) += -I$(srctree)/arch/mips/include/asm/mach-lantiq/falcon 
    1737  cflags-$(CONFIG_SOC_LANTIQ_XWAY) += -I$(srctree)/arch/mips/include/asm/mach-lantiq/xway 
     1719@@ -6,3 +6,4 @@ 
     1720 cflags-$(CONFIG_LANTIQ)                += -I$(srctree)/arch/mips/include/asm/mach-lantiq 
     1721 load-$(CONFIG_LANTIQ)          = 0xffffffff80002000 
     1722 cflags-$(CONFIG_SOC_TYPE_XWAY) += -I$(srctree)/arch/mips/include/asm/mach-lantiq/xway 
     1723+cflags-$(CONFIG_SOC_FALCON)    += -I$(srctree)/arch/mips/include/asm/mach-lantiq/falcon 
     1724--- a/arch/mips/lantiq/machtypes.h 
     1725+++ b/arch/mips/lantiq/machtypes.h 
     1726@@ -15,6 +15,11 @@ 
     1727        LTQ_MACH_GENERIC = 0, 
     1728        LTQ_MACH_EASY50712,     /* Danube evaluation board */ 
     1729        LTQ_MACH_EASY50601,     /* Amazon SE evaluation board */ 
     1730+ 
     1731+       /* FALCON */ 
     1732+       LANTIQ_MACH_EASY98000,          /* Falcon Eval Board, NOR Flash */ 
     1733+       LANTIQ_MACH_EASY98000SF,        /* Falcon Eval Board, Serial Flash */ 
     1734+       LANTIQ_MACH_EASY98020,          /* Falcon Reference Board */ 
     1735 }; 
     1736  
     1737 #endif 
  • trunk/target/linux/lantiq/patches-2.6.32/120-falcon-i2c.patch

    r27025 r27026  
    11--- a/drivers/i2c/busses/Makefile 
    22+++ b/drivers/i2c/busses/Makefile 
    3 @@ -76,5 +76,6 @@ 
     3@@ -74,6 +74,7 @@ 
    44 obj-$(CONFIG_I2C_STUB)         += i2c-stub.o 
    55 obj-$(CONFIG_SCx200_ACB)       += scx200_acb.o 
     
    77+obj-$(CONFIG_I2C_FALCON)       += i2c-falcon.o 
    88  
    9  ccflags-$(CONFIG_I2C_DEBUG_BUS) := -DDEBUG 
     9 ifeq ($(CONFIG_I2C_DEBUG_BUS),y) 
     10 EXTRA_CFLAGS += -DDEBUG 
    1011--- a/drivers/i2c/busses/Kconfig 
    1112+++ b/drivers/i2c/busses/Kconfig 
    12 @@ -281,6 +281,10 @@ 
     13@@ -278,6 +278,10 @@ 
    1314  
    1415 comment "I2C system bus drivers (mostly embedded / system-on-chip)" 
  • trunk/target/linux/lantiq/patches-2.6.32/130-falcon-spi-flash.patch

    r27025 r27026  
    11--- a/drivers/spi/Makefile 
    22+++ b/drivers/spi/Makefile 
    3 @@ -22,6 +22,7 @@ obj-$(CONFIG_SPI_DESIGNWARE)          += dw_spi. 
    4  obj-$(CONFIG_SPI_DW_PCI)               += dw_spi_pci.o 
    5  obj-$(CONFIG_SPI_DW_MMIO)              += dw_spi_mmio.o 
    6  obj-$(CONFIG_SPI_EP93XX)               += ep93xx_spi.o 
     3@@ -16,6 +16,7 @@ 
     4 obj-$(CONFIG_SPI_BITBANG)              += spi_bitbang.o 
     5 obj-$(CONFIG_SPI_AU1550)               += au1550_spi.o 
     6 obj-$(CONFIG_SPI_BUTTERFLY)            += spi_butterfly.o 
    77+obj-$(CONFIG_SPI_FALCON)               += spi_falcon.o 
    88 obj-$(CONFIG_SPI_GPIO)                 += spi_gpio.o 
     
    485485--- a/drivers/spi/Kconfig 
    486486+++ b/drivers/spi/Kconfig 
    487 @@ -169,6 +169,10 @@ config SPI_LM70_LLP 
     487@@ -142,6 +142,10 @@ 
    488488          which interfaces to an LM70 temperature sensor using 
    489489          a parallel port. 
     
    491491+config SPI_FALCON 
    492492+       tristate "Falcon SPI controller support" 
    493 +       depends on SOC_LANTIQ_FALCON 
    494 + 
    495  config SPI_MPC52xx 
    496         tristate "Freescale MPC52xx SPI (non-PSC) controller support" 
    497         depends on PPC_MPC52xx && SPI 
     493+       depends on SOC_FALCON 
     494+ 
     495 config SPI_MPC52xx_PSC 
     496        tristate "Freescale MPC52xx PSC SPI controller" 
     497        depends on PPC_MPC52xx && EXPERIMENTAL 
  • trunk/target/linux/lantiq/patches-2.6.32/140-falcon-easy98000-cpld-led.patch

    r27025 r27026  
    4545+#define cpld_base8                     ((u16 *)(KSEG1 | 0x17c00012)) 
    4646+ 
    47 +#define lq_r16(reg)                    __raw_readw(reg) 
    48 +#define lq_w16(val, reg)               __raw_writew(val, reg) 
     47+#define ltq_r16(reg)                   __raw_readw(reg) 
     48+#define ltq_w16(val, reg)              __raw_writew(val, reg) 
    4949+ 
    5050+struct cpld_led_dev { 
     
    6161+void led_set(u8 mask, u16 *base) 
    6262+{ 
    63 +       lq_w16(lq_r16(base) | mask, base); 
     63+       ltq_w16(ltq_r16(base) | mask, base); 
    6464+} 
    6565+ 
    6666+void led_clear(u8 mask, u16 *base) 
    6767+{ 
    68 +       lq_w16(lq_r16(base) & (~mask), base); 
     68+       ltq_w16(ltq_r16(base) & (~mask), base); 
    6969+} 
    7070+ 
  • trunk/target/linux/lantiq/patches-2.6.32/150-falcon-easy98020.patch

    r27025 r27026  
    1313+#include <linux/spi/spi.h> 
    1414+#include <linux/spi/flash.h> 
    15 +#include <machine.h> 
     15+#include "../machtypes.h" 
    1616+ 
    1717+#include "devices.h" 
     
    2323+#define EASY98020_GPIO_LED_3 12 
    2424+ 
    25 +extern unsigned char lq_ethaddr[6]; 
     25+extern unsigned char ltq_ethaddr[6]; 
    2626+ 
    2727+#ifdef CONFIG_MTD_PARTITIONS 
     
    9090+       falcon_register_i2c(); 
    9191+       falcon_register_spi_flash(&easy98020_spi_flash_data); 
    92 +       lq_add_device_leds_gpio(-1, ARRAY_SIZE(easy98020_leds_gpio), 
     92+       ltq_add_device_leds_gpio(-1, ARRAY_SIZE(easy98020_leds_gpio), 
    9393+                                       easy98020_leds_gpio); 
    9494+       falcon_register_crypto(); 
     
    101101--- a/arch/mips/lantiq/falcon/Kconfig 
    102102+++ b/arch/mips/lantiq/falcon/Kconfig 
    103 @@ -6,6 +6,10 @@ config LANTIQ_MACH_EASY98000 
     103@@ -6,6 +6,10 @@ 
    104104        bool "Easy98000" 
    105105        default y 
     
    114114--- a/arch/mips/lantiq/falcon/Makefile 
    115115+++ b/arch/mips/lantiq/falcon/Makefile 
    116 @@ -2,3 +2,4 @@ obj-y := clk-falcon.o devices.o gpio.o p 
     116@@ -2,3 +2,4 @@ 
    117117 obj-y += softdog_vpe.o 
    118118 obj-$(CONFIG_LANTIQ_MACH_EASY98000) += mach-easy98000.o 
  • trunk/target/linux/lantiq/patches-2.6.32/160-falcon-95C3AM1.patch

    r27025 r27026  
    55+#include <linux/platform_device.h> 
    66+#include <linux/i2c-gpio.h> 
    7 +#include <machine.h> 
     7+#include "../machtypes.h" 
    88+ 
    99+#include "devices.h" 
     
    1515+#define BOARD_95C3AM1_GPIO_LED_3 13 
    1616+ 
    17 +extern unsigned char lq_ethaddr[6]; 
     17+extern unsigned char ltq_ethaddr[6]; 
    1818+ 
    1919+#ifdef CONFIG_MTD_PARTITIONS 
     
    9696+       falcon_register_spi_flash(&board_95C3AM1_flash_data); 
    9797+       platform_device_register(&board_95C3AM1_i2c_gpio_device); 
    98 +       lq_add_device_leds_gpio(-1, ARRAY_SIZE(board_95C3AM1_leds_gpio), 
     98+       ltq_add_device_leds_gpio(-1, ARRAY_SIZE(board_95C3AM1_leds_gpio), 
    9999+                                               board_95C3AM1_leds_gpio); 
    100100+       falcon_register_crypto(); 
     
    105105+                       "95C3AM1 Board", 
    106106+                       board_95C3AM1_init); 
    107 --- a/arch/mips/include/asm/mach-lantiq/machine.h 
    108 +++ b/arch/mips/include/asm/mach-lantiq/machine.h 
    109 @@ -7,6 +7,7 @@ enum lantiq_mach_type { 
    110         LANTIQ_MACH_EASY98000,          /* Falcon Eval Board, NOR Flash */ 
    111         LANTIQ_MACH_EASY98000SF,        /* Falcon Eval Board, Serial Flash */ 
    112         LANTIQ_MACH_EASY98020,          /* Falcon Reference Board */ 
    113 +       LANTIQ_MACH_95C3AM1,            /* Board 95C3AM1 */ 
    114   
    115         /* XWAY */ 
    116         LANTIQ_MACH_EASY4010,           /* Twinpass evalkit */ 
    117107--- a/arch/mips/lantiq/falcon/Kconfig 
    118108+++ b/arch/mips/lantiq/falcon/Kconfig 
    119 @@ -10,6 +10,10 @@ config LANTIQ_MACH_EASY98020 
     109@@ -10,6 +10,10 @@ 
    120110        bool "Easy98020" 
    121111        default y 
     
    130120--- a/arch/mips/lantiq/falcon/Makefile 
    131121+++ b/arch/mips/lantiq/falcon/Makefile 
    132 @@ -3,3 +3,4 @@ obj-y += softdog_vpe.o 
     122@@ -3,3 +3,4 @@ 
    133123 obj-$(CONFIG_LANTIQ_MACH_EASY98000) += mach-easy98000.o 
    134124 obj-$(CONFIG_LANTIQ_MACH_EASY98000) += dev-leds-easy98000-cpld.o 
    135125 obj-$(CONFIG_LANTIQ_MACH_EASY98020) += mach-easy98020.o 
    136126+obj-$(CONFIG_LANTIQ_MACH_95C3AM1)   += mach-95C3AM1.o 
     127--- a/arch/mips/lantiq/machtypes.h 
     128+++ b/arch/mips/lantiq/machtypes.h 
     129@@ -20,6 +20,7 @@ 
     130        LANTIQ_MACH_EASY98000,          /* Falcon Eval Board, NOR Flash */ 
     131        LANTIQ_MACH_EASY98000SF,        /* Falcon Eval Board, Serial Flash */ 
     132        LANTIQ_MACH_EASY98020,          /* Falcon Reference Board */ 
     133+       LANTIQ_MACH_95C3AM1,            /* Board 95C3AM1 */ 
     134 }; 
     135  
     136 #endif 
  • trunk/target/linux/lantiq/patches-2.6.32/200-mach-arv45xx.patch

    r27025 r27026  
    1 --- a/arch/mips/include/asm/mach-lantiq/machine.h 
    2 +++ b/arch/mips/include/asm/mach-lantiq/machine.h 
    3 @@ -11,4 +11,15 @@ 
    4         LANTIQ_MACH_EASY4010,           /* Twinpass evalkit */ 
    5         LANTIQ_MACH_EASY50712,          /* Danube evalkit */ 
    6         LANTIQ_MACH_EASY50812,          /* AR9 eval board */ 
    7 + 
    8 +       /* Arcadyan */ 
    9 +       LANTIQ_MACH_ARV3527P,           /* Arcor easybox a401 */ 
    10 +       LANTIQ_MACH_ARV4510PW,          /* Wippies Homebox */ 
    11 +       LANTIQ_MACH_ARV4518PW,          /* Airties WAV-221, SMC-7908A-ISP */ 
    12 +       LANTIQ_MACH_ARV4520PW,          /* Airties WAV-281, Arcor EasyboxA800 */ 
    13 +       LANTIQ_MACH_ARV452CPW,          /* Arcor EasyboxA801 */ 
    14 +       LANTIQ_MACH_ARV4525PW,          /* Speedport W502V */ 
    15 +       LANTIQ_MACH_ARV752DPW,          /* Arcor easybox a802 */ 
    16 +       LANTIQ_MACH_ARV752DPW22,        /* Arcor easybox a803 */ 
    17 +       LANTIQ_MACH_ARV7518PW,          /* ASTORIA */ 
    18  }; 
    191--- a/arch/mips/lantiq/xway/Kconfig 
    202+++ b/arch/mips/lantiq/xway/Kconfig 
    21 @@ -14,6 +14,10 @@ 
    22         bool "Easy4010" 
     3@@ -6,6 +6,10 @@ 
     4        bool "Easy50712 - Danube" 
    235        default y 
    246  
     
    3214--- a/arch/mips/lantiq/xway/Makefile 
    3315+++ b/arch/mips/lantiq/xway/Makefile 
    34 @@ -3,3 +3,4 @@ 
    35  obj-$(CONFIG_LANTIQ_MACH_EASY50812) += mach-easy50812.o 
     16@@ -5,3 +5,4 @@ 
     17  
    3618 obj-$(CONFIG_LANTIQ_MACH_EASY50712) += mach-easy50712.o 
    37  obj-$(CONFIG_LANTIQ_MACH_EASY4010) += mach-easy4010.o 
     19 obj-$(CONFIG_LANTIQ_MACH_EASY50601) += mach-easy50601.o 
    3820+obj-$(CONFIG_LANTIQ_MACH_ARV45XX) += mach-arv45xx.o 
    3921--- /dev/null 
    4022+++ b/arch/mips/lantiq/xway/mach-arv45xx.c 
    41 @@ -0,0 +1,537 @@ 
     23@@ -0,0 +1,504 @@ 
    4224+/* 
    4325+ *  This program is free software; you can redistribute it and/or modify it 
     
    6143+#include <linux/pci.h> 
    6244+ 
    63 +#include <machine.h> 
    64 + 
    65 +#include <xway.h> 
     45+#include <lantiq_soc.h> 
    6646+#include <lantiq_platform.h> 
    6747+ 
     48+#include "../machtypes.h" 
    6849+#include "devices.h" 
     50+#include "dev-leds-gpio.h" 
    6951+#include "dev-dwc_otg.h" 
    7052+ 
     
    165147+}; 
    166148+ 
    167 +static struct lq_pci_data lq_pci_data = { 
    168 +       .clock      = PCI_CLOCK_EXT, 
     149+static struct ltq_pci_data ltq_pci_data = { 
     150+       .clock  = PCI_CLOCK_EXT, 
    169151+       .gpio   = PCI_GNT1 | PCI_REQ1, 
    170152+       .irq    = { 
     
    173155+}; 
    174156+ 
    175 +static struct lq_eth_data lq_eth_data = { 
    176 +       .mii_mode       = REV_MII_MODE, 
    177 +       .mac            = "\xff\xff\xff\xff\xff\xff", 
     157+static struct ltq_eth_data ltq_eth_data = { 
     158+       .mii_mode       = PHY_INTERFACE_MODE_RMII, 
    178159+}; 
    179160+ 
     
    192173+       { .name = "soc:red:fail", .gpio = 8, .active_low = 1, .default_trigger = "default-on" }, 
    193174+       { .name = "soc:green:usb", .gpio = 19, .active_low = 1, .default_trigger = "default-on" }, 
    194 +       { .name = "soc:green:voip", .gpio = 32, .active_low = 1, .default_trigger = "default-on" }, 
    195 +       { .name = "soc:green:fxs1", .gpio = 33, .active_low = 1, .default_trigger = "default-on" }, 
    196 +       { .name = "soc:green:fxs2", .gpio = 34, .active_low = 1, .default_trigger = "default-on" }, 
    197 +       { .name = "soc:green:fxo", .gpio = 35, .active_low = 1, .default_trigger = "default-on" }, 
     175+       { .name = "soc:green:voip", .gpio = 72, .active_low = 1, .default_trigger = "default-on" }, 
     176+       { .name = "soc:green:fxs1", .gpio = 73, .active_low = 1, .default_trigger = "default-on" }, 
     177+       { .name = "soc:green:fxs2", .gpio = 74, .active_low = 1, .default_trigger = "default-on" }, 
     178+       { .name = "soc:green:fxo", .gpio = 75, .active_low = 1, .default_trigger = "default-on" }, 
    198179+}; 
    199180+ 
     
    213194+       { .name = "soc:yellow:wps", .gpio = 7, .active_low = 1, }, 
    214195+       { .name = "soc:red:wps", .gpio = 9, .active_low = 1, }, 
    215 +       { .name = "soc:blue:voip", .gpio = 32, .active_low = 1, }, 
    216 +       { .name = "soc:blue:fxs1", .gpio = 33, .active_low = 1, }, 
    217 +       { .name = "soc:blue:fxs2", .gpio = 34, .active_low = 1, }, 
    218 +       { .name = "soc:blue:fxo", .gpio = 35, .active_low = 1, }, 
    219 +       { .name = "soc:blue:voice", .gpio = 36, .active_low = 1, }, 
    220 +       { .name = "soc:blue:usb", .gpio = 37, .active_low = 1, }, 
    221 +       { .name = "soc:blue:wlan", .gpio = 38, .active_low = 1, }, 
     196+       { .name = "soc:blue:voip", .gpio = 72, .active_low = 1, }, 
     197+       { .name = "soc:blue:fxs1", .gpio = 73, .active_low = 1, }, 
     198+       { .name = "soc:blue:fxs2", .gpio = 74, .active_low = 1, }, 
     199+       { .name = "soc:blue:fxo", .gpio = 75, .active_low = 1, }, 
     200+       { .name = "soc:blue:voice", .gpio = 76, .active_low = 1, }, 
     201+       { .name = "soc:blue:usb", .gpio = 77, .active_low = 1, }, 
     202+       { .name = "soc:blue:wlan", .gpio = 78, .active_low = 1, }, 
    222203+}; 
    223204+ 
     
    230211+       { .name = "soc:yellow:wps", .gpio = 7, .active_low = 1, .default_trigger = "default-on" }, 
    231212+       { .name = "soc:red:wps", .gpio = 9, .active_low = 1, .default_trigger = "default-on" }, 
    232 +       { .name = "soc:blue:fxs1", .gpio = 32, .active_low = 1, .default_trigger = "default-on" }, 
    233 +       { .name = "soc:blue:fxs2", .gpio = 33, .active_low = 1, .default_trigger = "default-on" }, 
    234 +       { .name = "soc:blue:wps", .gpio = 34, .active_low = 1, .default_trigger = "default-on" }, 
    235 +       { .name = "soc:blue:fxo", .gpio = 35, .active_low = 1, .default_trigger = "default-on" }, 
    236 +       { .name = "soc:blue:voice", .gpio = 36, .active_low = 1, .default_trigger = "default-on" }, 
    237 +       { .name = "soc:blue:usb", .gpio = 37, .active_low = 1, .default_trigger = "default-on" }, 
    238 +       { .name = "soc:blue:wlan", .gpio = 38, .active_low = 1, .default_trigger = "default-on" }, 
    239 +       { .name = "soc:blue:internet", .gpio = 40, .active_low = 1, .default_trigger = "default-on" }, 
    240 +       { .name = "soc:red:internet", .gpio = 41, .active_low = 1, .default_trigger = "default-on" }, 
     213+       { .name = "soc:blue:fxs1", .gpio = 72, .active_low = 1, .default_trigger = "default-on" }, 
     214+       { .name = "soc:blue:fxs2", .gpio = 73, .active_low = 1, .default_trigger = "default-on" }, 
     215+       { .name = "soc:blue:wps", .gpio = 74, .active_low = 1, .default_trigger = "default-on" }, 
     216+       { .name = "soc:blue:fxo", .gpio = 75, .active_low = 1, .default_trigger = "default-on" }, 
     217+       { .name = "soc:blue:voice", .gpio = 76, .active_low = 1, .default_trigger = "default-on" }, 
     218+       { .name = "soc:blue:usb", .gpio = 77, .active_low = 1, .default_trigger = "default-on" }, 
     219+       { .name = "soc:blue:wlan", .gpio = 78, .active_low = 1, .default_trigger = "default-on" }, 
     220+       { .name = "soc:blue:internet", .gpio = 80, .active_low = 1, .default_trigger = "default-on" }, 
     221+       { .name = "soc:red:internet", .gpio = 81, .active_low = 1, .default_trigger = "default-on" }, 
    241222+}; 
    242223+ 
     
    256237+       { .name = "soc:red:power", .gpio = 6, .active_low = 1, .default_trigger = "default-on" }, 
    257238+       { .name = "soc:red:wps", .gpio = 8, .active_low = 1, .default_trigger = "default-on" }, 
    258 +       { .name = "soc:red:fxo", .gpio = 35, .active_low = 1, .default_trigger = "default-on" }, 
    259 +       { .name = "soc:red:voice", .gpio = 36, .active_low = 1, .default_trigger = "default-on" }, 
    260 +       { .name = "soc:green:usb", .gpio = 37, .active_low = 1, .default_trigger = "default-on" }, 
    261 +       { .name = "soc:green:wlan", .gpio = 38, .active_low = 1, .default_trigger = "default-on" }, 
    262 +       { .name = "soc:green:wlan1", .gpio = 39, .active_low = 1, .default_trigger = "default-on" }, 
    263 +       { .name = "soc:blue:wlan", .gpio = 40, .active_low = 1, .default_trigger = "default-on" }, 
    264 +       { .name = "soc:blue:wlan1", .gpio = 41, .active_low = 1, .default_trigger = "default-on" }, 
    265 +       { .name = "soc:green:eth1", .gpio = 43, .active_low = 1, .default_trigger = "default-on" }, 
    266 +       { .name = "soc:green:eth2", .gpio = 44, .active_low = 1, .default_trigger = "default-on" }, 
    267 +       { .name = "soc:green:eth3", .gpio = 45, .active_low = 1, .default_trigger = "default-on" }, 
    268 +       { .name = "soc:green:eth4", .gpio = 46, .active_low = 1, .default_trigger = "default-on", }, 
     239+       { .name = "soc:red:fxo", .gpio = 75, .active_low = 1, .default_trigger = "default-on" }, 
     240+       { .name = "soc:red:voice", .gpio = 76, .active_low = 1, .default_trigger = "default-on" }, 
     241+       { .name = "soc:green:usb", .gpio = 77, .active_low = 1, .default_trigger = "default-on" }, 
     242+       { .name = "soc:green:wlan", .gpio = 78, .active_low = 1, .default_trigger = "default-on" }, 
     243+       { .name = "soc:green:wlan1", .gpio = 79, .active_low = 1, .default_trigger = "default-on" }, 
     244+       { .name = "soc:blue:wlan", .gpio = 80, .active_low = 1, .default_trigger = "default-on" }, 
     245+       { .name = "soc:blue:wlan1", .gpio = 81, .active_low = 1, .default_trigger = "default-on" }, 
     246+       { .name = "soc:green:eth1", .gpio = 83, .active_low = 1, .default_trigger = "default-on" }, 
     247+       { .name = "soc:green:eth2", .gpio = 84, .active_low = 1, .default_trigger = "default-on" }, 
     248+       { .name = "soc:green:eth3", .gpio = 85, .active_low = 1, .default_trigger = "default-on" }, 
     249+       { .name = "soc:green:eth4", .gpio = 86, .active_low = 1, .default_trigger = "default-on", }, 
    269250+}; 
    270251+ 
     
    296277+{ 
    297278+#define ARV45XX_BRN_MAC                        0x3f0016 
    298 +       memcpy_fromio(lq_eth_data.mac, 
    299 +               (void *)KSEG1ADDR(LQ_FLASH_START + ARV45XX_BRN_MAC), 6); 
    300 +       lq_register_ethernet(&lq_eth_data); 
     279+       memcpy_fromio(&ltq_eth_data.mac, 
     280+               (void *)KSEG1ADDR(LTQ_FLASH_START + ARV45XX_BRN_MAC), 6); 
     281+       ltq_register_etop(&ltq_eth_data); 
    301282+} 
    302283+ 
     
    305286+{ 
    306287+#define ARV75XX_BRN_MAC                        0x7f0016 
    307 +       memcpy_fromio(lq_eth_data.mac, 
    308 +               (void *)KSEG1ADDR(LQ_FLASH_START + ARV75XX_BRN_MAC), 6); 
    309 +       lq_register_ethernet(&lq_eth_data); 
     288+       memcpy_fromio(&ltq_eth_data.mac, 
     289+               (void *)KSEG1ADDR(LTQ_FLASH_START + ARV75XX_BRN_MAC), 6); 
     290+       ltq_register_etop(&ltq_eth_data); 
    310291+} 
    311292+ 
     
    314295+{ 
    315296+#define BEWAN_BRN_MAC                  0x3f0014 
    316 +       memcpy_fromio(lq_eth_data.mac, 
    317 +               (void *)KSEG1ADDR(LQ_FLASH_START + BEWAN_BRN_MAC), 6); 
    318 +       lq_register_ethernet(&lq_eth_data); 
     297+       memcpy_fromio(&ltq_eth_data.mac, 
     298+               (void *)KSEG1ADDR(LTQ_FLASH_START + BEWAN_BRN_MAC), 6); 
     299+       ltq_register_etop(&ltq_eth_data); 
    319300+} 
    320301+ 
     
    338319+ 
    339320+       memcpy_fromio(eeprom_mac, 
    340 +               (void *)KSEG1ADDR(LQ_FLASH_START + ARV45XX_BRN_MAC), 6); 
     321+               (void *)KSEG1ADDR(LTQ_FLASH_START + ARV45XX_BRN_MAC), 6); 
    341322+       eeprom_mac[5]++; 
    342323+       memcpy_fromio(arv45xx_ath5k_eeprom_data, 
    343 +               (void *)KSEG1ADDR(LQ_FLASH_START + ARV45XX_BRN_ATH), ATH5K_PLAT_EEP_MAX_WORDS); 
     324+               (void *)KSEG1ADDR(LTQ_FLASH_START + ARV45XX_BRN_ATH), ATH5K_PLAT_EEP_MAX_WORDS); 
    344325+       // swap eeprom bytes 
    345326+       for (i = 0; i < ATH5K_PLAT_EEP_MAX_WORDS>>1; i++){ 
     
    357338+       arv45xx_ath5k_platform_data.eeprom_data = arv45xx_ath5k_eeprom_data; 
    358339+       arv45xx_ath5k_platform_data.macaddr = eeprom_mac; 
    359 +       lqpci_plat_dev_init = arv45xx_pci_plat_dev_init; 
     340+       //lqpci_plat_dev_init = arv45xx_pci_plat_dev_init; 
    360341+} 
    361342+ 
     
    363344+arv3527p_init(void) 
    364345+{ 
    365 +       lq_register_gpio(); 
    366 +       lq_register_gpio_stp(); 
    367 +       //lq_register_gpio_leds(arv3527p_leds_gpio, ARRAY_SIZE(arv3527p_leds_gpio)); 
    368 +       lq_register_asc(0); 
    369 +       lq_register_asc(1); 
    370 +       lq_register_nor(&arv45xx_flash_data); 
    371 +       lq_register_wdt(); 
     346+       ltq_register_gpio_stp(); 
     347+       //ltq_add_device_leds_gpio(arv3527p_leds_gpio, ARRAY_SIZE(arv3527p_leds_gpio)); 
     348+       ltq_register_nor(&arv45xx_flash_data); 
    372349+       arv45xx_register_ethernet(); 
    373350+} 
     
    381358+arv4510pw_init(void) 
    382359+{ 
    383 +       lq_register_gpio(); 
    384 +       lq_register_gpio_stp(); 
    385 +       lq_register_gpio_leds(arv4510pw_leds_gpio, ARRAY_SIZE(arv4510pw_leds_gpio)); 
    386 +       lq_register_asc(0); 
    387 +       lq_register_asc(1); 
    388 +       lq_register_nor(&arv4510_flash_data); 
    389 +       lq_pci_data.irq[12] = (INT_NUM_IM2_IRL0 + 31); 
    390 +       lq_pci_data.irq[15] = (INT_NUM_IM0_IRL0 + 26); 
    391 +       lq_pci_data.gpio |= PCI_EXIN2 | PCI_REQ2; 
    392 +       lq_register_pci(&lq_pci_data); 
    393 +       lq_register_wdt(); 
     360+       ltq_register_gpio_stp(); 
     361+       ltq_add_device_leds_gpio(-1, ARRAY_SIZE(arv4510pw_leds_gpio), arv4510pw_leds_gpio); 
     362+       ltq_register_nor(&arv4510_flash_data); 
     363+       ltq_pci_data.irq[12] = (INT_NUM_IM2_IRL0 + 31); 
     364+       ltq_pci_data.irq[15] = (INT_NUM_IM0_IRL0 + 26); 
     365+       ltq_pci_data.gpio |= PCI_EXIN2 | PCI_REQ2; 
     366+       ltq_register_pci(&ltq_pci_data); 
    394367+       bewan_register_ethernet(); 
    395368+} 
     
    407380+#define ARV4518PW_SWITCH_RESET         13 
    408381+ 
    409 +       lq_register_gpio(); 
    410 +       lq_register_gpio_ebu(ARV4518PW_EBU); 
    411 +       lq_register_gpio_leds(arv4518pw_leds_gpio, ARRAY_SIZE(arv4518pw_leds_gpio)); 
    412 +       lq_register_gpio_buttons(arv4518pw_gpio_buttons, ARRAY_SIZE(arv4518pw_gpio_buttons)); 
    413 +       lq_register_asc(0); 
    414 +       lq_register_asc(1); 
    415 +       lq_register_nor(&arv45xx_flash_data); 
    416 +       lq_pci_data.gpio = PCI_GNT2 | PCI_REQ2; 
    417 +       lq_register_pci(&lq_pci_data); 
    418 +       lq_register_wdt(); 
    419 +       lq_register_madwifi_eep(); 
     382+       ltq_register_gpio_ebu(ARV4518PW_EBU); 
     383+       ltq_add_device_leds_gpio(-1, ARRAY_SIZE(arv4518pw_leds_gpio), arv4518pw_leds_gpio); 
     384+       ltq_register_gpio_buttons(arv4518pw_gpio_buttons, ARRAY_SIZE(arv4518pw_gpio_buttons)); 
     385+       ltq_register_nor(&arv45xx_flash_data); 
     386+       ltq_pci_data.gpio = PCI_GNT2 | PCI_REQ2; 
     387+       ltq_register_pci(&ltq_pci_data); 
     388+       ltq_register_madwifi_eep(); 
    420389+       xway_register_dwc(ARV4518PW_USB); 
    421390+       arv45xx_register_ethernet(); 
     
    437406+#define ARV4520PW_EBU                  0x400 
    438407+#define ARV4520PW_USB                  28 
    439 +#define ARV4520PW_SWITCH_RESET         42 
    440 + 
    441 +       lq_register_gpio(); 
    442 +       lq_register_gpio_ebu(ARV4520PW_EBU); 
    443 +       lq_register_gpio_leds(arv4520pw_leds_gpio, ARRAY_SIZE(arv4520pw_leds_gpio)); 
    444 +       lq_register_asc(0); 
    445 +       lq_register_asc(1); 
    446 +       lq_register_nor(&arv45xx_flash_data); 
    447 +       lq_register_pci(&lq_pci_data); 
    448 +       lq_register_wdt(); 
    449 +       lq_register_tapi(); 
     408+#define ARV4520PW_SWITCH_RESET         82 
     409+ 
     410+       ltq_register_gpio_ebu(ARV4520PW_EBU); 
     411+       ltq_add_device_leds_gpio(-1, ARRAY_SIZE(arv4520pw_leds_gpio), arv4520pw_leds_gpio); 
     412+       ltq_register_nor(&arv45xx_flash_data); 
     413+       ltq_register_pci(&ltq_pci_data); 
     414+       ltq_register_tapi(); 
    450415+       arv45xx_register_ethernet(); 
    451416+       xway_register_dwc(ARV4520PW_USB); 
     
    466431+#define ARV452CPW_USB                  28 
    467432+#define ARV452CPW_RELAY1               31 
    468 +#define ARV452CPW_RELAY2               39 
    469 +#define ARV452CPW_SWITCH_RESET         42 
    470 + 
    471 +       lq_register_gpio(); 
    472 +       lq_register_gpio_ebu(ARV452CPW_EBU); 
    473 +       lq_register_gpio_leds(arv452cpw_leds_gpio, ARRAY_SIZE(arv452cpw_leds_gpio)); 
    474 +       lq_register_asc(0); 
    475 +       lq_register_asc(1); 
    476 +       lq_register_nor(&arv45xx_flash_data); 
    477 +       lq_register_pci(&lq_pci_data); 
    478 +       lq_register_wdt(); 
    479 +       lq_register_madwifi_eep(); 
     433+#define ARV452CPW_RELAY2               79 
     434+#define ARV452CPW_SWITCH_RESET         82 
     435+ 
     436+       ltq_register_gpio_ebu(ARV452CPW_EBU); 
     437+       ltq_add_device_leds_gpio(-1, ARRAY_SIZE(arv452cpw_leds_gpio), arv452cpw_leds_gpio); 
     438+       ltq_register_nor(&arv45xx_flash_data); 
     439+       ltq_register_pci(&ltq_pci_data); 
     440+       ltq_register_madwifi_eep(); 
    480441+       xway_register_dwc(ARV452CPW_USB); 
    481442+       arv45xx_register_ethernet(); 
     
    503464+arv4525pw_init(void) 
    504465+{ 
    505 +       lq_register_gpio(); 
    506 +       lq_register_gpio_leds(arv4525pw_leds_gpio, ARRAY_SIZE(arv4525pw_leds_gpio)); 
    507 +       lq_register_asc(0); 
    508 +       lq_register_asc(1); 
    509 +       lq_register_nor(&arv45xx_flash_data); 
    510 +       lq_pci_data.clock = PCI_CLOCK_INT; 
    511 +       lq_register_pci(&lq_pci_data); 
    512 +       lq_register_wdt(); 
    513 +       lq_register_madwifi_eep(); 
    514 +       lq_eth_data.mii_mode = MII_MODE; 
     466+       ltq_add_device_leds_gpio(-1, ARRAY_SIZE(arv4525pw_leds_gpio), arv4525pw_leds_gpio); 
     467+       ltq_register_nor(&arv45xx_flash_data); 
     468+       ltq_pci_data.clock = PCI_CLOCK_INT; 
     469+       ltq_register_pci(&ltq_pci_data); 
     470+       ltq_register_madwifi_eep(); 
     471+       ltq_eth_data.mii_mode = PHY_INTERFACE_MODE_MII; 
    515472+       arv45xx_register_ethernet(); 
    516473+} 
     
    527484+#define ARV7518PW_USB                  14 
    528485+ 
    529 +       lq_register_gpio(); 
    530 +       lq_register_gpio_ebu(ARV7518PW_EBU); 
    531 +       lq_register_asc(0); 
    532 +       lq_register_asc(1); 
    533 +       lq_register_gpio_leds(arv7518pw_leds_gpio, ARRAY_SIZE(arv7518pw_leds_gpio)); 
    534 +       lq_register_gpio_buttons(arv7518pw_gpio_buttons, ARRAY_SIZE(arv7518pw_gpio_buttons)); 
    535 +       lq_register_nor(&arv75xx_flash_data); 
    536 +       lq_register_pci(&lq_pci_data); 
    537 +       lq_register_wdt(); 
    538 +       lq_register_tapi(); 
     486+       ltq_register_gpio_ebu(ARV7518PW_EBU); 
     487+       ltq_add_device_leds_gpio(-1, ARRAY_SIZE(arv7518pw_leds_gpio), arv7518pw_leds_gpio); 
     488+       ltq_register_gpio_buttons(arv7518pw_gpio_buttons, ARRAY_SIZE(arv7518pw_gpio_buttons)); 
     489+       ltq_register_nor(&arv75xx_flash_data); 
     490+       ltq_register_pci(&ltq_pci_data); 
     491+       ltq_register_tapi(); 
    539492+       xway_register_dwc(ARV7518PW_USB); 
    540493+       arv75xx_register_ethernet(); 
     
    551504+{ 
    552505+#define ARV752DPW22_EBU                        0x2 
    553 +#define ARV752DPW22_USB                        32 
    554 +#define ARV752DPW22_RELAY              33 
    555 + 
    556 +       lq_register_gpio(); 
    557 +       lq_register_gpio_ebu(ARV752DPW22_EBU); 
    558 +       lq_register_asc(0); 
    559 +       lq_register_asc(1); 
    560 +       lq_register_gpio_leds(arv752dpw22_leds_gpio, ARRAY_SIZE(arv752dpw22_leds_gpio)); 
    561 +       lq_register_gpio_buttons(arv752dpw22_gpio_buttons, ARRAY_SIZE(arv752dpw22_gpio_buttons)); 
    562 +       lq_register_nor(&arv75xx_flash_data); 
    563 +       lq_pci_data.irq[15] = (INT_NUM_IM2_IRL0 + 31); 
    564 +       lq_pci_data.gpio |= PCI_EXIN1 | PCI_REQ2; 
    565 +       lq_register_pci(&lq_pci_data); 
    566 +       lq_register_wdt(); 
     506+#define ARV752DPW22_USB                        72 
     507+#define ARV752DPW22_RELAY              73 
     508+ 
     509+       ltq_register_gpio_ebu(ARV752DPW22_EBU); 
     510+       ltq_add_device_leds_gpio(-1, ARRAY_SIZE(arv752dpw22_leds_gpio), arv752dpw22_leds_gpio); 
     511+       ltq_register_gpio_buttons(arv752dpw22_gpio_buttons, ARRAY_SIZE(arv752dpw22_gpio_buttons)); 
     512+       ltq_register_nor(&arv75xx_flash_data); 
     513+       ltq_pci_data.irq[15] = (INT_NUM_IM2_IRL0 + 31); 
     514+       ltq_pci_data.gpio |= PCI_EXIN1 | PCI_REQ2; 
     515+       ltq_register_pci(&ltq_pci_data); 
    567516+       xway_register_dwc(ARV752DPW22_USB); 
    568517+       arv75xx_register_ethernet(); 
     
    577526+                       "ARV752DPW22 - Arcor A803", 
    578527+                       arv752dpw22_init); 
     528--- a/arch/mips/lantiq/machtypes.h 
     529+++ b/arch/mips/lantiq/machtypes.h 
     530@@ -21,6 +21,17 @@ 
     531        LANTIQ_MACH_EASY98000SF,        /* Falcon Eval Board, Serial Flash */ 
     532        LANTIQ_MACH_EASY98020,          /* Falcon Reference Board */ 
     533        LANTIQ_MACH_95C3AM1,            /* Board 95C3AM1 */ 
     534+ 
     535+       /* Arcadyan */ 
     536+       LANTIQ_MACH_ARV3527P,           /* Arcor easybox a401 */ 
     537+       LANTIQ_MACH_ARV4510PW,          /* Wippies Homebox */ 
     538+       LANTIQ_MACH_ARV4518PW,          /* Airties WAV-221, SMC-7908A-ISP */ 
     539+       LANTIQ_MACH_ARV4520PW,          /* Airties WAV-281, Arcor EasyboxA800 */ 
     540+       LANTIQ_MACH_ARV452CPW,          /* Arcor EasyboxA801 */ 
     541+       LANTIQ_MACH_ARV4525PW,          /* Speedport W502V */ 
     542+       LANTIQ_MACH_ARV752DPW,          /* Arcor easybox a802 */ 
     543+       LANTIQ_MACH_ARV752DPW22,        /* Arcor easybox a803 */ 
     544+       LANTIQ_MACH_ARV7518PW,          /* ASTORIA */ 
     545 }; 
     546  
     547 #endif 
  • trunk/target/linux/lantiq/patches-2.6.32/210-mtd_uimage_split.patch

    r27025 r27026  
    11--- a/drivers/mtd/Kconfig 
    22+++ b/drivers/mtd/Kconfig 
    3 @@ -63,6 +63,10 @@ config MTD_ROOTFS_SPLIT 
     3@@ -63,6 +63,10 @@ 
    44        depends on MTD_PARTITIONS 
    55        default y 
     
    1414--- a/drivers/mtd/mtdpart.c 
    1515+++ b/drivers/mtd/mtdpart.c 
    16 @@ -722,6 +722,82 @@ static int refresh_rootfs_split(struct m 
     16@@ -724,6 +724,82 @@ 
    1717 } 
    1818 #endif /* CONFIG_MTD_ROOTFS_SPLIT */ 
     
    9797  * This function, given a master MTD object and a partition table, creates 
    9898  * and registers slave MTD objects which are bound to the master according to 
    99 @@ -746,6 +822,17 @@ int add_mtd_partitions(struct mtd_info * 
     99@@ -748,6 +824,17 @@ 
    100100                if (!slave) 
    101101                        return -ENOMEM; 
  • trunk/target/linux/lantiq/patches-2.6.32/220-atm_hack.patch

    r27025 r27026  
    1212--- a/net/atm/proc.c 
    1313+++ b/net/atm/proc.c 
    14 @@ -154,7 +154,7 @@ 
     14@@ -152,7 +152,7 @@ 
    1515 static void pvc_info(struct seq_file *seq, struct atm_vcc *vcc) 
    1616 { 
    17         static const char *const class_name[] = { 
    18 -               "off", "UBR", "CBR", "VBR", "ABR"}; 
    19 +               "off","UBR","CBR","NTR-VBR","ABR","ANY","RT-VBR","UBR+","GFR"}; 
     17        static const char *const class_name[] = 
     18-               {"off","UBR","CBR","VBR","ABR"}; 
     19+               {"off","UBR","CBR","NTR-VBR","ABR","ANY","RT-VBR","UBR+","GFR"}; 
    2020        static const char *const aal_name[] = { 
    2121                "---",  "1",    "2",    "3/4",  /*  0- 3 */ 
     
    2323--- a/net/atm/common.c 
    2424+++ b/net/atm/common.c 
    25 @@ -62,11 +62,17 @@ 
    26         write_unlock_irq(&vcc_sklist_lock); 
     25@@ -57,11 +57,17 @@ 
    2726 } 
     27  
    2828  
    2929+struct sk_buff* (*ifx_atm_alloc_tx)(struct atm_vcc *, unsigned int) = NULL; 
    3030+EXPORT_SYMBOL(ifx_atm_alloc_tx); 
    3131+ 
    32  static struct sk_buff *alloc_tx(struct atm_vcc *vcc, unsigned int size) 
     32 static struct sk_buff *alloc_tx(struct atm_vcc *vcc,unsigned int size) 
    3333 { 
    3434        struct sk_buff *skb; 
     
    4040        if (sk_wmem_alloc_get(sk) && !atm_may_send(vcc, size)) { 
    4141                pr_debug("Sorry: wmem_alloc = %d, size = %d, sndbuf = %d\n", 
    42                          sk_wmem_alloc_get(sk), size, sk->sk_sndbuf); 
     42                        sk_wmem_alloc_get(sk), size, 
  • trunk/target/linux/lantiq/patches-2.6.32/240-udp_redirect.patch

    r27025 r27026  
    262262--- a/net/ipv4/udp.c 
    263263+++ b/net/ipv4/udp.c 
    264 @@ -107,6 +107,10 @@ 
     264@@ -106,7 +106,11 @@ 
    265265 #include <net/xfrm.h> 
    266266 #include "udp_impl.h" 
     
    269269+#include <linux/udp_redirect.h> 
    270270+#endif 
    271 + 
    272  struct udp_table udp_table __read_mostly; 
     271 struct udp_table udp_table; 
     272+ 
    273273 EXPORT_SYMBOL(udp_table); 
    274274  
    275 @@ -784,7 +788,7 @@ 
     275 int sysctl_udp_mem[3] __read_mostly; 
     276@@ -591,7 +595,7 @@ 
    276277        u8  tos; 
    277278        int err, is_udplite = IS_UDPLITE(sk); 
     
    282283        if (len > 0xFFFF) 
    283284                return -EMSGSIZE; 
    284 @@ -946,6 +950,12 @@ 
     285@@ -753,6 +757,12 @@ 
    285286  
    286287 do_append_data: 
     
    295296        err = ip_append_data(sk, getfrag, msg->msg_iov, ulen, 
    296297                        sizeof(struct udphdr), &ipc, &rt, 
    297 @@ -1573,6 +1583,7 @@ 
     298@@ -1283,6 +1293,7 @@ 
    298299        struct rtable *rt = skb_rtable(skb); 
    299300        __be32 saddr, daddr; 
     
    303304        /* 
    304305         *  Validate the packet. 
    305 @@ -1605,7 +1616,16 @@ 
     306@@ -1315,7 +1326,16 @@ 
    306307        sk = __udp4_lib_lookup_skb(skb, uh->source, uh->dest, udptable); 
    307308  
     
    321322  
    322323                /* a return value > 0 means to resubmit the input, but 
    323 @@ -1902,7 +1922,7 @@ 
    324         .clear_sk          = sk_prot_clear_portaddr_nulls, 
     324@@ -1610,7 +1630,7 @@ 
     325 #endif 
    325326 }; 
    326327 EXPORT_SYMBOL(udp_prot); 
  • trunk/target/linux/lantiq/patches-2.6.32/250-mt-vpe.patch

    r27025 r27026  
    11--- a/arch/mips/Kconfig 
    22+++ b/arch/mips/Kconfig 
    3 @@ -1837,6 +1837,28 @@ config MIPS_VPE_LOADER 
     3@@ -1646,6 +1646,28 @@ 
    44          Includes a loader for loading an elf relocatable object 
    55          onto another VPE and running it. 
     
    111111 #define TCSTATUS_TASID         (_ULCAST_(0xff)) 
    112112 #define TCSTATUS_IXMT_SHIFT    10 
    113 @@ -350,6 +390,14 @@ do {                                                                       \ 
     113@@ -350,6 +390,14 @@ 
    114114 #define write_vpe_c0_vpecontrol(val)   mttc0(1, 1, val) 
    115115 #define read_vpe_c0_vpeconf0()         mftc0(1, 2) 
     
    126126 #define write_vpe_c0_count(val)                mttc0(9, 0, val) 
    127127 #define read_vpe_c0_status()           mftc0(12, 0) 
    128 @@ -381,6 +429,12 @@ do {                                                                       \ 
     128@@ -381,6 +429,12 @@ 
    129129 #define write_tc_c0_tchalt(val)                mttc0(2, 4, val) 
    130130 #define read_tc_c0_tccontext()         mftc0(2, 5) 
     
    141141--- a/arch/mips/kernel/Makefile 
    142142+++ b/arch/mips/kernel/Makefile 
    143 @@ -85,7 +85,8 @@ obj-$(CONFIG_MIPS32_O32)      += binfmt_elfo3 
     143@@ -78,7 +78,8 @@ 
    144144  
    145145 obj-$(CONFIG_KGDB)             += kgdb.o 
     
    255255 /* 
    256256  * Dump new MIPS MT state for the core. Does not leave TCs halted. 
    257 @@ -78,18 +148,18 @@ void mips_mt_regdump(unsigned long mvpct 
     257@@ -78,18 +148,18 @@ 
    258258                        if ((read_tc_c0_tcbind() & TCBIND_CURVPE) == i) { 
    259259                                printk("  VPE %d\n", i); 
     
    281281                        } 
    282282                } 
    283 @@ -287,6 +357,9 @@ void mips_mt_set_cpuoptions(void) 
     283@@ -287,6 +357,9 @@ 
    284284                printk("Mapped %ld ITC cells starting at 0x%08x\n", 
    285285                        ((itcblkgrn & 0x7fe00000) >> 20), itc_base); 
     
    301301 #include <asm/cpu.h> 
    302302 #include <asm/cpu-features.h> 
    303 @@ -108,3 +109,19 @@ const struct seq_operations cpuinfo_op = 
     303@@ -108,3 +109,19 @@ 
    304304        .stop   = c_stop, 
    305305        .show   = show_cpuinfo, 
     
    323323--- a/arch/mips/kernel/smtc.c 
    324324+++ b/arch/mips/kernel/smtc.c 
    325 @@ -1335,6 +1335,13 @@ void smtc_get_new_mmu_context(struct mm_ 
     325@@ -1328,6 +1328,13 @@ 
    326326        asid = asid_cache(cpu); 
    327327  
     
    339339--- a/arch/mips/kernel/vpe.c 
    340340+++ b/arch/mips/kernel/vpe.c 
    341 @@ -76,6 +76,58 @@ static struct kspd_notifications kspd_ev 
     341@@ -77,6 +77,58 @@ 
    342342 static int kspd_events_reqd; 
    343343 #endif 
     
    398398 #ifdef CONFIG_MIPS_VPE_LOADER_TOM 
    399399 #define P_SIZE (2 * 1024 * 1024) 
    400 @@ -268,6 +320,13 @@ static void *alloc_progmem(unsigned long 
     400@@ -269,6 +321,13 @@ 
    401401        void *addr; 
    402402  
     
    412412         * This means you must tell Linux to use less memory than you 
    413413         * physically have, for example by passing a mem= boot argument. 
    414 @@ -746,6 +805,12 @@ static int vpe_run(struct vpe * v) 
     414@@ -747,6 +806,12 @@ 
    415415        } 
    416416  
     
    425425        write_tc_c0_tccontext((unsigned long)0); 
    426426  
    427 @@ -759,6 +824,20 @@ static int vpe_run(struct vpe * v) 
     427@@ -760,6 +825,20 @@ 
    428428  
    429429        write_tc_c0_tchalt(read_tc_c0_tchalt() & ~TCHALT_H); 
     
    446446         * The sde-kit passes 'memsize' to __start in $a3, so set something 
    447447         * here...  Or set $a3 to zero and define DFLT_STACK_SIZE and 
    448 @@ -833,6 +912,9 @@ static int find_vpe_symbols(struct vpe * 
     448@@ -834,6 +913,9 @@ 
    449449        if ( (v->__start == 0) || (v->shared_ptr == NULL)) 
    450450                return -1; 
     
    456456 } 
    457457  
    458 @@ -994,6 +1076,15 @@ static int vpe_elfload(struct vpe * v) 
     458@@ -995,6 +1077,15 @@ 
    459459                           (unsigned long)v->load_addr + v->len); 
    460460  
     
    472472                        printk(KERN_WARNING "VPE loader: program does not contain " 
    473473                               "a __start symbol\n"); 
    474 @@ -1064,6 +1155,9 @@ static int vpe_open(struct inode *inode, 
     474@@ -1065,6 +1156,9 @@ 
    475475        struct vpe_notifications *not; 
    476476        struct vpe *v; 
     
    482482        if (minor != iminor(inode)) { 
    483483                /* assume only 1 device at the moment. */ 
    484 @@ -1090,6 +1184,12 @@ static int vpe_open(struct inode *inode, 
     484@@ -1091,14 +1185,22 @@ 
    485485                cleanup_tc(get_tc(tclimit)); 
    486486        } 
     
    494494        /* this of-course trashes what was there before... */ 
    495495        v->pbuffer = vmalloc(P_SIZE); 
    496         if (!v->pbuffer) { 
    497 @@ -1097,11 +1197,13 @@ static int vpe_open(struct inode *inode, 
    498                 return -ENOMEM; 
    499         } 
    500496        v->plen = P_SIZE; 
    501497+#endif 
     
    510506 #ifdef CONFIG_MIPS_APSP_KSPD 
    511507        /* get kspd to tell us when a syscall_exit happens */ 
    512 @@ -1349,6 +1451,133 @@ static void kspd_sp_exit( int sp_id) 
     508@@ -1351,6 +1453,133 @@ 
    513509        cleanup_tc(get_tc(sp_id)); 
    514510 } 
     
    644640 static ssize_t store_kill(struct device *dev, struct device_attribute *attr, 
    645641                          const char *buf, size_t len) 
    646 @@ -1430,6 +1659,18 @@ static int __init vpe_module_init(void) 
     642@@ -1432,6 +1661,18 @@ 
    647643                printk("VPE loader: not a MIPS MT capable processor\n"); 
    648644                return -ENODEV; 
     
    663659        if (vpelimit == 0) { 
    664660                printk(KERN_WARNING "No VPEs reserved for AP/SP, not " 
    665 @@ -1474,10 +1715,12 @@ static int __init vpe_module_init(void) 
     661@@ -1476,10 +1717,12 @@ 
    666662        mtflags = dmt(); 
    667663        vpflags = dvpe(); 
     
    677673        val = read_c0_mvpconf0(); 
    678674        hw_tcs = (val & MVPCONF0_PTC) + 1; 
    679 @@ -1489,6 +1732,7 @@ static int __init vpe_module_init(void) 
     675@@ -1491,6 +1734,7 @@ 
    680676                 * reschedule send IPIs or similar we might hang. 
    681677                 */ 
     
    685681                emt(mtflags); 
    686682                local_irq_restore(flags); 
    687 @@ -1514,6 +1758,7 @@ static int __init vpe_module_init(void) 
     683@@ -1516,6 +1760,7 @@ 
    688684                        } 
    689685  
     
    693689                        /* add the tc to the list of this vpe's tc's. */ 
    694690                        list_add(&t->tc, &v->tc); 
    695 @@ -1582,6 +1827,7 @@ static int __init vpe_module_init(void) 
     691@@ -1584,6 +1829,7 @@ 
    696692 out_reenable: 
    697693        /* release config state */ 
  • trunk/target/linux/lantiq/patches-2.6.32/260-ar9-cache-split.patch

    r27025 r27026  
    11--- a/arch/mips/Kconfig 
    22+++ b/arch/mips/Kconfig 
    3 @@ -1844,6 +1844,28 @@ 
     3@@ -1653,6 +1653,28 @@ 
    44        help 
    55          IFX included extensions in APRP 
     
    3232--- a/arch/mips/kernel/vpe.c 
    3333+++ b/arch/mips/kernel/vpe.c 
    34 @@ -128,6 +128,13 @@ 
     34@@ -129,6 +129,13 @@ 
    3535 EXPORT_SYMBOL(vpe1_wdog_timeout); 
    3636  
     
    4646 #ifdef CONFIG_MIPS_VPE_LOADER_TOM 
    4747 #define P_SIZE (2 * 1024 * 1024) 
    48 @@ -866,6 +873,65 @@ 
     48@@ -867,6 +874,65 @@ 
    4949        /* enable this VPE */ 
    5050        write_vpe_c0_vpeconf0(read_vpe_c0_vpeconf0() | VPECONF0_VPA); 
     
    114114--- a/arch/mips/mm/c-r4k.c 
    115115+++ b/arch/mips/mm/c-r4k.c 
    116 @@ -1347,6 +1347,106 @@ 
     116@@ -1348,6 +1348,106 @@ 
    117117 __setup("coherentio", setcoherentio); 
    118118 #endif 
     
    221221 { 
    222222        extern void build_clear_page(void); 
    223 @@ -1366,6 +1466,78 @@ 
     223@@ -1367,6 +1467,78 @@ 
    224224                break; 
    225225        } 
  • trunk/target/linux/lantiq/patches-2.6.32/400-spi1.patch

    r27025 r27026  
    1111--- a/arch/mips/include/asm/mach-lantiq/lantiq_platform.h 
    1212+++ b/arch/mips/include/asm/mach-lantiq/lantiq_platform.h 
    13 @@ -48,4 +48,13 @@ 
    14   
    15  extern int (*lqpci_plat_dev_init)(struct pci_dev *dev); 
     13@@ -50,4 +50,13 @@ 
     14        int mii_mode; 
     15 }; 
    1616  
    1717+ 
    18 +struct lq_spi_platform_data { 
     18+struct ltq_spi_platform_data { 
    1919+       u16 num_chipselect; 
    2020+}; 
    2121+ 
    22 +struct lq_spi_controller_data { 
     22+struct ltq_spi_controller_data { 
    2323+       unsigned gpio; 
    2424+}; 
    2525+ 
    2626 #endif 
    27 --- a/arch/mips/include/asm/mach-lantiq/xway/xway.h 
    28 +++ b/arch/mips/include/asm/mach-lantiq/xway/xway.h 
    29 @@ -72,6 +72,7 @@ 
    30  #define LQ_PMU_BASE_ADDR       (KSEG1 + 0x1F102000) 
     27--- a/arch/mips/include/asm/mach-lantiq/xway/lantiq_soc.h 
     28+++ b/arch/mips/include/asm/mach-lantiq/xway/lantiq_soc.h 
     29@@ -75,6 +75,7 @@ 
    3130  
    32  #define PMU_DMA                                0x0020 
    33 +#define PMU_SPI                                0x0100 
    34  #define PMU_USB                                0x8041 
    35  #define PMU_LED                                0x0800 
    36  #define PMU_GPT                                0x1000 
    37 @@ -105,6 +106,7 @@ 
    38   
    39  /*------------ SSC */ 
    40  #define LQ_SSC_BASE_ADDR       (KSEG1 + 0x1e100800) 
    41 +#define LQ_SSC_SIZE            0x100 
    42   
    43  /*------------ MEI */ 
    44  #define LQ_MEI_BASE_ADDR       (KSEG1 + 0x1E116000) 
     31 #define PMU_DMA                        0x0020 
     32 #define PMU_USB                        0x8041 
     33+#define PMU_SPI                        0x0100 
     34 #define PMU_LED                        0x0800 
     35 #define PMU_GPT                        0x1000 
     36 #define PMU_PPE                        0x2000 
  • trunk/target/linux/lantiq/patches-2.6.32/550-dwc_otg.patch

    r27025 r27026  
    11--- a/drivers/usb/Kconfig 
    22+++ b/drivers/usb/Kconfig 
    3 @@ -113,6 +113,8 @@ 
     3@@ -107,6 +107,8 @@ 
    44  
    55 source "drivers/usb/host/Kconfig" 
     
    1212--- a/drivers/usb/Makefile 
    1313+++ b/drivers/usb/Makefile 
    14 @@ -27,6 +27,8 @@ 
     14@@ -26,6 +26,8 @@ 
    1515  
    1616 obj-$(CONFIG_USB_WUSB)         += wusbcore/ 
     
    57775777+ 
    57785778+static unsigned long dwc_iomem_base = IFX_USB_IOMEM_BASE; 
    5779 +int dwc_irq = LQ_USB_INT; 
     5779+int dwc_irq = LTQ_USB_INT; 
    57805780+//int dwc_irq = 54; 
    57815781+//int dwc_irq = IFXMIPS_USB_OC_INT; 
     
    99319931--- /dev/null 
    99329932+++ b/drivers/usb/dwc_otg/dwc_otg_hcd.h 
    9933 @@ -0,0 +1,676 @@ 
     9933@@ -0,0 +1,677 @@ 
    99349934+/* ========================================================================== 
    99359935+ * $File: //dwh/usb_iip/dev/software/otg_ipmate/linux/drivers/dwc_otg_hcd.h $ 
     
    99709970+#include <linux/list.h> 
    99719971+#include <linux/usb.h> 
    9972 +#include <linux/usb/hcd.h> 
     9972+//#include <linux/usb/hcd.h> 
     9973+#include "../core/hcd.h" 
    99739974+ 
    99749975+struct lm_device; 
     
    1328413285+#include <asm/io.h> 
    1328513286+//#include <asm/mach-ifxmips/ifxmips.h> 
    13286 +#include <xway.h> 
     13287+#include <lantiq_soc.h> 
    1328713288+ 
    1328813289+#define IFXMIPS_GPIO_BASE_ADDR  (0xBE100B00) 
     
    1330813309+ 
    1330913310+ 
    13310 +extern void lq_enable_irq(unsigned int irq_nr); 
    13311 +#define writel lq_w32 
    13312 +#define readl lq_r32 
     13311+extern void ltq_enable_irq(unsigned int irq_nr); 
     13312+#define writel ltq_w32 
     13313+#define readl ltq_r32 
    1331313314+void dwc_otg_power_on (void) 
    1331413315+{ 
     
    1339913400+#define IFX_USB_IOMEM_BASE 0x1e101000 
    1340013401+#define IFX_USB_IOMEM_SIZE SZ_256K 
    13401 +#define IFX_USB_IRQ LQ_USB_INT 
     13402+#define IFX_USB_IRQ LTQ_USB_INT 
    1340213403+ 
    1340313404+/** 
     
    1343113432+#define DANUBE_USBCFG_SLV_END_BIT  9   // 0:little_end, 1:big_end 
    1343213433+ 
    13433 +extern void lq_mask_and_ack_irq (unsigned int irq_nr); 
    13434 +#define mask_and_ack_ifx_irq lq_mask_and_ack_irq 
     13434+extern void ltq_mask_and_ack_irq (unsigned int irq_nr); 
     13435+#define mask_and_ack_ifx_irq ltq_mask_and_ack_irq 
    1343513436+ 
    1343613437+#endif //__DWC_OTG_IFX_H__ 
     
    1349113492+#endif 
    1349213493+*/ 
    13493 +#include <xway.h> 
    13494 +#define writel lq_w32 
    13495 +#define readl lq_r32 
     13494+#include <lantiq_soc.h> 
     13495+#define writel ltq_w32 
     13496+#define readl ltq_r32 
    1349613497+ 
    1349713498+/** 
     
    1550915510--- a/arch/mips/lantiq/xway/Makefile 
    1551015511+++ b/arch/mips/lantiq/xway/Makefile 
    15511 @@ -4,3 +4,4 @@ 
     15512@@ -6,3 +6,4 @@ 
    1551215513 obj-$(CONFIG_LANTIQ_MACH_EASY50712) += mach-easy50712.o 
    15513  obj-$(CONFIG_LANTIQ_MACH_EASY4010) += mach-easy4010.o 
     15514 obj-$(CONFIG_LANTIQ_MACH_EASY50601) += mach-easy50601.o 
    1551415515 obj-$(CONFIG_LANTIQ_MACH_ARV45XX) += mach-arv45xx.o 
    1551515516+obj-y += dev-dwc_otg.o 
     
    1554515546+#include <asm/irq.h> 
    1554615547+ 
    15547 +#include <xway.h> 
    15548 +#include <xway_irq.h> 
     15548+#include <lantiq_soc.h> 
     15549+#include <lantiq_irq.h> 
    1554915550+#include <lantiq_platform.h> 
    1555015551+ 
    15551 +#define LQ_USB_IOMEM_BASE 0x1e101000 
    15552 +#define LQ_USB_IOMEM_SIZE 0x00040000 
     15552+#define LTQ_USB_IOMEM_BASE 0x1e101000 
     15553+#define LTQ_USB_IOMEM_SIZE 0x00001000 
    1555315554+ 
    1555415555+static struct resource resources[] = 
     
    1555615557+       [0] = { 
    1555715558+               .name    = "dwc_otg_membase", 
    15558 +               .start   = LQ_USB_IOMEM_BASE, 
    15559 +               .end       = LQ_USB_IOMEM_BASE + LQ_USB_IOMEM_SIZE - 1, 
     15559+               .start   = LTQ_USB_IOMEM_BASE, 
     15560+               .end     = LTQ_USB_IOMEM_BASE + LTQ_USB_IOMEM_SIZE - 1, 
    1556015561+               .flags   = IORESOURCE_MEM, 
    1556115562+       }, 
    1556215563+       [1] = { 
    1556315564+               .name    = "dwc_otg_irq", 
    15564 +               .start   = LQ_USB_INT, 
     15565+               .start   = LTQ_USB_INT, 
    1556515566+               .flags   = IORESOURCE_IRQ, 
    1556615567+       }, 
     
    1558115582+xway_register_dwc(int pin) 
    1558215583+{ 
    15583 +       lq_enable_irq(resources[1].start); 
     15584+       ltq_enable_irq(resources[1].start); 
    1558415585+       platform_dev.dev.platform_data = (void*) pin; 
    1558515586+       return platform_device_register(&platform_dev); 
     
    1559715598+ */ 
    1559815599+ 
    15599 +#ifndef _LQ_DEV_DWC_H__ 
    15600 +#define _LQ_DEV_DWC_H__ 
     15600+#ifndef _LTQ_DEV_DWC_H__ 
     15601+#define _LTQ_DEV_DWC_H__ 
    1560115602+ 
    1560215603+#include <lantiq_platform.h> 
     
    1560515606+ 
    1560615607+#endif 
     15608--- a/drivers/usb/core/hub.c 
     15609+++ b/drivers/usb/core/hub.c 
     15610@@ -2704,11 +2704,11 @@ 
     15611                udev->ttport = hdev->ttport; 
     15612        } else if (udev->speed != USB_SPEED_HIGH 
     15613                        && hdev->speed == USB_SPEED_HIGH) { 
     15614-               if (!hub->tt.hub) { 
     15615+/*             if (!hub->tt.hub) { 
     15616                        dev_err(&udev->dev, "parent hub has no TT\n"); 
     15617                        retval = -EINVAL; 
     15618                        goto fail; 
     15619-               } 
     15620+               }*/ 
     15621                udev->tt = &hub->tt; 
     15622                udev->ttport = port1; 
     15623        } 
  • trunk/target/linux/lantiq/patches-2.6.32/560-dev-leds-gpio.patch

    r27025 r27026  
    1818+#include <linux/leds.h> 
    1919+ 
    20 +void lq_add_device_leds_gpio(int id, 
     20+void ltq_add_device_leds_gpio(int id, 
    2121+                                unsigned num_leds, 
    2222+                                struct gpio_led *leds) __init; 
     
    4545+#include "dev-leds-gpio.h" 
    4646+ 
    47 +void __init lq_add_device_leds_gpio(int id, unsigned num_leds, 
     47+void __init ltq_add_device_leds_gpio(int id, unsigned num_leds, 
    4848+                                       struct gpio_led *leds) 
    4949+{ 
     
    8585--- a/arch/mips/lantiq/Makefile 
    8686+++ b/arch/mips/lantiq/Makefile 
    87 @@ -1,2 +1,2 @@ 
    88 -obj-y := irq.o setup.o clk.o prom.o 
    89 +obj-y := dev-leds-gpio.o irq.o setup.o clk.o prom.o 
     87@@ -4,7 +4,7 @@ 
     88 # under the terms of the GNU General Public License version 2 as published 
     89 # by the Free Software Foundation. 
     90  
     91-obj-y := irq.o setup.o clk.o prom.o devices.o 
     92+obj-y := irq.o setup.o clk.o prom.o devices.o dev-leds-gpio.o 
     93  
    9094 obj-$(CONFIG_EARLY_PRINTK) += early_printk.o 
     95  
  • trunk/target/linux/lantiq/patches-2.6.39/0009-SERIAL-Lantiq-Add-driver-for-MIPS-Lantiq-SOCs.patch

    r27025 r27026  
    1 --- a/drivers/serial/Kconfig 
    2 +++ b/drivers/serial/Kconfig 
    3 @@ -1454,6 +1454,14 @@ 
    4         help 
    5           Support for Console on the NWP serial ports. 
    6   
    7 +config SERIAL_LANTIQ 
    8 +       bool "Lantiq serial driver" 
    9 +       depends on LANTIQ 
    10 +       select SERIAL_CORE 
    11 +       select SERIAL_CORE_CONSOLE 
    12 +       help 
    13 +         Driver for the Lantiq SoC ASC hardware 
    14 + 
    15  config SERIAL_QE 
    16         tristate "Freescale QUICC Engine serial port support" 
    17         depends on QUICC_ENGINE 
    18 --- a/drivers/serial/Makefile 
    19 +++ b/drivers/serial/Makefile 
    20 @@ -89,3 +89,4 @@ 
    21  obj-$(CONFIG_SERIAL_MRST_MAX3110)      += mrst_max3110.o 
    22  obj-$(CONFIG_SERIAL_MFD_HSU)   += mfd.o 
    23  obj-$(CONFIG_SERIAL_OMAP) += omap-serial.o 
    24 +obj-$(CONFIG_SERIAL_LANTIQ) += lantiq.o 
     1From 1d2b44b1afa3ef081cd817dbf947d48eb8f5d21a Mon Sep 17 00:00:00 2001 
     2From: John Crispin <blogic@openwrt.org> 
     3Date: Tue, 5 Apr 2011 14:10:57 +0200 
     4Subject: [PATCH 09/13] SERIAL: Lantiq: Add driver for MIPS Lantiq SOCs. 
     5 
     6Signed-off-by: John Crispin <blogic@openwrt.org> 
     7Signed-off-by: Ralph Hempel <ralph.hempel@lantiq.com> 
     8Signed-off-by: Felix Fietkau <nbd@openwrt.org> 
     9Cc: alan@lxorguk.ukuu.org.uk 
     10Cc: linux-mips@linux-mips.org 
     11Cc: linux-serial@vger.kernel.org 
     12Patchwork: https://patchwork.linux-mips.org/patch/2269/ 
     13Acked-by: Alan Cox <alan@linux.intel.com> 
     14Signed-off-by: Ralf Baechle <ralf@linux-mips.org> 
     15--- 
     16 drivers/tty/serial/Kconfig  |    8 + 
     17 drivers/tty/serial/Makefile |    1 + 
     18 drivers/tty/serial/lantiq.c |  756 +++++++++++++++++++++++++++++++++++++++++++ 
     19 3 files changed, 765 insertions(+), 0 deletions(-) 
     20 create mode 100644 drivers/tty/serial/lantiq.c 
     21 
    2522--- /dev/null 
    26 +++ b/drivers/serial/lantiq.c 
    27 @@ -0,0 +1,772 @@ 
     23+++ b/drivers/tty/serial/lantiq.c 
     24@@ -0,0 +1,756 @@ 
    2825+/* 
    2926+ *  Based on drivers/char/serial.c, by Linus Torvalds, Theodore Ts'o. 
     
    4542+ * Copyright (C) 2007 Felix Fietkau <nbd@openwrt.org> 
    4643+ * Copyright (C) 2007 John Crispin <blogic@openwrt.org> 
    47 + * Copyright (C) 2010 Thomas Langer, Lantiq Deutschland 
     44+ * Copyright (C) 2010 Thomas Langer, <thomas.langer@lantiq.com> 
    4845+ */ 
    4946+ 
     
    6360+#include <linux/clk.h> 
    6461+ 
    65 +#define lq_r32(reg)                    __raw_readl(reg) 
    66 +#define lq_r8(reg)                             __raw_readb(reg) 
    67 +#define lq_w32(val, reg)                       __raw_writel(val, reg) 
    68 +#define lq_w8(val, reg)                        __raw_writeb(val, reg) 
    69 +#define lq_w32_mask(clear, set, reg)   lq_w32((lq_r32(reg) & ~(clear)) | (set), reg) 
    70 + 
    71 +#define PORT_IFXMIPSASC                111 
     62+#include <lantiq_soc.h> 
     63+ 
     64+#define PORT_LTQ_ASC           111 
    7265+#define MAXPORTS               2 
    73 + 
    74 +#define UART_DUMMY_UER_RX 1 
    75 + 
    76 +#define DRVNAME "lq_asc" 
    77 + 
     66+#define UART_DUMMY_UER_RX      1 
     67+#define DRVNAME                        "ltq_asc" 
    7868+#ifdef __BIG_ENDIAN 
    79 +#define IFXMIPS_ASC_TBUF               (0x0020 + 3) 
    80 +#define IFXMIPS_ASC_RBUF               (0x0024 + 3) 
     69+#define LTQ_ASC_TBUF           (0x0020 + 3) 
     70+#define LTQ_ASC_RBUF           (0x0024 + 3) 
    8171+#else 
    82 +#define IFXMIPS_ASC_TBUF               0x0020 
    83 +#define IFXMIPS_ASC_RBUF               0x0024 
     72+#define LTQ_ASC_TBUF           0x0020 
     73+#define LTQ_ASC_RBUF           0x0024 
    8474+#endif 
    85 + 
    86 +#define IFXMIPS_ASC_FSTAT              0x0048 
    87 +#define IFXMIPS_ASC_WHBSTATE           0x0018 
    88 +#define IFXMIPS_ASC_STATE              0x0014 
    89 +#define IFXMIPS_ASC_IRNCR              0x00F8 
    90 +#define IFXMIPS_ASC_CLC                        0x0000 
    91 +#define IFXMIPS_ASC_ID                 0x0008 
    92 +#define IFXMIPS_ASC_PISEL              0x0004 
    93 +#define IFXMIPS_ASC_TXFCON             0x0044 
    94 +#define IFXMIPS_ASC_RXFCON             0x0040 
    95 +#define IFXMIPS_ASC_CON                        0x0010 
    96 +#define IFXMIPS_ASC_BG                 0x0050 
    97 +#define IFXMIPS_ASC_IRNREN             0x00F4 
    98 + 
    99 +#define ASC_IRNREN_TX                  0x1 
    100 +#define ASC_IRNREN_RX                  0x2 
    101 +#define ASC_IRNREN_ERR                 0x4 
    102 +#define ASC_IRNREN_TX_BUF              0x8 
    103 +#define ASC_IRNCR_TIR                  0x1 
    104 +#define ASC_IRNCR_RIR                  0x2 
    105 +#define ASC_IRNCR_EIR                  0x4 
    106 + 
    107 +#define ASCOPT_CSIZE                   0x3 
    108 +#define ASCOPT_CS7                     0x1 
    109 +#define ASCOPT_CS8                     0x2 
    110 +#define ASCOPT_PARENB                  0x4 
    111 +#define ASCOPT_STOPB                   0x8 
    112 +#define ASCOPT_PARODD                  0x0 
    113 +#define ASCOPT_CREAD                   0x20 
    114 +#define TXFIFO_FL                      1 
    115 +#define RXFIFO_FL                      1 
    116 +#define ASCCLC_DISS                    0x2 
    117 +#define ASCCLC_RMCMASK                 0x0000FF00 
    118 +#define ASCCLC_RMCOFFSET               8 
    119 +#define ASCCON_M_8ASYNC                        0x0 
    120 +#define ASCCON_M_7ASYNC                        0x2 
    121 +#define ASCCON_ODD                     0x00000020 
    122 +#define ASCCON_STP                     0x00000080 
    123 +#define ASCCON_BRS                     0x00000100 
    124 +#define ASCCON_FDE                     0x00000200 
    125 +#define ASCCON_R                       0x00008000 
    126 +#define ASCCON_FEN                     0x00020000 
    127 +#define ASCCON_ROEN                    0x00080000 
    128 +#define ASCCON_TOEN                    0x00100000 
    129 +#define ASCSTATE_PE                    0x00010000 
    130 +#define ASCSTATE_FE                    0x00020000 
    131 +#define ASCSTATE_ROE                   0x00080000 
    132 +#define ASCSTATE_ANY                   (ASCSTATE_ROE|ASCSTATE_PE|ASCSTATE_FE) 
    133 +#define ASCWHBSTATE_CLRREN             0x00000001 
    134 +#define ASCWHBSTATE_SETREN             0x00000002 
    135 +#define ASCWHBSTATE_CLRPE              0x00000004 
    136 +#define ASCWHBSTATE_CLRFE              0x00000008 
    137 +#define ASCWHBSTATE_CLRROE             0x00000020 
    138 +#define ASCTXFCON_TXFEN                        0x0001 
    139 +#define ASCTXFCON_TXFFLU               0x0002 
    140 +#define ASCTXFCON_TXFITLMASK           0x3F00 
    141 +#define ASCTXFCON_TXFITLOFF            8 
    142 +#define ASCRXFCON_RXFEN                        0x0001 
    143 +#define ASCRXFCON_RXFFLU               0x0002 
    144 +#define ASCRXFCON_RXFITLMASK           0x3F00 
    145 +#define ASCRXFCON_RXFITLOFF            8 
    146 +#define ASCFSTAT_RXFFLMASK             0x003F 
    147 +#define ASCFSTAT_TXFFLMASK             0x3F00 
    148 +#define ASCFSTAT_TXFFLOFF              8 
    149 +#define ASCFSTAT_RXFREEMASK            0x003F0000 
    150 +#define ASCFSTAT_RXFREEOFF             16 
    151 +#define ASCFSTAT_TXFREEMASK            0x3F000000 
    152 +#define ASCFSTAT_TXFREEOFF             24 
     75+#define LTQ_ASC_FSTAT          0x0048 
     76+#define LTQ_ASC_WHBSTATE       0x0018 
     77+#define LTQ_ASC_STATE          0x0014 
     78+#define LTQ_ASC_IRNCR          0x00F8 
     79+#define LTQ_ASC_CLC            0x0000 
     80+#define LTQ_ASC_ID             0x0008 
     81+#define LTQ_ASC_PISEL          0x0004 
     82+#define LTQ_ASC_TXFCON         0x0044 
     83+#define LTQ_ASC_RXFCON         0x0040 
     84+#define LTQ_ASC_CON            0x0010 
     85+#define LTQ_ASC_BG             0x0050 
     86+#define LTQ_ASC_IRNREN         0x00F4 
     87+ 
     88+#define ASC_IRNREN_TX          0x1 
     89+#define ASC_IRNREN_RX          0x2 
     90+#define ASC_IRNREN_ERR         0x4 
     91+#define ASC_IRNREN_TX_BUF      0x8 
     92+#define ASC_IRNCR_TIR          0x1 
     93+#define ASC_IRNCR_RIR          0x2 
     94+#define ASC_IRNCR_EIR          0x4 
     95+ 
     96+#define ASCOPT_CSIZE           0x3 
     97+#define TXFIFO_FL              1 
     98+#define RXFIFO_FL              1 
     99+#define ASCCLC_DISS            0x2 
     100+#define ASCCLC_RMCMASK         0x0000FF00 
     101+#define ASCCLC_RMCOFFSET       8 
     102+#define ASCCON_M_8ASYNC                0x0 
     103+#define ASCCON_M_7ASYNC                0x2 
     104+#define ASCCON_ODD             0x00000020 
     105+#define ASCCON_STP             0x00000080 
     106+#define ASCCON_BRS             0x00000100 
     107+#define ASCCON_FDE             0x00000200 
     108+#define ASCCON_R               0x00008000 
     109+#define ASCCON_FEN             0x00020000 
     110+#define ASCCON_ROEN            0x00080000 
     111+#define ASCCON_TOEN            0x00100000 
     112+#define ASCSTATE_PE            0x00010000 
     113+#define ASCSTATE_FE            0x00020000 
     114+#define ASCSTATE_ROE           0x00080000 
     115+#define ASCSTATE_ANY           (ASCSTATE_ROE|ASCSTATE_PE|ASCSTATE_FE) 
     116+#define ASCWHBSTATE_CLRREN     0x00000001 
     117+#define ASCWHBSTATE_SETREN     0x00000002 
     118+#define ASCWHBSTATE_CLRPE      0x00000004 
     119+#define ASCWHBSTATE_CLRFE      0x00000008 
     120+#define ASCWHBSTATE_CLRROE     0x00000020 
     121+#define ASCTXFCON_TXFEN                0x0001 
     122+#define ASCTXFCON_TXFFLU       0x0002 
     123+#define ASCTXFCON_TXFITLMASK   0x3F00 
     124+#define ASCTXFCON_TXFITLOFF    8 
     125+#define ASCRXFCON_RXFEN                0x0001 
     126+#define ASCRXFCON_RXFFLU       0x0002 
     127+#define ASCRXFCON_RXFITLMASK   0x3F00 
     128+#define ASCRXFCON_RXFITLOFF    8 
     129+#define ASCFSTAT_RXFFLMASK     0x003F 
     130+#define ASCFSTAT_TXFFLMASK     0x3F00 
     131+#define ASCFSTAT_TXFREEMASK    0x3F000000 
     132+#define ASCFSTAT_TXFREEOFF     24 
    153133+ 
    154134+static void lqasc_tx_chars(struct uart_port *port); 
    155 +extern void prom_printf(const char *fmt, ...); 
    156 +static struct lq_uart_port *lqasc_port[2]; 
     135+static struct ltq_uart_port *lqasc_port[MAXPORTS]; 
    157136+static struct uart_driver lqasc_reg; 
    158 + 
    159 +struct lq_uart_port { 
     137+static DEFINE_SPINLOCK(ltq_asc_lock); 
     138+ 
     139+struct ltq_uart_port { 
    160140+       struct uart_port        port; 
    161 +       struct clk                      *clk; 
     141+       struct clk              *clk; 
    162142+       unsigned int            tx_irq; 
    163143+       unsigned int            rx_irq; 
     
    166146+ 
    167147+static inline struct 
    168 +lq_uart_port *to_lq_uart_port(struct uart_port *port) 
    169 +{ 
    170 +       return container_of(port, struct lq_uart_port, port); 
     148+ltq_uart_port *to_ltq_uart_port(struct uart_port *port) 
     149+{ 
     150+       return container_of(port, struct ltq_uart_port, port); 
    171151+} 
    172152+ 
     
    181161+{ 
    182162+       unsigned long flags; 
    183 +       local_irq_save(flags); 
     163+       spin_lock_irqsave(&ltq_asc_lock, flags); 
    184164+       lqasc_tx_chars(port); 
    185 +       local_irq_restore(flags); 
     165+       spin_unlock_irqrestore(&ltq_asc_lock, flags); 
    186166+       return; 
    187167+} 
     
    190170+lqasc_stop_rx(struct uart_port *port) 
    191171+{ 
    192 +       lq_w32(ASCWHBSTATE_CLRREN, port->membase + IFXMIPS_ASC_WHBSTATE); 
     172+       ltq_w32(ASCWHBSTATE_CLRREN, port->membase + LTQ_ASC_WHBSTATE); 
    193173+} 
    194174+ 
     
    198178+} 
    199179+ 
    200 +static void 
     180+static int 
    201181+lqasc_rx_chars(struct uart_port *port) 
    202182+{ 
    203 +       struct tty_struct *tty = port->state->port.tty; 
     183+       struct tty_struct *tty = tty_port_tty_get(&port->state->port); 
    204184+       unsigned int ch = 0, rsr = 0, fifocnt; 
    205185+ 
    206 +       fifocnt = lq_r32(port->membase + IFXMIPS_ASC_FSTAT) & ASCFSTAT_RXFFLMASK; 
     186+       if (!tty) { 
     187+               dev_dbg(port->dev, "%s:tty is busy now", __func__); 
     188+               return -EBUSY; 
     189+       } 
     190+       fifocnt = 
     191+               ltq_r32(port->membase + LTQ_ASC_FSTAT) & ASCFSTAT_RXFFLMASK; 
    207192+       while (fifocnt--) { 
    208193+               u8 flag = TTY_NORMAL; 
    209 +               ch = lq_r8(port->membase + IFXMIPS_ASC_RBUF); 
    210 +               rsr = (lq_r32(port->membase + IFXMIPS_ASC_STATE) 
     194+               ch = ltq_r8(port->membase + LTQ_ASC_RBUF); 
     195+               rsr = (ltq_r32(port->membase + LTQ_ASC_STATE) 
    211196+                       & ASCSTATE_ANY) | UART_DUMMY_UER_RX; 
    212197+               tty_flip_buffer_push(tty); 
     
    220205+                       if (rsr & ASCSTATE_PE) { 
    221206+                               port->icount.parity++; 
    222 +                               lq_w32_mask(0, ASCWHBSTATE_CLRPE, 
    223 +                                       port->membase + IFXMIPS_ASC_WHBSTATE); 
     207+                               ltq_w32_mask(0, ASCWHBSTATE_CLRPE, 
     208+                                       port->membase + LTQ_ASC_WHBSTATE); 
    224209+                       } else if (rsr & ASCSTATE_FE) { 
    225210+                               port->icount.frame++; 
    226 +                               lq_w32_mask(0, ASCWHBSTATE_CLRFE, 
    227 +                                       port->membase + IFXMIPS_ASC_WHBSTATE); 
     211+                               ltq_w32_mask(0, ASCWHBSTATE_CLRFE, 
     212+                                       port->membase + LTQ_ASC_WHBSTATE); 
    228213+                       } 
    229214+                       if (rsr & ASCSTATE_ROE) { 
    230215+                               port->icount.overrun++; 
    231 +                               lq_w32_mask(0, ASCWHBSTATE_CLRROE, 
    232 +                                       port->membase + IFXMIPS_ASC_WHBSTATE); 
     216+                               ltq_w32_mask(0, ASCWHBSTATE_CLRROE, 
     217+                                       port->membase + LTQ_ASC_WHBSTATE); 
    233218+                       } 
    234219+ 
     
    254239+       if (ch != 0) 
    255240+               tty_flip_buffer_push(tty); 
    256 +       return; 
     241+       tty_kref_put(tty); 
     242+       return 0; 
    257243+} 
    258244+ 
     
    266252+       } 
    267253+ 
    268 +       while (((lq_r32(port->membase + IFXMIPS_ASC_FSTAT) & 
     254+       while (((ltq_r32(port->membase + LTQ_ASC_FSTAT) & 
    269255+               ASCFSTAT_TXFREEMASK) >> ASCFSTAT_TXFREEOFF) != 0) { 
    270256+               if (port->x_char) { 
    271 +                       lq_w8(port->x_char, port->membase + IFXMIPS_ASC_TBUF); 
     257+                       ltq_w8(port->x_char, port->membase + LTQ_ASC_TBUF); 
    272258+                       port->icount.tx++; 
    273259+                       port->x_char = 0; 
     
    278264+                       break; 
    279265+ 
    280 +               lq_w8(port->state->xmit.buf[port->state->xmit.tail], 
    281 +                       port->membase + IFXMIPS_ASC_TBUF); 
     266+               ltq_w8(port->state->xmit.buf[port->state->xmit.tail], 
     267+                       port->membase + LTQ_ASC_TBUF); 
    282268+               xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1); 
    283269+               port->icount.tx++; 
     
    291277+lqasc_tx_int(int irq, void *_port) 
    292278+{ 
     279+       unsigned long flags; 
    293280+       struct uart_port *port = (struct uart_port *)_port; 
    294 +       lq_w32(ASC_IRNCR_TIR, port->membase + IFXMIPS_ASC_IRNCR); 
     281+       spin_lock_irqsave(&ltq_asc_lock, flags); 
     282+       ltq_w32(ASC_IRNCR_TIR, port->membase + LTQ_ASC_IRNCR); 
     283+       spin_unlock_irqrestore(&ltq_asc_lock, flags); 
    295284+       lqasc_start_tx(port); 
    296285+       return IRQ_HANDLED; 
     
    300289+lqasc_err_int(int irq, void *_port) 
    301290+{ 
     291+       unsigned long flags; 
    302292+       struct uart_port *port = (struct uart_port *)_port; 
     293+       spin_lock_irqsave(&ltq_asc_lock, flags); 
    303294+       /* clear any pending interrupts */ 
    304 +       lq_w32_mask(0, ASCWHBSTATE_CLRPE | ASCWHBSTATE_CLRFE | ASCWHBSTATE_CLRROE, 
    305 +               port->membase + IFXMIPS_ASC_WHBSTATE); 
     295+       ltq_w32_mask(0, ASCWHBSTATE_CLRPE | ASCWHBSTATE_CLRFE | 
     296+               ASCWHBSTATE_CLRROE, port->membase + LTQ_ASC_WHBSTATE); 
     297+       spin_unlock_irqrestore(&ltq_asc_lock, flags); 
    306298+       return IRQ_HANDLED; 
    307299+} 
     
    310302+lqasc_rx_int(int irq, void *_port) 
    311303+{ 
     304+       unsigned long flags; 
    312305+       struct uart_port *port = (struct uart_port *)_port; 
    313 +       lq_w32(ASC_IRNCR_RIR, port->membase + IFXMIPS_ASC_IRNCR); 
     306+       spin_lock_irqsave(&ltq_asc_lock, flags); 
     307+       ltq_w32(ASC_IRNCR_RIR, port->membase + LTQ_ASC_IRNCR); 
    314308+       lqasc_rx_chars(port); 
     309+       spin_unlock_irqrestore(&ltq_asc_lock, flags); 
    315310+       return IRQ_HANDLED; 
    316311+} 
     
    320315+{ 
    321316+       int status; 
    322 +       status = lq_r32(port->membase + IFXMIPS_ASC_FSTAT) & ASCFSTAT_TXFFLMASK; 
     317+       status = ltq_r32(port->membase + LTQ_ASC_FSTAT) & ASCFSTAT_TXFFLMASK; 
    323318+       return status ? 0 : TIOCSER_TEMT; 
    324319+} 
     
    343338+lqasc_startup(struct uart_port *port) 
    344339+{ 
    345 +       struct lq_uart_port *ifx_port = to_lq_uart_port(port); 
     340+       struct ltq_uart_port *ltq_port = to_ltq_uart_port(port); 
    346341+       int retval; 
    347342+ 
    348 +       port->uartclk = clk_get_rate(ifx_port->clk); 
    349 + 
    350 +       lq_w32_mask(ASCCLC_DISS | ASCCLC_RMCMASK, (1 << ASCCLC_RMCOFFSET), 
    351 +               port->membase + IFXMIPS_ASC_CLC); 
    352 + 
    353 +       lq_w32(0, port->membase + IFXMIPS_ASC_PISEL); 
    354 +       lq_w32( 
     343+       port->uartclk = clk_get_rate(ltq_port->clk); 
     344+ 
     345+       ltq_w32_mask(ASCCLC_DISS | ASCCLC_RMCMASK, (1 << ASCCLC_RMCOFFSET), 
     346+               port->membase + LTQ_ASC_CLC); 
     347+ 
     348+       ltq_w32(0, port->membase + LTQ_ASC_PISEL); 
     349+       ltq_w32( 
    355350+               ((TXFIFO_FL << ASCTXFCON_TXFITLOFF) & ASCTXFCON_TXFITLMASK) | 
    356351+               ASCTXFCON_TXFEN | ASCTXFCON_TXFFLU, 
    357 +               port->membase + IFXMIPS_ASC_TXFCON); 
    358 +       lq_w32( 
     352+               port->membase + LTQ_ASC_TXFCON); 
     353+       ltq_w32( 
    359354+               ((RXFIFO_FL << ASCRXFCON_RXFITLOFF) & ASCRXFCON_RXFITLMASK) 
    360355+               | ASCRXFCON_RXFEN | ASCRXFCON_RXFFLU, 
    361 +               port->membase + IFXMIPS_ASC_RXFCON); 
    362 +       /* make sure other settings are written to hardware before setting enable bits */ 
     356+               port->membase + LTQ_ASC_RXFCON); 
     357+       /* make sure other settings are written to hardware before 
     358+        * setting enable bits 
     359+        */ 
    363360+       wmb(); 
    364 +       lq_w32_mask(0, ASCCON_M_8ASYNC | ASCCON_FEN | ASCCON_TOEN | 
    365 +               ASCCON_ROEN, port->membase + IFXMIPS_ASC_CON); 
    366 + 
    367 +       retval = request_irq(ifx_port->tx_irq, lqasc_tx_int, 
     361+       ltq_w32_mask(0, ASCCON_M_8ASYNC | ASCCON_FEN | ASCCON_TOEN | 
     362+               ASCCON_ROEN, port->membase + LTQ_ASC_CON); 
     363+ 
     364+       retval = request_irq(ltq_port->tx_irq, lqasc_tx_int, 
    368365+               IRQF_DISABLED, "asc_tx", port); 
    369366+       if (retval) { 
     
    372369+       } 
    373370+ 
    374 +       retval = request_irq(ifx_port->rx_irq, lqasc_rx_int, 
     371+       retval = request_irq(ltq_port->rx_irq, lqasc_rx_int, 
    375372+               IRQF_DISABLED, "asc_rx", port); 
    376373+       if (retval) { 
     
    379376+       } 
    380377+ 
    381 +       retval = request_irq(ifx_port->err_irq, lqasc_err_int, 
     378+       retval = request_irq(ltq_port->err_irq, lqasc_err_int, 
    382379+               IRQF_DISABLED, "asc_err", port); 
    383380+       if (retval) { 
     
    386383+       } 
    387384+ 
    388 +       lq_w32(ASC_IRNREN_RX | ASC_IRNREN_ERR | ASC_IRNREN_TX, 
    389 +               port->membase + IFXMIPS_ASC_IRNREN); 
     385+       ltq_w32(ASC_IRNREN_RX | ASC_IRNREN_ERR | ASC_IRNREN_TX, 
     386+               port->membase + LTQ_ASC_IRNREN); 
    390387+       return 0; 
    391388+ 
    392389+err2: 
    393 +       free_irq(ifx_port->rx_irq, port); 
     390+       free_irq(ltq_port->rx_irq, port); 
    394391+err1: 
    395 +       free_irq(ifx_port->tx_irq, port); 
     392+       free_irq(ltq_port->tx_irq, port); 
    396393+       return retval; 
    397394+} 
     
    400397+lqasc_shutdown(struct uart_port *port) 
    401398+{ 
    402 +       struct lq_uart_port *ifx_port = to_lq_uart_port(port); 
    403 +       free_irq(ifx_port->tx_irq, port); 
    404 +       free_irq(ifx_port->rx_irq, port); 
    405 +       free_irq(ifx_port->err_irq, port); 
    406 + 
    407 +       lq_w32(0, port->membase + IFXMIPS_ASC_CON); 
    408 +       lq_w32_mask(ASCRXFCON_RXFEN, ASCRXFCON_RXFFLU, 
    409 +               port->membase + IFXMIPS_ASC_RXFCON); 
    410 +       lq_w32_mask(ASCTXFCON_TXFEN, ASCTXFCON_TXFFLU, 
    411 +               port->membase + IFXMIPS_ASC_TXFCON); 
     399+       struct ltq_uart_port *ltq_port = to_ltq_uart_port(port); 
     400+       free_irq(ltq_port->tx_irq, port); 
     401+       free_irq(ltq_port->rx_irq, port); 
     402+       free_irq(ltq_port->err_irq, port); 
     403+ 
     404+       ltq_w32(0, port->membase + LTQ_ASC_CON); 
     405+       ltq_w32_mask(ASCRXFCON_RXFEN, ASCRXFCON_RXFFLU, 
     406+               port->membase + LTQ_ASC_RXFCON); 
     407+       ltq_w32_mask(ASCTXFCON_TXFEN, ASCTXFCON_TXFFLU, 
     408+               port->membase + LTQ_ASC_TXFCON); 
    412409+} 
    413410+ 
     
    418415+       unsigned int cflag; 
    419416+       unsigned int iflag; 
    420 +       unsigned int quot; 
     417+       unsigned int divisor; 
    421418+       unsigned int baud; 
    422419+       unsigned int con = 0; 
     
    434431+       case CS6: 
    435432+       default: 
     433+               new->c_cflag &= ~ CSIZE; 
     434+               new->c_cflag |= CS8; 
    436435+               con = ASCCON_M_8ASYNC; 
    437436+               break; 
    438437+       } 
     438+ 
     439+       cflag &= ~CMSPAR; /* Mark/Space parity is not supported */ 
    439440+ 
    440441+       if (cflag & CSTOPB) 
     
    471472+       con |= ASCCON_FEN | ASCCON_TOEN | ASCCON_ROEN; 
    472473+ 
    473 +       local_irq_save(flags); 
     474+       spin_lock_irqsave(&ltq_asc_lock, flags); 
    474475+ 
    475476+       /* set up CON */ 
    476 +       lq_w32_mask(0, con, port->membase + IFXMIPS_ASC_CON); 
     477+       ltq_w32_mask(0, con, port->membase + LTQ_ASC_CON); 
    477478+ 
    478479+       /* Set baud rate - take a divider of 2 into account */ 
    479480+       baud = uart_get_baud_rate(port, new, old, 0, port->uartclk / 16); 
    480 +       quot = uart_get_divisor(port, baud); 
    481 +       quot = quot / 2 - 1; 
     481+       divisor = uart_get_divisor(port, baud); 
     482+       divisor = divisor / 2 - 1; 
    482483+ 
    483484+       /* disable the baudrate generator */ 
    484