Commit Graph

64 Commits

Author SHA1 Message Date
Danijel Tudek
eae6cac6a3 lantiq: add support for AVM FRITZ!Box 7362 SL
Hardware:
- SoC: Lantiq VRX288
- RAM: Winbond W971GG6JB 1 Gb (128 MiB)
- Flash:
  - SPI: 8 Mb (1 MiB) for bootloader and tffs
  - NAND: 1 Gb (128 MiB) for OS
- xDSL: Lantiq VRX208
- WLAN: Atheros AR9381
- DECT: Dialog Semiconductors SC14441

Everything except FXS/DECT works
(no drivers for AVM's FXS implementation with SC14441).

Installation via FTP:
1. Use scripts/flashing/eva_ramboot.py to send initramfs-kernel.bin
to the device when powering on.
Standard AVM procedures with finding the correct IP address and
the right moment to open FTP apply here (approx. 4 seconds on 7362SL).
IMPORTANT: set lzma compression in ramdisk options, bootloader stalls
when receiving uncompressed images.

2. Transfer sysupgrade.bin image with scp to /tmp directory
and run sysupgrade

3. First boot might take a bit longer if linux_fs_start was set to 1,
in that case the device will reboot twice, first time it will fail to load
second kernel (overwritten by ubifs), set linux_fs_start to 0 and reboot.

OpenWrt uses the entire NAND flash. Kernel uses 4 MiB and rootfs uses
the rest of 124 MiB, overwriting everything related to FRITZ!OS - both
OS images, config and answering machine/media server data.
To return to FRITZ!OS, use AVM's recovery image.

Signed-off-by: Danijel Tudek <danijel.tudek@gmail.com>
2019-03-10 16:49:31 +01:00
Andy Binder
20f48c8ae3 lantiq: add support for AVM FRITZ!Box 7412
Hardware:

SoC: Lantiq VRX 220
CPU Cores: 2x MIPS 34Kc at 500 MHz
RAM: 128 MiB 250 MHz
Storage: 128 MiB NAND flash
Ethernet: built-in Fast Ethernet switch, only port 2 is used
Wireless: Atheros AR9287-BL1A b/g/n with 2 pcb antennas
Modem: built-in A/VDSL2 modem
DECT: Dialog SC14441
LEDs: 1 two-color, 4 one-color
Buttons: 2
FXS: 1 port via TAE or RJ12 connector
Everything except FXS/DECT works
(no drivers for AVM's FXS implementation with SC14441).

Installation:

Use the eva_ramboot.py script to load an initramfs image on the
device. Run it a few seconds after turning the device on.
$ scripts/flashing eva_ramboot 192.168.178.1 bin/targets/lantiq/xrx200/openwrt-lantiq-xrx200-avm_fritz7412-initramfs-kernel.bin
If it fails to find the device try the ip address 169.254.120.1.
(Firmware updates or the recovery tool apparently change it.)

IMPORTANT: set lzma compression in ramdisk options, bootloader stalls
when receiving uncompressed images.

The device will load it in ram and boot it. You can reach it under
the openwrt default ip address 192.168.1.1.

Check if the key linux_fs_start is not set to 1 in tffs:
$ fritz_tffs_nand -d /dev/mtd1 -n linux_fs_start
If it is set to 1, the bootloader will select the wrong set of
partitions. Restart the box and install an FritzOS upgrade or do a
recovery. Afterwards start again at step 1.

Run sysupgrade to persistently install OpenWRT.

Signed-off-by: Valentin Spreckels <Valentin.Spreckels@Informatik.Uni-Oldenburg.de>
Signed-off-by: Andy Binder <AndyBinder@gmx.de>
2019-03-10 16:49:31 +01:00
Andre Heider
5d501e54fc lantiq: add integer latency stat for lantiq-dsl
The current stats always have a 'ms' suffix, and they're used by luci.
Introduce dsl.latency_[down|up] values, exported in µs without suffix.

Signed-off-by: Andre Heider <a.heider@gmail.com>
2018-12-16 00:57:19 +01:00
Mathias Kresin
0b62fe5ed8 lantiq: complete AVM FRITZ!Box 3370 support
Rename the image and use a compatible string which indicates that only
hardware revision 2 and higher is supported.

It allows to use the wireless LED, as HWRev 1 uses GPIO#39 for the
wireless LED and starting with HWRev 2 GPIO#35 is used for the wireless
LED and GPIO#39 for IFX_GPIO_MODULE_EXTPHY_MDIO.

The HWREV can be checked by connecting to the fritzbox right after power
on via ftp:

  ftp> quote GETENV HWSubRevision

Within the same HW revision 5 of the Fritz!Box 3370 different NAND flash
chips are used. Usually it isn't a big deal but depending on the used
NAND flash chip, the ECC calculation is done different (and incompatible
of course).

Boards with a Micron MT29F1G08ABADA NAND flash chip are using the NAND
chip to calculate the ECC (on-die). Boards with a Hynix HY27UF081G2M NAND
flash chip are doing the ECC calculation in software.

Supporting both with a single DTS isn't possible. It might be possible
to add a patch selecting the ECC mode dynamicaly based on the found NAND
flash chip. But such a patch has no chance to get accepted upstream and
most likely need to be touched with every kernel update.

Instead two images are created. One for Micron NAND flash chip and one
for Hynix NAND flash chip. So far no pattern is known to identify the
used flash chip without opening the box.

Add the power off GPIO. At least EVA version 2186 sets/keeps the GPIO as
input, which will cause a reboot 30sec after power on. For boards with
EVA version 2186 the installation is tricky as it has to be finished
within the 30sec time frame.

The EVA version can be checked by connecting to the fritzbox right after
power on via ftp:

  ftp> quote GETENV urlader-version

The ath9k eeprom/caldata is at a different and offset and stored in
reverse order (from the last byte to the beginning) on the flash.
Reverse the bits to bring the data into the format expected by the
ath9k driver.

Since the ath9k eeprom is stored in reverse order on flash, we can not
use the mac address from the on flash eeprom. Get the MAC address from
the tffs instead.

Within the same HW revision 5 of the Fritz!Box 3370 both version of the
vr9 SoC are used. During preparation of kernel 4.14 support, all
devicetree source files were changed to load the vr9 v1.1 and vr9 v1.2
gphy firmware, which fixed the embedded phys for boards using the
version 1.2 of the vr9 SoC.

While at it, add a trigger to make use of the LAN LED. Setup the
build-in switch and add a hint for LuCI two show the ports in order
matching the labels on the case

Add support for the second USB port and provide the volatage GPIOs. Use
GPIO#21 as PCIe reset pin. The lan led is connected to GPIO#38.

Name the rootfs partition ubi and remove the mtd/rootfs related kernel
bootargs to use the OpenWrt autoprobing based on the partition name.

Enable sysupgrade support to allow an upgrade from a running system.
Since sysupgrade wasn't supported till now, drop image build code which
was added to allow a sysupgrade from earlier OpenWrt versions.

Build images that allow an (initial) installation via EVA bootloader.

To install OpenWrt via Eva bootloader, within the first seconds after
power on a ftp connection need to be established to the FRITZ!Box at
192.168.178.1 and the the following ftp commands need to be run:

  ftp> quote USER adam2
  ftp> quote PASS adam2
  ftp> binary
  ftp> debug
  ftp> passive
  ftp> quote SETENV linux_fs_start 0
  ftp> quote MEDIA FLSH
  ftp> put /path/to/openwrt-lantiq-xrx200-FRITZ3370-eva-kernel.bin mtd1
  ftp> put /path/to/openwrt-lantiq-xrx200-FRITZ3370-eva-filesystem.bin mtd0

Signed-off-by: Andrea Merello <andrea.merello@gmail.com>
Signed-off-by: Mathias Kresin <dev@kresin.me>
2018-05-17 07:40:19 +02:00
Mathias Kresin
188328111b treewide: move nand_do_upgrade call to platform_do_upgrade
Calling nand_do_upgrade() from platform_pre_upgrade() was deprecated
with 30f61a34b4 ("base-files: always use staged sysupgrade").

Update the platform upgrade code to use platform_do_upgrade() for NAND
images as well.

Signed-off-by: Mathias Kresin <dev@kresin.me>
2018-02-16 14:44:02 +01:00
Mathias Kresin
c4ac02ffca treewide: remove obsolete sysupgrade watchdog kill
The watchdog kill command was meant for busybox watchdog. Busybox watchdog
was replaced by the procd watchdog mid 2013 with commit df7ce9301a
("busybox: disable the watchdog utility by default"), which makes the kill
command obsolete since quite some time.

Signed-off-by: Mathias Kresin <dev@kresin.me>
2018-02-16 14:44:02 +01:00
Martin Schiller
94952636e7 lantiq: remove DSL_ChipSetHWVersion from status information
The value DSL_ChipSetHWVersion is fetched from the dsl frontend
via the dsl_control service, but not really provided by the dsl
frontend firmware and for now always "UNKNOWN".

The lantiq support told us that this information wouldn't be
provided in the foreseeable future, so let's remove this
useless "UNKNOWN" information.

Signed-off-by: Martin Schiller <ms@dev.tdt.de>
2017-12-23 15:35:52 +01:00
Mathias Kresin
7f68bd8119 lantiq: use the generic board detect
Drop the target specific detection function in favour of the generic
one provided by base-files.

Signed-off-by: Mathias Kresin <dev@kresin.me>
2017-12-16 23:33:56 +01:00
Mathias Kresin
26dc65b126 lantiq: remove the former board name from device tree model
Remove the former used board name from the device model property and
use the model name as it is.

Signed-off-by: Mathias Kresin <dev@kresin.me>
2017-12-16 23:33:56 +01:00
Mathias Kresin
63d7f7fc92 lantiq: use the compatible string as board name
Use the first compatible string as board name in userspace. Add the new
board name as well as the former used board name to the image metadata
to keep compatibilty with already deployed installations.

Don't add the former used boardname for boards which exists only in
master or evaluation boards.

Signed-off-by: Mathias Kresin <dev@kresin.me>
2017-12-16 23:33:56 +01:00
Christian Lamparter
da6fdce365 base-files: unify get_dt_led helper function
Lantiq and IPQ806X (which includes IPQ40XX) both define the
same custom function {ipq806x|lantiq}_get_dt_led.

This patch moves the function into the base-file package at
lib/functions/leds.sh to make it more accessible for other
targets as well.

Cc: Mathias Kresin <dev@kresin.me>
Cc: John Crispin <john@phrozen.org>
Cc: Hannu Nyman <hannu.nyman@iki.fi>
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
2017-12-14 09:29:30 +01:00
Mathias Kresin
ac3e05c5d7 treewide: populate boardname and model earlier
For targets using the generic board detection and board specific
settings in diag.sh, the board name is still unset at the time the
set_state() provided by diag.sh is called by 10_indicate_preinit.

Change the execution order to ensure the boardname is populated before
required the first time. Do the target specific board detection as
early as possible, directly followed by the generic one to allow a
seamless switch to the generic function for populating /tmp/sysinfo/.

Signed-off-by: Mathias Kresin <dev@kresin.me>
2017-07-15 23:13:34 +02:00
Helge Mader
63a20c95fd lantiq: modified lantiq_dsl.sh status output of latency
Signed-off-by: Helge Mader <ma@dev.tdt.de>
2017-06-02 22:49:45 +02:00
Helge Mader
666dd85b36 lantiq: fix lantiq_dsl.sh status and lucistat output
Signed-off-by: Helge Mader <ma@dev.tdt.de>
2017-06-02 22:49:33 +02:00
Mathias Kresin
822ee54544 treewide: fix device tree path in scripts
The device tree is at /proc/device-tree/ without a base subdir.

Fixes: da472e5b30 ("treewide: access device tree from userspace via /proc/")

Signed-off-by: Mathias Kresin <dev@kresin.me>
2017-05-26 15:18:30 +02:00
Mathias Kresin
da472e5b30 treewide: access device tree from userspace via /proc/
Access the device tree via /proc/device-tree/ is the documented way to
access the properties. Everything else might not work in future.

Signed-off-by: Mathias Kresin <dev@kresin.me>
2017-05-26 08:04:15 +02:00
Felix Fietkau
fd93f81fd8 lantiq: remove lantiq_board_model, it is unused
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2017-03-22 11:43:22 +01:00
Felix Fietkau
7e798dab56 lantiq: remove lantiq_board_name, use the generic function instead
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2017-03-22 11:43:21 +01:00
Felix Fietkau
aa95d6cd20 lantiq: move lantiq_board_detect() to 03_preinit_board.sh
It is only used there

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2017-03-22 11:43:21 +01:00
Mathias Kresin
044a4eafd5 lantiq: introduce lantiq_is_vdsl_system
Move the code to check if the current system is a system with vdsl
support to a dedicate function to make it reusable.

Signed-off-by: Mathias Kresin <dev@kresin.me>
2017-02-18 16:51:31 +01:00
Felix Fietkau
16adf49620 lantiq: remove device specific sysupgrade image checks
Replaced by image metadata

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2016-11-20 20:08:48 +01:00
Felix Fietkau
be296745f8 lantiq: append metadata to images
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2016-11-19 11:24:10 +01:00
Mathias Kresin
0547b3ca64 lantiq: fix lantiq-dsl output spam
In case the adsl/vdsl service is disabled intentional, the output is
cluttered with the following message multiple times if the status of
the dsl line is queried:

  killall: vdsl_cpe_control: no process killed

If the dsl line status is queried by LuCI, the logfile is spammed with
the message.

Fix the issue by using killall in quite mode. In quite mode killall
still returns a non-zero value if the to be killed process can not be
found so that existing logic based on the return value still works.

Signed-off-by: Mathias Kresin <dev@kresin.me>
2016-10-11 09:31:57 +02:00
Mathias Kresin
e07c80dfc8 lantiq: use aliases device tree node for leds
The chosen node is clearly the wrong place for aliases.

Signed-off-by: Mathias Kresin <dev@kresin.me>
2016-10-05 19:23:23 +02:00
Mathias Kresin
8b639410d1 lantiq: cleanup led handling functions
Use a more generic name for the lantiq_get_dt_led_chosen function.

Drop the lantiq_is_dt_led_chosen function. The lantiq_get_dt_led
function can be used to achieve the same.

Signed-off-by: Mathias Kresin <dev@kresin.me>
2016-10-05 19:23:23 +02:00
Mathias Kresin
f080cfab72 lantiq: fix network in failsafe
So far the network in failsafe is setup only for one board. Use the
eth0 interface as lan interface for all boards for now.

If a board has its lan interface(s) on another eth, a special
handling based on the board name can be added.

Signed-off-by: Mathias Kresin <dev@kresin.me>
2016-06-22 19:32:06 +02:00
John Crispin
d5143a49b7 lantiq: add AVM image mageic to sysupgrade script
Signed-off-by: John Crispin <john@phrozen.org>
2016-06-13 22:51:43 +02:00
John Crispin
0039bc665c lantiq-dsl: add missing blank in dsl output
blank inserted before ACTATP

Signed-off-by: Florian Eckert <Eckert.Florian@googlemail.com>

SVN-Revision: 49137
2016-04-09 10:25:29 +00:00
John Crispin
c701c3ce77 lantiq-dsl: bugfix latency values swapped for lucistat
swapped wrong latency output

Signed-off-by: Florian Eckert <Eckert.Florian@googlemail.com>

SVN-Revision: 49136
2016-04-09 10:25:24 +00:00
John Crispin
7beb53b1a5 lantiq-dsl: bugfix db negative sign after comma
If db is negative minus sign was shown after comma

Signed-off-by: Florian Eckert <Eckert.Florian@googlemail.com>

SVN-Revision: 49135
2016-04-09 10:25:20 +00:00
Felix Fietkau
dc3a7131a9 lantiq: print profile name in dsl lucistat
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>

SVN-Revision: 48949
2016-03-07 11:03:44 +00:00
John Crispin
48f82b53d0 use "-gt" instead of ">" with [ in /lib/functions/lantiq_dsl.sh
Avoids inadvertent file creation when executing
`/etc/init.d/dsl_control status`.

Signed-off-by: Jonathan A. Kollasch <jakllsch@kollasch.net>

SVN-Revision: 48700
2016-02-12 08:29:44 +00:00
John Crispin
a9896bf106 lantiq: convert vendorid into human readable form
Signed-off-by: Mathias Kresin <openwrt@kresin.me>

SVN-Revision: 48046
2016-01-01 21:19:27 +00:00
John Crispin
436fdee272 lantiq: add the current profile to the stats output
Signed-off-by: Mathias Kresin <openwrt@kresin.me>

SVN-Revision: 48045
2016-01-01 21:19:21 +00:00
John Crispin
d7a5d66ea1 lantiq: use default leds defined in DTS
Remove all now double defined leds from the led board file. Use pppoe
as default for all broadband connections, since it's the default in
OpenWrt now.

Rename the the wifi leds to make sure, the not applicable default
values get overwritten.

Signed-off-by: Mathias Kresin <openwrt@kresin.me>

SVN-Revision: 48038
2016-01-01 21:18:21 +00:00
Felix Fietkau
ec1b121769 lantiq: add VDSL2 vectoring status information
Signed-off-by: Mathias Kresin <openwrt@kresin.me>

SVN-Revision: 47785
2015-12-05 09:52:42 +00:00
John Crispin
e1d585d99f lantiq: Synchronize access to the DSL command pipe
Whenever two processes were executing different commands at the same
time then one of the commands sometimes got the response of the other
command.

Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>

SVN-Revision: 47213
2015-10-19 10:08:56 +00:00
John Crispin
2fc473cf3f lantiq: bugfix wrong non pre-emptive crc errors output
This patch fixes a wrong non pre-emptive crc errors output of
dsl_control.sh status.

Signed-off-by: Luca Debernardi <luca.debernardi@gmail.com>

SVN-Revision: 47172
2015-10-11 16:23:26 +00:00
John Crispin
2210e821e1 lantiq: bugfix luci lantiq_dsl status
Signed-off-by: Florian Eckert <Eckert.Florian@googlemail.com>
Signed-off-by: Helge Mader <hmader@tdt.de>
Reported-by: Jo-Philipp Wich <jow@openwrt.org>

SVN-Revision: 47152
2015-10-07 08:00:54 +00:00
John Crispin
cea7c66ef8 lantiq: bugfix uninitialized variables
Signed-off-by: Florian Eckert <Eckert.Florian@googlemail.com>
Reported-by: Sylwester Petela <sscapi@gmail.com>

SVN-Revision: 47127
2015-10-05 10:27:55 +00:00
Rafał Miłecki
90e1b84f15 lantiq: update list on NAND devices in platform_pre_upgrade
Meanwhile BTHOMEHUBV5A board was added.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 46941
2015-09-15 11:49:33 +00:00
John Crispin
57c8708d64 lantiq: add platform_pre_upgrade for sysupgrade
As explained in recent sysupgrade/nand.sh commits, current NAND
sysupgrade is a bit misleading because of nand_do_platform_check
behavior. It leaves a special mark in /tmp/sysupgrade-nand-path
triggering some diffent code path in nand_upgrade_stage1.

The plan is to have the check function only check the image and nothing
else. Then platform code (platform_pre_upgrade) should trigger NAND
specific upgrade path. This is what this patch implements.

Please note that because of current nand_upgrade_stage1 implementation
this patch doesn't change any behaior yet. It only prepares lantiq
target for changing nand_do_platform_check (it will be possible after
preparing all other targets as well).

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 46939
2015-09-15 06:13:07 +00:00
John Crispin
06a180d027 lantiq: get more status information from xDSL
Signed-off-by: Florian Eckert <Eckert.Florian@googlemail.com>
Signed-off-by: Helge Mader <hmader@tdt.de>
Tested-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Tested-by: Andre Heider <a.heider@gmail.com>

SVN-Revision: 46917
2015-09-14 20:08:39 +00:00
John Crispin
6bdd209f15 lantiq: Add support for the BT Home Hub 5A
u-boot support depends on the next "upstream" version ([0]) from
Daniel Schwierzeck.
Since the installation process is quite complicated a "how to" was
added to the wiki: [1]

[0] https://github.com/danielschwierzeck/u-boot-lantiq/tree/openwrt/v2014.01-next
[1] http://wiki.openwrt.org/toh/bt/homehub_v5a

V2: Use the correct PCI interrupt (fixes 2.4GHz wifi)
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>

SVN-Revision: 46223
2015-07-07 13:44:53 +00:00
John Crispin
1c0c1ebc6b lantiq: td-w8970: fix failsafe mode
Fix failsafe mode for TD-W8970, register interface for preinit.

Signed-off-by: Cezary Jackiewicz <cezary.jackiewicz@gmail.com>

SVN-Revision: 44353
2015-02-09 12:14:48 +00:00
John Crispin
7f77870c19 Add profile and userspace for P2812HNUF1/3, switch from UBI_GLUEBI to UBI_BLOCK
Add profile and userspace for P2812HNUF1/3, switch from UBI_GLUEBI to UBI_BLOCK

Signed-off-by: Sylwester Petela <sscapi@gmail.com>

SVN-Revision: 43987
2015-01-17 07:07:15 +00:00
John Crispin
c9a390f9e1 lantiq: BT Home Hub 3A - userspace
BT Home Hub 3A - userspace

Signed-off-by: Ben Mulvihill <ben.mulvihill@gmail.com>

SVN-Revision: 43879
2015-01-08 20:25:48 +00:00
John Crispin
9762c54914 lantiq_dsl.sh: properly detect vdsl_cpe_control and add missing quotes
lantiq_dsl.sh didn't work with VDSL chipsets for now, fix that by
detecting whether vdsl_cpe_control or dsl_cpe_control should be used.
Also add missing quotes around shell string comparision.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>

SVN-Revision: 43101
2014-10-29 08:23:47 +00:00
John Crispin
c8bde9da4a lantiq: detect board in preinit state
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 41638
2014-07-14 07:38:52 +00:00
John Crispin
332b4d556f lantiq: generate /tmp/sysinfo/lantiq_board_name if missing
Run lantiq_board_detect from lantiq_board_name and lantiq_board_model.

This was the one thing missing from r41474 for sysupgrade board
detection to work properly.

Signed-off-by: Ben Mulvihill <ben.mulvihill@gmail.com>

SVN-Revision: 41567
2014-07-10 19:16:43 +00:00