Thread (2 messages) flat view 2 messages, 2 authors, 2016-05-15

[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]
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help