Re: [PATCH v11 5/6] ARM: hi3xxx: add smp support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 11/13/2013 07:00 AM, Kevin Hilman wrote:
Haojian Zhuang <haojian.zhuang@xxxxxxxxxx> writes:

On 7 November 2013 18:30, Dinh Nguyen <dinh.linux@xxxxxxxxx> wrote:
On 11/7/13 2:41 AM, Haojian Zhuang wrote:
From: Zhangfei Gao <zhangfei.gao@xxxxxxxxxx>

Enable SMP support on hi3xxx platform

Signed-off-by: Zhangfei Gao <zhangfei.gao@xxxxxxxxxx>
Tested-by: Zhang Mingjun <zhang.mingjun@xxxxxxxxxx>
Tested-by: Li Xin <li.xin@xxxxxxxxxx>
Signed-off-by: Haojian Zhuang <haojian.zhuang@xxxxxxxxxx>
---
  .../bindings/arm/hisilicon/hisilicon.txt           | 30 ++++++--
  arch/arm/boot/dts/hi3620.dtsi                      | 38 ++++++++++
  arch/arm/mach-hi3xxx/Kconfig                       |  3 +
  arch/arm/mach-hi3xxx/Makefile                      |  1 +
  arch/arm/mach-hi3xxx/core.h                        | 11 +++
  arch/arm/mach-hi3xxx/hi3xxx.c                      | 34 +++++++++
  arch/arm/mach-hi3xxx/platsmp.c                     | 84 ++++++++++++++++++++++
  7 files changed, 197 insertions(+), 4 deletions(-)
  create mode 100644 arch/arm/mach-hi3xxx/core.h
  create mode 100644 arch/arm/mach-hi3xxx/platsmp.c

diff --git a/Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt b/Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt
index 3be60c8..8c7a465 100644
--- a/Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt
+++ b/Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt
@@ -1,10 +1,32 @@
  Hisilicon Platforms Device Tree Bindings
  ----------------------------------------------------

-Hi3716 Development Board
-Required root node properties:
-     - compatible = "hisilicon,hi3716-dkb";
-
  Hi4511 Board
  Required root node properties:
       - compatible = "hisilicon,hi3620-hi4511";
+
+Hisilicon system controller
+
+Required properties:
+- compatible : "hisilicon,sysctrl"
+- reg : Register address and size
+
+Optional properties:
+- smp-offset : offset in sysctrl for notifying slave cpu booting
+             cpu 1, reg;
+             cpu 2, reg + 0x4;
+             cpu 3, reg + 0x8;
+             If reg value is not zero, cpun exit wfi and go
+- resume-offset : offset in sysctrl for notifying cpu0 when resume
+- reboot-offset : offset in sysctrl for system reboot
+
+Example:
+
+     /* for Hi3620 */
+     sysctrl: system-controller@fc802000 {
+             compatible = "hisilicon,sysctrl";
+             reg = <0xfc802000 0x1000>;
+             smp-offset = <0x31c>;
+             resume-offset = <0x308>;
+             reboot-offset = <0x4>;
+     };
diff --git a/arch/arm/boot/dts/hi3620.dtsi b/arch/arm/boot/dts/hi3620.dtsi
index b9d8679..e311937 100644
--- a/arch/arm/boot/dts/hi3620.dtsi
+++ b/arch/arm/boot/dts/hi3620.dtsi
@@ -39,6 +39,27 @@
                       reg = <0x0>;
                       next-level-cache = <&L2>;
               };
+
+             cpu@1 {
+                     compatible = "arm,cortex-a9";
+                     device_type = "cpu";
+                     reg = <1>;
+                     next-level-cache = <&L2>;
+             };
+
+             cpu@2 {
+                     compatible = "arm,cortex-a9";
+                     device_type = "cpu";
+                     reg = <2>;
+                     next-level-cache = <&L2>;
+             };
+
+             cpu@3 {
+                     compatible = "arm,cortex-a9";
+                     device_type = "cpu";
+                     reg = <3>;
+                     next-level-cache = <&L2>;
+             };
       };

       amba {
@@ -65,6 +86,17 @@
                       reg = <0x1000 0x1000>, <0x100 0x100>;
               };

+             sysctrl: system-controller@802000 {
+                     compatible = "hisilicon,sysctrl";
+                     reg = <0x802000 0x1000>;
+                     #address-cells = <1>;
+                     #size-cells = <0>;
+
+                     smp-offset = <0x31c>;
+                     resume-offset = <0x308>;
+                     reboot-offset = <0x4>;
+             };
+
               dual_timer0: dual_timer@800000 {
                       compatible = "arm,sp804", "arm,primecell";
                       reg = <0x800000 0x1000>;
@@ -115,6 +147,12 @@
                       status = "disabled";
               };

+             timer5: timer@600 {
+                     compatible = "arm,cortex-a9-twd-timer";
+                     reg = <0x600 0x20>;
+                     interrupts = <1 13 0xf01>;
+             };
Do you have a clocks node for this timer?
As I mentioned in the 0th patch, clock binding are totally removed
in this patch. And clock driver will be append in another patch set.
Still, won't this timer still need a dummy fixed-rate clock until the
real clocks are in place?  Otherwise it seems twd_get_clock() is going
to fail.

Kevin
sp804 is working. twd_get_clock() fails but it could calculate rate.
I tested on my platform. With this dummy fixed-rate clock, it could
work.

Regards
Haojian
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]
  Powered by Linux