688 Commits

Author SHA1 Message Date
Sander Vanheule
04ecccf3e9 realtek: Drop redundant LED labels
Some devices have both the color/function and label property defined.
The label can be constructed from the former properties, making it
redundant.

Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-02-28 16:30:29 +01:00
Sander Vanheule
13a5e02e28 realtek: Add status LED for Netgear GS310TP
Power LED is identical to GS308T.

Link: https://forum.openwrt.org/t/222970/11
Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-02-28 14:15:17 +01:00
Bjørn Mork
be181cb3b3 realtek: add thermal zones for SFP sensors on SKS8300-8X
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
Build all core packages / Build all core packages for selected target (push) Waiting to run
Create thermal zones for SFP internal sensors, enabling shutdown
on critical temperatures.

Signed-off-by: Bjørn Mork <bjorn@mork.no>
Link: https://github.com/openwrt/openwrt/pull/17967
Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-02-27 19:24:45 +01:00
Bjørn Mork
f29b57dc68 realtek: add thermal zones for SFP sensors on GS1900-10HP
Create thermal zones for SFP internal sensors, enabling shutdown
on critical temperatures.

Signed-off-by: Bjørn Mork <bjorn@mork.no>
Link: https://github.com/openwrt/openwrt/pull/17967
Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-02-27 19:24:45 +01:00
Bjørn Mork
864d6743ee realtek: thermal driver for rtl838x and rtl930x SoCs
Add simple driver reading the internal temperature sensor.

Signed-off-by: Bjørn Mork <bjorn@mork.no>
Link: https://github.com/openwrt/openwrt/pull/17967
Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-02-27 19:24:44 +01:00
Bjørn Mork
d6977ab33a realtek: rtl930x: sgmii support
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
This makes sgmii work for 1000Base-T SFPs by stupidly adding the sgmii mode
wherever 1000base-x is accepted.  No intelligence has been used in the
process.  But it "works for me".

There is an obvious need for refactoring this code to make it more obvious
how and why we configure the mac/phy link like we do for different modes.

Signed-off-by: Bjørn Mork <bjorn@mork.no>
Link: https://github.com/openwrt/openwrt/pull/17950
Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-02-25 20:53:30 +01:00
Bjørn Mork
1fc19bc06e realtek: rtl93xx: mdio-smbus support for clause 45 and Rollball SFPs
These features have been added to the mdio-i2c driver and are now used by
the sfp driver. The support is required for some newer SFPs.

Signed-off-by: Bjørn Mork <bjorn@mork.no>
Link: https://github.com/openwrt/openwrt/pull/17950
Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-02-25 20:53:30 +01:00
Bjørn Mork
4457c1eee4 realtek: rtl93xx: support SFPs with phys
This driver use "phy-handle" as a placeholder for mac configuration
data.  Such handles are therefore required for all ports - even those
connected directly to SFP slots and having a managed property set to
"in-band-status".

The DSA core will register these nodes as if they are real phys. This
prevents later attachment of pluggable phys with errors like

   sfp sfp-p8: sfp_add_phy failed: -EBUSY

Replace the virtual SFP slot handles with "pseudo-phy-handle" to keep
the driver logic as-is but hide the node from the DSA core.

Signed-off-by: Bjørn Mork <bjorn@mork.no>
Link: https://github.com/openwrt/openwrt/pull/17950
Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-02-25 20:53:30 +01:00
Bjørn Mork
ccf54ca673 realtek: sfp: add mdio bus only for sfps with a phy
The SMBus patch broke the logic and caused the driver to always
register an mdio bus, regardless of the sfp.  Restore original
logic.

Signed-off-by: Bjørn Mork <bjorn@mork.no>
Link: https://github.com/openwrt/openwrt/pull/17950
Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-02-25 20:53:30 +01:00
Bjørn Mork
736229ba99 realtek: sfp: prevent duplicate hwmon devices when re-probing on interface up
Re-probing on interface up will register a new duplicate hwmon device. Skip
the hwmon probe if we already have a sensor device.

