From: Jonathan Matthew Subject: fanpwr: add rk8600 To: tech@openbsd.org Cc: kettenis@openbsd.org Date: Thu, 21 May 2026 07:57:19 +1000 This FAN53555 clone only seems to be used on the Radxa Zero 3 boards. According to the linux driver, it works just like the FAN53555 except it has the same voltage base and step as the Silergy clones. This makes cpu frequency adjustment work on the zero 3w. ok? Index: fanpwr.c =================================================================== RCS file: /cvs/src/sys/dev/fdt/fanpwr.c,v diff -u -p -r1.10 fanpwr.c --- fanpwr.c 26 May 2024 22:04:52 -0000 1.10 +++ fanpwr.c 20 May 2026 12:15:46 -0000 @@ -51,6 +51,7 @@ /* Distinguish between Fairchild original and Silergy clones. */ enum fanpwr_id { FANPWR_FAN53555, /* Fairchild FAN53555 */ + FANPWR_RK8600, /* Rockchip RK8600 */ FANPWR_RK8602, /* Rockchip RK8602 */ FANPWR_SYR827, /* Silergy SYR827 */ FANPWR_SYR828, /* Silergy SYR828 */ @@ -93,6 +94,7 @@ fanpwr_match(struct device *parent, void struct i2c_attach_args *ia = aux; return (strcmp(ia->ia_name, "fcs,fan53555") == 0 || + strcmp(ia->ia_name, "rockchip,rk8600") == 0 || strcmp(ia->ia_name, "rockchip,rk8602") == 0 || strcmp(ia->ia_name, "rockchip,rk8603") == 0 || strcmp(ia->ia_name, "silergy,syr827") == 0 || @@ -114,7 +116,10 @@ fanpwr_attach(struct device *parent, str sc->sc_tag = ia->ia_tag; sc->sc_addr = ia->ia_addr; - if (OF_is_compatible(node, "rockchip,rk8602") || + if (OF_is_compatible(node, "rockchip,rk8600")) { + printf(": RK8600"); + sc->sc_id = FANPWR_RK8600; + } else if (OF_is_compatible(node, "rockchip,rk8602") || OF_is_compatible(node, "rockchip,rk8603")) { printf(": RK8602"); sc->sc_id = FANPWR_RK8602; @@ -194,6 +199,7 @@ fanpwr_attach(struct device *parent, str sc->sc_vbase = 500000; sc->sc_vstep = 6250; break; + case FANPWR_RK8600: case FANPWR_SYR827: case FANPWR_SYR828: sc->sc_vbase = 712500;