Download raw body.
fanpwr: add rk8600
> Date: Thu, 21 May 2026 07:57:19 +1000
> From: Jonathan Matthew <jonathan@d14n.org>
>
> 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?
ok kettenis@
> 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;
>
>
fanpwr: add rk8600