[PATCH 3/3] ARM: dts: clps711x: Add basic Cirrus Logic CDB89712 Development board
From: Alexander Shiyan <hidden>
Date: 2016-05-15 06:07:48
Also in:
linux-devicetree
On Fri, 13 May 2016 15:41:11 +0200 Arnd Bergmann [off-list ref] wrote:
On Friday 13 May 2016 15:30:23 Alexander Shiyan wrote:quoted
Hello.quoted
???????, 13 ??? 2016, 15:00 +03:00 ?? Arnd Bergmann [off-list ref]: On Friday 13 May 2016 14:26:28 Alexander Shiyan wrote:...
...
quoted
quoted
quoted
+ clks: clks at 80000000 { + #clock-cells = <1>; + compatible = "cirrus,clps711x-clk"; + reg = <0x80000000 0xc000>; + startup-frequency = <73728000>; + };...quoted
quoted
+ intc: intc at 80000000 { + compatible = "cirrus,clps711x-intc"; + reg = <0x80000000 0x4000>; + interrupt-controller; + #interrupt-cells = <1>; + };Better make the register ranges non-overlapping. This appears to start at the same place as the 'clks' node.CLK driver uses: #define CLPS711X_SYSCON1 (0x0100) #define CLPS711X_SYSCON2 (0x1100) ... #define CLPS711X_PLLR (0xa5a8) IRQCHIP driver uses: #define CLPS711X_INTSR1 (0x0240) ... #define CLPS711X_INTSR2 (0x1240) ... #define CLPS711X_INTMR3 (0x2280) So there is no way to do any else.It sounds like what you have is a large system controller that has registers everywhere. Could you use syscon to access the individual registers instead?
There are several problems: - The syscon driver must be initialized before any other devices, including the interrupt controller and clk/clocksource subsystems. - A slight performance impact will be observed in the interrupt handler. - SYSCON (regmap) is designed to use with equal the width of registers, while we need to use different widths (8/16/32) for some subsystems. -- Alexander Shiyan [off-list ref]