Commit Graph

27 Commits

Author SHA1 Message Date
Dan Brown
6ee3680614 octeon: add new target and support for Ubiquiti EdgeRouter 6P
Ubiquiti EdgeRouter 6P is 6 port router with similar
specifications as the EdgeRouter 4, support for which was added
in commit dd651e54cc

There are five 10/100/1000 Mbps RJ/Copper ports and
one 1000 Mbps SFP port.

SoC: Octeon Cavium 7130 (Cavium 3) at 1000MHz
Memory: 1GiB DDR3
Flash: 2x2M chips with uboots (chainloaded) + 512K eeprom
LEDs: 1x for power status (white/blue, controllable)
  and 6x for ethernet and SFP ports (no control over them)
Buttons: 1x Reset
Serial: 1x RJ45 port on front panel. 115200 baud, 8N1
USB: 1x USB3.0 on front panel
MII: 1x QSGMII from SoC
PHY: 1x Vitesse VSC8504 of which 4 ports are used (phys 4-7)
     1x Vitesse VSC8514 of which 2 ports are used (phys 8-9)

Network port mapping
 - eth0 on device maps to lan0 and phy5
 - eth1 on device maps to lan1 and phy6
 - eth2 on device maps to lan2 and phy7
 - eth3 on device maps to lan3 and phy8
 - eth4 on device maps to lan4 and phy9
 - eth5 (SFP) on device maps to lan5 and phy4

What is not working:
 - There is no port status available before it goes up
 - SFP have no additional status and presented as no different from eth
 - Power-over-ethernet (passive) support has not been tested

How to flash the firmware:
  - copy openwrt-octeon-ubnt_edgerouter-6p-initramfs-kernel.bin and
    openwrt-octeon-ubnt_edgerouter-6p-squashfs-sysupgrade.tar to
    USB flash drive that is formatted to vfat/fat32
  - connect USB flash drive to EdgeRouter 6P front USB port
  - connect serial cable using front RJ45 port (115200 baud, 8N1)
  - connect power to cable to EdgeRouter 6P
  - connect terminal to the console to see uboot boot process
  - interrupt boot by pressing button(s) on your keyboard to log
    in to the uboot
  - detect usb connected flash drives by typing to the console:
    usb start
  - after drive is detected load initramfs+kernel to the memory by typing:
    fatload usb 0:1 0x20000000 openwrt-octeon-ubnt_edgerouter-6p-initramfs-kernel.bin
  - after initramfs+kernel is loaded to the memory load it by typing:
    bootoctlinux 0 numcores=4 endbootargs mem=0
  - boot process should finish and you will be greeted with console
    after pressing enter
  - create directory to mount usb flash drive to by typing:
    mkdir /tmp/sda
  - mount flash drive to that directory by typing:
    mount /dev/sda1 /tmp/sda
  - flash firmware to router internal storage by typing:
    sysupgrade /tmp/sda/openwrt-octeon-ubnt_edgerouter-6p-squashfs-sysupgrade.tar
  - device will reboot and after it gets up you will have
    edgerouter 6p running openwrt

Signed-off-by: Dan Brown <danbrown@gmail.com>
[reorder/squash patches, move ethernet@0 to DTS, share image setup]
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
2021-05-17 01:01:26 +02:00
Roman Kuzmitskii
dd651e54cc octeon: add support for Ubiquiti EdgeRouter 4
Ubiquiti EdgeRouter 4 is 4 port Octeon Cavium 7130 powered router.
It has internal power supply and needs c13 power cord.
There are three 10/100/1000 Mbps RJ45/Copper ports and
one 1000 Mbps SFP port connected directly to a SoC.

SoC:
  Octeon Cavium 7130 (Cavium 3)
  Clocked at 1000Mhz

Memory:
  1 GiB (SK hynix H5TQ4G63CFR-RDC × 2)
  DDR3, clocked at 533 Mhz (1066Mhz effective)
Flash:
  - mtd:
    8 MiB (Macronix MX25L6408EMI-12G)
    used for uboot/eeprom
  - emmc:
    4 GiB (SanDisk SDIN7DP2-4G)
    used for kernel+rootfs
Leds: 1x for power status (white/blue, controllable)
  and 4x for ethernet and sfp ports (no control over them)
Buttons: 1x Reset (from SOC)
Serial: 1x RJ45 port on front panel. 115200 baud, 8N1 (from SoC)
USB: 1x USB3.0 on front panel (from SoC)
MII: 1x QSGMII from SoC is used
PHY: 1x Vitesse VSC8504 of which 4x ports is used

All physical port numbers are properly mapped inside OS and
named by lanX instead of ethX.

There is also special purpose four(4) loopX ports available.
That loopX ports are currently hardcoded by linux kernel
and exact use case of them is currently unknown. We leave them
to the linux kernel and octeon board defaults.

All four (4) physical ports are connected to the same QSGMII.
vsc8504 is used for phys and only 4, 5, 6 and 7 phys are used.

