~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c

Version: ~ [ linux-5.9 ] ~ [ linux-5.8.14 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.70 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.150 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.200 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.238 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.238 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.140 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.85 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  * arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c
  3  *
  4  * Marvell 88F6281 GTW GE Board Setup
  5  *
  6  * This file is licensed under the terms of the GNU General Public
  7  * License version 2.  This program is licensed "as is" without any
  8  * warranty of any kind, whether express or implied.
  9  */
 10 
 11 #include <linux/kernel.h>
 12 #include <linux/init.h>
 13 #include <linux/platform_device.h>
 14 #include <linux/pci.h>
 15 #include <linux/irq.h>
 16 #include <linux/mtd/physmap.h>
 17 #include <linux/timer.h>
 18 #include <linux/mv643xx_eth.h>
 19 #include <linux/ethtool.h>
 20 #include <linux/gpio.h>
 21 #include <linux/leds.h>
 22 #include <linux/input.h>
 23 #include <linux/gpio_keys.h>
 24 #include <linux/spi/flash.h>
 25 #include <linux/spi/spi.h>
 26 #include <net/dsa.h>
 27 #include <asm/mach-types.h>
 28 #include <asm/mach/arch.h>
 29 #include <asm/mach/pci.h>
 30 #include <mach/kirkwood.h>
 31 #include "common.h"
 32 #include "mpp.h"
 33 
 34 static struct mv643xx_eth_platform_data mv88f6281gtw_ge_ge00_data = {
 35         .phy_addr       = MV643XX_ETH_PHY_NONE,
 36         .speed          = SPEED_1000,
 37         .duplex         = DUPLEX_FULL,
 38 };
 39 
 40 static struct dsa_chip_data mv88f6281gtw_ge_switch_chip_data = {
 41         .port_names[0]  = "lan1",
 42         .port_names[1]  = "lan2",
 43         .port_names[2]  = "lan3",
 44         .port_names[3]  = "lan4",
 45         .port_names[4]  = "wan",
 46         .port_names[5]  = "cpu",
 47 };
 48 
 49 static struct dsa_platform_data mv88f6281gtw_ge_switch_plat_data = {
 50         .nr_chips       = 1,
 51         .chip           = &mv88f6281gtw_ge_switch_chip_data,
 52 };
 53 
 54 static const struct flash_platform_data mv88f6281gtw_ge_spi_slave_data = {
 55         .type           = "mx25l12805d",
 56 };
 57 
 58 static struct spi_board_info __initdata mv88f6281gtw_ge_spi_slave_info[] = {
 59         {
 60                 .modalias       = "m25p80",
 61                 .platform_data  = &mv88f6281gtw_ge_spi_slave_data,
 62                 .irq            = -1,
 63                 .max_speed_hz   = 50000000,
 64                 .bus_num        = 0,
 65                 .chip_select    = 0,
 66         },
 67 };
 68 
 69 static struct gpio_keys_button mv88f6281gtw_ge_button_pins[] = {
 70         {
 71                 .code           = KEY_RESTART,
 72                 .gpio           = 47,
 73                 .desc           = "SWR Button",
 74                 .active_low     = 1,
 75         }, {
 76                 .code           = KEY_WPS_BUTTON,
 77                 .gpio           = 46,
 78                 .desc           = "WPS Button",
 79                 .active_low     = 1,
 80         },
 81 };
 82 
 83 static struct gpio_keys_platform_data mv88f6281gtw_ge_button_data = {
 84         .buttons        = mv88f6281gtw_ge_button_pins,
 85         .nbuttons       = ARRAY_SIZE(mv88f6281gtw_ge_button_pins),
 86 };
 87 
 88 static struct platform_device mv88f6281gtw_ge_buttons = {
 89         .name           = "gpio-keys",
 90         .id             = -1,
 91         .num_resources  = 0,
 92         .dev            = {
 93                 .platform_data  = &mv88f6281gtw_ge_button_data,
 94         },
 95 };
 96 
 97 static struct gpio_led mv88f6281gtw_ge_led_pins[] = {
 98         {
 99                 .name           = "gtw:green:Status",
100                 .gpio           = 20,
101                 .active_low     = 0,
102         }, {
103                 .name           = "gtw:red:Status",
104                 .gpio           = 21,
105                 .active_low     = 0,
106         }, {
107                 .name           = "gtw:green:USB",
108                 .gpio           = 12,
109                 .active_low     = 0,
110         },
111 };
112 
113 static struct gpio_led_platform_data mv88f6281gtw_ge_led_data = {
114         .leds           = mv88f6281gtw_ge_led_pins,
115         .num_leds       = ARRAY_SIZE(mv88f6281gtw_ge_led_pins),
116 };
117 
118 static struct platform_device mv88f6281gtw_ge_leds = {
119         .name   = "leds-gpio",
120         .id     = -1,
121         .dev    = {
122                 .platform_data  = &mv88f6281gtw_ge_led_data,
123         },
124 };
125 
126 static unsigned int mv88f6281gtw_ge_mpp_config[] __initdata = {
127         MPP12_GPO,      /* Status#_USB pin  */
128         MPP20_GPIO,     /* Status#_GLED pin */
129         MPP21_GPIO,     /* Status#_RLED pin */
130         MPP46_GPIO,     /* WPS_Switch pin   */
131         MPP47_GPIO,     /* SW_Init pin      */
132         0
133 };
134 
135 static void __init mv88f6281gtw_ge_init(void)
136 {
137         /*
138          * Basic setup. Needs to be called early.
139          */
140         kirkwood_init();
141         kirkwood_mpp_conf(mv88f6281gtw_ge_mpp_config);
142 
143         kirkwood_ehci_init();
144         kirkwood_ge00_init(&mv88f6281gtw_ge_ge00_data);
145         kirkwood_ge00_switch_init(&mv88f6281gtw_ge_switch_plat_data, NO_IRQ);
146         spi_register_board_info(mv88f6281gtw_ge_spi_slave_info,
147                                 ARRAY_SIZE(mv88f6281gtw_ge_spi_slave_info));
148         kirkwood_spi_init();
149         kirkwood_uart0_init();
150         platform_device_register(&mv88f6281gtw_ge_leds);
151         platform_device_register(&mv88f6281gtw_ge_buttons);
152 }
153 
154 static int __init mv88f6281gtw_ge_pci_init(void)
155 {
156         if (machine_is_mv88f6281gtw_ge())
157                 kirkwood_pcie_init(KW_PCIE0);
158 
159         return 0;
160 }
161 subsys_initcall(mv88f6281gtw_ge_pci_init);
162 
163 MACHINE_START(MV88F6281GTW_GE, "Marvell 88F6281 GTW GE Board")
164         /* Maintainer: Lennert Buytenhek <buytenh@marvell.com> */
165         .atag_offset    = 0x100,
166         .init_machine   = mv88f6281gtw_ge_init,
167         .map_io         = kirkwood_map_io,
168         .init_early     = kirkwood_init_early,
169         .init_irq       = kirkwood_init_irq,
170         .init_time      = kirkwood_timer_init,
171         .restart        = kirkwood_restart,
172 MACHINE_END
173 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp