Hi, 

First of all my apologies if I don't follow the correct procedure to the 
letter, but this is my first attempt at feeding changes into OpenWrt.

I have added support for the Oolite V1.0 AR9331 module.

I have attached a patch to the git head as of right now.  If you prefer to pull 
from git, I have made my changes public at:

https://github.com/ThingMesh/openwrt.git

in the branch "oolite" (master is identical with the openwrt master).

Hope this will get accepted and if I did any major screwups please do let me 
know.

//Lars...
diff --git a/target/linux/ar71xx/base-files/etc/diag.sh b/target/linux/ar71xx/base-files/etc/diag.sh
index dea3f81..9e46451 100755
--- a/target/linux/ar71xx/base-files/etc/diag.sh
+++ b/target/linux/ar71xx/base-files/etc/diag.sh
@@ -119,6 +119,9 @@ get_status_led() {
 	rw2458n)
 		status_led="rw2458n:green:d3"
 		;;
+	oolite)
+		status_led="oolite:red:system"
+		;;
 	tew-632brp)
 		status_led="tew-632brp:green:status"
 		;;
diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/02_network b/target/linux/ar71xx/base-files/etc/uci-defaults/02_network
index fd38ffa..b62aa6b 100755
--- a/target/linux/ar71xx/base-files/etc/uci-defaults/02_network
+++ b/target/linux/ar71xx/base-files/etc/uci-defaults/02_network
@@ -287,6 +287,7 @@ rb-750 |\
 rb-751 |\
 tew-632brp |\
 tew-712br |\
+gs-oolite |\
 tl-mr3220 |\
 tl-mr3220-v2 |\
 tl-mr3420 |\
diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh
index 81a7591..ff5a57a 100755
--- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
+++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
@@ -91,6 +91,9 @@ tplink_board_detect() {
 	hwver="v${hwver#0}"
 
 	case "$hwid" in
+	"3C0001"*)
+		model="OOLITE"
+		;;
 	"070300"*)
 		model="TP-Link TL-WR703N"
 		;;
@@ -204,6 +207,9 @@ ar71xx_board_detect() {
 	machine=$(awk 'BEGIN{FS="[ \t]+:[ \t]"} /machine/ {print $2}' /proc/cpuinfo)
 
 	case "$machine" in
+	*"Oolite V1.0")
+		name="oolite"
+		;;
 	*"AirRouter")
 		name="airrouter"
 		;;
diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
index 0028e8a..d08799e 100755
--- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
@@ -220,6 +220,7 @@ platform_check_image() {
 		;;
 
 	archer-c7 | \
+	oolite | \
 	tl-mr10u | \
 	tl-mr11u | \
 	tl-mr13u | \
diff --git a/target/linux/ar71xx/config-3.10 b/target/linux/ar71xx/config-3.10
index 9a60aeb..80dd21c 100644
--- a/target/linux/ar71xx/config-3.10
+++ b/target/linux/ar71xx/config-3.10
@@ -92,6 +92,7 @@ CONFIG_ATH79_MACH_TL_WR741ND_V4=y
 CONFIG_ATH79_MACH_TL_WR841N_V1=y
 CONFIG_ATH79_MACH_TL_WR841N_V8=y
 CONFIG_ATH79_MACH_TL_WR941ND=y
+CONFIG_ATH79_MACH_GS_OOLITE=y
 CONFIG_ATH79_MACH_UBNT=y
 CONFIG_ATH79_MACH_UBNT_XM=y
 CONFIG_ATH79_MACH_WHR_HP_G300N=y
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-gs-oolite.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-gs-oolite.c
new file mode 100755
index 0000000..7e8b386
--- /dev/null
+++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-gs-oolite.c
@@ -0,0 +1,193 @@
+/*
+ *  Oolite board support
+ *
+ *
+ *  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/gpio.h>
+
+#include <asm/mach-ath79/ath79.h>
+#include <asm/mach-ath79/ar71xx_regs.h>
+
+#include "common.h"
+#include "dev-eth.h"
+#include "dev-gpio-buttons.h"
+#include "dev-leds-gpio.h"
+#include "dev-m25p80.h"
+#include "dev-wmac.h"
+#include "machtypes.h"
+#include "dev-usb.h"
+
+#define GS_OOLITE_GPIO0			0
+#define GS_OOLITE_GPIO1			1
+#define GS_OOLITE_GPIO8			8
+#define GS_OOLITE_GPIO13			13
+#define GS_OOLITE_GPIO14			14
+#define GS_OOLITE_GPIO15			15
+#define GS_OOLITE_GPIO16			16
+#define GS_OOLITE_GPIO17			17
+#define GS_OOLITE_GPIO18			18
+#define GS_OOLITE_GPIO19			19
+#define GS_OOLITE_GPIO20			20
+#define GS_OOLITE_GPIO21			21
+#define GS_OOLITE_GPIO22			22
+#define GS_OOLITE_GPIO26			26
+
+#define GS_OOLITE_GPIO23			23
+#define GS_OOLITE_GPIO24			24
+
+#define GS_OOLITE_GPIO_BTN6		6
+#define GS_OOLITE_GPIO_BTN7		7
+#define GS_OOLITE_GPIO_BTN_RESET		11
+
+#define GS_OOLITE_GPIO_LED_SYSTEM		27
+
+#define GS_OOLITE_KEYS_POLL_INTERVAL	20	/* msecs */
+#define GS_OOLITE_KEYS_DEBOUNCE_INTERVAL (3 * GS_OOLITE_KEYS_POLL_INTERVAL)
+
+static const char *GS_OOLITE_part_probes[] = {
+	"tp-link",
+	NULL,
+};
+
+static struct flash_platform_data GS_OOLITE_flash_data = {
+	.part_probes	= GS_OOLITE_part_probes,
+};
+
+static struct gpio_led GS_OOLITE_leds_gpio[] __initdata = {
+	{
+		.name		= "oolite:red:system",
+		.gpio		= GS_OOLITE_GPIO_LED_SYSTEM,
+		.active_low	= 1,
+	},{
+		.name		= "gpio0",
+		.gpio		= GS_OOLITE_GPIO0,
+		.active_low	= 1,
+	},{
+		.name		= "gpio1",
+		.gpio		= GS_OOLITE_GPIO1,
+		.active_low	= 1,
+	},{
+		.name		= "gpio8",
+		.gpio		= GS_OOLITE_GPIO8,
+		.active_low	= 1,
+	},{
+		.name		= "gpio13",
+		.gpio		= GS_OOLITE_GPIO13,
+		.active_low	= 1,
+	},{
+		.name		= "gpio14",
+		.gpio		= GS_OOLITE_GPIO14,
+		.active_low	= 1,
+	},{
+		.name		= "gpio15",
+		.gpio		= GS_OOLITE_GPIO15,
+		.active_low	= 1,
+	},{
+		.name		= "gpio16",
+		.gpio		= GS_OOLITE_GPIO16,
+		.active_low	= 1,
+	},{
+		.name		= "gpio17",
+		.gpio		= GS_OOLITE_GPIO17,
+		.active_low	= 1,
+	},{
+		.name		= "gpio18",
+		.gpio		= GS_OOLITE_GPIO18,
+		.active_low	= 1,
+	},{
+		.name		= "gpio19",
+		.gpio		= GS_OOLITE_GPIO19,
+		.active_low	= 1,
+	},{
+		.name		= "gpio20",
+		.gpio		= GS_OOLITE_GPIO20,
+		.active_low	= 1,
+	},{
+		.name		= "gpio21",
+		.gpio		= GS_OOLITE_GPIO21,
+		.active_low	= 1,
+	},{
+		.name		= "gpio22",
+		.gpio		= GS_OOLITE_GPIO22,
+		.active_low	= 1,
+	},{
+		.name		= "gpio26",
+		.gpio		= GS_OOLITE_GPIO26,
+		.active_low	= 1,
+	},{
+		.name		= "gpio23",
+		.gpio		= GS_OOLITE_GPIO23,
+		.active_low	= 1,
+	},{
+		.name		= "gpio24",
+		.gpio		= GS_OOLITE_GPIO24,
+		.active_low	= 1,
+	},
+};
+
+static struct gpio_keys_button GS_OOLITE_gpio_keys[] __initdata = {
+	{
+		.desc		= "reset",
+		.type		= EV_KEY,
+		.code		= KEY_RESTART,
+		.debounce_interval = GS_OOLITE_KEYS_DEBOUNCE_INTERVAL,
+		.gpio		= GS_OOLITE_GPIO_BTN_RESET,
+		.active_low	= 1,
+	},
+	{
+		.desc		= "BTN_6",
+		.type		= EV_KEY,
+		.code		= BTN_6,
+		.debounce_interval = GS_OOLITE_KEYS_DEBOUNCE_INTERVAL,
+		.gpio		= GS_OOLITE_GPIO_BTN6,
+		.active_low	= 1,
+	},
+	{
+		.desc		= "BTN_7",
+		.type		= EV_KEY,
+		.code		= BTN_7,
+		.debounce_interval = GS_OOLITE_KEYS_DEBOUNCE_INTERVAL,
+		.gpio		= GS_OOLITE_GPIO_BTN7,
+		.active_low	= 1,
+	},
+};
+
+static void __init GS_OOLITE_setup(void)
+{
+	u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
+	u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
+
+	ath79_register_leds_gpio(-1, ARRAY_SIZE(GS_OOLITE_leds_gpio),
+				 GS_OOLITE_leds_gpio);
+
+	ath79_register_gpio_keys_polled(-1, GS_OOLITE_KEYS_POLL_INTERVAL,
+					ARRAY_SIZE(GS_OOLITE_gpio_keys),
+					GS_OOLITE_gpio_keys);
+
+	/*
+	ath79_gpio_function_disable(AR933X_GPIO_FUNC_ETH_SWITCH_LED0_EN |
+				     AR933X_GPIO_FUNC_ETH_SWITCH_LED1_EN |
+				     AR933X_GPIO_FUNC_ETH_SWITCH_LED2_EN |
+				     AR933X_GPIO_FUNC_ETH_SWITCH_LED3_EN |
+				     AR933X_GPIO_FUNC_ETH_SWITCH_LED4_EN);
+	*/
+
+	ath79_register_usb();
+
+	ath79_register_m25p80(&GS_OOLITE_flash_data);
+	ath79_init_mac(ath79_eth0_data.mac_addr, mac, 1);
+	ath79_init_mac(ath79_eth1_data.mac_addr, mac, -1);
+
+	ath79_register_mdio(0, 0x0);
+	ath79_register_eth(1);
+	ath79_register_eth(0);
+
+	ath79_register_wmac(ee, mac);
+}
+
+MIPS_MACHINE(ATH79_MACH_GS_OOLITE, "GS-OOLITE",
+	     "Oolite V1.0", GS_OOLITE_setup);
diff --git a/target/linux/ar71xx/generic/profiles/oolite.mk b/target/linux/ar71xx/generic/profiles/oolite.mk
new file mode 100755
index 0000000..448f08d
--- /dev/null
+++ b/target/linux/ar71xx/generic/profiles/oolite.mk
@@ -0,0 +1,18 @@
+#
+# Copyright (C) 2009 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Profile/OOLITE
+	NAME:=OOLITE
+	PACKAGES:=kmod-usb-core kmod-usb2  kmod-ledtrig-usbdev
+endef
+
+
+define Profile/OOLITE/Description
+	Package set optimized for the OOLITE.
+endef
+$(eval $(call Profile,OOLITE))
+
diff --git a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile
index 73a0ae2..cd401d0 100644
--- a/target/linux/ar71xx/image/Makefile
+++ b/target/linux/ar71xx/image/Makefile
@@ -1052,6 +1052,8 @@ $(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLWDR4310V1,tl-wdr4310-v1,TL-WDR4
 $(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLWDR4900V2,tl-wdr4900-v2,TL-WDR4900-v2,ttyS0,115200,0x49000002,1,8Mlzma))
 $(eval $(call SingleProfile,TPLINK-LZMA,64kraw,MW4530RV1,mw4530r-v1,TL-WDR4300,ttyS0,115200,0x45300001,1,8Mlzma))
 
+$(eval $(call SingleProfile,TPLINK-LZMA,64kraw,OOLITE,oolite,GS-OOLITE,ttyATH0,115200,0x3C000101,1,16Mlzma))
+
 $(eval $(call SingleProfile,UAPPRO,64k,UAPPRO,ubnt-uap-pro,UAP-PRO,ttyS0,115200,BZ,BZ,ar934x))
 
 $(eval $(call SingleProfile,UBDEV,64kraw,UBDEV01,ubdev01,UBNT-UF,ttyS0,115200,XM,XM,ar7240))
diff --git a/target/linux/ar71xx/patches-3.10/610-MIPS-ath79-openwrt-machines.patch b/target/linux/ar71xx/patches-3.10/610-MIPS-ath79-openwrt-machines.patch
index 52d5794..b58b67a 100644
--- a/target/linux/ar71xx/patches-3.10/610-MIPS-ath79-openwrt-machines.patch
+++ b/target/linux/ar71xx/patches-3.10/610-MIPS-ath79-openwrt-machines.patch
@@ -1,9 +1,10 @@
 --- a/arch/mips/ath79/machtypes.h
 +++ b/arch/mips/ath79/machtypes.h
-@@ -16,22 +16,142 @@
+@@ -16,22 +16,143 @@
  
  enum ath79_mach_type {
  	ATH79_MACH_GENERIC = 0,
++	ATH79_MACH_GS_OOLITE,           /* GS OOLITE V1.0 */
 +	ATH79_MACH_ALFA_AP96,		/* ALFA Network AP96 board */
 +	ATH79_MACH_ALFA_NX,		/* ALFA Network N2/N5 board */
 +	ATH79_MACH_ALL0258N,		/* Allnet ALL0258N */
@@ -145,10 +146,20 @@
  #endif /* _ATH79_MACHTYPE_H */
 --- a/arch/mips/ath79/Kconfig
 +++ b/arch/mips/ath79/Kconfig
-@@ -2,6 +2,61 @@ if ATH79
+@@ -2,6 +2,71 @@ if ATH79
  
  menu "Atheros AR71XX/AR724X/AR913X machine selection"
  
++config ATH79_MACH_GS_OOLITE
++       bool "OOLITE V1 support"
++       select SOC_AR71XX
++       select ARH79_DEV_ETH
++       select ARH79_DEV_GPIO_BUTTONS
++       select ATH79_DEV_LEDS_GPIO
++       select ATH79_DEV_M25P80
++       select ATH79_DEV_USB
++       select ATH79_DEV_WMAC
++
 +config ATH79_MACH_ALFA_AP96
 +	bool "ALFA Network AP96 board support"
 +	select SOC_AR71XX
@@ -1058,10 +1069,11 @@
  endif
 --- a/arch/mips/ath79/Makefile
 +++ b/arch/mips/ath79/Makefile
-@@ -38,9 +38,90 @@ obj-$(CONFIG_ATH79_ROUTERBOOT)		+= route
+@@ -38,9 +38,91 @@ obj-$(CONFIG_ATH79_ROUTERBOOT)		+= route
  #
  # Machines
  #
++obj-$(CONFIG_ATH79_MACH_GS_OOLITE)     += mach-gs-oolite.o
 +obj-$(CONFIG_ATH79_MACH_ALFA_AP96)	+= mach-alfa-ap96.o
 +obj-$(CONFIG_ATH79_MACH_ALFA_NX)	+= mach-alfa-nx.o
 +obj-$(CONFIG_ATH79_MACH_ALL0258N)	+= mach-all0258n.o
diff --git a/tools/firmware-utils/src/mktplinkfw.c b/tools/firmware-utils/src/mktplinkfw.c
index d15ca5b..b23096e 100644
--- a/tools/firmware-utils/src/mktplinkfw.c
+++ b/tools/firmware-utils/src/mktplinkfw.c
@@ -30,6 +30,7 @@
 #define ALIGN(x,a) ({ typeof(a) __a = (a); (((x) + __a - 1) & ~(__a - 1)); })
 
 #define HEADER_VERSION_V1	0x01000000
+#define HWID_GS_OOLITE_V1       0x3C000101
 #define HWID_TL_MR10U_V1	0x00100101
 #define HWID_TL_MR13U_V1	0x00130101
 #define HWID_TL_MR3020_V1	0x30200001
@@ -193,6 +194,18 @@ static struct flash_layout layouts[] = {
 		.kernel_ep	= 0xc0000000,
 		.rootfs_ofs	= 0x2a0000,
 	}, {
+                .id             = "16M",
+                .fw_max_len     = 0xfc0000,
+                .kernel_la      = 0x80060000,
+                .kernel_ep      = 0x80060000,
+                .rootfs_ofs     = 0x140000,
+        }, {
+                .id             = "16Mlzma",
+                .fw_max_len     = 0xfc0000,
+                .kernel_la      = 0x80060000,
+                .kernel_ep      = 0x80060000,
+                .rootfs_ofs     = 0x100000,
+	}, {
 		/* terminating entry */
 	}
 };
@@ -369,6 +382,11 @@ static struct board_info boards[] = {
 		.hw_rev		= 1,
 		.layout_id	= "4Mlzma",
 	}, {
+		.id             = "GS-OOLITEv1",
+                .hw_id          = HWID_GS_OOLITE_V1,
+		.hw_rev         = 1,
+                .layout_id      = "16Mlzma",
+	}, {
 		/* terminating entry */
 	}
 };
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to