Signed-off-by: Bjørn Mork <bjorn@mork.no>
Link: https://github.com/openwrt/openwrt/pull/17950
Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-02-25 20:53:30 +01:00
Bjørn Mork
ef4b022150 realtek: i2c-rtl9300: fix crash on block transfers
Fix a typo which resulted in wrong .read hooks and unset .write
hooks.  This made I2C_SMBUS_BLOCK_DATA transfers dereference the
NULL .write hook and Oops.

Signed-off-by: Bjørn Mork <bjorn@mork.no>
Link: https://github.com/openwrt/openwrt/pull/17950
Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-02-25 20:53:30 +01:00
Bjørn Mork
d5dcb88906 realtek: dsa: silence debug log noise
The log noise emmitted by this driver is overwhelming, even for developers
looking at specific issues.  Demoting to debug allows individual messages
to be dynamically enabled instead.

Signed-off-by: Bjørn Mork <bjorn@mork.no>
Link: https://github.com/openwrt/openwrt/pull/17950
Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-02-25 20:53:30 +01:00
Bjørn Mork
024e9dbace realtek: dsa: silence log noise on route offload
Adding a static IPv4 route made the driver repeatedly print

 rtl83xx_l3_nexthop_update: Setting up fwding: ip 192.168.1.42, GW mac 0000001b21a7xxxx
 Route with id 3 to 192.168.99.0 / 24
 rtl83xx_l3_nexthop_update: total packets: 0
 Warning: TEMPLATE_FIELD_RANGE_CHK: not configured

These messages are only useful to developers while debugging offloading.
Demote to debug level, which in general is more useful for developers
by allowing precise dynamic control.

Signed-off-by: Bjørn Mork <bjorn@mork.no>
Link: https://github.com/openwrt/openwrt/pull/17950
Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-02-25 20:53:30 +01:00
Bjørn Mork
8b3c845835 realtek: ONTi ONT-S508CL-8S is a relabeled XikeStor SKS8300-8X
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
Build all core packages / Build all core packages for selected target (push) Waiting to run
Build and Push prebuilt tools container / Build and Push all prebuilt containers (push) Waiting to run
Build host tools / Build host tools for linux and macos based systems (push) Waiting to run
Both hardware and firmware of these devices appears identical except for the
manufacturers logo and device name.  The documented XikeStor SKS8300-8X
installation method is verified to work on the ONTi ONT-S508CL-8S using
Openwrt images made for the XikeStor SKS8300-8X. This includes the OEM boot
loader magic password phrases.

