Changeset 25072


Ignore:
Timestamp:
2011-01-23T13:08:44+01:00 (5 years ago)
Author:
blogic
Message:

[lantiq]

  • fix pci support for more than 1 device
  • fixes ioport mappings
  • adds support for arcor easybox 803/arv752DWP22
  • gpio direction was not set properly during a gpio_request()
  • usb compile warning

bugfix, cleanup,

Location:
trunk/target/linux/lantiq
Files:
1 deleted
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/lantiq/image/Makefile

    r24526 r25072  
    6161        $(call Image/BuildKernel/Template,EASY50812,$(xway_cmdline)) 
    6262        $(call Image/BuildKernel/Template,ARV452,$(xway_cmdline)) 
     63        $(call Image/BuildKernel/Template,ARV752DPW22,$(xway_cmdline)) 
    6364        $(call Image/BuildKernel/Template,NONE) 
    6465endef 
     
    6970        $(call Image/Build/$(1),$(1),EASY50812) 
    7071        $(call Image/Build/$(1),$(1),ARV452) 
     72        $(call Image/Build/$(1),$(1),ARV752DPW22) 
    7173        $(call Image/Build/$(1),$(1),NONE) 
    7274        $(CP) $(KDIR)/root.$(1)  $(BIN_DIR)/$(IMG_PREFIX)-$(1).rootfs 
  • trunk/target/linux/lantiq/patches/101-header.patch

    r24526 r25072  
    9898--- /dev/null 
    9999+++ b/arch/mips/include/asm/mach-lantiq/lantiq_platform.h 
    100 @@ -0,0 +1,36 @@ 
     100@@ -0,0 +1,51 @@ 
    101101+/* 
    102102+ *  This program is free software; you can redistribute it and/or modify it 
     
    123123+}; 
    124124+ 
    125 +/* struct used to pass info to the pci core */ 
    126 +enum { 
    127 +       PCI_CLOCK_INT = 0, 
    128 +       PCI_CLOCK_EXT 
    129 +}; 
     125+#define PCI_EXIN0      0x0001 
     126+#define PCI_EXIN1      0x0002 
     127+#define PCI_EXIN2      0x0004 
     128+#define PCI_EXIN_SHIFT 0 
     129+ 
     130+#define PCI_GNT1       0x0008 
     131+#define PCI_GNT2       0x0010 
     132+#define PCI_GNT3       0x0020 
     133+#define PCI_GNT_SHIFT  3 
     134+ 
     135+#define PCI_REQ1       0x0040 
     136+#define PCI_REQ2       0x0080 
     137+#define PCI_REQ3       0x0100 
     138+#define PCI_REQ_SHIFT  6 
     139+ 
     140+#define        PCI_CLOCK_INT   0 
     141+#define        PCI_CLOCK_EXT   1 
    130142+ 
    131143+struct lq_pci_data { 
    132144+       int clock; 
    133 +       int req_mask; 
     145+       int gpio; 
     146+       int irq[16]; 
    134147+}; 
    135148+ 
     149+extern int (*ifxmips_pci_plat_dev_init)(struct pci_dev *dev); 
     150+ 
    136151+#endif 
  • trunk/target/linux/lantiq/patches/104-board_xway.patch

    r24526 r25072  
    2424--- /dev/null 
    2525+++ b/arch/mips/lantiq/xway/gpio_ebu.c 
    26 @@ -0,0 +1,107 @@ 
     26@@ -0,0 +1,116 @@ 
    2727+/* 
    2828+ *  This program is free software; you can redistribute it and/or modify it 
     
    5555+ 
    5656+static void 
    57 +lq_ebu_set(struct gpio_chip *chip, unsigned offset, int value) 
     57+lq_ebu_apply(void) 
    5858+{ 
    5959+       unsigned long flags; 
    60 +       if(value) 
    61 +               shadow |= (1 << offset); 
    62 +       else 
    63 +               shadow &= ~(1 << offset); 
    6460+       spin_lock_irqsave(&ebu_lock, flags); 
    6561+       lq_w32(LQ_EBU_BUSCON, LQ_EBU_BUSCON1); 
     
    6763+       lq_w32(LQ_EBU_BUSCON | LQ_EBU_WP, LQ_EBU_BUSCON1); 
    6864+       spin_unlock_irqrestore(&ebu_lock, flags); 
     65+} 
     66+ 
     67+static void 
     68+lq_ebu_set(struct gpio_chip *chip, unsigned offset, int value) 
     69+{ 
     70+       if(value) 
     71+               shadow |= (1 << offset); 
     72+       else 
     73+               shadow &= ~(1 << offset); 
     74+       lq_ebu_apply(); 
    6975+} 
    7076+ 
     
    109115+       ret = gpiochip_add(&lq_ebu_chip); 
    110116+       if (!ret) 
     117+       { 
     118+               lq_ebu_apply(); 
    111119+               return 0; 
     120+       } 
    112121+ 
    113122+err_release_mem_region: 
     
    131140+} 
    132141+ 
    133 +arch_initcall(init_lq_ebu); 
     142+postcore_initcall(init_lq_ebu); 
    134143--- /dev/null 
    135144+++ b/arch/mips/lantiq/xway/gpio_leds.c 
     
    295304+} 
    296305+ 
    297 +arch_initcall(init_lq_stp); 
     306+postcore_initcall(init_lq_stp); 
    298307--- /dev/null 
    299308+++ b/arch/mips/lantiq/xway/mach-easy4010.c 
    300 @@ -0,0 +1,79 @@ 
     309@@ -0,0 +1,82 @@ 
    301310+/* 
    302311+ *  This program is free software; you can redistribute it and/or modify it 
     
    354363+static struct lq_pci_data lq_pci_data = { 
    355364+       .clock      = PCI_CLOCK_INT, 
    356 +       .req_mask   = 0xf, 
     365+       .gpio   = PCI_GNT1 | PCI_REQ1, 
     366+       .irq    = { 
     367+               [14] = INT_NUM_IM0_IRL0 + 22, 
     368+       }, 
    357369+}; 
    358370+ 
     
    380392--- /dev/null 
    381393+++ b/arch/mips/lantiq/xway/mach-easy50712.c 
    382 @@ -0,0 +1,79 @@ 
     394@@ -0,0 +1,82 @@ 
    383395+/* 
    384396+ *  This program is free software; you can redistribute it and/or modify it 
     
    436448+static struct lq_pci_data lq_pci_data = { 
    437449+       .clock      = PCI_CLOCK_INT, 
    438 +       .req_mask   = 0xf, 
     450+       .gpio   = PCI_GNT1 | PCI_REQ1, 
     451+       .irq    = { 
     452+               [14] = INT_NUM_IM0_IRL0 + 22, 
     453+       }, 
    439454+}; 
    440455+ 
     
    462477--- /dev/null 
    463478+++ b/arch/mips/lantiq/xway/mach-easy50812.c 
    464 @@ -0,0 +1,78 @@ 
     479@@ -0,0 +1,81 @@ 
    465480+/* 
    466481+ *  This program is free software; you can redistribute it and/or modify it 
     
    518533+static struct lq_pci_data lq_pci_data = { 
    519534+       .clock      = PCI_CLOCK_INT, 
    520 +       .req_mask   = 0xf, 
     535+       .gpio   = PCI_GNT1 | PCI_REQ1, 
     536+       .irq    = { 
     537+               [14] = INT_NUM_IM0_IRL0 + 22, 
     538+       }, 
    521539+}; 
    522540+ 
     
    879897--- /dev/null 
    880898+++ b/arch/mips/lantiq/xway/devices.h 
    881 @@ -0,0 +1,24 @@ 
     899@@ -0,0 +1,25 @@ 
    882900+/* 
    883901+ *  This program is free software; you can redistribute it and/or modify it 
     
    892910+ 
    893911+#include <lantiq_platform.h> 
     912+#include <xway_irq.h> 
    894913+ 
    895914+extern void __init lq_register_gpio(void); 
     
    28682887--- /dev/null 
    28692888+++ b/arch/mips/lantiq/xway/gpio.c 
    2870 @@ -0,0 +1,203 @@ 
     2889@@ -0,0 +1,206 @@ 
    28712890+/* 
    28722891+ *  This program is free software; you can redistribute it and/or modify it 
     
    29452964+               return -EBUSY; 
    29462965+       } 
    2947 +       gpio_direction_output(pin, dir); 
     2966+       if(dir) 
     2967+               gpio_direction_output(pin, 1); 
     2968+       else 
     2969+               gpio_direction_input(pin); 
    29482970+       if(pin >= PINS_PER_PORT) 
    29492971+       { 
     
    30713093+} 
    30723094+ 
    3073 +arch_initcall(lq_gpio_init); 
     3095+postcore_initcall(lq_gpio_init); 
    30743096--- /dev/null 
    30753097+++ b/arch/mips/lantiq/xway/reset.c 
  • trunk/target/linux/lantiq/patches/110-machine.patch

    r24526 r25072  
    11--- a/arch/mips/lantiq/setup.c 
    22+++ b/arch/mips/lantiq/setup.c 
    3 @@ -13,7 +13,8 @@ 
     3@@ -12,7 +12,8 @@ 
    44 #include <linux/ioport.h> 
    55  
     
    1111 void __init 
    1212 plat_mem_setup(void) 
    13 @@ -46,3 +47,25 @@ plat_mem_setup(void) 
     13@@ -31,6 +32,7 @@ 
     14        ioport_resource.end = IOPORT_RESOURCE_END; 
     15        iomem_resource.start = IOMEM_RESOURCE_START; 
     16        iomem_resource.end = IOMEM_RESOURCE_END; 
     17+       set_io_port_base((unsigned long) KSEG1); 
     18  
     19        while (*envp) 
     20        { 
     21@@ -45,3 +47,25 @@ 
    1422        memsize *= 1024 * 1024; 
    1523        add_memory_region(0x00000000, memsize, BOOT_MEM_RAM); 
  • trunk/target/linux/lantiq/patches/260-pci.patch

    r24526 r25072  
    11--- a/arch/mips/pci/Makefile 
    22+++ b/arch/mips/pci/Makefile 
    3 @@ -55,6 +55,7 @@ obj-$(CONFIG_ZAO_CAPCELLA)    += fixup-capc 
     3@@ -55,6 +55,7 @@ 
    44 obj-$(CONFIG_WR_PPMC)          += fixup-wrppmc.o 
    55 obj-$(CONFIG_MIKROTIK_RB532)   += pci-rc32434.o ops-rc32434.o fixup-rc32434.o 
     
    141141--- /dev/null 
    142142+++ b/arch/mips/pci/pci-lantiq.c 
    143 @@ -0,0 +1,293 @@ 
     143@@ -0,0 +1,305 @@ 
    144144+/* 
    145145+ *  This program is free software; you can redistribute it and/or modify it 
     
    182182+#define PCI_CR_FCI_ADDR_MAP7           ((u32 *)(PCI_CR_PR_BASE_ADDR + 0x00DC)) 
    183183+#define PCI_CR_CLK_CTRL                        ((u32 *)(PCI_CR_PR_BASE_ADDR + 0x0000)) 
     184+#define PCI_CR_PCI_IRM                 ((u32 *)(PCI_CR_PR_BASE_ADDR + 0x0028)) 
    184185+#define PCI_CR_PCI_MOD                 ((u32 *)(PCI_CR_PR_BASE_ADDR + 0x0030)) 
    185186+#define PCI_CR_PC_ARB                  ((u32 *)(PCI_CR_PR_BASE_ADDR + 0x0080)) 
     
    188189+#define PCI_CR_BAR12MASK               ((u32 *)(PCI_CR_PR_BASE_ADDR + 0x0048)) 
    189190+#define PCI_CR_BAR13MASK               ((u32 *)(PCI_CR_PR_BASE_ADDR + 0x004C)) 
    190 +#define PCI_CS_BASE_ADDR1              ((u32 *)(PCI_CS_PR_BASE_ADDR + 0x0010)) 
    191191+#define PCI_CR_PCI_ADDR_MAP11          ((u32 *)(PCI_CR_PR_BASE_ADDR + 0x0064)) 
    192192+#define PCI_CR_FCI_BURST_LENGTH                ((u32 *)(PCI_CR_PR_BASE_ADDR + 0x00E8)) 
    193193+#define PCI_CR_PCI_EOI                 ((u32 *)(PCI_CR_PR_BASE_ADDR + 0x002C)) 
    194194+ 
    195 + 
    196195+#define PCI_CS_STS_CMD                 ((u32 *)(PCI_CS_PR_BASE_ADDR + 0x0004)) 
     196+#define PCI_CS_BASE_ADDR1              ((u32 *)(PCI_CS_PR_BASE_ADDR + 0x0010)) 
    197197+ 
    198198+#define PCI_MASTER0_REQ_MASK_2BITS     8 
     
    211211+u32 lq_pci_mapped_cfg; 
    212212+ 
     213+int (*lqpci_plat_dev_init)(struct pci_dev *dev) = NULL; 
     214+ 
    213215+/* Since the PCI REQ pins can be reused for other functionality, make it possible 
    214216+   to exclude those from interpretation by the PCI controller */ 
    215217+static int lq_pci_req_mask = 0xf; 
     218+ 
     219+static int *lq_pci_irq_map; 
    216220+ 
    217221+struct pci_ops lq_pci_ops = 
     
    249253+pcibios_plat_dev_init(struct pci_dev *dev) 
    250254+{ 
    251 +       u8 pin; 
    252 + 
    253 +       pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &pin); 
    254 +       switch(pin) 
    255 +       { 
    256 +               case 0: 
    257 +                       break; 
    258 +               case 1: 
    259 +                       //falling edge level triggered:0x4, low level:0xc, rising edge:0x2 
    260 +                       lq_w32(lq_r32(LQ_EBU_PCC_CON) | 0xc, LQ_EBU_PCC_CON); 
    261 +                       lq_w32(lq_r32(LQ_EBU_PCC_IEN) | 0x10, LQ_EBU_PCC_IEN); 
    262 +                       break; 
    263 +               case 2: 
    264 +               case 3: 
    265 +               case 4: 
    266 +                       printk ("WARNING: interrupt pin %d not supported yet!\n", pin); 
    267 +               default: 
    268 +                       printk ("WARNING: invalid interrupt pin %d\n", pin); 
    269 +                       return 1; 
    270 +       } 
     255+       if (lqpci_plat_dev_init) 
     256+               return lqpci_plat_dev_init(dev); 
     257+ 
    271258+       return 0; 
    272259+} 
     
    284271+} 
    285272+ 
     273+struct ltq_pci_gpio_map { 
     274+       int pin; 
     275+       int alt0; 
     276+       int alt1; 
     277+       int dir; 
     278+       char *name; 
     279+}; 
     280+ 
     281+static struct ltq_pci_gpio_map gmap[] = { 
     282+       { 0, 1, 0, 0, "pci-exin0" }, 
     283+       { 1, 1, 0, 0, "pci-exin1" }, 
     284+       { 2, 1, 0, 0, "pci-exin2" }, 
     285+       { 30, 1, 0, 1, "pci-gnt1" }, 
     286+       { 23, 1, 0, 1, "pci-gnt2" }, 
     287+       { 19, 1, 0, 1, "pci-gnt3" }, 
     288+       { 29, 1, 0, 0, "pci-req1" }, 
     289+       { 31, 1, 0, 0, "pci-req2" }, 
     290+       { 3, 1, 0, 0, "pci-req3" }, 
     291+}; 
     292+ 
    286293+static void 
    287 +lq_pci_setup_clk(int external_clock) 
    288 +{ 
     294+lq_pci_setup_gpio(int gpio) 
     295+{ 
     296+       int i; 
     297+       for (i = 0; i < ARRAY_SIZE(gmap); i++) 
     298+       { 
     299+               if(gpio & (1 << i)) 
     300+               { 
     301+                       lq_gpio_request(gmap[i].pin, gmap[i].alt0, 
     302+                               gmap[i].alt1, gmap[i].dir, gmap[i].name); 
     303+               } 
     304+       } 
     305+                       lq_w32(lq_r32((u32*)0xBF101000) | 0x60, (u32*)0xBF101000); 
     306+                       lq_w32(lq_r32((u32*)0xBF101004) & ~2, (u32*)0xBF101004); 
     307+                       lq_w32(lq_r32((u32*)0xBF10100C) | 2, (u32*)0xBF10100C); 
     308+       for(i = 0; i < 3; i++) 
     309+       { 
     310+               if(gpio & (1 << i)) 
     311+               { 
     312+                       lq_w32(lq_r32((u32*)0xBF101000) | (0x6 << (i * 4)), (u32*)0xBF101000); 
     313+                       lq_w32(lq_r32((u32*)0xBF101004) & ~(1 << i), (u32*)0xBF101004); 
     314+                       lq_w32(lq_r32((u32*)0xBF10100C) | (1 << i), (u32*)0xBF10100C); 
     315+               } 
     316+       } 
     317+       lq_gpio_request(21, 0, 0, 1, "pci-reset"); 
     318+       lq_pci_req_mask = (gpio >> PCI_REQ_SHIFT) & 0x7; 
     319+} 
     320+ 
     321+static int __init 
     322+lq_pci_startup(struct lq_pci_data *conf) 
     323+{ 
     324+       u32 temp_buffer; 
     325+ 
    289326+       /* set clock to 33Mhz */ 
    290327+       lq_w32(lq_r32(LQ_CGU_IFCCR) & ~0xf00000, LQ_CGU_IFCCR); 
    291328+       lq_w32(lq_r32(LQ_CGU_IFCCR) | 0x800000, LQ_CGU_IFCCR); 
    292 +       if (external_clock) 
     329+       if (conf->clock == PCI_CLOCK_EXT) 
    293330+       { 
    294331+               lq_w32(lq_r32(LQ_CGU_IFCCR) & ~(1 << 16), LQ_CGU_IFCCR); 
     
    298335+               lq_w32((1 << 31) | (1 << 30), LQ_CGU_PCICR); 
    299336+       } 
    300 +} 
    301 + 
    302 +static void 
    303 +lq_pci_setup_gpio(void) 
    304 +{ 
    305 +       /* PCI reset line is gpio driven */ 
    306 +       lq_gpio_request(21, 0, 0, 1, "pci-reset"); 
    307 + 
    308 +       /* PCI_REQ line */ 
    309 +       lq_gpio_request(29, 1, 0, 0, "pci-req"); 
    310 + 
    311 +       /* PCI_GNT line */ 
    312 +       lq_gpio_request(30, 1, 0, 1, "pci-gnt"); 
    313 +} 
    314 + 
    315 +static int __init 
    316 +lq_pci_startup(void) 
    317 +{ 
    318 +       u32 temp_buffer; 
    319337+ 
    320338+       /* setup pci clock and gpis used by pci */ 
    321 +       lq_pci_setup_gpio(); 
     339+       lq_pci_setup_gpio(conf->gpio); 
    322340+ 
    323341+       /* enable auto-switching between PCI and EBU */ 
     
    332350+       /* enable external 2 PCI masters */ 
    333351+       temp_buffer = lq_r32(PCI_CR_PC_ARB); 
    334 +       temp_buffer &= (~(lq_pci_req_mask << 16)); 
     352+       temp_buffer &= (~((lq_pci_req_mask & 0xf) << 16)); 
     353+ 
    335354+       /* enable internal arbiter */ 
    336355+       temp_buffer |= (1 << INTERNAL_ARB_ENABLE_BIT); 
     
    356375+       lq_w32(0x19c00000, PCI_CR_FCI_ADDR_MAP7); 
    357376+       lq_w32(0x1ae00000, PCI_CR_FCI_ADDR_MAP11hg); 
     377+ 
    358378+       lq_w32(lq_calc_bar11mask(), PCI_CR_BAR11MASK); 
    359379+       lq_w32(0, PCI_CR_PCI_ADDR_MAP11); 
    360380+       lq_w32(0, PCI_CS_BASE_ADDR1); 
    361 +#ifdef CONFIG_SWAP_IO_SPACE 
     381+ 
    362382+       /* both TX and RX endian swap are enabled */ 
    363383+       lq_w32(lq_r32(PCI_CR_PCI_EOI) | 3, PCI_CR_PCI_EOI); 
    364384+       wmb (); 
    365 +#endif 
     385+ 
    366386+       /*TODO: disable BAR2 & BAR3 - why was this in the origianl infineon code */ 
    367387+       lq_w32(lq_r32(PCI_CR_BAR12MASK) | 0x80000000, PCI_CR_BAR12MASK); 
    368388+       lq_w32(lq_r32(PCI_CR_BAR13MASK) | 0x80000000, PCI_CR_BAR13MASK); 
    369 +       /*use 8 dw burst length */ 
     389+ 
     390+       /* use 8 dw burst length */ 
    370391+       lq_w32(0x303, PCI_CR_FCI_BURST_LENGTH); 
    371392+       lq_w32(lq_r32(PCI_CR_PCI_MOD) | (1 << 24), PCI_CR_PCI_MOD); 
    372393+       wmb(); 
     394+ 
     395+       /* setup irq line */ 
     396+       lq_w32(lq_r32(LQ_EBU_PCC_CON) | 0xc, LQ_EBU_PCC_CON); 
     397+       lq_w32(lq_r32(LQ_EBU_PCC_IEN) | 0x10, LQ_EBU_PCC_IEN); 
    373398+ 
    374399+       /* toggle reset pin */ 
     
    382407+int __init 
    383408+pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin){ 
    384 +       switch(slot) 
    385 +       { 
    386 +               case 13: 
    387 +                       /* IDSEL = AD29 --> USB Host Controller */ 
    388 +                       return (INT_NUM_IM1_IRL0 + 17); 
    389 +               case 14: 
    390 +                       /* IDSEL = AD30 --> mini PCI connector */ 
    391 +                       return (INT_NUM_IM0_IRL0 + 22); 
    392 +               default: 
    393 +                       printk("lq_pci: no IRQ found for slot %d, pin %d\n", slot, pin); 
    394 +                       return 0; 
    395 +       } 
     409+       if(lq_pci_irq_map[slot]) 
     410+               return lq_pci_irq_map[slot]; 
     411+       printk("lq_pci: trying to map irq for unknown slot %d\n", slot); 
     412+       return 0; 
    396413+} 
    397414+ 
     
    401418+       struct lq_pci_data *lq_pci_data = (struct lq_pci_data*) pdev->dev.platform_data; 
    402419+       extern int pci_probe_only; 
    403 + 
    404420+       pci_probe_only = 0; 
    405 +       lq_pci_req_mask = lq_pci_data->req_mask; 
    406 +       lq_pci_setup_clk(lq_pci_data->clock); 
    407 + 
    408 +       lq_pci_startup(); 
    409 +       lq_pci_mapped_cfg = 
    410 +               (u32)ioremap_nocache(LQ_PCI_CFG_BASE, LQ_PCI_CFG_BASE); 
    411 +       lq_pci_controller.io_map_base = 
    412 +               (unsigned long)ioremap(LQ_PCI_IO_BASE, LQ_PCI_IO_SIZE - 1); 
    413 + 
     421+       lq_pci_irq_map = lq_pci_data->irq; 
     422+       lq_pci_startup(lq_pci_data); 
     423+       lq_pci_mapped_cfg =  
     424+               (u32)ioremap_nocache(LQ_PCI_CFG_BASE, LQ_PCI_CFG_SIZE); 
     425+       lq_pci_controller.io_map_base = mips_io_port_base + LQ_PCI_IO_BASE; 
    414426+       register_pci_controller(&lq_pci_controller); 
    415427+       return 0; 
  • trunk/target/linux/lantiq/patches/400-mach-arv45xx.patch

    r24526 r25072  
    11--- a/arch/mips/include/asm/mach-lantiq/machine.h 
    22+++ b/arch/mips/include/asm/mach-lantiq/machine.h 
    3 @@ -11,4 +11,7 @@ 
     3@@ -11,4 +11,8 @@ 
    44        LANTIQ_MACH_EASY4010,           /* Twinpass evalkit */ 
    55        LANTIQ_MACH_EASY50712,          /* Danube evalkit */ 
     
    88+       LANTIQ_MACH_ARV452,                     /* Airties WAV-281, Arcor EasyboxA800 */ 
    99+       LANTIQ_MACH_ARV4525,            /* Speedport W502V */ 
     10+       LANTIQ_MACH_ARV752DPW22,        /* Arcor easybox a803 */ 
    1011 }; 
    1112--- a/arch/mips/lantiq/xway/Kconfig 
     
    3132--- /dev/null 
    3233+++ b/arch/mips/lantiq/xway/mach-arv45xx.c 
    33 @@ -0,0 +1,178 @@ 
     34@@ -0,0 +1,268 @@ 
    3435+/* 
    3536+ *  This program is free software; you can redistribute it and/or modify it 
     
    5960+ 
    6061+#define ARV452_LATCH_SWITCH            (1 << 10) 
     62+#define ARV752DPW22_LATCH_DEFAULT      (2) 
    6163+ 
    6264+#ifdef CONFIG_MTD_PARTITIONS 
     
    9395+}; 
    9496+ 
     97+static struct mtd_partition arv75xx_partitions[] = 
     98+{ 
     99+       { 
     100+               .name   = "uboot", 
     101+               .offset = 0x0, 
     102+               .size   = 0x40000, 
     103+       }, 
     104+       { 
     105+               .name   = "uboot_env", 
     106+               .offset = 0x40000, 
     107+               .size   = 0x10000, 
     108+       }, 
     109+       { 
     110+               .name   = "linux", 
     111+               .offset = 0x50000, 
     112+               .size   = 0x7a0000, 
     113+       }, 
     114+       { 
     115+               .name   = "board_config", 
     116+               .offset = 0x7f0000, 
     117+               .size   = 0x10000, 
     118+       }, 
     119+}; 
     120+ 
     121+static struct physmap_flash_data arv75xx_flash_data = { 
     122+#ifdef CONFIG_MTD_PARTITIONS 
     123+       .nr_parts       = ARRAY_SIZE(arv75xx_partitions), 
     124+       .parts          = arv75xx_partitions, 
     125+#endif 
     126+}; 
     127+ 
    95128+static struct lq_pci_data lq_pci_data = { 
    96129+       .clock      = PCI_CLOCK_EXT, 
    97 +       .req_mask   = 0xf, 
     130+       .gpio   = PCI_GNT1 | PCI_REQ1, 
     131+       .irq    = { 
     132+               [14] = INT_NUM_IM0_IRL0 + 22, 
     133+       }, 
    98134+}; 
    99135+ 
     
    145181+}; 
    146182+ 
     183+static struct gpio_led 
     184+arv752dpw22_leds_gpio[] __initdata = { 
     185+       { .name = "soc:blue:power", .gpio = 3, .active_low = 1, .default_trigger = "default-on" }, 
     186+       { .name = "soc:red:internet", .gpio = 5, .active_low = 1, .default_trigger = "default-on" }, 
     187+       { .name = "soc:red:power", .gpio = 6, .active_low = 1, .default_trigger = "default-on" }, 
     188+       { .name = "soc:red:wps", .gpio = 8, .active_low = 1, .default_trigger = "default-on" }, 
     189+       { .name = "soc:red:fxo", .gpio = 35, .active_low = 1, .default_trigger = "default-on" }, 
     190+       { .name = "soc:red:voice", .gpio = 36, .active_low = 1, .default_trigger = "default-on" }, 
     191+       { .name = "soc:green:usb", .gpio = 37, .active_low = 1, .default_trigger = "default-on" }, 
     192+       { .name = "soc:green:wlan", .gpio = 38, .active_low = 1, .default_trigger = "default-on" }, 
     193+       { .name = "soc:green:wlan1", .gpio = 39, .active_low = 1, .default_trigger = "default-on" }, 
     194+       { .name = "soc:blue:wlan", .gpio = 40, .active_low = 1, .default_trigger = "default-on" }, 
     195+       { .name = "soc:blue:wlan1", .gpio = 41, .active_low = 1, .default_trigger = "default-on" }, 
     196+       { .name = "soc:green:eth1", .gpio = 43, .active_low = 1, .default_trigger = "default-on" }, 
     197+       { .name = "soc:green:eth2", .gpio = 44, .active_low = 1, .default_trigger = "default-on" }, 
     198+       { .name = "soc:green:eth3", .gpio = 45, .active_low = 1, .default_trigger = "default-on" }, 
     199+       { .name = "soc:green:eth4", .gpio = 46, .active_low = 1, .default_trigger = "default-on", }, 
     200+}; 
     201+ 
    147202+static void 
    148203+arv45xx_register_ethernet(void) 
     
    151206+       memcpy_fromio(lq_eth_data.mac, 
    152207+               (void *)KSEG1ADDR(LQ_FLASH_START + ARV45XX_BRN_MAC), 6); 
     208+       lq_register_ethernet(&lq_eth_data); 
     209+} 
     210+ 
     211+static void 
     212+arv75xx_register_ethernet(void) 
     213+{ 
     214+#define ARV75XX_BRN_MAC                        0x7f0016 
     215+       memcpy_fromio(lq_eth_data.mac, 
     216+               (void *)KSEG1ADDR(LQ_FLASH_START + ARV75XX_BRN_MAC), 6); 
    153217+       lq_register_ethernet(&lq_eth_data); 
    154218+} 
     
    210274+                       "ARV4525 - Speedport W502V", 
    211275+                       arv4525_init); 
     276+ 
     277+static void __init 
     278+arv752dpw22_init(void) 
     279+{ 
     280+       lq_register_gpio(); 
     281+       lq_register_gpio_ebu(ARV752DPW22_LATCH_DEFAULT); 
     282+       lq_register_asc(0); 
     283+       lq_register_asc(1); 
     284+       lq_register_gpio_leds(arv752dpw22_leds_gpio, ARRAY_SIZE(arv752dpw22_leds_gpio)); 
     285+       lq_register_nor(&arv75xx_flash_data); 
     286+       lq_pci_data.irq[15] = (INT_NUM_IM2_IRL0 + 31); 
     287+       lq_pci_data.gpio |= PCI_EXIN1 | PCI_REQ2; 
     288+       lq_register_pci(&lq_pci_data); 
     289+       lq_register_wdt(); 
     290+       arv75xx_register_ethernet(); 
     291+       gpio_request(32, "usb-power"); 
     292+       gpio_direction_output(32, 0); 
     293+       mdelay(1); 
     294+       __gpio_set_value(32, 1); 
     295+       gpio_request(33, "relay"); 
     296+       gpio_direction_output(33, 1); 
     297+} 
     298+ 
     299+MIPS_MACHINE(LANTIQ_MACH_ARV752DPW22, 
     300+                       "ARV752DPW22", 
     301+                       "ARV752DPW22 - Arcor A803", 
     302+                       arv752dpw22_init); 
  • trunk/target/linux/lantiq/patches/700-dwc_otg.patch

    r24738 r25072  
    1558115581+{ 
    1558215582+       lq_enable_irq(resources[1].start); 
    15583 +       platform_dev.dev.platform_data = pin; 
     15583+       platform_dev.dev.platform_data = (void*) pin; 
    1558415584+       return platform_device_register(&platform_dev); 
    1558515585+} 
     
    1561315613  
    1561415614 #define ARV452_LATCH_SWITCH            (1 << 10) 
    15615   
    15616 @@ -132,6 +133,7 @@ 
     15615 #define ARV752DPW22_LATCH_DEFAULT      (2) 
     15616@@ -195,6 +196,7 @@ 
    1561715617        lq_register_pci(&lq_pci_data); 
    1561815618        lq_register_wdt(); 
     
    1562215622  
    1562315623 MIPS_MACHINE(LANTIQ_MACH_ARV4518, 
    15624 @@ -151,6 +153,7 @@ 
     15624@@ -214,6 +216,7 @@ 
    1562515625        lq_register_pci(&lq_pci_data); 
    1562615626        lq_register_wdt(); 
  • trunk/target/linux/lantiq/xway/config-default

    r24526 r25072  
     1CONFIG_AR8216_PHY=y 
    12# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set 
    23# CONFIG_CRYPTO_HW is not set 
     
    45CONFIG_HW_HAS_PCI=y 
    56CONFIG_IMAGE_CMDLINE_HACK=y 
     7# CONFIG_ISDN is not set 
    68CONFIG_LANTIQ_ETOP=y 
    79CONFIG_LANTIQ_MACH_ARV45XX=y 
     
    1618CONFIG_LOONGSON_UART_BASE=y 
    1719CONFIG_NEED_DMA_MAP_STATE=y 
     20CONFIG_RTL8306_PHY=y 
    1821CONFIG_SCSI_MOD=y 
    1922CONFIG_SOC_LANTIQ=y 
Note: See TracChangeset for help on using the changeset viewer.