On 15/10/2014 10:03, Massimiliano Galanti wrote: > WNXT01/Springmole is a family of OEM boards designed by Wi-Next. This > patch adds the core files needed by openwrt to support them. See: > http://www.winext.eu http://www.springmole.com > > Signed-off-by: Massimiliano Galanti <massimiliano.galanti at winext.eu> > > --- Hi,
the patch is whitespace broken. please try to send it with git to avoid this problem John > > diff -Nur a/linux/ar71xx/patches-3.10/999-springmole-boards.patch > b/linux/ar71xx/patches-3.10/999-springmole-boards.patch > --- a/linux/ar71xx/patches-3.10/999-springmole-boards.patch 1970-01-01 > 01:00:00.000000000 +0100 > +++ b/linux/ar71xx/patches-3.10/999-springmole-boards.patch 2014-10-15 > 09:17:28.901559041 +0200 > @@ -0,0 +1,36 @@ > +--- a/arch/mips/ath79/Makefile 2013-09-26 15:29:58.425003764 +0200 > ++++ b/arch/mips/ath79/Makefile 2013-09-26 14:45:45.788877459 +0200 > +@@ -119,3 +119,4 @@ > + obj-$(CONFIG_ATH79_MACH_WZR_HP_G450H) += mach-wzr-hp-g450h.o > + obj-$(CONFIG_ATH79_MACH_ZCN_1523H) += mach-zcn-1523h.o > + obj-$(CONFIG_ATH79_MACH_CARAMBOLA2) += mach-carambola2.o > ++obj-$(CONFIG_ATH79_MACH_WNXT01) += mach-wnxt01.o mach-wnxt01lc.o > +--- a/arch/mips/ath79/Kconfig 2013-09-26 15:29:58.421003763 +0200 > ++++ b/arch/mips/ath79/Kconfig 2013-09-26 14:44:17.832873176 +0200 > +@@ -806,6 +806,15 @@ > + select ATH79_DEV_USB > + select ATH79_DEV_WMAC > + > ++config ATH79_MACH_WNXT01 > ++ bool "Springmole Boards" > ++ select SOC_AR724X > ++ select ATH79_DEV_ETH > ++ select ATH79_DEV_GPIO_BUTTONS > ++ select ATH79_DEV_LEDS_GPIO > ++ select ATH79_DEV_PB9X_PCI if PCI > ++ select ATH79_DEV_USB > ++ > + endmenu > + > + config SOC_AR71XX > +--- a/arch/mips/ath79/machtypes.h 2013-09-26 15:29:58.433003766 +0200 > ++++ b/arch/mips/ath79/machtypes.h 2013-09-26 14:45:06.356875493 +0200 > +@@ -144,6 +144,8 @@ > + ATH79_MACH_WZR_HP_G450H, /* Buffalo WZR-HP-G450H */ > + ATH79_MACH_ZCN_1523H_2, /* Zcomax ZCN-1523H-2-xx */ > + ATH79_MACH_ZCN_1523H_5, /* Zcomax ZCN-1523H-5-xx */ > ++ ATH79_MACH_WNXT01, > ++ ATH79_MACH_WNXT01LC, > + }; > + > + #endif /* _ATH79_MACHTYPE_H */ > diff -Nur a/target/linux/ar71xx/base-files/lib/ar71xx.sh > b/target/linux/ar71xx/base-files/lib/ar71xx.sh > --- a/target/linux/ar71xx/base-files/lib/ar71xx.sh 2014-10-15 > 09:24:44.217579800 +0200 > +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh 2014-10-15 > 09:17:28.937559047 +0200 > @@ -737,6 +737,12 @@ > *ZCN-1523H-5) > name="zcn-1523h-5" > ;; > + *"Wi-Next 01 Board") > + name="wnxt01" > + ;; > + *"Wi-Next 01 LC Board") > + name="wnxt01lc" > + ;; > *EmbWir-Dorin) > name="ew-dorin" > ;; > diff -Nur a/target/linux/ar71xx/files/arch/mips/ath79/mach-wnxt01.c > b/target/linux/ar71xx/files/arch/mips/ath79/mach-wnxt01.c > --- a/target/linux/ar71xx/files/arch/mips/ath79/mach-wnxt01.c > 1970-01-01 01:00:00.000000000 +0100 > +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-wnxt01.c > 2014-10-15 09:17:28.901559041 +0200 > @@ -0,0 +1,304 @@ > +/* > + * Wi-Next WNXT01 board support > + * > + * Copyright (C) 2014 Wi-Next <i...@winext.eu> > + * > + * This program is free software; you can redistribute it and/or modify it > + * under the terms of the GNU General Public License version 2 as published > + * by the Free Software Foundation. > + */ > + > +#include <linux/mtd/mtd.h> > +#include <linux/mtd/partitions.h> > + > +#include <linux/i2c.h> > +#include <linux/i2c-algo-bit.h> > +#include <linux/i2c-gpio.h> > + > +#include <linux/spi/mcp23s08.h> > +#include <linux/i2c/ads1015.h> > +//#include <linux/rtc/ds1307.h> > + > +#include <linux/spi/spi.h> > +#include <linux/spi/flash.h> > +#include <linux/spi/mmc_spi.h> > +#include <linux/mmc/host.h> > +#include <linux/platform_device.h> > +#include <linux/ar8216_platform.h> > + > +#include <asm/mach-ath79/ath79.h> > + > +#include <asm/gpio.h> > + > +#include "dev-eth.h" > +#include "dev-gpio-buttons.h" > +#include "dev-leds-gpio.h" > +#include "dev-spi.h" > +#include "dev-usb.h" > +#include "machtypes.h" > +#include "pci.h" > + > +#define WNXT01_GPIO_I2C_SDA 12 > +#define WNXT01_GPIO_I2C_SCL 14 > + > +static struct i2c_gpio_platform_data i2c_device_platdata = { > + .sda_pin = WNXT01_GPIO_I2C_SDA, > + .scl_pin = WNXT01_GPIO_I2C_SCL, > + .scl_is_output_only = 1, > +}; > + > +static struct platform_device i2c_gpio_device = { > + .name = "i2c-gpio", > + .id = 0, > + .dev = { > + .platform_data = &i2c_device_platdata, > + }, > +}; > + > +static struct mcp23s08_platform_data mcp23s08_platdata = { > + .chip = { > + { > + .is_present = 1, > + .pullups = (1 << 4 | 1 << 5), > + }, > + }, > + .base = 20, > +}; > + > +#define WNXT01_GPIO_EXP0 20 > +#define WNXT01_GPIO_EXP1 21 > +#define WNXT01_GPIO_EXP2 22 > +#define WNXT01_GPIO_EXP3 23 > + > +#define WNXT01_GPIO_BTN0 24 > +#define WNXT01_GPIO_BTN1 25 > +#define WNXT01_GPIO_SDEN 26 > +#define WNXT01_GPIO_USEN 27 > + > +static struct ads1015_platform_data ads1015_platdata = { > + .channel_data = { > + [4] = { .enabled = true, .pga = 1, .data_rate = 0 }, > + [5] = { .enabled = true, .pga = 1, .data_rate = 0 }, > + [6] = { .enabled = true, .pga = 1, .data_rate = 0 }, > + [7] = { .enabled = true, .pga = 1, .data_rate = 0 }, > + } > +}; > + > +//static struct ds1307_platform_data ds1307_platform_data = { > +// .trickle_charger_setup = 0, > +//}; > + > +static struct i2c_board_info i2c_devs[] __initdata = { > + { > + I2C_BOARD_INFO("mcp23008", 0x20), > + .platform_data = &mcp23s08_platdata, > + }, > + { > + I2C_BOARD_INFO("ads1015", 0x48), > + .platform_data = &ads1015_platdata, > + }, > + { > + I2C_BOARD_INFO("ds1339", 0x68), > + //.platform_data = &ds1307_platform_data, > + }, > +}; > + > +static struct ath79_spi_controller_data ath79_spi0_cdata = > +{ > + .cs_type = ATH79_SPI_CS_TYPE_INTERNAL, > + .cs_line = 0, > +}; > + > +static struct ath79_spi_controller_data ath79_spi1_cdata = > +{ > + .cs_type = ATH79_SPI_CS_TYPE_INTERNAL, > + .cs_line = 1, > +}; > + > +static struct flash_platform_data pb92_flash_data = { > + .name = "ar7240-nor0", > +}; > + > +#include <linux/delay.h> > +static int wnxt01_mmc_init(struct device *dev, irqreturn_t > (*isr)(int, void *), void *data) > +{ > + gpio_request(WNXT01_GPIO_SDEN, "SD power"); > + //gpio_direction_output(WNXT01_GPIO_SDEN, 0); > + > + //mdelay(500); > + gpio_direction_output(WNXT01_GPIO_SDEN, 1); > + mdelay(500); > + > + return 0; > +} > + > +static struct mmc_spi_platform_data mmc_spi_data = { > + .init = &wnxt01_mmc_init, > +// .powerup_msecs = 500, > + .caps = MMC_CAP_NONREMOVABLE, > + .ocr_mask = 0x00ffff80,//MMC_VDD_28_29 | MMC_VDD_29_30 | > MMC_VDD_30_31 |MMC_VDD_31_32 |MMC_VDD_32_33, > +}; > + > +static struct spi_board_info ath79_spi_info[] = { > + { > + .bus_num = 0, > + .chip_select = 0, > + .max_speed_hz = 25000000, > + .modalias = "s25fl129p1", > + .controller_data = &ath79_spi0_cdata, > + .platform_data = &pb92_flash_data, > + }, > + { > + .bus_num = 0, > + .chip_select = 1, > + .max_speed_hz = 5000000, > + .modalias = "mmc_spi", > + .controller_data = &ath79_spi1_cdata, > + .platform_data = &mmc_spi_data, > + } > +}; > + > +static struct ath79_spi_platform_data ath79_spi_data = { > + .bus_num = 0, > + .num_chipselect = 2, > +}; > + > +#define WNXT01_GPIO_LED_R 15 > +#define WNXT01_GPIO_LED_G 13 > +#define WNXT01_GPIO_LED_B 16 > + > +static struct gpio_led leds_gpio[] __initdata = { > + { > + .name = "wnxt01:red", > + .gpio = WNXT01_GPIO_LED_R, > + .active_low = 0, > + }, { > + .name = "wnxt01:green", > + .gpio = WNXT01_GPIO_LED_G, > + .active_low = 0, > + }, > + { > + .name = "wnxt01:blue", > + .gpio = WNXT01_GPIO_LED_B, > + .active_low = 0, > + }, > +}; > + > +#define KEYS_POLL_INTERVAL 50 /* msecs */ > +#define KEYS_DEBOUNCE_INTERVAL (3 * KEYS_POLL_INTERVAL) > + > +static struct gpio_keys_button gpio_buttons[] = { > + { > + .code = BTN_0, > + .gpio = WNXT01_GPIO_BTN0, > + .active_low = 1, > + .desc = "reset", > + .type = EV_KEY, > + .wakeup = 0, > + .debounce_interval = KEYS_DEBOUNCE_INTERVAL, > + .can_disable = 0, > + }, > + { > + .code = BTN_1, > + .gpio = WNXT01_GPIO_BTN1, > + .active_low = 1, > + .desc = "user", > + .type = EV_KEY, > + .wakeup = 0, > + .debounce_interval = KEYS_DEBOUNCE_INTERVAL, > + .can_disable = 0, > + }, > +}; > + > +static struct ar8327_pad_cfg wnxt01_ar8327_pad0_cfg = { > + .mode = AR8327_PAD_MAC_RGMII, > + .txclk_delay_en = true, > + .rxclk_delay_en = true, > + .txclk_delay_sel = AR8327_CLK_DELAY_SEL1, > + .rxclk_delay_sel = AR8327_CLK_DELAY_SEL2, > +}; > + > +/* Bit 24: enable the timing delay for the output > + * path of AR8327/AR8328. > + * Set 1 to add 2ns delay in 1000 mode. > + * (Need to enable 0xc[24] to take effect) */ > +static struct ar8327_pad_cfg wnxt01_ar8327_pad6_cfg = { > + .mode = AR8327_PAD_MAC_RGMII, > + .rxclk_delay_en = true, > +}; > + > +// TBD > +static struct ar8327_led_cfg wnxt01_ar8327_led_cfg = { > + .led_ctrl0 = 0xcf05cf05, > + .led_ctrl1 = 0xc831c831, > + .led_ctrl2 = 0xc935c935, > + .led_ctrl3 = 0x03ffff03, > + .open_drain = false, > +}; > + > +static struct ar8327_platform_data wnxt01_ar8327_data = { > + .pad0_cfg = &wnxt01_ar8327_pad0_cfg, > + .pad6_cfg = &wnxt01_ar8327_pad6_cfg, > + .port0_cfg = { > + .force_link = 1, > + .speed = AR8327_PORT_SPEED_1000, > + .duplex = 1, > + .txpause = 1, > + .rxpause = 1, > + }, > + .led_cfg = &wnxt01_ar8327_led_cfg, > +}; > + > +static struct mdio_board_info wnxt01_mdio0_info[] = { > + { > + .bus_id = "ag71xx-mdio.0", > + .phy_addr = 0, > + .platform_data = &wnxt01_ar8327_data, > + }, > +}; > + > +static void __init wnxt01_init(void) > +{ > + //u8 *mac = (u8 *) KSEG1ADDR(0x1fff0000); > + > + /* I2C Bus */ > + platform_device_register(&i2c_gpio_device); > + /* I2C devices */ > + i2c_register_board_info(0, i2c_devs, > + ARRAY_SIZE(i2c_devs)); > + > + /* GPIO Leds */ > + ath79_register_leds_gpio(-1, ARRAY_SIZE(leds_gpio), > + leds_gpio); > + > + /* GPIO Buttons */ > + ath79_register_gpio_keys_polled(-1, KEYS_POLL_INTERVAL, > ARRAY_SIZE(gpio_buttons), > + gpio_buttons); > + > + /* SPI Bus and devices */ > + ath79_register_spi(&ath79_spi_data, ath79_spi_info, > ARRAY_SIZE(ath79_spi_info)); > + > + //ath79_register_mdio(1, 0x0); > + //ath79_register_mdio(0, 0x0); > + > + mdiobus_register_board_info(wnxt01_mdio0_info, > ARRAY_SIZE(wnxt01_mdio0_info)); > + > + ath79_register_mdio(0, ~BIT(0)); > + ath79_init_mac(ath79_eth0_data.mac_addr, ath79_mac_base, 0); > + ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; > + ath79_eth0_data.speed = SPEED_1000; > + ath79_eth0_data.duplex = DUPLEX_FULL; > + ath79_eth0_data.phy_mask = BIT(0); > + ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev; > + ath79_eth0_pll_data.pll_1000 = 0x06000000; > + > + ath79_register_eth(0); > + > + /* USB Port */ > + ath79_register_usb(); > + > + /* PCI */ > + ath79_register_pci(); > +} > + > +MIPS_MACHINE(ATH79_MACH_WNXT01, "WNXT01", "Wi-Next 01 Board", wnxt01_init); > diff -Nur a/target/linux/ar71xx/files/arch/mips/ath79/mach-wnxt01lc.c > b/target/linux/ar71xx/files/arch/mips/ath79/mach-wnxt01lc.c > --- a/target/linux/ar71xx/files/arch/mips/ath79/mach-wnxt01lc.c > 1970-01-01 01:00:00.000000000 +0100 > +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-wnxt01lc.c > 2014-10-15 09:17:28.901559041 +0200 > @@ -0,0 +1,133 @@ > +/* > + * Wi-Next WNXT01 board support > + * > + * Copyright (C) 2014 Wi-Next <i...@winext.eu> > + * > + * This program is free software; you can redistribute it and/or modify it > + * under the terms of the GNU General Public License version 2 as published > + * by the Free Software Foundation. > + */ > + > +#include <linux/mtd/mtd.h> > +#include <linux/mtd/partitions.h> > + > +#include <linux/spi/spi.h> > +#include <linux/spi/flash.h> > +#include <linux/platform_device.h> > + > +#include <asm/mach-ath79/ath79.h> > + > +#include <asm/gpio.h> > + > +#include "dev-eth.h" > +#include "dev-gpio-buttons.h" > +#include "dev-leds-gpio.h" > +#include "dev-spi.h" > +#include "dev-usb.h" > +#include "machtypes.h" > +#include "pci.h" > + > +#define WNXT01_GPIO_BTN0 12 > +#define WNXT01_GPIO_BTN1 11 > +#define WNXT01_GPIO_USEN 17 > + > +static struct ath79_spi_controller_data ath79_spi0_cdata = > +{ > + .cs_type = ATH79_SPI_CS_TYPE_INTERNAL, > + .cs_line = 0, > +}; > + > +static struct flash_platform_data pb92_flash_data = { > + .name = "ar7240-nor0", > +}; > + > +static struct spi_board_info ath79_spi_info[] = { > + { > + .bus_num = 0, > + .chip_select = 0, > + .max_speed_hz = 25000000, > + .modalias = "s25fl129p1", > + .controller_data = &ath79_spi0_cdata, > + .platform_data = &pb92_flash_data, > + } > +}; > + > +static struct ath79_spi_platform_data ath79_spi_data = { > + .bus_num = 0, > + .num_chipselect = 1, > +}; > + > +#define WNXT01_GPIO_LED_R 15 > +#define WNXT01_GPIO_LED_G 13 > +#define WNXT01_GPIO_LED_B 16 > + > +static struct gpio_led leds_gpio[] __initdata = { > + { > + .name = "wnxt01:red", > + .gpio = WNXT01_GPIO_LED_R, > + .active_low = 0, > + }, { > + .name = "wnxt01:green", > + .gpio = WNXT01_GPIO_LED_G, > + .active_low = 0, > + }, > + { > + .name = "wnxt01:blue", > + .gpio = WNXT01_GPIO_LED_B, > + .active_low = 0, > + }, > +}; > + > +static struct gpio_keys_button gpio_buttons[] = { > + { > + .code = BTN_0, > + .gpio = WNXT01_GPIO_BTN0, > + .active_low = 1, > + .desc = "Reset button", > + .type = EV_KEY, > + .wakeup = 0, > + .debounce_interval = 100, > + .can_disable = 0, > + }, > + { > + .code = BTN_1, > + .gpio = WNXT01_GPIO_BTN1, > + .active_low = 1, > + .desc = "Service button", > + .type = EV_KEY, > + .wakeup = 0, > + .debounce_interval = 100, > + .can_disable = 0, > + }, > +}; > + > +static void __init wnxt01_init(void) > +{ > + /* GPIO Leds */ > + ath79_register_leds_gpio(-1, ARRAY_SIZE(leds_gpio), > + leds_gpio); > + > + /* GPIO Buttons */ > + ath79_register_gpio_keys_polled(-1, 500, ARRAY_SIZE(gpio_buttons), > + gpio_buttons); > + > + /* SPI Bus and devices */ > + ath79_register_spi(&ath79_spi_data, ath79_spi_info, > ARRAY_SIZE(ath79_spi_info)); > + > + ath79_register_mdio(0, ~BIT(4)); > + ath79_init_mac(ath79_eth0_data.mac_addr, ath79_mac_base, 0); > + ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; > + ath79_eth0_data.speed = SPEED_1000; > + ath79_eth0_data.duplex = DUPLEX_FULL; > + ath79_eth0_data.phy_mask = BIT(4); > + > + ath79_register_eth(0); > + > + /* USB Port */ > + ath79_register_usb(); > + > + /* PCI */ > + ath79_register_pci(); > +} > + > +MIPS_MACHINE(ATH79_MACH_WNXT01LC, "WNXT01LC", "Wi-Next 01 LC Board", > wnxt01_init); > _______________________________________________ > openwrt-devel mailing list > openwrt-devel@lists.openwrt.org > https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel