source: trunk/target/linux/ixp4xx/patches-3.3/150-lanready_ap1000_support.patch @ 31275

Last change on this file since 31275 was 31275, checked in by nbd, 4 years ago

ixp4xx: add support for linux 3.3.1

File size: 5.3 KB
  • new file arch/arm/mach-ixp4xx/ap1000-setup.c

    - +  
     1/* 
     2 * arch/arm/mach-ixp4xx/ap1000-setup.c 
     3 * 
     4 * Lanready AP-1000 
     5 * 
     6 * Copyright (C) 2007 Imre Kaloz <Kaloz@openwrt.org> 
     7 * 
     8 * based on ixdp425-setup.c: 
     9 *      Copyright (C) 2003-2005 MontaVista Software, Inc. 
     10 * 
     11 * Author: Imre Kaloz <Kaloz@openwrt.org> 
     12 */ 
     13 
     14#include <linux/kernel.h> 
     15#include <linux/init.h> 
     16#include <linux/device.h> 
     17#include <linux/serial.h> 
     18#include <linux/tty.h> 
     19#include <linux/serial_8250.h> 
     20#include <linux/slab.h> 
     21 
     22#include <asm/types.h> 
     23#include <asm/setup.h> 
     24#include <asm/memory.h> 
     25#include <mach/hardware.h> 
     26#include <asm/mach-types.h> 
     27#include <asm/irq.h> 
     28#include <asm/mach/arch.h> 
     29#include <asm/mach/flash.h> 
     30 
     31static struct flash_platform_data ap1000_flash_data = { 
     32        .map_name       = "cfi_probe", 
     33        .width          = 2, 
     34}; 
     35 
     36static struct resource ap1000_flash_resource = { 
     37        .flags          = IORESOURCE_MEM, 
     38}; 
     39 
     40static struct platform_device ap1000_flash = { 
     41        .name           = "IXP4XX-Flash", 
     42        .id             = 0, 
     43        .dev            = { 
     44                .platform_data = &ap1000_flash_data, 
     45        }, 
     46        .num_resources  = 1, 
     47        .resource       = &ap1000_flash_resource, 
     48}; 
     49 
     50static struct resource ap1000_uart_resources[] = { 
     51        { 
     52                .start          = IXP4XX_UART1_BASE_PHYS, 
     53                .end            = IXP4XX_UART1_BASE_PHYS + 0x0fff, 
     54                .flags          = IORESOURCE_MEM 
     55        }, 
     56        { 
     57                .start          = IXP4XX_UART2_BASE_PHYS, 
     58                .end            = IXP4XX_UART2_BASE_PHYS + 0x0fff, 
     59                .flags          = IORESOURCE_MEM 
     60        } 
     61}; 
     62 
     63static struct plat_serial8250_port ap1000_uart_data[] = { 
     64        { 
     65                .mapbase        = IXP4XX_UART1_BASE_PHYS, 
     66                .membase        = (char *)IXP4XX_UART1_BASE_VIRT + REG_OFFSET, 
     67                .irq            = IRQ_IXP4XX_UART1, 
     68                .flags          = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, 
     69                .iotype         = UPIO_MEM, 
     70                .regshift       = 2, 
     71                .uartclk        = IXP4XX_UART_XTAL, 
     72        }, 
     73        { 
     74                .mapbase        = IXP4XX_UART2_BASE_PHYS, 
     75                .membase        = (char *)IXP4XX_UART2_BASE_VIRT + REG_OFFSET, 
     76                .irq            = IRQ_IXP4XX_UART2, 
     77                .flags          = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, 
     78                .iotype         = UPIO_MEM, 
     79                .regshift       = 2, 
     80                .uartclk        = IXP4XX_UART_XTAL, 
     81        }, 
     82        { }, 
     83}; 
     84 
     85static struct platform_device ap1000_uart = { 
     86        .name                   = "serial8250", 
     87        .id                     = PLAT8250_DEV_PLATFORM, 
     88        .dev.platform_data      = ap1000_uart_data, 
     89        .num_resources          = 2, 
     90        .resource               = ap1000_uart_resources 
     91}; 
     92 
     93static struct platform_device *ap1000_devices[] __initdata = { 
     94        &ap1000_flash, 
     95        &ap1000_uart 
     96}; 
     97 
     98static char ap1000_mem_fixup[] __initdata = "mem=64M "; 
     99 
     100static void __init ap1000_fixup(struct machine_desc *desc, 
     101                struct tag *tags, char **cmdline, struct meminfo *mi) 
     102 
     103{ 
     104        struct tag *t = tags; 
     105        char *p = *cmdline; 
     106 
     107        /* Find the end of the tags table, taking note of any cmdline tag. */ 
     108        for (; t->hdr.size; t = tag_next(t)) { 
     109                if (t->hdr.tag == ATAG_CMDLINE) { 
     110                        p = t->u.cmdline.cmdline; 
     111                } 
     112        } 
     113 
     114        /* Overwrite the end of the table with a new cmdline tag. */ 
     115        t->hdr.tag = ATAG_CMDLINE; 
     116        t->hdr.size = (sizeof (struct tag_header) + 
     117                strlen(ap1000_mem_fixup) + strlen(p) + 1 + 4) >> 2; 
     118        strlcpy(t->u.cmdline.cmdline, ap1000_mem_fixup, COMMAND_LINE_SIZE); 
     119        strlcpy(t->u.cmdline.cmdline + strlen(ap1000_mem_fixup), p, 
     120                COMMAND_LINE_SIZE - strlen(ap1000_mem_fixup)); 
     121 
     122        /* Terminate the table. */ 
     123        t = tag_next(t); 
     124        t->hdr.tag = ATAG_NONE; 
     125        t->hdr.size = 0; 
     126} 
     127 
     128static void __init ap1000_init(void) 
     129{ 
     130        ixp4xx_sys_init(); 
     131 
     132        ap1000_flash_resource.start = IXP4XX_EXP_BUS_BASE(0); 
     133        ap1000_flash_resource.end = 
     134                IXP4XX_EXP_BUS_BASE(0) + ixp4xx_exp_bus_size - 1; 
     135 
     136        platform_add_devices(ap1000_devices, ARRAY_SIZE(ap1000_devices)); 
     137} 
     138 
     139#ifdef CONFIG_MACH_AP1000 
     140MACHINE_START(AP1000, "Lanready AP-1000") 
     141        /* Maintainer: Imre Kaloz <Kaloz@openwrt.org> */ 
     142        .fixup          = ap1000_fixup, 
     143        .map_io         = ixp4xx_map_io, 
     144        .init_irq       = ixp4xx_init_irq, 
     145        .timer          = &ixp4xx_timer, 
     146        .atag_offset    = 0x0100, 
     147        .init_machine   = ap1000_init, 
     148#if defined(CONFIG_PCI) 
     149        .dma_zone_size  = SZ_64M, 
     150#endif 
     151MACHINE_END 
     152#endif 
  • arch/arm/mach-ixp4xx/ixdp425-pci.c

    a b int __init ixdp425_pci_init(void) 
    7171{ 
    7272        if (machine_is_ixdp425() || machine_is_ixcdp1100() || 
    7373                        machine_is_ixdp465() || machine_is_kixrp435() || 
    74                         machine_is_compex()) 
     74                        machine_is_compex() || machine_is_ap1000()) 
    7575                pci_common_init(&ixdp425_pci); 
    7676        return 0; 
    7777} 
  • arch/arm/mach-ixp4xx/Kconfig

    a b config MACH_WRT300NV2 
    105105          WRT300N v2 router. For more information on this 
    106106          platform, see http://openwrt.org 
    107107 
     108config MACH_AP1000 
     109        bool "Lanready AP-1000" 
     110        select PCI 
     111        help 
     112          Say 'Y' here if you want your kernel to support Lanready's 
     113          AP1000 board. For more information on this 
     114          platform, see http://openwrt.org 
     115 
    108116config ARCH_IXDP425 
    109117        bool "IXDP425" 
    110118        help 
  • arch/arm/mach-ixp4xx/Makefile

    a b obj-pci-$(CONFIG_MACH_PRONGHORN) += pron 
    2323obj-pci-$(CONFIG_MACH_SIDEWINDER)       += sidewinder-pci.o 
    2424obj-pci-$(CONFIG_MACH_COMPEX)           += ixdp425-pci.o 
    2525obj-pci-$(CONFIG_MACH_WRT300NV2)                += wrt300nv2-pci.o 
     26obj-pci-$(CONFIG_MACH_AP1000)           += ixdp425-pci.o 
    2627 
    2728obj-y   += common.o 
    2829 
    obj-$(CONFIG_MACH_PRONGHORN) += pronghor 
    4748obj-$(CONFIG_MACH_SIDEWINDER)   += sidewinder-setup.o 
    4849obj-$(CONFIG_MACH_COMPEX)       += compex-setup.o 
    4950obj-$(CONFIG_MACH_WRT300NV2)    += wrt300nv2-setup.o 
     51obj-$(CONFIG_MACH_AP1000)       += ap1000-setup.o 
    5052 
    5153obj-$(CONFIG_PCI)               += $(obj-pci-$(CONFIG_PCI)) common-pci.o 
    5254obj-$(CONFIG_IXP4XX_QMGR)       += ixp4xx_qmgr.o 
Note: See TracBrowser for help on using the repository browser.