Author: blogic
Date: 2015-10-19 12:07:38 +0200 (Mon, 19 Oct 2015)
New Revision: 47203

Added:
   trunk/target/linux/ramips/dts/LINKIT7688.dts
   trunk/target/linux/ramips/patches-3.18/0200-linkit_bootstrap.patch
Modified:
   trunk/package/boot/uboot-envtools/files/ramips
   trunk/target/linux/ramips/base-files/etc/board.d/02_network
   trunk/target/linux/ramips/base-files/lib/ramips.sh
   trunk/target/linux/ramips/base-files/lib/upgrade/platform.sh
   trunk/target/linux/ramips/image/Makefile
   trunk/target/linux/ramips/mt7688/config-3.18
   trunk/target/linux/ramips/mt7688/profiles/01-mediatek.mk
Log:
ramips: add LinkIt Smart7688 support

Signed-off-by: John Crispin <[email protected]>

Modified: trunk/package/boot/uboot-envtools/files/ramips
===================================================================
--- trunk/package/boot/uboot-envtools/files/ramips      2015-10-18 22:27:38 UTC 
(rev 47202)
+++ trunk/package/boot/uboot-envtools/files/ramips      2015-10-19 10:07:38 UTC 
(rev 47203)
@@ -19,6 +19,7 @@
 all5002)
        ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x10000" "0x10000"
        ;;
+linkits7688 | \
 wsr-600 | \
 wsr-1166 | \
 br6425)

Modified: trunk/target/linux/ramips/base-files/etc/board.d/02_network
===================================================================
--- trunk/target/linux/ramips/base-files/etc/board.d/02_network 2015-10-18 
22:27:38 UTC (rev 47202)
+++ trunk/target/linux/ramips/base-files/etc/board.d/02_network 2015-10-19 
10:07:38 UTC (rev 47203)
@@ -46,6 +46,8 @@
        dcs-930|\
        dcs-930l-b1|\
        ht-tm02|\
+       linkits7688 | \
+       linkits7688d | \
        microwrt|\
        ncs601w|\
        w150m|\
@@ -302,6 +304,11 @@
        ht-tm02)
                lan_mac=$(cat /sys/class/net/eth0/address)
                ;;
+       linkits7688 | \
+       linkits7688d)
+               wan_mac=$(mtd_get_mac_binary factory 4)
+               lan_mac=$(mtd_get_mac_binary factory 46)
+               ;;
        m3|\
        m4|\
        x5|\

Modified: trunk/target/linux/ramips/base-files/lib/ramips.sh
===================================================================
--- trunk/target/linux/ramips/base-files/lib/ramips.sh  2015-10-18 22:27:38 UTC 
(rev 47202)
+++ trunk/target/linux/ramips/base-files/lib/ramips.sh  2015-10-19 10:07:38 UTC 
(rev 47203)
@@ -202,6 +202,15 @@
        *"M4")
                name="m4"
                ;;
+       *"MediaTek LinkIt Smart7688")
+               linkit="$(dd bs=1 skip=1024 count=12 if=/dev/mtd2 2> /dev/null)"
+               if [ "${linkit}" = "LINKITS7688D" ]; then
+                       name="linkits7688d"
+                       RAMIPS_MODEL="${machine} DUO"
+               else
+                       name="linkits7688"
+               fi
+               ;;
        *"Memory 2 Move")
                name="m2m"
                ;;

Modified: trunk/target/linux/ramips/base-files/lib/upgrade/platform.sh
===================================================================
--- trunk/target/linux/ramips/base-files/lib/upgrade/platform.sh        
2015-10-18 22:27:38 UTC (rev 47202)
+++ trunk/target/linux/ramips/base-files/lib/upgrade/platform.sh        
2015-10-19 10:07:38 UTC (rev 47203)
@@ -62,6 +62,8 @@
        ht-tm02|\
        hw550-3g|\
        ip2202|\
+       linkits7688|\
+       linkits7688d|\
        m2m|\
        m3|\
        m4|\

