From d47b211a5a011c2e8a896ce70ab008d76cd65730 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Thu, 11 Apr 2013 19:18:07 +0000 Subject: [PATCH] [lantiq] add VG3503J support this adds basic support. the bootloader on these units is locked down. until we have a replacement we can do basic testing with these env variables in uboot. set update_openwrt erase 0xb0020000 0xb073ffff \;tftp 0x81000000 openwrt-lantiq-xway-VG3503J-squashfs.image\;cp.b 0x81000000 0xb0020000 \$(filesize) set bootcmd cp.b 0xb0020000 0x80002000 0x400000\; go 0x80002000 unfortunatley the bootloader ignores the bootcmd, so autobooting is not possible yet. you need to call "run bootcmd" by hand after each power cycle. please note that the vdsl firmware is non redistributable. you can find it in the GPL drop that BT provides. Signed-off-by: John Crispin SVN-Revision: 36315 --- target/linux/lantiq/image/Makefile | 20 +++ target/linux/lantiq/image/VG3503J.dts | 189 +++++++++++++++++++++++ target/linux/lantiq/xway/profiles/arv.mk | 8 + 3 files changed, 217 insertions(+) create mode 100644 target/linux/lantiq/image/VG3503J.dts diff --git a/target/linux/lantiq/image/Makefile b/target/linux/lantiq/image/Makefile index 45f9e142f5..a226b4db57 100644 --- a/target/linux/lantiq/image/Makefile +++ b/target/linux/lantiq/image/Makefile @@ -25,6 +25,12 @@ define PatchKernelLzma $(call CompressLzma,$(KDIR)/vmlinux-$(1),$(KDIR)/vmlinux-$(1).lzma) endef +define PatchKernelRaw + cp $(KDIR)/vmlinux $(KDIR)/vmlinux-$(1) + $(LINUX_DIR)/scripts/dtc/dtc -O dtb -o $(KDIR)/$(1).dtb ./$(1).dts + $(STAGING_DIR_HOST)/bin/patch-dtb $(KDIR)/vmlinux-$(1) $(KDIR)/$(1).dtb +endef + define MkBrnImage mkbrncmdline -i $(KDIR)/vmlinux-$(4) -o $(KDIR)/vmlinux-$(4)-brn BRN-BOOT $(6) $(call CompressLzma,$(KDIR)/vmlinux-$(4)-brn,$(KDIR)/vmlinux-$(4)-brn.lzma) @@ -70,6 +76,12 @@ define Image/BuildEVA/squashfs $(call prepare_generic_squashfs,$(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(1).image.eva) endef +define Image/BuildRaw/squashfs + dd if=$(KDIR)/vmlinux-$(2) of=$(KDIR)/vmlinux-$(2)-$(1) bs=1M conv=sync + cat $(KDIR)/vmlinux-$(2)-$(1) $(KDIR)/root.$(1) > $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(1).image + $(call prepare_generic_squashfs,$(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(1).image) +endef + define Image/BuildNANDEVA/jffs2-128k cp $(KDIR)/root.$(1) $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(1).rootfs endef @@ -95,6 +107,11 @@ define Image/BuildKernel/Template $(CP) $(KDIR)/uImage-$(1) $(BIN_DIR)/$(IMG_PREFIX)-$(1)-uImage endef +define Image/BuildKernelRaw/Template + $(call PatchKernelRaw,$(1)) + $(CP) $(KDIR)/vmlinux-$(1) $(BIN_DIR)/$(IMG_PREFIX)-$(1)-vmlinux +endef + define Image/BuildKernelEVA/Template $(call PatchKernelLzma,$(1),$(if $(2),$(2) machtype=$(1),)) $(call MkImageEVA,$(1)) @@ -196,6 +213,9 @@ Image/Build/Profile/EASY80920NOR=$(call Image/Build/$(1),$(1),EASY80920NOR) Image/BuildKernel/Profile/FRITZ3370=$(call Image/BuildKernelEVA/Template,FRITZ3370) Image/Build/Profile/FRITZ3370=$(call Image/BuildNANDEVA/$(1),$(1),FRITZ3370) +Image/BuildKernel/Profile/VG3503J=$(call Image/BuildKernelRaw/Template,VG3503J) +Image/Build/Profile/VG3503J=$(call Image/BuildRaw/$(1),$(1),VG3503J) + endif diff --git a/target/linux/lantiq/image/VG3503J.dts b/target/linux/lantiq/image/VG3503J.dts new file mode 100644 index 0000000000..cf9545484e --- /dev/null +++ b/target/linux/lantiq/image/VG3503J.dts @@ -0,0 +1,189 @@ +/dts-v1/; + +/include/ "vr9.dtsi" + +/ { + model = "VG3503J - BT OpenReach VDSL Modem"; + + chosen { + bootargs = "console=ttyLTQ0,115200 init=/etc/preinit"; + }; + + memory@0 { + reg = <0x0 0x2000000>; + }; + + fpi@10000000 { + localbus@0 { + ranges = <0 0 0x0 0x3ffffff>; + nor-boot@0 { + compatible = "lantiq,nor"; + bank-width = <2>; + reg = <0 0x0 0x2000000>; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "uboot"; + reg = <0x00000 0x20000>; + }; + + partition@20000 { + label = "kernel"; + reg = <0x20000 0x400000>; + }; + + partition@420000 { + label = "rootfs"; + reg = <0x420000 0x320000>; + }; + + partition@740000 { + label = "btagent"; + reg = <0x740000 0x80000>; + }; + + partition@7c0000 { + label = "pri_bfocus_cfg"; + reg = <0x7c0000 0x10000>; + }; + + partition@7d0000 { + label = "sec_bfocus_cfg"; + reg = <0x7d0000 0x10000>; + }; + + partition@7e0000 { + label = "sysconfig"; + reg = <0x7e0000 0x10000>; + }; + + partition@7f0000 { + label = "misc_cfg"; + reg = <0x7f0000 0x10000>; + }; + }; + }; + + gpio: pinmux@E100B10 { + pinctrl-names = "default"; + pinctrl-0 = <&state_default>; + + state_default: pinmux { + mdio { + lantiq,groups = "mdio"; + lantiq,function = "mdio"; + }; + }; + }; + + eth@E108000 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "lantiq,xrx200-net"; + reg = < 0xE108000 0x3000 /* switch */ + 0xE10B100 0x70 /* mdio */ + 0xE10B1D8 0x30 /* mii */ + 0xE10B308 0x30 /* pmac */ + >; + interrupt-parent = <&icu0>; + interrupts = <73 72>; + + lan: interface@0 { + compatible = "lantiq,xrx200-pdi"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0>; + mac-address = [ 00 11 22 33 44 55 ]; + + ethernet@2 { + compatible = "lantiq,xrx200-pdi-port"; + reg = <2>; + phy-mode = "mii"; + phy-handle = <&phy11>; + }; + ethernet@4 { + compatible = "lantiq,xrx200-pdi-port"; + reg = <4>; + phy-mode = "mii"; + phy-handle = <&phy13>; + }; + }; + + mdio@0 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "lantiq,xrx200-mdio"; + phy11: ethernet-phy@11 { + reg = <0x11>; + compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22"; + lantiq,c45-reg-init = <1 0 0 0>; + }; + phy13: ethernet-phy@13 { + reg = <0x13>; + compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22"; + lantiq,c45-reg-init = <1 0 0 0>; + }; + }; + }; + }; + + gphy-xrx200 { + compatible = "lantiq,phy-xrx200"; + firmware = "lantiq/vr9_phy22f_a1x.bin"; + phys = [ 00 01 ]; + }; + + gpio-keys-polled { + compatible = "gpio-keys-polled"; + #address-cells = <1>; + #size-cells = <0>; + poll-interval = <100>; + reset { + label = "reset"; + gpios = <&gpio 6 1>; + linux,code = <0x198>; + }; + }; + + gpio-leds { + compatible = "gpio-leds"; + + port2green { + label = "bt:green:port2"; + gpios = <&gpio 2 0>; + }; + lan2 { + label = "bt:green:lan2"; + gpios = <&gpio 5 0>; + }; + port2orange { + label = "bt:orange:port2"; + gpios = <&gpio 7 0>; + }; + power2 { + label = "power2"; + gpios = <&gpio 14 1>; + }; + dsl { + label = "dsl"; + gpios = <&gpio 19 1>; + }; + power { + label = "power"; + gpios = <&gpio 28 1>; + }; + lan1 { + label = "bt:green:lan1"; + gpios = <&gpio 44 0>; + }; + port1green { + label = "bt:green:port1"; + gpios = <&gpio 45 0>; + }; + port1orange { + label = "bt:orange:port1"; + gpios = <&gpio 47 0>; + }; + }; +}; diff --git a/target/linux/lantiq/xway/profiles/arv.mk b/target/linux/lantiq/xway/profiles/arv.mk index a4f11ca238..21311882a7 100644 --- a/target/linux/lantiq/xway/profiles/arv.mk +++ b/target/linux/lantiq/xway/profiles/arv.mk @@ -114,3 +114,11 @@ define Profile/ARV752DPW22 endef $(eval $(call Profile,ARV752DPW22)) + +define Profile/VG3503J + NAME:=BT Openreach - ECI VDSL Modem + PACKAGES:=kmod-ltq-vdsl-vr9-mei kmod-ltq-vdsl-vr9 \ + kmod-ltq-ptm-vr9 ltq-vdsl-app +endef + +$(eval $(call Profile,VG3503J)) -- 2.30.2