Phy mapping:
 - Phy5 is connected to physical eth0 port
 - Phy6 is connected to physical eth1 port
 - Phy7 is connected to physical eth2 port
 - Phy4 is connected to physical eth3 port

Why this device needs external dts:
 - faster boot time since need to initialize less device tree nodes.
 - to add actual indication with LED about boot/failure/upgrade.
   i.e. user could know when to enter failsafe mode or if upgrade is done
 - reset button support so user can reset their device in case off failure
 - sfp port indication in dmesg with information about sfp module
   it also indicates when module inserted or removed

Octeon quirks:
 - There is no port status available before it interface brought up
 - SFP port can not be tied to actual phy due to octeon-ethernet state
   and currently we can only get reports a about SFP state in dmesg

How to flash the firmware:
  - copy openwrt-octeon-ubnt_edgerouter-4-initramfs-kernel.bin and
    openwrt-octeon-ubnt_edgerouter-4-squashfs-sysupgrade.tar to
    USB flash drive that is formatted to vfat/fat32
  - connect USB flash drive to edgerouter 4 front USB port
  - connect serial cable using front RJ45 port (115200 baud, 8N1)
  - connect power to cable to edgerouter 4
  - connect terminal to the console to see uboot boot process
  - interrupt boot by pressing button(s) on your keyboard to log in to the uboot
  - detect usb connected flash drives by typing to the console:
    usb start
  - after drive is detected load initramfs+kernel to the memory by typing:
    fatload usb 0:1 0x20000000 openwrt-octeon-ubnt_edgerouter-4-initramfs-kernel.bin
  - after initramfs+kernel is loaded to the memory load it by typing:
    bootoctlinux 0 numcores=4 endbootargs mem=0
  - boot process should finish and you will be greeted with console after pressing enter
  - create directory to mount usb flash drive to by typing:
    mkdir /tmp/sda
  - mount flash drive to that directory by typing:
    mount /dev/sda1 /tmp/sda
  - flash firmware to router internal storage by typing:
    sysupgrade /tmp/sda/openwrt-octeon-ubnt_edgerouter-4-squashfs-sysupgrade.tar
  - device will reboot and after it gets up you will have edgerouter 4 running openwrt

Reviewed-by: Johannes Kimmel <fff@bareminimum.eu>
Tested-by: Johannes Kimmel <fff@bareminimum.eu>
Signed-off-by: Roman Kuzmitskii <damex.pp@icloud.com>
2020-11-05 19:29:48 +00:00
Roman Kuzmitskii
733700c652 octeon: use dedicated function to move config backup
All octeon devices use the same or a very similar way to backup
and restore configuration.

We expect to have more devices added and in order to stop
repeating ourselves move the logic to a separate function.

While at it, add a few checks.

Signed-off-by: Roman Kuzmitskii <damex.pp@icloud.com>
[commit message facelift]
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
2020-10-26 21:07:22 +01:00
Felix Fietkau
4a0688ed71 base-files: remove block2mtd checks from sysupgrade
This hasn't been used in a long time

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-10-17 16:43:17 +02:00
Donald Hoskins
eadb1a9437 octeon: add support for Itus Shield Router
Itus Networks Shield - 1Ghz dual-core mips64 / Cavium Octeon 3 SoC,
1Gb RAM, 4Gb eMMC,3 GbE 10/100/1000 ports

Information regarding device can be found:
https://deviwiki.com/wiki/Itus_Networks_Shield_Pro

Installing OpenWrt on Itus Networks Shield:

1) Boot Shield
2) On device: mount /dev/mmcblk1p1 /mnt
3) scp openwrt-octeon-itus,shield-router-initramfs-kernel.bin to
   /mnt/ItusrouterImage
3a) Optionally: scp openwrt-octeon-itus,shield-router-initramfs-kernel.bin
    to /mnt/ItusgatewayImage to allow you to have an emergency recovery
    boot in the GATEWAY slot - this slot will have no permament storage and
    is used for emergency recovery only when booted in the (G)ateway
    position
4) On device: umount /mnt
5) reboot

Once booted, run the sysupgrade via cli or luCi on the
openwrt-octeon-itus,shield-router-squashfs-sysupgrade.tar file the mode
you are running.

Once rebooted, the system installation is complete. Your storage partition
for the mode is inialized and set.

Signed-off-by: Donald Hoskins <grommish@gmail.com>
[cut out sysupgrade-* changes, move a few lines,
drop case CVMX_BOARD_TYPE_ITUS_SHIELD]
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
2020-08-16 02:15:06 +02:00
Donald Hoskins
591767fc01 octeon: determine sysupgrade-* directory for upgrade automatically
So far, the sysupgrade-* folder used during upgrade in octeon was
hardcoded to contain the board name. Therefore, changing board name
or BOARD_NAME variable in image/Makefile might have broken upgrade.

Improve this by adding a step to determine the folder name via
a wildcard, as it is done for generic nand_upgrade_tar() in
lib/upgrade/nand.sh.

While this still does not remove the problem for existing devices
(which still have the old script), it will entirely remove the
issue on newly added devices on this platform.