Added: trunk/target/linux/ramips/dts/LINKIT7688.dts
===================================================================
--- trunk/target/linux/ramips/dts/LINKIT7688.dts                                
(rev 0)
+++ trunk/target/linux/ramips/dts/LINKIT7688.dts        2015-10-19 10:07:38 UTC 
(rev 47203)
@@ -0,0 +1,173 @@
+/dts-v1/;
+
+/include/ "mt7628an.dtsi"
+
+/ {
+       compatible = "mediatek,linkit", "mediatek,mt7628an-soc";
+       model = "MediaTek LinkIt Smart7688";
+
+       chosen {
+               bootargs = "console=ttyS2,57600";
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x8000000>;
+       };
+
+       pinctrl {
+               state_default: pinctrl0 {
+                       gpio {
+                               ralink,group = "gpio";
+                               ralink,function = "gpio";
+                       };
+
+                       perst {
+                               ralink,group = "perst";
+                               ralink,function = "gpio";
+                       };
+
+                       refclk {
+                               ralink,group = "refclk";
+                               ralink,function = "gpio";
+                       };
+
+                       i2s {
+                               ralink,group = "i2s";
+                               ralink,function = "gpio";
+                       };
+
+                       spis {
+                               ralink,group = "spis";
+                               ralink,function = "gpio";
+                       };
+
+                       wled_kn {
+                               ralink,group = "wled_kn";
+                               ralink,function = "gpio";
+                       };
+
+                       wled_an {
+                               ralink,group = "wled_an";
+                               ralink,function = "wled_an";
+                       };
+
+                       wdt {
+                               ralink,group = "wdt";
+                               ralink,function = "gpio";
+                       };
+               };
+       };
+
+       palmbus@10000000 {
+               spi@b00 {
+                       status = "okay";
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&spi_pins>, <&spi_cs1_pins>;
+
+                       m25p80@0 {
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               compatible = "mx25l25635e";
+                               reg = <0 0>;
+                               linux,modalias = "m25p80", "mx25l25635e";
+                               spi-max-frequency = <40000000>;
+                               m25p,chunked-io = <31>;
+
+                               partition@0 {
+                                       label = "u-boot";
+                                       reg = <0x0 0x30000>;
+                                       read-only;
+                               };
+
+                               partition@30000 {
+                                       label = "u-boot-env";
+                                       reg = <0x30000 0x10000>;
+                               };
+
+                               factory: partition@40000 {
+                                       label = "factory";
+                                       reg = <0x40000 0x10000>;
+                                       read-only;
+                               };
+
+                               partition@50000 {
+                                       label = "firmware";
+                                       reg = <0x50000 0x1fb0000>;
+                               };
+                       };
+
+                       spidev@1 {
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               compatible = "spidev";
+                               reg = <1 0>;
+                               spi-max-frequency = <40000000>;
+                       };
+               };
+
+               i2c@900 {
+                       status = "okay";
+               };
+
+               uart1@d00 {
+                       status = "okay";
+               };
+
+               uart2@e00 {
+                       status = "okay";
+               };
+
+               pwm@5000 {
+                       status = "okay";
+               };
+       };
+
+       ethernet@10100000 {
+               mtd-mac-address = <&factory 0x28>;
+       };
+
+       sdhci@10130000 {
+               status = "okay";
+               mediatek,cd-high;
+       };
+
+       bootstrap {
+               compatible = "mediatek,linkit";
+
+               status = "okay";
+       };
+
+       gpio-leds {
+               compatible = "gpio-leds";
+       
+               wifi {
+                       label = "mediatek:orange:wifi";
+                       gpios = <&wgpio 0 0>;
+                       default-state = "on";
+               };
+       };
+
+       gpio-keys-polled {
+               compatible = "gpio-keys-polled";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               poll-interval = <20>;
+       
+               wps {
+                       label = "reset";
+                       gpios = <&gpio1 6 1>;
+                       linux,code = <0x211>;
+               };
+       };
+
+       wgpio: gpio-wifi {
+               compatible = "mediatek,gpio-wifi";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+};

Modified: trunk/target/linux/ramips/image/Makefile
===================================================================
--- trunk/target/linux/ramips/image/Makefile    2015-10-18 22:27:38 UTC (rev 
47202)
+++ trunk/target/linux/ramips/image/Makefile    2015-10-19 10:07:38 UTC (rev 
47203)
@@ -201,6 +201,10 @@
 BuildFirmware/Default16M/squashfs=$(call 
BuildFirmware/OF,$(1),$(2),$(3),$(ralink_default_fw_size_16M),$(4))
 BuildFirmware/Default16M/initramfs=$(call 
BuildFirmware/OF/initramfs,$(1),$(2),$(3),$(4))
 
+ralink_default_fw_size_32M=33226752
+BuildFirmware/Default32M/squashfs=$(call 
BuildFirmware/OF,$(1),$(2),$(3),$(ralink_default_fw_size_32M),$(4))
+BuildFirmware/Default32M/initramfs=$(call 
BuildFirmware/OF/initramfs,$(1),$(2),$(3),$(4))
+
 # Build images for a custom sized flash layout
 # $(1) = squashfs/initramfs
 # $(2) = lowercase board name
@@ -1014,10 +1018,12 @@
 #
 
 Image/Build/Profile/mt7688=$(call 
BuildFirmware/Default16M/$(1),$(1),mt7688,MT7688)
+Image/Build/Profile/LinkIt7688=$(call 
BuildFirmware/Default32M/$(1),$(1),LinkIt7688,LINKIT7688)
 
 ifeq ($(SUBTARGET),mt7688)
 define Image/Build/Profile/Default
        $(call Image/Build/Profile/mt7688,$(1))
+       $(call Image/Build/Profile/LinkIt7688,$(1))
 endef
 endif
 

Modified: trunk/target/linux/ramips/mt7688/config-3.18
===================================================================
--- trunk/target/linux/ramips/mt7688/config-3.18        2015-10-18 22:27:38 UTC 
(rev 47202)
+++ trunk/target/linux/ramips/mt7688/config-3.18        2015-10-19 10:07:38 UTC 
(rev 47203)
@@ -103,6 +103,7 @@
 CONFIG_IRQ_INTC=y
 CONFIG_IRQ_WORK=y
 CONFIG_LIBFDT=y
+CONFIG_LINKIT_BOOTSTRAP=y
 CONFIG_MDIO_BOARDINFO=y
 CONFIG_MIPS=y
 CONFIG_MIPS_FPU_EMULATOR=y
@@ -149,6 +150,10 @@
 CONFIG_PINCTRL_RT2880=y
 # CONFIG_PINCTRL_SINGLE is not set
 # CONFIG_PREEMPT_RCU is not set
+CONFIG_PWM=y
+# CONFIG_PWM_FSL_FTM is not set
+CONFIG_PWM_MEDIATEK=y
+CONFIG_PWM_SYSFS=y
 CONFIG_RALINK=y
 # CONFIG_RALINK_WDT is not set
 # CONFIG_RCU_STALL_COMMON is not set
@@ -165,10 +170,13 @@
 # CONFIG_SOC_RT288X is not set
 # CONFIG_SOC_RT305X is not set
 # CONFIG_SOC_RT3883 is not set
+# CONFIG_SND_MT76XX_SOC_MT7620 is not set
+CONFIG_SND_MT76XX_SOC_MT7628=y
 CONFIG_SPI=y
 CONFIG_SPI_MASTER=y
 CONFIG_SPI_MT7621=y
 # CONFIG_SPI_RT2880 is not set
+CONFIG_SPI_SPIDEV=y
 CONFIG_SWCONFIG=y
 CONFIG_SYS_HAS_CPU_MIPS32_R1=y
 CONFIG_SYS_HAS_CPU_MIPS32_R2=y

Modified: trunk/target/linux/ramips/mt7688/profiles/01-mediatek.mk
===================================================================
--- trunk/target/linux/ramips/mt7688/profiles/01-mediatek.mk    2015-10-18 
22:27:38 UTC (rev 47202)
+++ trunk/target/linux/ramips/mt7688/profiles/01-mediatek.mk    2015-10-19 
10:07:38 UTC (rev 47203)
@@ -16,3 +16,15 @@
        Default package set compatible with most boards.
 endef
 $(eval $(call Profile,mt7688))
+
+define Profile/LinkIt7688
+       NAME:=LinkIt7688
+       PACKAGES:=\
+               kmod-usb-core kmod-usb2 kmod-usb-ohci \
+               uboot-envtools kmod-ledtrig-netdev
+endef
+
+define Profile/LinkIt7688/Description
+       Default package set compatible with LinkIt Smart7688 dev board.
+endef
+$(eval $(call Profile,LinkIt7688))

Added: trunk/target/linux/ramips/patches-3.18/0200-linkit_bootstrap.patch
===================================================================
--- trunk/target/linux/ramips/patches-3.18/0200-linkit_bootstrap.patch          
                (rev 0)
+++ trunk/target/linux/ramips/patches-3.18/0200-linkit_bootstrap.patch  
2015-10-19 10:07:38 UTC (rev 47203)
@@ -0,0 +1,94 @@
+--- a/drivers/misc/Makefile
++++ b/drivers/misc/Makefile
+@@ -56,3 +56,4 @@
+ obj-$(CONFIG_ECHO)            += echo/
+ obj-$(CONFIG_VEXPRESS_SYSCFG) += vexpress-syscfg.o
+ obj-$(CONFIG_CXL_BASE)                += cxl/
++obj-$(CONFIG_SOC_MT7620)      += linkit.o
+--- /dev/null
++++ b/drivers/misc/linkit.c
+@@ -0,0 +1,84 @@
++/*
++ *  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
++ *  publishhed by the Free Software Foundation.
++ *
++ *  Copyright (C) 2015 John Crispin <[email protected]>
++ */
++
++#include <linux/module.h>
++#include <linux/platform_device.h>
++#include <linux/of.h>
++#include <linux/mtd/mtd.h>
++#include <linux/gpio.h>
++
++#define LINKIT_LATCH_GPIO     11
++
++struct linkit_hw_data {
++      char board[16];
++      char rev[16];
++};
++
++static void sanify_string(char *s)
++{
++      int i;
++
++      for (i = 0; i < 15; i++)
++              if (s[i] <= 0x20)
++                      s[i] = '\0';
++      s[15] = '\0';
++}
++
++static int linkit_probe(struct platform_device *pdev)
++{
++      struct linkit_hw_data hw;
++      struct mtd_info *mtd;
++      size_t retlen;
++      int ret;
++
++      mtd = get_mtd_device_nm("factory");
++      if (IS_ERR(mtd))
++              return PTR_ERR(mtd);
++
++      ret = mtd_read(mtd, 0x400, sizeof(hw), &retlen, (u_char *) &hw);
++      put_mtd_device(mtd);
++
++      sanify_string(hw.board);
++      sanify_string(hw.rev);
++
++      dev_info(&pdev->dev, "Version  : %s\n", hw.board);
++      dev_info(&pdev->dev, "Revision : %s\n", hw.rev);
++
++      if (!strcmp(hw.board, "LINKITS7688")) {
++              dev_info(&pdev->dev, "setting up bootstrap latch\n");
++
++              if (devm_gpio_request(&pdev->dev, LINKIT_LATCH_GPIO, 
"bootstrap")) {
++                      dev_err(&pdev->dev, "failed to setup bootstrap gpio\n");
++                      return -1;
++              }
++              gpio_direction_output(LINKIT_LATCH_GPIO, 0);
++      }
++
++      return 0;
++}
++
++static const struct of_device_id linkit_match[] = {
++      { .compatible = "mediatek,linkit" },
++      {},
++};
++MODULE_DEVICE_TABLE(of, linkit_match);
++
++static struct platform_driver linkit_driver = {
++      .probe = linkit_probe,
++      .driver = {
++              .name = "mtk-linkit",
++              .owner = THIS_MODULE,
++              .of_match_table = linkit_match,
++      },
++};
++
++int __init linkit_init(void)
++{
++      return platform_driver_register(&linkit_driver);
++}
++late_initcall_sync(linkit_init);
_______________________________________________
openwrt-commits mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-commits

Reply via email to