Signed-off-by: Bjørn Mork <bjorn@mork.no>
Link: https://github.com/openwrt/openwrt/pull/18071
Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-02-23 17:23:35 +01:00
Sander Vanheule
890293c13c realtek: add PoE enable line to Netgear GS310TP
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
By switching to the new RTL8231 driver in commit b7af54d5c18c ("realtek:
Simple conversions to RTL8231 MFD driver"), the bootloader state of the
RTL8231's pins is now maintained. As the bootloader de-asserts the PoE
enable signal, this means PoE output is no longer available.

Add a gpio-hog with high output, restoring the line value from when the
pin was configured (by default) as an input with a pull-up resistor.
This will hard-enable the PoE output, but the individual ports can still
be administratively disabled by realtek-poe or a similar tool.

Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-02-22 12:31:24 +01:00
Evan Jobling
cbd1acbad3 realtek: HPE 1920-48G-PoE: allow fan speed control
The JG928A has an RTL8231 on the aux mdio bus. Add it to dts to expose
the GPIO pins used to control and monitor the fan speed. To enable speed
control, add the appropriate kernel driver module to DEVICE_PACKAGES.

Of note, this does not control all fans for the unit. The power supply
fans are not controlled.

Signed-off-by: Evan Jobling <evan@jobling.au>
Link: https://github.com/openwrt/openwrt/pull/17699
Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-02-09 21:36:55 +01:00
Sander Vanheule
b410f2216c realtek: drop old RTL8231 driver
The old RTL8231 driver integrated the MDIO bus access with the GPIO
control ops, making this driver not very portable to newer platforms.
It depended on the SoC ID instead of the compatible to determine the
MDIO access register, further complicating portability.

A new MFD driver is now available, which offers proper pin config as
well as optional LED support, which can work on any (bitbanged) MDIO
bus. Now that all devices have been migrated, we can drop the old code.

Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-02-05 20:55:19 +01:00
Sander Vanheule
807074309d realtek: add PoE enable line to Netgear GS110TPP
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
By switching to the new RTL8231 driver in commit b7af54d5c18c ("realtek:
Simple conversions to RTL8231 MFD driver"), the bootloader state of the
RTL8231's pins is now maintained. As the bootloader de-asserts the PoE
enable signal, this means PoE output is no longer available.

Add a gpio-hog with high output, restoring the line value from when the
pin was configured (by default) as an input with a pull-up resistor.
This will hard-enable the PoE output, but the individual ports can still
be administratively disabled by realtek-poe or a similar tool.

Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-01-28 20:59:04 +01:00
Sander Vanheule
f31c9bb237 realtek: Switch ApresiaLightGS120GT-SS RTL8231 driver
Switch the implementation for the RTL8231 GPIO expander to the new
driver.

This allows specifying the GPIO driving the RTL8231's reset as a proper
MDIO reset line, so the gpio-hog can be dropped. Since it was pinned at
a high level, the reset line is actually active-low (i.e. high when not
in reset).

Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-01-28 20:55:09 +01:00
Sander Vanheule
3d6a1a7874 realtek: switch RTL8231 driver for D-Link DGS-1210
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
Update the common external GPIO DTSI file for the DGS-1210 devices to
use an MDIO device on the auxilairy MDIO bus, as the original driver was
doing behind the screen.

Switching to the new driver will allow for full pin-control and will no
longer reset pin config set by the bootloader.

Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-01-28 07:30:33 +01:00
Sander Vanheule
7c0d1c1eb1 realtek: Switch DGS-1210-10P DTS to gpio.dtsi
The DTS file for the DGS-1210-10P is slightly different from the other
DGS-1210 devices, in that it didn't specify a gpio-restart node when it
was added. The gpio-restart has been found to work on the DGS-1210-10P
as well, so switch it over to the common definitions.

This converts the last device from the product family to the common
definition for the (external) GPIOs.

Tested-by: Michel Thill <jmthill@gmail.com>
Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-01-28 07:30:32 +01:00
Sander Vanheule
022b7d80bf realtek: Drop unused property on DGS-1210 gpio0
The 'indirect-access-id' property on gpio0 is a remnant from the
original GPIO driver. This property has not been relevant on the SoC's
embedded GPIO controller for a long time, so just drop it.

Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-01-28 07:30:32 +01:00
Sander Vanheule
b7af54d5c1 realtek: Simple conversions to RTL8231 MFD driver
Change devices with RTL8231 GPIO expander definition that can easily be
translated to the new RTL8231 binding and carry over any gpio-hogs. This
will let them use the new RTL8231 MFD driver, without any functional
changes.

Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-01-26 21:46:44 +01:00
Sander Vanheule
7322d3266d realtek: Split Zyxel GS1900-8 into v1 and v2
Zyxel GS1900-8 v2 devices have been produced more recently than v1
devices. As there are v1 boards with RTL8380M rev. C SoCs, it can likely
safely be assumed that all v2 devices will also have a recent SoC
revision, supporting the hardware auxiliary MDIO controller.

Make the GS1900-8 v1 use an emulated auxiliary MDIO bus, for backward
compatibility with devices containing an RTL8380M rev. A.

Since the devicetrees are otherwise identical, GS1900-8 v1 devices with
an RTL8380M rev. B or C will also be able to use the (more efficient) v2
image. This includes any currently functioning device with OpenWrt, so
include the old compatible as a supported device for the GS1900-8 v2.

Link: https://github.com/openwrt/openwrt/issues/9534
Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-01-25 15:07:13 +01:00
Sander Vanheule
efffcfa436 realtek: rtl838x: Enable MDIO_GPIO driver
The mdio-gpio driver is required to support early revision of RTL8380M
slicon (rev A) where the auxilairy MDIO controller does not function
correctly. Add this driver to the rtl838x kernel so devices with old
SoCs are also able to function correctly.

Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-01-25 15:06:03 +01:00
Sander Vanheule
a6a77896f4 realtek: Move GS1900 external GPIO to new DTSI
In order to be able to define the external GPIO controller on an
emulated MDIO bus, move the controller definition outside of the main
GS1900 include for RTL838x-based devices.

Additionally, a new DTSI is provided defining the RTL8231 on the
emulated MDIO bus.

Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-01-25 15:06:03 +01:00
Sander Vanheule
d4bf16a9e1 realtek: Add virtual MDIO bus on rtl838x
Some RTL8380M-based devices have been around for a long time and use an
early A revision of the RTL8380M SoC. This revision has an issue with
the auxiliary MDIO controller, causing it to malfunction. This may lead
to device reboots when the controller is used.

Provide a bit-banged MDIO bus, which muxes the auxiliary MDIO pins to
their GPIO function. Although this will result in lower performance,
there should otherwise be no functional differences.

Link: https://github.com/openwrt/openwrt/issues/9534
Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-01-25 15:06:03 +01:00
Sander Vanheule
b2d17dbb68 realtek: Enable Zyxel GS1900's RTL8231 reset line
As the bootloader is reconfiguring the RTL8231 on these devices anyway,
no pin state can be maintained over warm reboots. This results in for
example the PoE disable pin always being asserted by the bootloader.

Define the GPIO line linked to the RTL8231's reset so the MDIO subsystem
will also reset the expander on boot and ensure the line in the correct
state.

Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-01-25 15:06:03 +01:00
Sander Vanheule
6a7fa68569 realtek: Fix old compatible for HPE 1920-8G PoE
Supported devices are listed in the metadata as the first part of the
DTS compatible. This normally follows the format "vendor,device".

When updating the device name of the 180W 1920-8G PoE an underscore was
used, instead of a comma, to join the vendor and device name. This will
lead to warnings for users wanting to sysupgrade a device with an older
compatible, as the device's info does not match the one the metadata.

Fixes: 987c96e88927 ("realtek: rename hpe,1920-8g-poe to match hardware")
Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-01-24 17:07:21 +01:00
INAGAKI Hiroshi
0dc0b98295 realtek: add support for XikeStor SKS8300-8X
Some checks failed
Build Kernel / Build all affected Kernels (push) Waiting to run
Build all core packages / Build all core packages for selected target (push) Waiting to run
Build host tools / Build host tools for linux and macos based systems (push) Waiting to run
Build and Push prebuilt tools container / Build and Push all prebuilt containers (push) Has been cancelled
XikeStor (Seeker) SKS8300-8X is a 8 ports Multi-Gig switch, based on
RTL9303.

Specification:

- SoC             : Realtek RTL9303
- RAM             : DDR3 512 MiB
- Flash           : SPI-NOR 32 MiB (Winbond W25Q256JVFIQ)
- Ethernet        : 8x 1/2.5/10 Gbps (SFP+)
- LEDs/Keys (GPIO): 1x/1x
- UART            : "Console" port on the front panel
  - type          : RS-232C
  - connector     : RJ-45
  - settings      : 9600n8
- Watchdog        : Diodes PT7A7514WE
- Power           : 12 VDC, 2 A

Flash instruction using initramfs image:

 1. Prepare TFTP server with an IP address "192.168.2.36"
 2. Connect your PC to Port1 on SKS8300-8X
 3. Power on SKS8300-8X and interrupt by Ctrl + B
 4. Login to the vendor CLI by Ctrl + F and "diagshell_unipoe_env"
 5. Login to the U-Boot CLI by "debug_unish_env" command
 6. Enable Port1 with the following commands

    rtk 10g 0 fiber1g (or fiber10g if 10GBase-*R)
    rtk ext-devInit 0
    rtk ext-pinSet 2 0

    Note: the last command sets tx-disable to low

 7. Download initramfs image from TFTP server

    tftpboot 0x82000000 <image name>

 8. Boot with the downloaded image

    bootm

 9. On the initramfs image, backup the stock firmware if needed
10. Upload (or download) sysupgrade image to the device
11. Erase "firmware" partition to cleanup JFFS2 of stock FW

    mtd erase firmware

12. Perform sysupgrade with the sysupgrade image
13. Wait ~120 sec to complete flashing

Notes:

- A kernel binary "nos.img" needs to be stored into JFFS2 filesystem
  using 4KiB erase block instead of 64KiB.

- PT7A7514WE is handled by hardware-assited system LED output
  (blinking).

- Some Japanese users asked to XikeStor about maximum power limit of
  SFP+ ports and got approximate criteria:

  - per port       : <=  2.9 W
  - total (8 ports): <= 15.8 W

MAC addresses:

eth0   : 84:E5:D8:xx:xx:37 (board-info (stock:"flash_raw"), 0x218 (hex))
(ports): 84:E5:D8:xx:xx:36 (board-info (stock:"flash_raw"), 0x1f1 (hex))

Reverting to stock firmware:

1. Prepare OpenWrt SDK to use the mkfs.jffs2 tool contained in it

   Note: the official mkfs.jffs2 tool in mtd-utils doesn't support 4KiB
         erase size and not usable for SKS8300-8X

2. Create a directory for working
3. Download official firmware for SKS8300-8X from XikeStor's official
   website
4. Rename the downloaded firmware to "nos.img" and place it to the
   working directory
5. Create a JFFS2 filesystem binary with the working directory

   /path/to/mkfs.jffs2 -p -b -U -v -e 4KiB -x lzma \
       -o nos.img.jffs2 -d /path/to/working/dir/

6. Upload the created JFFS2 filesystem binary to the device
7. Erase the "firmware" partition

   mtd erase firmware

8. Write the JFFS2 filesystem binary to the "firmware" partition

   mtd write /path/to/nos.img.jffs2 firmware

9. After writing, reboot the device by power cycle

Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17593
Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-01-21 18:37:51 +01:00
INAGAKI Hiroshi
9fc80b684c realtek: suppress debug messages of RTL930x SerDes in PHY driver
Change some debugging messages of RTL930x SerDes in the PHY driver to
pr_debug() to suppress log messages on the console.

Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17593
Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-01-21 18:37:51 +01:00
INAGAKI Hiroshi
09fbc5d343 realtek: add 10GBASER to supported interfaces in DSA driver
add PHY_INTERFACE_MODE_10GBASER to supported_interfaces for using
10GBase-*R interfaces on SFP+ ports.

Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17593
Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-01-21 18:37:51 +01:00
INAGAKI Hiroshi
d45890f6cd realtek: add aux-mdio and pinctrl nodes to rtl930x.dtsi
Add aux-mdio and pinctrl nodes to rtl930x.dtsi to enable handling of the
external RTL8231 GPIO expander connected via MDIO.

Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17593
Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-01-21 18:37:51 +01:00
INAGAKI Hiroshi
70198cac36 realtek: rtl930x: enable rtl8231-related drivers
Enable the following drivers to use the external RTL8231 GPIO expander.

- aux-mdio
- rtl8231 (mfd)
- rtl8231 (pinctrl)

Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17593
Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-01-21 18:37:51 +01:00
INAGAKI Hiroshi
ad8bc8900d realtek: rtl930x: enable HIGHMEM for large memory (>256M)
Enable HIGHMEM option to use all ranges of memory on XikeStor SKS8300-8X
that has 512MiB RAM.

Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17593
Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-01-21 18:37:51 +01:00
Sander Vanheule
45aafe67f3 realtek: Switch RTL8231 driver on Zyxel GS1900-48
Switch the Zyxel GS1900-48 over to the new MDIO-based driver for the
RTL8231 GPIO expander.

Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-01-18 14:14:52 +01:00
Sander Vanheule
fd5797b7ce realtek: rtl839x: Enable RTL8231 MFD driver
Enable the RTL8231 MFD core driver, as well as the pinctrl/gpio driver
to allow RTL839x devices to use it.

Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-01-18 14:14:52 +01:00
Sander Vanheule
cddcc69ddf realtek: rtl839x: Enable AUX MDIO controller
Enable the driver for the Realtek Otto auxiliary MDIO driver so RTL839x
devices can use it. The related node is added to the base devicetree for
rtl839x-based devices, so they can enabled and use it when required.

Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-01-18 13:51:26 +01:00
Sander Vanheule
52ffef6471 realtek: Update aux-mdio driver
For RTL839x, the driver was producing frequent timeouts on bus accesses.
Increasing the timeout to the one from a recent Realtek SDK resolves
these timeouts. To minimize overhead on different SoCs, each controller
can specify their own timeout.

This also add support for the register format as used on RTL93xx.
Support is added for the RTL930x "ext gpio" controller.

Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-01-18 13:28:44 +01:00
Álvaro Fernández Rojas
d7e82c78d7 generic: backport Realtek PHY patches from upstream
Adds patches for the temperature sensor on RTL822x.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-01-17 13:21:26 +01:00
Sander Vanheule
693c1ea81a realtek: Use atomic poll for aux-mdio commands
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
regmap_read_poll_timeout() relies on usleep_range() to time the polling
loop. With the current, rather large, scheduling interval, a short
usleep_range() may take a lot longer than expected, causing performance
issues.

Switch the driver over to using regmap_read_poll_timeout_atomic(), which
uses udelay() to time the polling loop.

For comparision, the 'ethtool -m <dev>' command is about 10 times faster
with the atomic variant.
Using 'perf -r10 ethtool -m lan25':
  - Driver using regmap_read_poll_timeout():
      2.0117 +- 0.0118 seconds time elapsed  ( +-  0.58% )
  - Driver using regmap_read_poll_timeout_atomic():
      0.1674 +- 0.0250 seconds time elapsed  ( +- 14.95% )

Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-01-16 13:56:55 +01:00
Fabian Groffen
0a7c8ed9d9 realtek: HPE 1920 24G PoE+ 180W/370W move fans to hwmon
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
Apply the equivalent of commit f64541db020e ("realtek: HPE 1920 8G PoE+
180W move fans to hwmon") to the 24-ports variants of the HPE 1920 PoE+
switches, with model numbers JG925A and JG926A.

Copy from the original commit message:

  Move to using hwmon and gpio-fan. This is by adding gpio_fan_array to
  DTS and kmod-hwmon-gpiofan to DEVICE_PACKAGES.

  In combination with the new rtl8231 gpio driver the default fan
  behaviour will be maximum fan speed.

  Bump compat value to 1.1 due to existing config in /etc/config/system
  via gpio_switch. Also notify in device compat that fan is now going to
  be at bootloader setting (maximum in this case) by default unless turned
  down.

As the init script 03_gpio_switches does not perform any action after
removing these devices from it, the file can be dropped.

Link: https://github.com/openwrt/openwrt/pull/17598
Signed-off-by: Fabian Groffen <grobian@gentoo.org>
Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-01-16 07:32:16 +01:00
Evan Jobling
f64541db02 realtek: HPE 1920 8G PoE+ 180W move fans to hwmon
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
The GPIO numbering has changed and is not stable. As a result fan
control via gpio_switch is broken, resulting in errors:
    "export_store: invalid GPIO 456"

Move to using hwmon and gpio-fan. This is by adding gpio_fan_array to
DTS and kmod-hwmon-gpiofan to DEVICE_PACKAGES.

In combination with the new rtl8231 gpio driver the default fan
behaviour will be maximum fan speed.

Bump compat value to 1.1 due to existing config in /etc/config/system
via gpio_switch. Also notify in device compat that fan is now going to
be at bootloader setting (maximum in this case) by default unless turned
down.

Signed-off-by: Evan Jobling <evan@jobling.au>
Link: https://github.com/openwrt/openwrt/pull/17605
Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-01-15 08:21:08 +01:00
Sander Vanheule
96850585e5 realtek: switch RTL8231 driver for HPE 1920-16/24G
Update the base DTS file for the 16 and 24 port HPE 1920 devices
(JG923A, JG924A, JG925A, JG926A), causing the new RTL8231 MFD driver to
be loaded at start-up.

Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-01-12 17:30:23 +01:00
Sander Vanheule
e5d1a501cb realtek: switch RTL8231 driver for HPE 1920-8G
Update the base DTS file for the 8 port HPE 1920 devices (JG920A,
JG921A, JG922A), causing the new RTL8231 MFD driver to be loaded at
start-up.

Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-01-12 17:30:23 +01:00
John Audia
efafd7d47f kernel: bump 6.6 to 6.6.70
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.70

Removed upstreamed:
	generic/backport-6.6/902-net-llc-reset-skb-transport_header.patch[1]
	generic/pending-6.6/605-netfilter-nft_set_hash-unaligned-atomic-read-on-stru.patch[2]

All other patches automatically rebased.

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.70&id=0c896816aa193e6459fc947747e5753c06b395b9
2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.70&id=4f49349c1963e507aa37c1ec05178faeb0103959

Build system: x86/64
Build-tested: bcm27xx/bcm2712, flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3
Run-tested: bcm27xx/bcm2712, flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/17545
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-01-10 13:41:30 +01:00
Álvaro Fernández Rojas
f5b1d340be generic: move gpio-regmap request/free ops patch from realtek
Some checks failed
Build Kernel / Build all affected Kernels (push) Waiting to run
Build all core packages / Build all core packages for selected target (push) Has been cancelled
This patch is also needed on bmips since it fixes issues with GPIOs not being
properly configured due to gpio_request_enable not being called on bcm63xx
devices. Therefore we can now drop the bcm63268 gpio function patch.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-01-08 18:10:46 +01:00
Sander Vanheule
5141e2d861 realtek: rtl838x: Switch GS1900 rtl8231 driver
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
Update the devicetree files to switch the GS1900 devices over to the new
pinctrl and GPIO driver. Enable the drivers to ensure the nodes can be
used.

This may fix issues caused by bad RMW behaviour on the GPIO data lines,
or glitches due to setting the pin direction before the pin level.

Although the driver supports retaining GPIO state after a warm boot,
some bootloaders appear to apply a default configuration on boot, which
may cause an interrupt in PoE-PSE support.

Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-01-07 14:36:34 +01:00
Sander Vanheule
6ef6014887 realtek: Add pinctrl support for RTL8231
Add pending patches to add RTL8231 support as a MDIO-bus attached
multi-functional device. This includes subdrivers for the pincontrol and
GPIO features, as well as the LED matrix support.

Leave the drivers disabled until required by a device.

Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-01-07 14:36:34 +01:00
Sander Vanheule
92ae8cb16c realtek: rtl838x: Instantiate auxiliary MDIO bus
Add a disabled node for the auxiliary MDIO bus, used to manage the
RTL8231 expanders. A simple-mfd parent node is added, at the same
(implied) address as the switch@1b000000 node, as the switch drivers
should anyway transistion to MFD subdivices at some point.

Additionally, two pinctrl-single node are added to allow the MDX pins to
be muxed correctly, in case the bootloader leaves these unconfigured.

Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-01-07 14:36:34 +01:00