Currently the endianness for register accesses of basic clocks if fixed based on the architecture (BE for PowerPC, LE for everyone else). This is inconvenient for architectures that support both.
To avoid adding more rules to the #ifdef, this patchset adds a new generic flag to tag the registers as BE and makes the basic clocks follow it, then converts the only PowerPC user to use it. That way we can drop the special casing for PowerPC, and allow other BE platforms/drivers to make use of the basic clocks. RFC because I am unsure if this should be common flag or a per-clock flag. Technically it's the wrong place for the former, but having a different flag for each basic clock looks a bit messy IMHO. This could also lead to easy mistakes by using the "wrong" basic clock's flag, then having no or unexpected effects due to the next free flag bit different for each basic clock. This might be avoidable by using a free bit common to all, e.g. the highest bit of the flag fields. I don't have any strong feelings one way or the other. I just used this way because I needed to start somewhere ;-). RFT because I don't have a PowerPC device to test, and especially not a 512x one. I did compile test it though! I looked really hard, and this is the only place I could find where a PowerPC platform (indirectly) used the clk accessors. None of the regular drivers in clk/ were selected in any of the powerpc defconfigs, and this was the only platform code that registered basic clocks. Jonas Gorski (6): clk: core: add support for generic big endian accesses clk: gate: make endian-aware clk: divider: make endian aware clk: mux: make endian aware powerpc/512x: mark clocks as big endian clk: core: remove powerpc special handling arch/powerpc/platforms/512x/clock-commonclk.c | 13 ++++++----- drivers/clk/clk-divider.c | 8 +++---- drivers/clk/clk-gate.c | 6 +++--- drivers/clk/clk-mux.c | 6 +++--- drivers/clk/clk.c | 1 + include/linux/clk-provider.h | 31 ++++++++++++++++++--------- 6 files changed, 40 insertions(+), 25 deletions(-) -- 2.13.2