[PATCH v3 6/7] dt-bindings: pinctrl: rockchip: Add RMIO controller binding

Linus Walleij linusw at kernel.org
Fri Jan 9 02:19:02 PST 2026


Hi Ye,

thanks for agreeing on using standard bindings for
RMIO, we are making progress!

On Thu, Jan 8, 2026 at 1:19 PM Ye Zhang <ye.zhang at rock-chips.com> wrote:

> **Regarding the primary IOMUX:**
> However, the RK3506 pinctrl support is built upon the existing
> `pinctrl-rockchip` driver infrastructure, which was originally designed
> around
> the `rockchip,pins` property. Refactoring the driver to support the standard
> `pinmux` binding (and the suggested nested node structure) is a significant
> undertaking that involves core logic changes and regression risks for older
> SoCs. Mandating this refactoring as a prerequisite for RK3506 support
> would effectively block this SoC from being supported upstream for a
> long time.
>
> Could we allow RK3506 to follow the existing driver's style for now to
> ensure
> consistency and timely support?

"timely support" is of lesser concern to the kernel and DT
bindings which are more concerned with maintainability and long-term
longevity. The ambition is to work predictably and impersonal, such
as like the planets, or the plants.

> We agree that migrating to standard pinmux
> bindings is the right direction, but we believe it should be handled as a
> separate, dedicated project in the future rather than part of this
> enablement series.
>
> Hi Heiko,
> Do you agree with this?
> 1.        Use standard `pinmux` for RMIO in this series.
> 2.        Keep `rockchip,pins` for the primary IOMUX for now.
> 3.        Plan a future refactoring to migrate the primary IOMUX to
> standard bindings.

My main concern is this:

foo {
    rockchip,pins = <...>; // For IOMUX
    pinmux = <...>; /// for RMIO
};

I don't want to see this, because that will be *hopeless* to migrate
to both controllers using pinmux = <...>; how should you decide
which one to pick for each?

In that case it is better to do:

foo {
    rockchip,pins = <...>;
    rmio {
        pinmux = <....>;
    };
};

Because then you can later migrate to:

foo {
    iomux {
        pinmux = <....>;
    };
    rmio {
        pinmux = <...>;
    };
};

Yours,
Linus Walleij



More information about the linux-arm-kernel mailing list