Signed-off-by: Donald Hoskins <grommish@gmail.com>
[split into separate patch, add commit message, add return values]
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
2020-08-16 02:14:34 +02:00
Adrian Schmutzler
48c1fdd046 treewide: drop shebang from non-executable target files
This drops the shebang from all target files for /lib and
/etc/uci-defaults folders, as these are sourced and the shebang
is useless.

While at it, fix the executable flag on a few of these files.

This does not touch ar71xx, as this target is just used for
backporting now and applying cosmetic changes would just complicate
things.

Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
2020-06-16 14:26:33 +02:00
Stijn Tintel
291d79935e octeon: fix sysupgrade
Sysupgrade was failing due to incorrect replacement of backticks:
/sbin/sysupgrade: /lib/upgrade/platform.sh: line 101: syntax error: missing '))'

Fixes: 0bbfc3dff7 ("octeon: replace backticks by $(...)")
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
2019-11-30 20:19:12 +02:00
Adrian Schmutzler
0bbfc3dff7 octeon: replace backticks by $(...)
This replaces deprecated backticks by more versatile $(...) syntax.

Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
[decapitalized patch subject at submitter's request]
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
2019-09-29 00:46:13 +02:00
Rafał Miłecki
641f6b6c26 treewide: use new procd sysupgrade $UPGRADE_BACKUP variable
It's a variable set by procd that should replace hardcoded
/tmp/sysupgrade.tgz.

This change requires the most recent procd with the commit 0f3c136
("sysupgrade: set UPGRADE_BACKUP env variable").

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
2019-09-05 23:33:19 +02:00
Rafał Miłecki
62dbe361a1 treewide: when copying a backup file always specify dest name
$CONF_TAR shouldn't be assumed to always point to the sysupgrade.tgz.
This change makes code more generic and allows refactoring $CONF_TAR.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
2019-09-05 14:33:20 +02:00
Rafał Miłecki
bf39047872 treewide: don't hardcode "sysupgrade.tgz" file name
1) Add BACKUP_FILE and use it when copying an archive to be restored
   after sysupgrade (on the next preinit).
2) Use CONF_TAR for copying backup prepared by the /sbin/sysupgrade

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
2019-09-05 14:33:19 +02:00
Hans Dedecker
4bd9d331e5 octeon: fix typo in platform.sh
Fix upgrade typo

Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
2019-01-12 19:40:13 +01:00
Jonathan Thibault
e93e2b6318 octeon: Evaluate board names in alphabetical order
Signed-off-by: Jonathan Thibault <jonathan@navigue.com>
2018-12-06 08:42:22 +01:00
Mathias Kresin
e4e984f2a0 treewide: use only board_name function to get name
Do not parse /tmp/sysinfo/board_name, /proc/cpuinfo or the device tree
compatible string directly. Always use the board_name function to get
the board name.

The admswconfig package still reads /proc/cpuinfo directly. The code
looks somehow broken and the whole adm5120 which uses this package
looks unmaintained. Leave it as it is for now.

Signed-off-by: Mathias Kresin <dev@kresin.me>
2017-07-15 23:13:34 +02: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
John Crispin
c186a48fca octeon: only copy sysupgrade file if present
this caused

'mv: can't rename '/mnt/sysupgrade.tgz': No such file or directory'

when running sysupgrade -n

Signed-off-by: John Crispin <john@phrozen.org>
2017-02-15 06:36:21 +01:00
Felix Fietkau
beda11255b octeon: get rid of /lib/functions/octeon.sh hackery, use sysinfo directly
Fixes sysupgrade

Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 48558
2016-01-29 23:19:41 +00:00
John Crispin
1773aa5163 octeon: add er8 sysupgrade support
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 44902
2015-03-20 08:49:08 +00:00
John Crispin
c79ddb3773 octeon: sysupgrade: support config restore on ERL
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>

SVN-Revision: 43524
2014-12-05 08:58:25 +00:00
John Crispin
1731d5520e octeon: sysupgrade: rename old kernel after mounting /boot
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>

SVN-Revision: 43523
2014-12-05 08:58:18 +00:00
John Crispin
52f1d8ecdc octeon: sysupgrade: fix test for rootfs device
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>

SVN-Revision: 43522
2014-12-05 08:58:06 +00:00
John Crispin
6f665ea7b8 octeon: sysupgrade: support config restore
SVN-Revision: 43518
2014-12-05 00:19:59 +00:00
John Crispin
28a9d9853b octeon: sysupgrade: get rootfsdev from kernel cmdline
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>

SVN-Revision: 43517
2014-12-05 00:19:46 +00:00
John Crispin
13445d2576 octeon: add detection for edgerouter and edgerouter-pro
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 41844
2014-07-27 14:52:07 +00:00
John Crispin
a8d532abf2 octeon: add sysupgrade support for the erlite
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 41286
2014-06-20 13:41:16 +00:00
John Crispin
e6e024f155 octeon: add basic board detection
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 41274
2014-06-19 14:13:20 +00:00