source: trunk/target/linux/cns21xx/patches-3.3/301-cns21xx-mach-ns-k330.patch @ 31379

Last change on this file since 31379 was 31379, checked in by juhosg, 5 years ago

cns21xx: add support for 3.3

File size: 5.5 KB
  • arch/arm/mach-cns21xx/Kconfig

    a b  
    11if ARCH_CNS21XX 
    22 
    33menu "Cavium Networks CNS21xx based machines" 
     4 
     5config MACH_NS_K330 
     6        bool "NS-K330 NAS" 
     7        select CNS21XX_DEV_GEC 
     8        select CNS21XX_DEV_SPI_MASTER 
     9        select CNS21XX_DEV_USB 
     10        help 
     11          Say Y here if you intend to run this kernel on the 
     12          NS-K330 NAS board. 
     13 
    414endmenu 
    515 
    616config CNS21XX_DEV_GEC 
  • new file arch/arm/mach-cns21xx/mach-ns-k330.c

    - +  
     1/* 
     2 *  NS-K330 NAS board support 
     3 * 
     4 *  Copyright (c) 2010-2012 Gabor Juhos <juhosg@openwrt.org> 
     5 * 
     6 *  This file is free software; you can redistribute it and/or modify 
     7 *  it under the terms of the GNU General Public License, Version 2, as 
     8 *  published by the Free Software Foundation. 
     9 */ 
     10 
     11#include <linux/kernel.h> 
     12#include <linux/init.h> 
     13#include <linux/mtd/mtd.h> 
     14#include <linux/mtd/map.h> 
     15#include <linux/mtd/partitions.h> 
     16#include <linux/spi/spi.h> 
     17#include <linux/spi/flash.h> 
     18#include <linux/platform_device.h> 
     19#include <linux/gpio.h> 
     20#include <linux/leds.h> 
     21#include <linux/gpio_keys.h> 
     22#include <linux/input.h> 
     23 
     24#include <asm/setup.h> 
     25#include <asm/mach-types.h> 
     26#include <asm/mach/arch.h> 
     27#include <asm/mach/time.h> 
     28#include <mach/hardware.h> 
     29#include <mach/cns21xx.h> 
     30#include <mach/cns21xx_misc.h> 
     31 
     32#include "common.h" 
     33#include "dev-gec.h" 
     34 
     35#define NS_K330_GPIO_LED_LINK           1 
     36#define NS_K330_GPIO_LED_USB1           16 
     37#define NS_K330_GPIO_LED_USB2           17 
     38#define NS_K330_GPIO_LED_ETH_GREEN      22 
     39#define NS_K330_GPIO_LED_ETH_ORANGE     23 
     40 
     41#define NS_K330_GPIO_BTN_RESET          13 
     42#define NS_K330_GPIO_BTN_USB1           14 
     43#define NS_K330_GPIO_BTN_USB2           15 
     44 
     45static struct mtd_partition ns_k330_partitions[] =  { 
     46        { 
     47                .name           = "boot", 
     48                .offset         = 0x0, 
     49                .size           = 0x040000, 
     50                .mask_flags     = MTD_WRITEABLE, 
     51        }, { 
     52                .name           = "config", 
     53                .offset         = 0x040000, 
     54                .size           = 0x020000, 
     55                .mask_flags     = MTD_WRITEABLE, 
     56        }, { 
     57                .name           = "kernel", 
     58                .offset         = 0x060000, 
     59                .size           = 0x100000, 
     60        }, { 
     61                .name           = "rootfs", 
     62                .offset         = 0x160000, 
     63                .size           = 0x290000, 
     64        }, { 
     65                .name           = "firmware", 
     66                .offset         = 0x060000, 
     67                .size           = 0x390000, 
     68        }, 
     69}; 
     70 
     71static struct flash_platform_data ns_k330_flash_data = { 
     72        .parts          = ns_k330_partitions, 
     73        .nr_parts       = ARRAY_SIZE(ns_k330_partitions), 
     74}; 
     75 
     76static struct spi_board_info ns_k330_spi_board_info[] = { 
     77        { 
     78                .bus_num        = 0, 
     79                .chip_select    = 0, 
     80                .max_speed_hz   = 25000000, 
     81                .modalias       = "m25p80", 
     82                .platform_data  = &ns_k330_flash_data, 
     83        } 
     84}; 
     85 
     86static struct gpio_led ns_k330_gpio_leds[] = { 
     87        { 
     88                .name           = "ns-k330:red:link", 
     89                .gpio           = NS_K330_GPIO_LED_LINK, 
     90                .active_low     = 1, 
     91        }, { 
     92                .name           = "ns-k330:green:usb1", 
     93                .gpio           = NS_K330_GPIO_LED_USB1, 
     94                .active_low     = 1, 
     95        }, { 
     96                .name           = "ns-k330:green:usb2", 
     97                .gpio           = NS_K330_GPIO_LED_USB2, 
     98                .active_low     = 1, 
     99        }, { 
     100                .name           = "ns-k330:green:eth", 
     101                .gpio           = NS_K330_GPIO_LED_ETH_GREEN, 
     102                .active_low     = 1, 
     103        }, { 
     104                .name           = "ns-k330:orange:eth", 
     105                .gpio           = NS_K330_GPIO_LED_ETH_ORANGE, 
     106                .active_low     = 1, 
     107        } 
     108}; 
     109 
     110static struct gpio_led_platform_data ns_k330_gpio_leds_data = { 
     111        .num_leds               = ARRAY_SIZE(ns_k330_gpio_leds), 
     112        .leds                   = ns_k330_gpio_leds, 
     113}; 
     114 
     115static struct platform_device ns_k330_gpio_leds_device = { 
     116        .name                   = "leds-gpio", 
     117        .id                     = -1, 
     118        .dev.platform_data      = &ns_k330_gpio_leds_data, 
     119}; 
     120 
     121static struct gpio_keys_button ns_k330_gpio_keys[] = { 
     122        { 
     123                .code           = KEY_RESTART, 
     124                .gpio           = NS_K330_GPIO_BTN_RESET, 
     125                .desc           = "Reset Button", 
     126                .active_low     = 1, 
     127        }, 
     128        { 
     129                .code           = BTN_0, 
     130                .gpio           = NS_K330_GPIO_BTN_USB1, 
     131                .desc           = "USB1 Button", 
     132                .active_low     = 1, 
     133        }, 
     134        { 
     135                .code           = BTN_1, 
     136                .gpio           = NS_K330_GPIO_BTN_USB2, 
     137                .desc           = "USB2 Button", 
     138                .active_low     = 0, 
     139        }, 
     140}; 
     141 
     142static struct gpio_keys_platform_data ns_k330_gpio_keys_data = { 
     143        .buttons        = ns_k330_gpio_keys, 
     144        .nbuttons       = ARRAY_SIZE(ns_k330_gpio_keys), 
     145}; 
     146 
     147static struct platform_device ns_k330_gpio_keys_device = { 
     148        .name           = "gpio-keys", 
     149        .id             = -1, 
     150        .num_resources  = 0, 
     151        .dev            = { 
     152                .platform_data  = &ns_k330_gpio_keys_data, 
     153        }, 
     154}; 
     155 
     156static void __init ns_k330_fixup(struct tag *tags, char **cmdline, 
     157                                 struct meminfo *mi) 
     158{ 
     159        struct tag *t; 
     160 
     161        /* The board has 32MB of RAM mapped at 0. */ 
     162        mi->nr_banks = 1; 
     163        mi->bank[0].start = 0; 
     164        mi->bank[0].size = SZ_32M; 
     165 
     166        for (t = tags; t->hdr.size; t = tag_next(t)) { 
     167                switch (t->hdr.tag) { 
     168                case ATAG_CORE: 
     169                        if (t->u.core.rootdev == 255) 
     170                                t->u.core.rootdev = 0; 
     171                        break; 
     172                } 
     173        } 
     174} 
     175 
     176static void __init ns_k330_init(void) 
     177{ 
     178        cns21xx_gpio_init(); 
     179 
     180        HAL_MISC_DISABLE_LED012_PINS(); 
     181        HAL_MISC_DISABLE_I2C_PINS(); 
     182        HAL_MISC_DISABLE_I2S_PINS(); 
     183 
     184        cns21xx_register_uart0(); 
     185        cns21xx_register_wdt(); 
     186        cns21xx_register_usb(); 
     187        cns21xx_register_spi_master(-1, ns_k330_spi_board_info, 
     188                                    ARRAY_SIZE(ns_k330_spi_board_info)); 
     189 
     190        cns21xx_gec_data.phy_type = CNS21XX_GEC_PHY_TYPE_INTERNAL; 
     191        cns21xx_register_gec(); 
     192 
     193        platform_device_register(&ns_k330_gpio_leds_device); 
     194        platform_device_register(&ns_k330_gpio_keys_device); 
     195} 
     196 
     197MACHINE_START(NS_K330, "NS-K330 NAS") 
     198        .fixup          = ns_k330_fixup, 
     199        .map_io         = cns21xx_map_io, 
     200        .init_irq       = cns21xx_init_irq, 
     201        .timer          = &cns21xx_timer, 
     202        .init_machine   = ns_k330_init, 
     203        .restart        = cns21xx_restart, 
     204MACHINE_END 
  • arch/arm/mach-cns21xx/Makefile

    a b obj-$(CONFIG_CNS21XX_DEV_USB) += dev-us 
    1212obj-$(CONFIG_CNS21XX_DEV_SPI_MASTER)    += dev-spi-master.o 
    1313 
    1414# machine specific files 
    15  
     15obj-$(CONFIG_MACH_NS_K330)              += mach-ns-k330.o 
Note: See TracBrowser for help on using the repository browser.