All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/3] soc: amlogic: Add Amlogic SoC Information driver
@ 2017-06-06  9:45 ` Neil Armstrong
  0 siblings, 0 replies; 25+ messages in thread
From: Neil Armstrong @ 2017-06-06  9:45 UTC (permalink / raw)
  To: khilman, carlo
  Cc: Neil Armstrong, linux-amlogic, linux-arm-kernel, linux-kernel

Amlogic SoCs have a SoC information register for SoC type, package type and
revision information.
This patchset adds support for this register decoding and exposing with the
SoC bus infrastructure, with dt-bindings and DT node.

Changes since v1 at [1] :
 - Switch DT representation to use regmap ans sub-node of a simple-mfd node
 - Updated DT, bindings and driver accordingly

Neil Armstrong (3):
  dt-bindings: arm: amlogic: Add SoC information bindings
  ARM64: dts: meson-gx: Add SoC info register
  soc: Add Amlogic SoC Information driver

 Documentation/devicetree/bindings/arm/amlogic.txt |  32 ++++
 arch/arm64/boot/dts/amlogic/meson-gx.dtsi         |   9 ++
 drivers/soc/Kconfig                               |   1 +
 drivers/soc/Makefile                              |   1 +
 drivers/soc/amlogic/Kconfig                       |  12 ++
 drivers/soc/amlogic/Makefile                      |   1 +
 drivers/soc/amlogic/meson-gx-socinfo.c            | 169 ++++++++++++++++++++++
 7 files changed, 225 insertions(+)
 create mode 100644 drivers/soc/amlogic/Kconfig
 create mode 100644 drivers/soc/amlogic/Makefile
 create mode 100644 drivers/soc/amlogic/meson-gx-socinfo.c

-- 
1.9.1

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH v2 0/3] soc: amlogic: Add Amlogic SoC Information driver
@ 2017-06-06  9:45 ` Neil Armstrong
  0 siblings, 0 replies; 25+ messages in thread
From: Neil Armstrong @ 2017-06-06  9:45 UTC (permalink / raw)
  To: linux-arm-kernel

Amlogic SoCs have a SoC information register for SoC type, package type and
revision information.
This patchset adds support for this register decoding and exposing with the
SoC bus infrastructure, with dt-bindings and DT node.

Changes since v1 at [1] :
 - Switch DT representation to use regmap ans sub-node of a simple-mfd node
 - Updated DT, bindings and driver accordingly

Neil Armstrong (3):
  dt-bindings: arm: amlogic: Add SoC information bindings
  ARM64: dts: meson-gx: Add SoC info register
  soc: Add Amlogic SoC Information driver

 Documentation/devicetree/bindings/arm/amlogic.txt |  32 ++++
 arch/arm64/boot/dts/amlogic/meson-gx.dtsi         |   9 ++
 drivers/soc/Kconfig                               |   1 +
 drivers/soc/Makefile                              |   1 +
 drivers/soc/amlogic/Kconfig                       |  12 ++
 drivers/soc/amlogic/Makefile                      |   1 +
 drivers/soc/amlogic/meson-gx-socinfo.c            | 169 ++++++++++++++++++++++
 7 files changed, 225 insertions(+)
 create mode 100644 drivers/soc/amlogic/Kconfig
 create mode 100644 drivers/soc/amlogic/Makefile
 create mode 100644 drivers/soc/amlogic/meson-gx-socinfo.c

-- 
1.9.1

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH v2 0/3] soc: amlogic: Add Amlogic SoC Information driver
@ 2017-06-06  9:45 ` Neil Armstrong
  0 siblings, 0 replies; 25+ messages in thread
From: Neil Armstrong @ 2017-06-06  9:45 UTC (permalink / raw)
  To: linus-amlogic

Amlogic SoCs have a SoC information register for SoC type, package type and
revision information.
This patchset adds support for this register decoding and exposing with the
SoC bus infrastructure, with dt-bindings and DT node.

Changes since v1 at [1] :
 - Switch DT representation to use regmap ans sub-node of a simple-mfd node
 - Updated DT, bindings and driver accordingly

Neil Armstrong (3):
  dt-bindings: arm: amlogic: Add SoC information bindings
  ARM64: dts: meson-gx: Add SoC info register
  soc: Add Amlogic SoC Information driver

 Documentation/devicetree/bindings/arm/amlogic.txt |  32 ++++
 arch/arm64/boot/dts/amlogic/meson-gx.dtsi         |   9 ++
 drivers/soc/Kconfig                               |   1 +
 drivers/soc/Makefile                              |   1 +
 drivers/soc/amlogic/Kconfig                       |  12 ++
 drivers/soc/amlogic/Makefile                      |   1 +
 drivers/soc/amlogic/meson-gx-socinfo.c            | 169 ++++++++++++++++++++++
 7 files changed, 225 insertions(+)
 create mode 100644 drivers/soc/amlogic/Kconfig
 create mode 100644 drivers/soc/amlogic/Makefile
 create mode 100644 drivers/soc/amlogic/meson-gx-socinfo.c

-- 
1.9.1

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH v2 1/3] dt-bindings: arm: amlogic: Add SoC information bindings
  2017-06-06  9:45 ` Neil Armstrong
  (?)
  (?)
@ 2017-06-06  9:45   ` Neil Armstrong
  -1 siblings, 0 replies; 25+ messages in thread
From: Neil Armstrong @ 2017-06-06  9:45 UTC (permalink / raw)
  To: khilman, carlo
  Cc: Neil Armstrong, linux-amlogic, linux-arm-kernel, linux-kernel,
	devicetree

Add bindings for the SoC information register of the Amlogic SoCs.

Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
 Documentation/devicetree/bindings/arm/amlogic.txt | 32 +++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/Documentation/devicetree/bindings/arm/amlogic.txt b/Documentation/devicetree/bindings/arm/amlogic.txt
index 5c01e65..ae3e8ed 100644
--- a/Documentation/devicetree/bindings/arm/amlogic.txt
+++ b/Documentation/devicetree/bindings/arm/amlogic.txt
@@ -60,3 +60,35 @@ Board compatible values (alphabetically, grouped by SoC):
   - "amlogic,q201" (Meson gxm s912)
   - "kingnovel,r-box-pro" (Meson gxm S912)
   - "nexbox,a1" (Meson gxm s912)
+
+Amlogic Meson Firmware registers Interface
+------------------------------------------
+
+The Meson SoCs have a register bank with status and data shared with the
+secure firmware.
+
+Required properties:
+ - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd"
+
+Sub-nodes should indentify components of this register interface :
+
+Meson GX SoC Information
+------------------------
+A firmware register encodes the SoC type, package and revision information on
+the Meson GX SoCs.
+If present, a device node for this register should be added.
+
+Required properties:
+  - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-chipid".
+
+Example
+-------
+
+ao-secure@140 {
+	compatible = "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd";
+	reg = <0x0 0x140 0x0 0x140>;
+
+	chipid {
+		compatible = "amlogic,meson-gx-chipid";
+	};
+};
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH v2 1/3] dt-bindings: arm: amlogic: Add SoC information bindings
@ 2017-06-06  9:45   ` Neil Armstrong
  0 siblings, 0 replies; 25+ messages in thread
From: Neil Armstrong @ 2017-06-06  9:45 UTC (permalink / raw)
  To: khilman, carlo
  Cc: linux-amlogic, devicetree, linux-kernel, linux-arm-kernel,
	Neil Armstrong

Add bindings for the SoC information register of the Amlogic SoCs.

Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
 Documentation/devicetree/bindings/arm/amlogic.txt | 32 +++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/Documentation/devicetree/bindings/arm/amlogic.txt b/Documentation/devicetree/bindings/arm/amlogic.txt
index 5c01e65..ae3e8ed 100644
--- a/Documentation/devicetree/bindings/arm/amlogic.txt
+++ b/Documentation/devicetree/bindings/arm/amlogic.txt
@@ -60,3 +60,35 @@ Board compatible values (alphabetically, grouped by SoC):
   - "amlogic,q201" (Meson gxm s912)
   - "kingnovel,r-box-pro" (Meson gxm S912)
   - "nexbox,a1" (Meson gxm s912)
+
+Amlogic Meson Firmware registers Interface
+------------------------------------------
+
+The Meson SoCs have a register bank with status and data shared with the
+secure firmware.
+
+Required properties:
+ - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd"
+
+Sub-nodes should indentify components of this register interface :
+
+Meson GX SoC Information
+------------------------
+A firmware register encodes the SoC type, package and revision information on
+the Meson GX SoCs.
+If present, a device node for this register should be added.
+
+Required properties:
+  - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-chipid".
+
+Example
+-------
+
+ao-secure@140 {
+	compatible = "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd";
+	reg = <0x0 0x140 0x0 0x140>;
+
+	chipid {
+		compatible = "amlogic,meson-gx-chipid";
+	};
+};
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH v2 1/3] dt-bindings: arm: amlogic: Add SoC information bindings
@ 2017-06-06  9:45   ` Neil Armstrong
  0 siblings, 0 replies; 25+ messages in thread
From: Neil Armstrong @ 2017-06-06  9:45 UTC (permalink / raw)
  To: linux-arm-kernel

Add bindings for the SoC information register of the Amlogic SoCs.

Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
 Documentation/devicetree/bindings/arm/amlogic.txt | 32 +++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/Documentation/devicetree/bindings/arm/amlogic.txt b/Documentation/devicetree/bindings/arm/amlogic.txt
index 5c01e65..ae3e8ed 100644
--- a/Documentation/devicetree/bindings/arm/amlogic.txt
+++ b/Documentation/devicetree/bindings/arm/amlogic.txt
@@ -60,3 +60,35 @@ Board compatible values (alphabetically, grouped by SoC):
   - "amlogic,q201" (Meson gxm s912)
   - "kingnovel,r-box-pro" (Meson gxm S912)
   - "nexbox,a1" (Meson gxm s912)
+
+Amlogic Meson Firmware registers Interface
+------------------------------------------
+
+The Meson SoCs have a register bank with status and data shared with the
+secure firmware.
+
+Required properties:
+ - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd"
+
+Sub-nodes should indentify components of this register interface :
+
+Meson GX SoC Information
+------------------------
+A firmware register encodes the SoC type, package and revision information on
+the Meson GX SoCs.
+If present, a device node for this register should be added.
+
+Required properties:
+  - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-chipid".
+
+Example
+-------
+
+ao-secure at 140 {
+	compatible = "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd";
+	reg = <0x0 0x140 0x0 0x140>;
+
+	chipid {
+		compatible = "amlogic,meson-gx-chipid";
+	};
+};
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH v2 1/3] dt-bindings: arm: amlogic: Add SoC information bindings
@ 2017-06-06  9:45   ` Neil Armstrong
  0 siblings, 0 replies; 25+ messages in thread
From: Neil Armstrong @ 2017-06-06  9:45 UTC (permalink / raw)
  To: linus-amlogic

Add bindings for the SoC information register of the Amlogic SoCs.

Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
 Documentation/devicetree/bindings/arm/amlogic.txt | 32 +++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/Documentation/devicetree/bindings/arm/amlogic.txt b/Documentation/devicetree/bindings/arm/amlogic.txt
index 5c01e65..ae3e8ed 100644
--- a/Documentation/devicetree/bindings/arm/amlogic.txt
+++ b/Documentation/devicetree/bindings/arm/amlogic.txt
@@ -60,3 +60,35 @@ Board compatible values (alphabetically, grouped by SoC):
   - "amlogic,q201" (Meson gxm s912)
   - "kingnovel,r-box-pro" (Meson gxm S912)
   - "nexbox,a1" (Meson gxm s912)
+
+Amlogic Meson Firmware registers Interface
+------------------------------------------
+
+The Meson SoCs have a register bank with status and data shared with the
+secure firmware.
+
+Required properties:
+ - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd"
+
+Sub-nodes should indentify components of this register interface :
+
+Meson GX SoC Information
+------------------------
+A firmware register encodes the SoC type, package and revision information on
+the Meson GX SoCs.
+If present, a device node for this register should be added.
+
+Required properties:
+  - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-chipid".
+
+Example
+-------
+
+ao-secure at 140 {
+	compatible = "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd";
+	reg = <0x0 0x140 0x0 0x140>;
+
+	chipid {
+		compatible = "amlogic,meson-gx-chipid";
+	};
+};
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH v2 2/3] ARM64: dts: meson-gx: Add SoC info register
@ 2017-06-06  9:45   ` Neil Armstrong
  0 siblings, 0 replies; 25+ messages in thread
From: Neil Armstrong @ 2017-06-06  9:45 UTC (permalink / raw)
  To: khilman, carlo
  Cc: Neil Armstrong, linux-amlogic, linux-arm-kernel, linux-kernel,
	devicetree

Add node for the Amlogic Meson GX SoC information register.

Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
 arch/arm64/boot/dts/amlogic/meson-gx.dtsi | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
index 436b875..50d001a 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
@@ -365,6 +365,15 @@
 				#reset-cells = <1>;
 			};
 
+			sec_AO: ao-secure@140 {
+				compatible = "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd";
+				reg = <0x0 0x140 0x0 0x140>;
+
+				chipid {
+					compatible = "amlogic,meson-gx-chipid";
+				};
+			};
+
 			uart_AO: serial@4c0 {
 				compatible = "amlogic,meson-uart";
 				reg = <0x0 0x004c0 0x0 0x14>;
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH v2 2/3] ARM64: dts: meson-gx: Add SoC info register
@ 2017-06-06  9:45   ` Neil Armstrong
  0 siblings, 0 replies; 25+ messages in thread
From: Neil Armstrong @ 2017-06-06  9:45 UTC (permalink / raw)
  To: khilman-rdvid1DuHRBWk0Htik3J/w, carlo-KA+7E9HrN00dnm+yROfE0A
  Cc: Neil Armstrong, linux-amlogic-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	devicetree-u79uwXL29TY76Z2rM5mHXA

Add node for the Amlogic Meson GX SoC information register.

Signed-off-by: Neil Armstrong <narmstrong-rdvid1DuHRBWk0Htik3J/w@public.gmane.org>
---
 arch/arm64/boot/dts/amlogic/meson-gx.dtsi | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
index 436b875..50d001a 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
@@ -365,6 +365,15 @@
 				#reset-cells = <1>;
 			};
 
+			sec_AO: ao-secure@140 {
+				compatible = "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd";
+				reg = <0x0 0x140 0x0 0x140>;
+
+				chipid {
+					compatible = "amlogic,meson-gx-chipid";
+				};
+			};
+
 			uart_AO: serial@4c0 {
 				compatible = "amlogic,meson-uart";
 				reg = <0x0 0x004c0 0x0 0x14>;
-- 
1.9.1

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

^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH v2 2/3] ARM64: dts: meson-gx: Add SoC info register
@ 2017-06-06  9:45   ` Neil Armstrong
  0 siblings, 0 replies; 25+ messages in thread
From: Neil Armstrong @ 2017-06-06  9:45 UTC (permalink / raw)
  To: linux-arm-kernel

Add node for the Amlogic Meson GX SoC information register.

Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
 arch/arm64/boot/dts/amlogic/meson-gx.dtsi | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
index 436b875..50d001a 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
@@ -365,6 +365,15 @@
 				#reset-cells = <1>;
 			};
 
+			sec_AO: ao-secure at 140 {
+				compatible = "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd";
+				reg = <0x0 0x140 0x0 0x140>;
+
+				chipid {
+					compatible = "amlogic,meson-gx-chipid";
+				};
+			};
+
 			uart_AO: serial at 4c0 {
 				compatible = "amlogic,meson-uart";
 				reg = <0x0 0x004c0 0x0 0x14>;
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH v2 2/3] ARM64: dts: meson-gx: Add SoC info register
@ 2017-06-06  9:45   ` Neil Armstrong
  0 siblings, 0 replies; 25+ messages in thread
From: Neil Armstrong @ 2017-06-06  9:45 UTC (permalink / raw)
  To: linus-amlogic

Add node for the Amlogic Meson GX SoC information register.

Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
 arch/arm64/boot/dts/amlogic/meson-gx.dtsi | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
index 436b875..50d001a 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
@@ -365,6 +365,15 @@
 				#reset-cells = <1>;
 			};
 
+			sec_AO: ao-secure at 140 {
+				compatible = "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd";
+				reg = <0x0 0x140 0x0 0x140>;
+
+				chipid {
+					compatible = "amlogic,meson-gx-chipid";
+				};
+			};
+
 			uart_AO: serial at 4c0 {
 				compatible = "amlogic,meson-uart";
 				reg = <0x0 0x004c0 0x0 0x14>;
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH v2 3/3] soc: Add Amlogic SoC Information driver
  2017-06-06  9:45 ` Neil Armstrong
  (?)
@ 2017-06-06  9:45   ` Neil Armstrong
  -1 siblings, 0 replies; 25+ messages in thread
From: Neil Armstrong @ 2017-06-06  9:45 UTC (permalink / raw)
  To: khilman, carlo
  Cc: Neil Armstrong, linux-amlogic, linux-arm-kernel, linux-kernel

Amlogic SoCs have a SoC information register for SoC type, package type and
revision information.
This patchs adds support for this register decoding and exposing with the
SoC bus infrastructure.

Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
 drivers/soc/Kconfig                    |   1 +
 drivers/soc/Makefile                   |   1 +
 drivers/soc/amlogic/Kconfig            |  12 +++
 drivers/soc/amlogic/Makefile           |   1 +
 drivers/soc/amlogic/meson-gx-socinfo.c | 169 +++++++++++++++++++++++++++++++++
 5 files changed, 184 insertions(+)
 create mode 100644 drivers/soc/amlogic/Kconfig
 create mode 100644 drivers/soc/amlogic/Makefile
 create mode 100644 drivers/soc/amlogic/meson-gx-socinfo.c

diff --git a/drivers/soc/Kconfig b/drivers/soc/Kconfig
index 309643f..95416a4 100644
--- a/drivers/soc/Kconfig
+++ b/drivers/soc/Kconfig
@@ -1,5 +1,6 @@
 menu "SOC (System On Chip) specific Drivers"
 
+source "drivers/soc/amlogic/Kconfig"
 source "drivers/soc/atmel/Kconfig"
 source "drivers/soc/bcm/Kconfig"
 source "drivers/soc/fsl/Kconfig"
diff --git a/drivers/soc/Makefile b/drivers/soc/Makefile
index 824b442..4fc957e 100644
--- a/drivers/soc/Makefile
+++ b/drivers/soc/Makefile
@@ -9,6 +9,7 @@ obj-$(CONFIG_MACH_DOVE)		+= dove/
 obj-y				+= fsl/
 obj-$(CONFIG_ARCH_MXC)		+= imx/
 obj-$(CONFIG_ARCH_MEDIATEK)	+= mediatek/
+obj-$(CONFIG_ARCH_MESON)	+= amlogic/
 obj-$(CONFIG_ARCH_QCOM)		+= qcom/
 obj-$(CONFIG_ARCH_RENESAS)	+= renesas/
 obj-$(CONFIG_ARCH_ROCKCHIP)	+= rockchip/
diff --git a/drivers/soc/amlogic/Kconfig b/drivers/soc/amlogic/Kconfig
new file mode 100644
index 0000000..22acf06
--- /dev/null
+++ b/drivers/soc/amlogic/Kconfig
@@ -0,0 +1,12 @@
+menu "Amlogic SoC drivers"
+
+config MESON_GX_SOCINFO
+	bool "Amlogic Meson GX SoC Information driver"
+	depends on ARCH_MESON || COMPILE_TEST
+	default ARCH_MESON
+	select SOC_BUS
+	help
+	  Say yes to support decoding of Amlogic Meson GX SoC family
+	  information about the type, package and version.
+
+endmenu
diff --git a/drivers/soc/amlogic/Makefile b/drivers/soc/amlogic/Makefile
new file mode 100644
index 0000000..3e85fc4
--- /dev/null
+++ b/drivers/soc/amlogic/Makefile
@@ -0,0 +1 @@
+obj-$(CONFIG_MESON_GX_SOCINFO) += meson-gx-socinfo.o
diff --git a/drivers/soc/amlogic/meson-gx-socinfo.c b/drivers/soc/amlogic/meson-gx-socinfo.c
new file mode 100644
index 0000000..9963370
--- /dev/null
+++ b/drivers/soc/amlogic/meson-gx-socinfo.c
@@ -0,0 +1,169 @@
+/*
+ * Copyright (c) 2017 BayLibre, SAS
+ * Author: Neil Armstrong <narmstrong@baylibre.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <linux/io.h>
+#include <linux/of.h>
+#include <linux/of_address.h>
+#include <linux/of_platform.h>
+#include <linux/platform_device.h>
+#include <linux/slab.h>
+#include <linux/sys_soc.h>
+#include <linux/bitfield.h>
+#include <linux/regmap.h>
+#include <linux/mfd/syscon.h>
+
+#define AO_SEC_SD_CFG8		0xe0
+#define AO_SEC_SOCINFO_OFFSET	AO_SEC_SD_CFG8
+
+#define SOCINFO_MAJOR	GENMASK(31, 24)
+#define SOCINFO_MINOR	GENMASK(23, 16)
+#define SOCINFO_PACK	GENMASK(15, 8)
+#define SOCINFO_MISC	GENMASK(7, 0)
+
+static const struct meson_gx_soc_id {
+	const char *name;
+	unsigned int id;
+} soc_ids[] = {
+	{ "GXBB", 0x1f },
+	{ "GXTVBB", 0x20 },
+	{ "GXL", 0x21 },
+	{ "GXM", 0x22 },
+	{ "TXL", 0x23 },
+};
+
+static const struct meson_gx_package_id {
+	const char *name;
+	unsigned int major_id;
+	unsigned int pack_id;
+} soc_packages[] = {
+	{ "S905", 0x1f, 0 },
+	{ "S905M", 0x1f, 0x20 },
+	{ "S905D", 0x21, 0 },
+	{ "S905X", 0x21, 0x80 },
+	{ "S905L", 0x21, 0xc0 },
+	{ "S905M2", 0x21, 0xe0 },
+	{ "S912", 0x22, 0 },
+};
+
+static inline unsigned int socinfo_to_major(u32 socinfo)
+{
+	return FIELD_GET(SOCINFO_MAJOR, socinfo);
+}
+
+static inline unsigned int socinfo_to_minor(u32 socinfo)
+{
+	return FIELD_GET(SOCINFO_MINOR, socinfo);
+}
+
+static inline unsigned int socinfo_to_pack(u32 socinfo)
+{
+	return FIELD_GET(SOCINFO_PACK, socinfo);
+}
+
+static inline unsigned int socinfo_to_misc(u32 socinfo)
+{
+	return FIELD_GET(SOCINFO_MISC, socinfo);
+}
+
+static const char *socinfo_to_package_id(u32 socinfo)
+{
+	unsigned int pack = socinfo_to_pack(socinfo) & 0xf0;
+	unsigned int major = socinfo_to_major(socinfo);
+	int i;
+
+	for (i = 0 ; i < ARRAY_SIZE(soc_packages) ; ++i) {
+		if (soc_packages[i].major_id == major &&
+		    soc_packages[i].pack_id == pack)
+			return soc_packages[i].name;
+	}
+
+	return "Unknown";
+}
+
+static const char *socinfo_to_soc_id(u32 socinfo)
+{
+	unsigned int id = socinfo_to_major(socinfo);
+	int i;
+
+	for (i = 0 ; i < ARRAY_SIZE(soc_ids) ; ++i) {
+		if (soc_ids[i].id == id)
+			return soc_ids[i].name;
+	}
+
+	return "Unknown";
+}
+
+int __init meson_gx_socinfo_init(void)
+{
+	struct soc_device_attribute *soc_dev_attr;
+	struct soc_device *soc_dev;
+	struct device_node *np;
+	struct regmap *regmap;
+	unsigned int socinfo;
+	struct device *dev;
+	int ret;
+
+	/* look up for chipid node */
+	np = of_find_compatible_node(NULL, NULL, "amlogic,meson-gx-chipid");
+	if (!np)
+		return -ENODEV;
+
+	/* parent node should be a syscon */
+	regmap = syscon_node_to_regmap(of_get_parent(np));
+	of_node_put(np);
+	if (IS_ERR(regmap)) {
+		pr_err("%s: failed to get regmap\n", __func__);
+		return -ENODEV;
+	}
+
+	ret = regmap_read(regmap, AO_SEC_SOCINFO_OFFSET, &socinfo);
+	if (ret < 0)
+		return ret;
+
+	if (!socinfo) {
+		pr_err("%s: invalid chipid value\n", __func__);
+		return -EINVAL;
+	}
+
+	soc_dev_attr = kzalloc(sizeof(*soc_dev_attr), GFP_KERNEL);
+	if (!soc_dev_attr)
+		return -ENODEV;
+
+	soc_dev_attr->family = "Amlogic Meson";
+
+	np = of_find_node_by_path("/");
+	of_property_read_string(np, "model", &soc_dev_attr->machine);
+	of_node_put(np);
+
+	soc_dev_attr->revision = kasprintf(GFP_KERNEL, "%x:%x - %x:%x",
+					   socinfo_to_major(socinfo),
+					   socinfo_to_minor(socinfo),
+					   socinfo_to_pack(socinfo),
+					   socinfo_to_misc(socinfo));
+	soc_dev_attr->soc_id = kasprintf(GFP_KERNEL, "%s (%s)",
+					 socinfo_to_soc_id(socinfo),
+					 socinfo_to_package_id(socinfo));
+
+	soc_dev = soc_device_register(soc_dev_attr);
+	if (IS_ERR(soc_dev)) {
+		kfree(soc_dev_attr->revision);
+		kfree_const(soc_dev_attr->soc_id);
+		kfree(soc_dev_attr);
+		return PTR_ERR(soc_dev);
+	}
+	dev = soc_device_to_device(soc_dev);
+
+	dev_info(dev, "Amlogic Meson %s Revision %x:%x (%x:%x) Detected\n",
+			soc_dev_attr->soc_id,
+			socinfo_to_major(socinfo),
+			socinfo_to_minor(socinfo),
+			socinfo_to_pack(socinfo),
+			socinfo_to_misc(socinfo));
+
+	return 0;
+}
+device_initcall(meson_gx_socinfo_init);
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH v2 3/3] soc: Add Amlogic SoC Information driver
@ 2017-06-06  9:45   ` Neil Armstrong
  0 siblings, 0 replies; 25+ messages in thread
From: Neil Armstrong @ 2017-06-06  9:45 UTC (permalink / raw)
  To: linux-arm-kernel

Amlogic SoCs have a SoC information register for SoC type, package type and
revision information.
This patchs adds support for this register decoding and exposing with the
SoC bus infrastructure.

Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
 drivers/soc/Kconfig                    |   1 +
 drivers/soc/Makefile                   |   1 +
 drivers/soc/amlogic/Kconfig            |  12 +++
 drivers/soc/amlogic/Makefile           |   1 +
 drivers/soc/amlogic/meson-gx-socinfo.c | 169 +++++++++++++++++++++++++++++++++
 5 files changed, 184 insertions(+)
 create mode 100644 drivers/soc/amlogic/Kconfig
 create mode 100644 drivers/soc/amlogic/Makefile
 create mode 100644 drivers/soc/amlogic/meson-gx-socinfo.c

diff --git a/drivers/soc/Kconfig b/drivers/soc/Kconfig
index 309643f..95416a4 100644
--- a/drivers/soc/Kconfig
+++ b/drivers/soc/Kconfig
@@ -1,5 +1,6 @@
 menu "SOC (System On Chip) specific Drivers"
 
+source "drivers/soc/amlogic/Kconfig"
 source "drivers/soc/atmel/Kconfig"
 source "drivers/soc/bcm/Kconfig"
 source "drivers/soc/fsl/Kconfig"
diff --git a/drivers/soc/Makefile b/drivers/soc/Makefile
index 824b442..4fc957e 100644
--- a/drivers/soc/Makefile
+++ b/drivers/soc/Makefile
@@ -9,6 +9,7 @@ obj-$(CONFIG_MACH_DOVE)		+= dove/
 obj-y				+= fsl/
 obj-$(CONFIG_ARCH_MXC)		+= imx/
 obj-$(CONFIG_ARCH_MEDIATEK)	+= mediatek/
+obj-$(CONFIG_ARCH_MESON)	+= amlogic/
 obj-$(CONFIG_ARCH_QCOM)		+= qcom/
 obj-$(CONFIG_ARCH_RENESAS)	+= renesas/
 obj-$(CONFIG_ARCH_ROCKCHIP)	+= rockchip/
diff --git a/drivers/soc/amlogic/Kconfig b/drivers/soc/amlogic/Kconfig
new file mode 100644
index 0000000..22acf06
--- /dev/null
+++ b/drivers/soc/amlogic/Kconfig
@@ -0,0 +1,12 @@
+menu "Amlogic SoC drivers"
+
+config MESON_GX_SOCINFO
+	bool "Amlogic Meson GX SoC Information driver"
+	depends on ARCH_MESON || COMPILE_TEST
+	default ARCH_MESON
+	select SOC_BUS
+	help
+	  Say yes to support decoding of Amlogic Meson GX SoC family
+	  information about the type, package and version.
+
+endmenu
diff --git a/drivers/soc/amlogic/Makefile b/drivers/soc/amlogic/Makefile
new file mode 100644
index 0000000..3e85fc4
--- /dev/null
+++ b/drivers/soc/amlogic/Makefile
@@ -0,0 +1 @@
+obj-$(CONFIG_MESON_GX_SOCINFO) += meson-gx-socinfo.o
diff --git a/drivers/soc/amlogic/meson-gx-socinfo.c b/drivers/soc/amlogic/meson-gx-socinfo.c
new file mode 100644
index 0000000..9963370
--- /dev/null
+++ b/drivers/soc/amlogic/meson-gx-socinfo.c
@@ -0,0 +1,169 @@
+/*
+ * Copyright (c) 2017 BayLibre, SAS
+ * Author: Neil Armstrong <narmstrong@baylibre.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <linux/io.h>
+#include <linux/of.h>
+#include <linux/of_address.h>
+#include <linux/of_platform.h>
+#include <linux/platform_device.h>
+#include <linux/slab.h>
+#include <linux/sys_soc.h>
+#include <linux/bitfield.h>
+#include <linux/regmap.h>
+#include <linux/mfd/syscon.h>
+
+#define AO_SEC_SD_CFG8		0xe0
+#define AO_SEC_SOCINFO_OFFSET	AO_SEC_SD_CFG8
+
+#define SOCINFO_MAJOR	GENMASK(31, 24)
+#define SOCINFO_MINOR	GENMASK(23, 16)
+#define SOCINFO_PACK	GENMASK(15, 8)
+#define SOCINFO_MISC	GENMASK(7, 0)
+
+static const struct meson_gx_soc_id {
+	const char *name;
+	unsigned int id;
+} soc_ids[] = {
+	{ "GXBB", 0x1f },
+	{ "GXTVBB", 0x20 },
+	{ "GXL", 0x21 },
+	{ "GXM", 0x22 },
+	{ "TXL", 0x23 },
+};
+
+static const struct meson_gx_package_id {
+	const char *name;
+	unsigned int major_id;
+	unsigned int pack_id;
+} soc_packages[] = {
+	{ "S905", 0x1f, 0 },
+	{ "S905M", 0x1f, 0x20 },
+	{ "S905D", 0x21, 0 },
+	{ "S905X", 0x21, 0x80 },
+	{ "S905L", 0x21, 0xc0 },
+	{ "S905M2", 0x21, 0xe0 },
+	{ "S912", 0x22, 0 },
+};
+
+static inline unsigned int socinfo_to_major(u32 socinfo)
+{
+	return FIELD_GET(SOCINFO_MAJOR, socinfo);
+}
+
+static inline unsigned int socinfo_to_minor(u32 socinfo)
+{
+	return FIELD_GET(SOCINFO_MINOR, socinfo);
+}
+
+static inline unsigned int socinfo_to_pack(u32 socinfo)
+{
+	return FIELD_GET(SOCINFO_PACK, socinfo);
+}
+
+static inline unsigned int socinfo_to_misc(u32 socinfo)
+{
+	return FIELD_GET(SOCINFO_MISC, socinfo);
+}
+
+static const char *socinfo_to_package_id(u32 socinfo)
+{
+	unsigned int pack = socinfo_to_pack(socinfo) & 0xf0;
+	unsigned int major = socinfo_to_major(socinfo);
+	int i;
+
+	for (i = 0 ; i < ARRAY_SIZE(soc_packages) ; ++i) {
+		if (soc_packages[i].major_id == major &&
+		    soc_packages[i].pack_id == pack)
+			return soc_packages[i].name;
+	}
+
+	return "Unknown";
+}
+
+static const char *socinfo_to_soc_id(u32 socinfo)
+{
+	unsigned int id = socinfo_to_major(socinfo);
+	int i;
+
+	for (i = 0 ; i < ARRAY_SIZE(soc_ids) ; ++i) {
+		if (soc_ids[i].id == id)
+			return soc_ids[i].name;
+	}
+
+	return "Unknown";
+}
+
+int __init meson_gx_socinfo_init(void)
+{
+	struct soc_device_attribute *soc_dev_attr;
+	struct soc_device *soc_dev;
+	struct device_node *np;
+	struct regmap *regmap;
+	unsigned int socinfo;
+	struct device *dev;
+	int ret;
+
+	/* look up for chipid node */
+	np = of_find_compatible_node(NULL, NULL, "amlogic,meson-gx-chipid");
+	if (!np)
+		return -ENODEV;
+
+	/* parent node should be a syscon */
+	regmap = syscon_node_to_regmap(of_get_parent(np));
+	of_node_put(np);
+	if (IS_ERR(regmap)) {
+		pr_err("%s: failed to get regmap\n", __func__);
+		return -ENODEV;
+	}
+
+	ret = regmap_read(regmap, AO_SEC_SOCINFO_OFFSET, &socinfo);
+	if (ret < 0)
+		return ret;
+
+	if (!socinfo) {
+		pr_err("%s: invalid chipid value\n", __func__);
+		return -EINVAL;
+	}
+
+	soc_dev_attr = kzalloc(sizeof(*soc_dev_attr), GFP_KERNEL);
+	if (!soc_dev_attr)
+		return -ENODEV;
+
+	soc_dev_attr->family = "Amlogic Meson";
+
+	np = of_find_node_by_path("/");
+	of_property_read_string(np, "model", &soc_dev_attr->machine);
+	of_node_put(np);
+
+	soc_dev_attr->revision = kasprintf(GFP_KERNEL, "%x:%x - %x:%x",
+					   socinfo_to_major(socinfo),
+					   socinfo_to_minor(socinfo),
+					   socinfo_to_pack(socinfo),
+					   socinfo_to_misc(socinfo));
+	soc_dev_attr->soc_id = kasprintf(GFP_KERNEL, "%s (%s)",
+					 socinfo_to_soc_id(socinfo),
+					 socinfo_to_package_id(socinfo));
+
+	soc_dev = soc_device_register(soc_dev_attr);
+	if (IS_ERR(soc_dev)) {
+		kfree(soc_dev_attr->revision);
+		kfree_const(soc_dev_attr->soc_id);
+		kfree(soc_dev_attr);
+		return PTR_ERR(soc_dev);
+	}
+	dev = soc_device_to_device(soc_dev);
+
+	dev_info(dev, "Amlogic Meson %s Revision %x:%x (%x:%x) Detected\n",
+			soc_dev_attr->soc_id,
+			socinfo_to_major(socinfo),
+			socinfo_to_minor(socinfo),
+			socinfo_to_pack(socinfo),
+			socinfo_to_misc(socinfo));
+
+	return 0;
+}
+device_initcall(meson_gx_socinfo_init);
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH v2 3/3] soc: Add Amlogic SoC Information driver
@ 2017-06-06  9:45   ` Neil Armstrong
  0 siblings, 0 replies; 25+ messages in thread
From: Neil Armstrong @ 2017-06-06  9:45 UTC (permalink / raw)
  To: linus-amlogic

Amlogic SoCs have a SoC information register for SoC type, package type and
revision information.
This patchs adds support for this register decoding and exposing with the
SoC bus infrastructure.

Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
 drivers/soc/Kconfig                    |   1 +
 drivers/soc/Makefile                   |   1 +
 drivers/soc/amlogic/Kconfig            |  12 +++
 drivers/soc/amlogic/Makefile           |   1 +
 drivers/soc/amlogic/meson-gx-socinfo.c | 169 +++++++++++++++++++++++++++++++++
 5 files changed, 184 insertions(+)
 create mode 100644 drivers/soc/amlogic/Kconfig
 create mode 100644 drivers/soc/amlogic/Makefile
 create mode 100644 drivers/soc/amlogic/meson-gx-socinfo.c

diff --git a/drivers/soc/Kconfig b/drivers/soc/Kconfig
index 309643f..95416a4 100644
--- a/drivers/soc/Kconfig
+++ b/drivers/soc/Kconfig
@@ -1,5 +1,6 @@
 menu "SOC (System On Chip) specific Drivers"
 
+source "drivers/soc/amlogic/Kconfig"
 source "drivers/soc/atmel/Kconfig"
 source "drivers/soc/bcm/Kconfig"
 source "drivers/soc/fsl/Kconfig"
diff --git a/drivers/soc/Makefile b/drivers/soc/Makefile
index 824b442..4fc957e 100644
--- a/drivers/soc/Makefile
+++ b/drivers/soc/Makefile
@@ -9,6 +9,7 @@ obj-$(CONFIG_MACH_DOVE)		+= dove/
 obj-y				+= fsl/
 obj-$(CONFIG_ARCH_MXC)		+= imx/
 obj-$(CONFIG_ARCH_MEDIATEK)	+= mediatek/
+obj-$(CONFIG_ARCH_MESON)	+= amlogic/
 obj-$(CONFIG_ARCH_QCOM)		+= qcom/
 obj-$(CONFIG_ARCH_RENESAS)	+= renesas/
 obj-$(CONFIG_ARCH_ROCKCHIP)	+= rockchip/
diff --git a/drivers/soc/amlogic/Kconfig b/drivers/soc/amlogic/Kconfig
new file mode 100644
index 0000000..22acf06
--- /dev/null
+++ b/drivers/soc/amlogic/Kconfig
@@ -0,0 +1,12 @@
+menu "Amlogic SoC drivers"
+
+config MESON_GX_SOCINFO
+	bool "Amlogic Meson GX SoC Information driver"
+	depends on ARCH_MESON || COMPILE_TEST
+	default ARCH_MESON
+	select SOC_BUS
+	help
+	  Say yes to support decoding of Amlogic Meson GX SoC family
+	  information about the type, package and version.
+
+endmenu
diff --git a/drivers/soc/amlogic/Makefile b/drivers/soc/amlogic/Makefile
new file mode 100644
index 0000000..3e85fc4
--- /dev/null
+++ b/drivers/soc/amlogic/Makefile
@@ -0,0 +1 @@
+obj-$(CONFIG_MESON_GX_SOCINFO) += meson-gx-socinfo.o
diff --git a/drivers/soc/amlogic/meson-gx-socinfo.c b/drivers/soc/amlogic/meson-gx-socinfo.c
new file mode 100644
index 0000000..9963370
--- /dev/null
+++ b/drivers/soc/amlogic/meson-gx-socinfo.c
@@ -0,0 +1,169 @@
+/*
+ * Copyright (c) 2017 BayLibre, SAS
+ * Author: Neil Armstrong <narmstrong@baylibre.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <linux/io.h>
+#include <linux/of.h>
+#include <linux/of_address.h>
+#include <linux/of_platform.h>
+#include <linux/platform_device.h>
+#include <linux/slab.h>
+#include <linux/sys_soc.h>
+#include <linux/bitfield.h>
+#include <linux/regmap.h>
+#include <linux/mfd/syscon.h>
+
+#define AO_SEC_SD_CFG8		0xe0
+#define AO_SEC_SOCINFO_OFFSET	AO_SEC_SD_CFG8
+
+#define SOCINFO_MAJOR	GENMASK(31, 24)
+#define SOCINFO_MINOR	GENMASK(23, 16)
+#define SOCINFO_PACK	GENMASK(15, 8)
+#define SOCINFO_MISC	GENMASK(7, 0)
+
+static const struct meson_gx_soc_id {
+	const char *name;
+	unsigned int id;
+} soc_ids[] = {
+	{ "GXBB", 0x1f },
+	{ "GXTVBB", 0x20 },
+	{ "GXL", 0x21 },
+	{ "GXM", 0x22 },
+	{ "TXL", 0x23 },
+};
+
+static const struct meson_gx_package_id {
+	const char *name;
+	unsigned int major_id;
+	unsigned int pack_id;
+} soc_packages[] = {
+	{ "S905", 0x1f, 0 },
+	{ "S905M", 0x1f, 0x20 },
+	{ "S905D", 0x21, 0 },
+	{ "S905X", 0x21, 0x80 },
+	{ "S905L", 0x21, 0xc0 },
+	{ "S905M2", 0x21, 0xe0 },
+	{ "S912", 0x22, 0 },
+};
+
+static inline unsigned int socinfo_to_major(u32 socinfo)
+{
+	return FIELD_GET(SOCINFO_MAJOR, socinfo);
+}
+
+static inline unsigned int socinfo_to_minor(u32 socinfo)
+{
+	return FIELD_GET(SOCINFO_MINOR, socinfo);
+}
+
+static inline unsigned int socinfo_to_pack(u32 socinfo)
+{
+	return FIELD_GET(SOCINFO_PACK, socinfo);
+}
+
+static inline unsigned int socinfo_to_misc(u32 socinfo)
+{
+	return FIELD_GET(SOCINFO_MISC, socinfo);
+}
+
+static const char *socinfo_to_package_id(u32 socinfo)
+{
+	unsigned int pack = socinfo_to_pack(socinfo) & 0xf0;
+	unsigned int major = socinfo_to_major(socinfo);
+	int i;
+
+	for (i = 0 ; i < ARRAY_SIZE(soc_packages) ; ++i) {
+		if (soc_packages[i].major_id == major &&
+		    soc_packages[i].pack_id == pack)
+			return soc_packages[i].name;
+	}
+
+	return "Unknown";
+}
+
+static const char *socinfo_to_soc_id(u32 socinfo)
+{
+	unsigned int id = socinfo_to_major(socinfo);
+	int i;
+
+	for (i = 0 ; i < ARRAY_SIZE(soc_ids) ; ++i) {
+		if (soc_ids[i].id == id)
+			return soc_ids[i].name;
+	}
+
+	return "Unknown";
+}
+
+int __init meson_gx_socinfo_init(void)
+{
+	struct soc_device_attribute *soc_dev_attr;
+	struct soc_device *soc_dev;
+	struct device_node *np;
+	struct regmap *regmap;
+	unsigned int socinfo;
+	struct device *dev;
+	int ret;
+
+	/* look up for chipid node */
+	np = of_find_compatible_node(NULL, NULL, "amlogic,meson-gx-chipid");
+	if (!np)
+		return -ENODEV;
+
+	/* parent node should be a syscon */
+	regmap = syscon_node_to_regmap(of_get_parent(np));
+	of_node_put(np);
+	if (IS_ERR(regmap)) {
+		pr_err("%s: failed to get regmap\n", __func__);
+		return -ENODEV;
+	}
+
+	ret = regmap_read(regmap, AO_SEC_SOCINFO_OFFSET, &socinfo);
+	if (ret < 0)
+		return ret;
+
+	if (!socinfo) {
+		pr_err("%s: invalid chipid value\n", __func__);
+		return -EINVAL;
+	}
+
+	soc_dev_attr = kzalloc(sizeof(*soc_dev_attr), GFP_KERNEL);
+	if (!soc_dev_attr)
+		return -ENODEV;
+
+	soc_dev_attr->family = "Amlogic Meson";
+
+	np = of_find_node_by_path("/");
+	of_property_read_string(np, "model", &soc_dev_attr->machine);
+	of_node_put(np);
+
+	soc_dev_attr->revision = kasprintf(GFP_KERNEL, "%x:%x - %x:%x",
+					   socinfo_to_major(socinfo),
+					   socinfo_to_minor(socinfo),
+					   socinfo_to_pack(socinfo),
+					   socinfo_to_misc(socinfo));
+	soc_dev_attr->soc_id = kasprintf(GFP_KERNEL, "%s (%s)",
+					 socinfo_to_soc_id(socinfo),
+					 socinfo_to_package_id(socinfo));
+
+	soc_dev = soc_device_register(soc_dev_attr);
+	if (IS_ERR(soc_dev)) {
+		kfree(soc_dev_attr->revision);
+		kfree_const(soc_dev_attr->soc_id);
+		kfree(soc_dev_attr);
+		return PTR_ERR(soc_dev);
+	}
+	dev = soc_device_to_device(soc_dev);
+
+	dev_info(dev, "Amlogic Meson %s Revision %x:%x (%x:%x) Detected\n",
+			soc_dev_attr->soc_id,
+			socinfo_to_major(socinfo),
+			socinfo_to_minor(socinfo),
+			socinfo_to_pack(socinfo),
+			socinfo_to_misc(socinfo));
+
+	return 0;
+}
+device_initcall(meson_gx_socinfo_init);
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 25+ messages in thread

* Re: [PATCH v2 1/3] dt-bindings: arm: amlogic: Add SoC information bindings
@ 2017-06-09 13:37     ` Rob Herring
  0 siblings, 0 replies; 25+ messages in thread
From: Rob Herring @ 2017-06-09 13:37 UTC (permalink / raw)
  To: Neil Armstrong
  Cc: khilman, carlo, linux-amlogic, devicetree, linux-kernel,
	linux-arm-kernel

On Tue, Jun 06, 2017 at 11:45:38AM +0200, Neil Armstrong wrote:
> Add bindings for the SoC information register of the Amlogic SoCs.
> 
> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
> ---
>  Documentation/devicetree/bindings/arm/amlogic.txt | 32 +++++++++++++++++++++++
>  1 file changed, 32 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/arm/amlogic.txt b/Documentation/devicetree/bindings/arm/amlogic.txt
> index 5c01e65..ae3e8ed 100644
> --- a/Documentation/devicetree/bindings/arm/amlogic.txt
> +++ b/Documentation/devicetree/bindings/arm/amlogic.txt
> @@ -60,3 +60,35 @@ Board compatible values (alphabetically, grouped by SoC):
>    - "amlogic,q201" (Meson gxm s912)
>    - "kingnovel,r-box-pro" (Meson gxm S912)
>    - "nexbox,a1" (Meson gxm s912)
> +
> +Amlogic Meson Firmware registers Interface
> +------------------------------------------
> +
> +The Meson SoCs have a register bank with status and data shared with the
> +secure firmware.
> +
> +Required properties:
> + - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd"
> +
> +Sub-nodes should indentify components of this register interface :
> +
> +Meson GX SoC Information
> +------------------------
> +A firmware register encodes the SoC type, package and revision information on
> +the Meson GX SoCs.
> +If present, a device node for this register should be added.
> +
> +Required properties:
> +  - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-chipid".
> +
> +Example
> +-------
> +
> +ao-secure@140 {
> +	compatible = "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd";
> +	reg = <0x0 0x140 0x0 0x140>;
> +
> +	chipid {
> +		compatible = "amlogic,meson-gx-chipid";

No registers for this block? If not, this node is pointless. 
"amlogic,meson-gx-ao-secure" should be specific enough to determine if 
you have this block or not and the driver for it can create a device if 
the OS needs it.

Rob

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH v2 1/3] dt-bindings: arm: amlogic: Add SoC information bindings
@ 2017-06-09 13:37     ` Rob Herring
  0 siblings, 0 replies; 25+ messages in thread
From: Rob Herring @ 2017-06-09 13:37 UTC (permalink / raw)
  To: Neil Armstrong
  Cc: khilman-rdvid1DuHRBWk0Htik3J/w, carlo-KA+7E9HrN00dnm+yROfE0A,
	linux-amlogic-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

On Tue, Jun 06, 2017 at 11:45:38AM +0200, Neil Armstrong wrote:
> Add bindings for the SoC information register of the Amlogic SoCs.
> 
> Signed-off-by: Neil Armstrong <narmstrong-rdvid1DuHRBWk0Htik3J/w@public.gmane.org>
> ---
>  Documentation/devicetree/bindings/arm/amlogic.txt | 32 +++++++++++++++++++++++
>  1 file changed, 32 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/arm/amlogic.txt b/Documentation/devicetree/bindings/arm/amlogic.txt
> index 5c01e65..ae3e8ed 100644
> --- a/Documentation/devicetree/bindings/arm/amlogic.txt
> +++ b/Documentation/devicetree/bindings/arm/amlogic.txt
> @@ -60,3 +60,35 @@ Board compatible values (alphabetically, grouped by SoC):
>    - "amlogic,q201" (Meson gxm s912)
>    - "kingnovel,r-box-pro" (Meson gxm S912)
>    - "nexbox,a1" (Meson gxm s912)
> +
> +Amlogic Meson Firmware registers Interface
> +------------------------------------------
> +
> +The Meson SoCs have a register bank with status and data shared with the
> +secure firmware.
> +
> +Required properties:
> + - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd"
> +
> +Sub-nodes should indentify components of this register interface :
> +
> +Meson GX SoC Information
> +------------------------
> +A firmware register encodes the SoC type, package and revision information on
> +the Meson GX SoCs.
> +If present, a device node for this register should be added.
> +
> +Required properties:
> +  - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-chipid".
> +
> +Example
> +-------
> +
> +ao-secure@140 {
> +	compatible = "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd";
> +	reg = <0x0 0x140 0x0 0x140>;
> +
> +	chipid {
> +		compatible = "amlogic,meson-gx-chipid";

No registers for this block? If not, this node is pointless. 
"amlogic,meson-gx-ao-secure" should be specific enough to determine if 
you have this block or not and the driver for it can create a device if 
the OS needs it.

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

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH v2 1/3] dt-bindings: arm: amlogic: Add SoC information bindings
@ 2017-06-09 13:37     ` Rob Herring
  0 siblings, 0 replies; 25+ messages in thread
From: Rob Herring @ 2017-06-09 13:37 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Jun 06, 2017 at 11:45:38AM +0200, Neil Armstrong wrote:
> Add bindings for the SoC information register of the Amlogic SoCs.
> 
> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
> ---
>  Documentation/devicetree/bindings/arm/amlogic.txt | 32 +++++++++++++++++++++++
>  1 file changed, 32 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/arm/amlogic.txt b/Documentation/devicetree/bindings/arm/amlogic.txt
> index 5c01e65..ae3e8ed 100644
> --- a/Documentation/devicetree/bindings/arm/amlogic.txt
> +++ b/Documentation/devicetree/bindings/arm/amlogic.txt
> @@ -60,3 +60,35 @@ Board compatible values (alphabetically, grouped by SoC):
>    - "amlogic,q201" (Meson gxm s912)
>    - "kingnovel,r-box-pro" (Meson gxm S912)
>    - "nexbox,a1" (Meson gxm s912)
> +
> +Amlogic Meson Firmware registers Interface
> +------------------------------------------
> +
> +The Meson SoCs have a register bank with status and data shared with the
> +secure firmware.
> +
> +Required properties:
> + - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd"
> +
> +Sub-nodes should indentify components of this register interface :
> +
> +Meson GX SoC Information
> +------------------------
> +A firmware register encodes the SoC type, package and revision information on
> +the Meson GX SoCs.
> +If present, a device node for this register should be added.
> +
> +Required properties:
> +  - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-chipid".
> +
> +Example
> +-------
> +
> +ao-secure at 140 {
> +	compatible = "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd";
> +	reg = <0x0 0x140 0x0 0x140>;
> +
> +	chipid {
> +		compatible = "amlogic,meson-gx-chipid";

No registers for this block? If not, this node is pointless. 
"amlogic,meson-gx-ao-secure" should be specific enough to determine if 
you have this block or not and the driver for it can create a device if 
the OS needs it.

Rob

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH v2 1/3] dt-bindings: arm: amlogic: Add SoC information bindings
@ 2017-06-09 13:37     ` Rob Herring
  0 siblings, 0 replies; 25+ messages in thread
From: Rob Herring @ 2017-06-09 13:37 UTC (permalink / raw)
  To: linus-amlogic

On Tue, Jun 06, 2017 at 11:45:38AM +0200, Neil Armstrong wrote:
> Add bindings for the SoC information register of the Amlogic SoCs.
> 
> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
> ---
>  Documentation/devicetree/bindings/arm/amlogic.txt | 32 +++++++++++++++++++++++
>  1 file changed, 32 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/arm/amlogic.txt b/Documentation/devicetree/bindings/arm/amlogic.txt
> index 5c01e65..ae3e8ed 100644
> --- a/Documentation/devicetree/bindings/arm/amlogic.txt
> +++ b/Documentation/devicetree/bindings/arm/amlogic.txt
> @@ -60,3 +60,35 @@ Board compatible values (alphabetically, grouped by SoC):
>    - "amlogic,q201" (Meson gxm s912)
>    - "kingnovel,r-box-pro" (Meson gxm S912)
>    - "nexbox,a1" (Meson gxm s912)
> +
> +Amlogic Meson Firmware registers Interface
> +------------------------------------------
> +
> +The Meson SoCs have a register bank with status and data shared with the
> +secure firmware.
> +
> +Required properties:
> + - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd"
> +
> +Sub-nodes should indentify components of this register interface :
> +
> +Meson GX SoC Information
> +------------------------
> +A firmware register encodes the SoC type, package and revision information on
> +the Meson GX SoCs.
> +If present, a device node for this register should be added.
> +
> +Required properties:
> +  - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-chipid".
> +
> +Example
> +-------
> +
> +ao-secure at 140 {
> +	compatible = "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd";
> +	reg = <0x0 0x140 0x0 0x140>;
> +
> +	chipid {
> +		compatible = "amlogic,meson-gx-chipid";

No registers for this block? If not, this node is pointless. 
"amlogic,meson-gx-ao-secure" should be specific enough to determine if 
you have this block or not and the driver for it can create a device if 
the OS needs it.

Rob

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH v2 1/3] dt-bindings: arm: amlogic: Add SoC information bindings
  2017-06-09 13:37     ` Rob Herring
  (?)
@ 2017-06-09 13:58       ` Neil Armstrong
  -1 siblings, 0 replies; 25+ messages in thread
From: Neil Armstrong @ 2017-06-09 13:58 UTC (permalink / raw)
  To: Rob Herring
  Cc: khilman, carlo, linux-amlogic, devicetree, linux-kernel,
	linux-arm-kernel

On 06/09/2017 03:37 PM, Rob Herring wrote:
> On Tue, Jun 06, 2017 at 11:45:38AM +0200, Neil Armstrong wrote:
>> Add bindings for the SoC information register of the Amlogic SoCs.
>>
>> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
>> ---
>>  Documentation/devicetree/bindings/arm/amlogic.txt | 32 +++++++++++++++++++++++
>>  1 file changed, 32 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/arm/amlogic.txt b/Documentation/devicetree/bindings/arm/amlogic.txt
>> index 5c01e65..ae3e8ed 100644
>> --- a/Documentation/devicetree/bindings/arm/amlogic.txt
>> +++ b/Documentation/devicetree/bindings/arm/amlogic.txt
>> @@ -60,3 +60,35 @@ Board compatible values (alphabetically, grouped by SoC):
>>    - "amlogic,q201" (Meson gxm s912)
>>    - "kingnovel,r-box-pro" (Meson gxm S912)
>>    - "nexbox,a1" (Meson gxm s912)
>> +
>> +Amlogic Meson Firmware registers Interface
>> +------------------------------------------
>> +
>> +The Meson SoCs have a register bank with status and data shared with the
>> +secure firmware.
>> +
>> +Required properties:
>> + - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd"
>> +
>> +Sub-nodes should indentify components of this register interface :
>> +
>> +Meson GX SoC Information
>> +------------------------
>> +A firmware register encodes the SoC type, package and revision information on
>> +the Meson GX SoCs.
>> +If present, a device node for this register should be added.
>> +
>> +Required properties:
>> +  - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-chipid".
>> +
>> +Example
>> +-------
>> +
>> +ao-secure@140 {
>> +	compatible = "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd";
>> +	reg = <0x0 0x140 0x0 0x140>;
>> +
>> +	chipid {
>> +		compatible = "amlogic,meson-gx-chipid";
> 
> No registers for this block? If not, this node is pointless. 
> "amlogic,meson-gx-ao-secure" should be specific enough to determine if 
> you have this block or not and the driver for it can create a device if 
> the OS needs it.
> 
> Rob
> 

Well OK, but since it's a firmware interface, it can be handy to list the
possible capabilities, not especially tied to a driver.

Neil

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH v2 1/3] dt-bindings: arm: amlogic: Add SoC information bindings
@ 2017-06-09 13:58       ` Neil Armstrong
  0 siblings, 0 replies; 25+ messages in thread
From: Neil Armstrong @ 2017-06-09 13:58 UTC (permalink / raw)
  To: linux-arm-kernel

On 06/09/2017 03:37 PM, Rob Herring wrote:
> On Tue, Jun 06, 2017 at 11:45:38AM +0200, Neil Armstrong wrote:
>> Add bindings for the SoC information register of the Amlogic SoCs.
>>
>> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
>> ---
>>  Documentation/devicetree/bindings/arm/amlogic.txt | 32 +++++++++++++++++++++++
>>  1 file changed, 32 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/arm/amlogic.txt b/Documentation/devicetree/bindings/arm/amlogic.txt
>> index 5c01e65..ae3e8ed 100644
>> --- a/Documentation/devicetree/bindings/arm/amlogic.txt
>> +++ b/Documentation/devicetree/bindings/arm/amlogic.txt
>> @@ -60,3 +60,35 @@ Board compatible values (alphabetically, grouped by SoC):
>>    - "amlogic,q201" (Meson gxm s912)
>>    - "kingnovel,r-box-pro" (Meson gxm S912)
>>    - "nexbox,a1" (Meson gxm s912)
>> +
>> +Amlogic Meson Firmware registers Interface
>> +------------------------------------------
>> +
>> +The Meson SoCs have a register bank with status and data shared with the
>> +secure firmware.
>> +
>> +Required properties:
>> + - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd"
>> +
>> +Sub-nodes should indentify components of this register interface :
>> +
>> +Meson GX SoC Information
>> +------------------------
>> +A firmware register encodes the SoC type, package and revision information on
>> +the Meson GX SoCs.
>> +If present, a device node for this register should be added.
>> +
>> +Required properties:
>> +  - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-chipid".
>> +
>> +Example
>> +-------
>> +
>> +ao-secure at 140 {
>> +	compatible = "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd";
>> +	reg = <0x0 0x140 0x0 0x140>;
>> +
>> +	chipid {
>> +		compatible = "amlogic,meson-gx-chipid";
> 
> No registers for this block? If not, this node is pointless. 
> "amlogic,meson-gx-ao-secure" should be specific enough to determine if 
> you have this block or not and the driver for it can create a device if 
> the OS needs it.
> 
> Rob
> 

Well OK, but since it's a firmware interface, it can be handy to list the
possible capabilities, not especially tied to a driver.

Neil

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH v2 1/3] dt-bindings: arm: amlogic: Add SoC information bindings
@ 2017-06-09 13:58       ` Neil Armstrong
  0 siblings, 0 replies; 25+ messages in thread
From: Neil Armstrong @ 2017-06-09 13:58 UTC (permalink / raw)
  To: linus-amlogic

On 06/09/2017 03:37 PM, Rob Herring wrote:
> On Tue, Jun 06, 2017 at 11:45:38AM +0200, Neil Armstrong wrote:
>> Add bindings for the SoC information register of the Amlogic SoCs.
>>
>> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
>> ---
>>  Documentation/devicetree/bindings/arm/amlogic.txt | 32 +++++++++++++++++++++++
>>  1 file changed, 32 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/arm/amlogic.txt b/Documentation/devicetree/bindings/arm/amlogic.txt
>> index 5c01e65..ae3e8ed 100644
>> --- a/Documentation/devicetree/bindings/arm/amlogic.txt
>> +++ b/Documentation/devicetree/bindings/arm/amlogic.txt
>> @@ -60,3 +60,35 @@ Board compatible values (alphabetically, grouped by SoC):
>>    - "amlogic,q201" (Meson gxm s912)
>>    - "kingnovel,r-box-pro" (Meson gxm S912)
>>    - "nexbox,a1" (Meson gxm s912)
>> +
>> +Amlogic Meson Firmware registers Interface
>> +------------------------------------------
>> +
>> +The Meson SoCs have a register bank with status and data shared with the
>> +secure firmware.
>> +
>> +Required properties:
>> + - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd"
>> +
>> +Sub-nodes should indentify components of this register interface :
>> +
>> +Meson GX SoC Information
>> +------------------------
>> +A firmware register encodes the SoC type, package and revision information on
>> +the Meson GX SoCs.
>> +If present, a device node for this register should be added.
>> +
>> +Required properties:
>> +  - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-chipid".
>> +
>> +Example
>> +-------
>> +
>> +ao-secure at 140 {
>> +	compatible = "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd";
>> +	reg = <0x0 0x140 0x0 0x140>;
>> +
>> +	chipid {
>> +		compatible = "amlogic,meson-gx-chipid";
> 
> No registers for this block? If not, this node is pointless. 
> "amlogic,meson-gx-ao-secure" should be specific enough to determine if 
> you have this block or not and the driver for it can create a device if 
> the OS needs it.
> 
> Rob
> 

Well OK, but since it's a firmware interface, it can be handy to list the
possible capabilities, not especially tied to a driver.

Neil

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH v2 1/3] dt-bindings: arm: amlogic: Add SoC information bindings
  2017-06-09 13:58       ` Neil Armstrong
  (?)
  (?)
@ 2017-06-09 15:46         ` Rob Herring
  -1 siblings, 0 replies; 25+ messages in thread
From: Rob Herring @ 2017-06-09 15:46 UTC (permalink / raw)
  To: Neil Armstrong
  Cc: Kevin Hilman, Carlo Caione, linux-amlogic, devicetree,
	linux-kernel, linux-arm-kernel

On Fri, Jun 9, 2017 at 8:58 AM, Neil Armstrong <narmstrong@baylibre.com> wrote:
> On 06/09/2017 03:37 PM, Rob Herring wrote:
>> On Tue, Jun 06, 2017 at 11:45:38AM +0200, Neil Armstrong wrote:
>>> Add bindings for the SoC information register of the Amlogic SoCs.
>>>
>>> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
>>> ---
>>>  Documentation/devicetree/bindings/arm/amlogic.txt | 32 +++++++++++++++++++++++
>>>  1 file changed, 32 insertions(+)
>>>
>>> diff --git a/Documentation/devicetree/bindings/arm/amlogic.txt b/Documentation/devicetree/bindings/arm/amlogic.txt
>>> index 5c01e65..ae3e8ed 100644
>>> --- a/Documentation/devicetree/bindings/arm/amlogic.txt
>>> +++ b/Documentation/devicetree/bindings/arm/amlogic.txt
>>> @@ -60,3 +60,35 @@ Board compatible values (alphabetically, grouped by SoC):
>>>    - "amlogic,q201" (Meson gxm s912)
>>>    - "kingnovel,r-box-pro" (Meson gxm S912)
>>>    - "nexbox,a1" (Meson gxm s912)
>>> +
>>> +Amlogic Meson Firmware registers Interface
>>> +------------------------------------------
>>> +
>>> +The Meson SoCs have a register bank with status and data shared with the
>>> +secure firmware.
>>> +
>>> +Required properties:
>>> + - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd"
>>> +
>>> +Sub-nodes should indentify components of this register interface :
>>> +
>>> +Meson GX SoC Information
>>> +------------------------
>>> +A firmware register encodes the SoC type, package and revision information on
>>> +the Meson GX SoCs.
>>> +If present, a device node for this register should be added.
>>> +
>>> +Required properties:
>>> +  - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-chipid".
>>> +
>>> +Example
>>> +-------
>>> +
>>> +ao-secure@140 {
>>> +    compatible = "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd";
>>> +    reg = <0x0 0x140 0x0 0x140>;
>>> +
>>> +    chipid {
>>> +            compatible = "amlogic,meson-gx-chipid";
>>
>> No registers for this block? If not, this node is pointless.
>> "amlogic,meson-gx-ao-secure" should be specific enough to determine if
>> you have this block or not and the driver for it can create a device if
>> the OS needs it.
>>
>> Rob
>>
>
> Well OK, but since it's a firmware interface, it can be handy to list the
> possible capabilities, not especially tied to a driver.

A "has-chip-id;" property would do that.

It would be better to just be very explicit about what version of
firmware you have and that can imply anything and everything you need
to know about the firmware without needing to up date the dtb every
time you need to provide a new (to Linux) firmware capability.

Rob

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH v2 1/3] dt-bindings: arm: amlogic: Add SoC information bindings
@ 2017-06-09 15:46         ` Rob Herring
  0 siblings, 0 replies; 25+ messages in thread
From: Rob Herring @ 2017-06-09 15:46 UTC (permalink / raw)
  To: Neil Armstrong
  Cc: Kevin Hilman, Carlo Caione, linux-amlogic, devicetree,
	linux-kernel, linux-arm-kernel

On Fri, Jun 9, 2017 at 8:58 AM, Neil Armstrong <narmstrong@baylibre.com> wrote:
> On 06/09/2017 03:37 PM, Rob Herring wrote:
>> On Tue, Jun 06, 2017 at 11:45:38AM +0200, Neil Armstrong wrote:
>>> Add bindings for the SoC information register of the Amlogic SoCs.
>>>
>>> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
>>> ---
>>>  Documentation/devicetree/bindings/arm/amlogic.txt | 32 +++++++++++++++++++++++
>>>  1 file changed, 32 insertions(+)
>>>
>>> diff --git a/Documentation/devicetree/bindings/arm/amlogic.txt b/Documentation/devicetree/bindings/arm/amlogic.txt
>>> index 5c01e65..ae3e8ed 100644
>>> --- a/Documentation/devicetree/bindings/arm/amlogic.txt
>>> +++ b/Documentation/devicetree/bindings/arm/amlogic.txt
>>> @@ -60,3 +60,35 @@ Board compatible values (alphabetically, grouped by SoC):
>>>    - "amlogic,q201" (Meson gxm s912)
>>>    - "kingnovel,r-box-pro" (Meson gxm S912)
>>>    - "nexbox,a1" (Meson gxm s912)
>>> +
>>> +Amlogic Meson Firmware registers Interface
>>> +------------------------------------------
>>> +
>>> +The Meson SoCs have a register bank with status and data shared with the
>>> +secure firmware.
>>> +
>>> +Required properties:
>>> + - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd"
>>> +
>>> +Sub-nodes should indentify components of this register interface :
>>> +
>>> +Meson GX SoC Information
>>> +------------------------
>>> +A firmware register encodes the SoC type, package and revision information on
>>> +the Meson GX SoCs.
>>> +If present, a device node for this register should be added.
>>> +
>>> +Required properties:
>>> +  - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-chipid".
>>> +
>>> +Example
>>> +-------
>>> +
>>> +ao-secure@140 {
>>> +    compatible = "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd";
>>> +    reg = <0x0 0x140 0x0 0x140>;
>>> +
>>> +    chipid {
>>> +            compatible = "amlogic,meson-gx-chipid";
>>
>> No registers for this block? If not, this node is pointless.
>> "amlogic,meson-gx-ao-secure" should be specific enough to determine if
>> you have this block or not and the driver for it can create a device if
>> the OS needs it.
>>
>> Rob
>>
>
> Well OK, but since it's a firmware interface, it can be handy to list the
> possible capabilities, not especially tied to a driver.

A "has-chip-id;" property would do that.

It would be better to just be very explicit about what version of
firmware you have and that can imply anything and everything you need
to know about the firmware without needing to up date the dtb every
time you need to provide a new (to Linux) firmware capability.

Rob

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH v2 1/3] dt-bindings: arm: amlogic: Add SoC information bindings
@ 2017-06-09 15:46         ` Rob Herring
  0 siblings, 0 replies; 25+ messages in thread
From: Rob Herring @ 2017-06-09 15:46 UTC (permalink / raw)
  To: linux-arm-kernel

On Fri, Jun 9, 2017 at 8:58 AM, Neil Armstrong <narmstrong@baylibre.com> wrote:
> On 06/09/2017 03:37 PM, Rob Herring wrote:
>> On Tue, Jun 06, 2017 at 11:45:38AM +0200, Neil Armstrong wrote:
>>> Add bindings for the SoC information register of the Amlogic SoCs.
>>>
>>> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
>>> ---
>>>  Documentation/devicetree/bindings/arm/amlogic.txt | 32 +++++++++++++++++++++++
>>>  1 file changed, 32 insertions(+)
>>>
>>> diff --git a/Documentation/devicetree/bindings/arm/amlogic.txt b/Documentation/devicetree/bindings/arm/amlogic.txt
>>> index 5c01e65..ae3e8ed 100644
>>> --- a/Documentation/devicetree/bindings/arm/amlogic.txt
>>> +++ b/Documentation/devicetree/bindings/arm/amlogic.txt
>>> @@ -60,3 +60,35 @@ Board compatible values (alphabetically, grouped by SoC):
>>>    - "amlogic,q201" (Meson gxm s912)
>>>    - "kingnovel,r-box-pro" (Meson gxm S912)
>>>    - "nexbox,a1" (Meson gxm s912)
>>> +
>>> +Amlogic Meson Firmware registers Interface
>>> +------------------------------------------
>>> +
>>> +The Meson SoCs have a register bank with status and data shared with the
>>> +secure firmware.
>>> +
>>> +Required properties:
>>> + - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd"
>>> +
>>> +Sub-nodes should indentify components of this register interface :
>>> +
>>> +Meson GX SoC Information
>>> +------------------------
>>> +A firmware register encodes the SoC type, package and revision information on
>>> +the Meson GX SoCs.
>>> +If present, a device node for this register should be added.
>>> +
>>> +Required properties:
>>> +  - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-chipid".
>>> +
>>> +Example
>>> +-------
>>> +
>>> +ao-secure at 140 {
>>> +    compatible = "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd";
>>> +    reg = <0x0 0x140 0x0 0x140>;
>>> +
>>> +    chipid {
>>> +            compatible = "amlogic,meson-gx-chipid";
>>
>> No registers for this block? If not, this node is pointless.
>> "amlogic,meson-gx-ao-secure" should be specific enough to determine if
>> you have this block or not and the driver for it can create a device if
>> the OS needs it.
>>
>> Rob
>>
>
> Well OK, but since it's a firmware interface, it can be handy to list the
> possible capabilities, not especially tied to a driver.

A "has-chip-id;" property would do that.

It would be better to just be very explicit about what version of
firmware you have and that can imply anything and everything you need
to know about the firmware without needing to up date the dtb every
time you need to provide a new (to Linux) firmware capability.

Rob

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH v2 1/3] dt-bindings: arm: amlogic: Add SoC information bindings
@ 2017-06-09 15:46         ` Rob Herring
  0 siblings, 0 replies; 25+ messages in thread
From: Rob Herring @ 2017-06-09 15:46 UTC (permalink / raw)
  To: linus-amlogic

On Fri, Jun 9, 2017 at 8:58 AM, Neil Armstrong <narmstrong@baylibre.com> wrote:
> On 06/09/2017 03:37 PM, Rob Herring wrote:
>> On Tue, Jun 06, 2017 at 11:45:38AM +0200, Neil Armstrong wrote:
>>> Add bindings for the SoC information register of the Amlogic SoCs.
>>>
>>> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
>>> ---
>>>  Documentation/devicetree/bindings/arm/amlogic.txt | 32 +++++++++++++++++++++++
>>>  1 file changed, 32 insertions(+)
>>>
>>> diff --git a/Documentation/devicetree/bindings/arm/amlogic.txt b/Documentation/devicetree/bindings/arm/amlogic.txt
>>> index 5c01e65..ae3e8ed 100644
>>> --- a/Documentation/devicetree/bindings/arm/amlogic.txt
>>> +++ b/Documentation/devicetree/bindings/arm/amlogic.txt
>>> @@ -60,3 +60,35 @@ Board compatible values (alphabetically, grouped by SoC):
>>>    - "amlogic,q201" (Meson gxm s912)
>>>    - "kingnovel,r-box-pro" (Meson gxm S912)
>>>    - "nexbox,a1" (Meson gxm s912)
>>> +
>>> +Amlogic Meson Firmware registers Interface
>>> +------------------------------------------
>>> +
>>> +The Meson SoCs have a register bank with status and data shared with the
>>> +secure firmware.
>>> +
>>> +Required properties:
>>> + - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd"
>>> +
>>> +Sub-nodes should indentify components of this register interface :
>>> +
>>> +Meson GX SoC Information
>>> +------------------------
>>> +A firmware register encodes the SoC type, package and revision information on
>>> +the Meson GX SoCs.
>>> +If present, a device node for this register should be added.
>>> +
>>> +Required properties:
>>> +  - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-chipid".
>>> +
>>> +Example
>>> +-------
>>> +
>>> +ao-secure at 140 {
>>> +    compatible = "amlogic,meson-gx-ao-secure", "syscon", "simple-mfd";
>>> +    reg = <0x0 0x140 0x0 0x140>;
>>> +
>>> +    chipid {
>>> +            compatible = "amlogic,meson-gx-chipid";
>>
>> No registers for this block? If not, this node is pointless.
>> "amlogic,meson-gx-ao-secure" should be specific enough to determine if
>> you have this block or not and the driver for it can create a device if
>> the OS needs it.
>>
>> Rob
>>
>
> Well OK, but since it's a firmware interface, it can be handy to list the
> possible capabilities, not especially tied to a driver.

A "has-chip-id;" property would do that.

It would be better to just be very explicit about what version of
firmware you have and that can imply anything and everything you need
to know about the firmware without needing to up date the dtb every
time you need to provide a new (to Linux) firmware capability.

Rob

^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2017-06-09 15:47 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-06  9:45 [PATCH v2 0/3] soc: amlogic: Add Amlogic SoC Information driver Neil Armstrong
2017-06-06  9:45 ` Neil Armstrong
2017-06-06  9:45 ` Neil Armstrong
2017-06-06  9:45 ` [PATCH v2 1/3] dt-bindings: arm: amlogic: Add SoC information bindings Neil Armstrong
2017-06-06  9:45   ` Neil Armstrong
2017-06-06  9:45   ` Neil Armstrong
2017-06-06  9:45   ` Neil Armstrong
2017-06-09 13:37   ` Rob Herring
2017-06-09 13:37     ` Rob Herring
2017-06-09 13:37     ` Rob Herring
2017-06-09 13:37     ` Rob Herring
2017-06-09 13:58     ` Neil Armstrong
2017-06-09 13:58       ` Neil Armstrong
2017-06-09 13:58       ` Neil Armstrong
2017-06-09 15:46       ` Rob Herring
2017-06-09 15:46         ` Rob Herring
2017-06-09 15:46         ` Rob Herring
2017-06-09 15:46         ` Rob Herring
2017-06-06  9:45 ` [PATCH v2 2/3] ARM64: dts: meson-gx: Add SoC info register Neil Armstrong
2017-06-06  9:45   ` Neil Armstrong
2017-06-06  9:45   ` Neil Armstrong
2017-06-06  9:45   ` Neil Armstrong
2017-06-06  9:45 ` [PATCH v2 3/3] soc: Add Amlogic SoC Information driver Neil Armstrong
2017-06-06  9:45   ` Neil Armstrong
2017-06-06  9:45   ` Neil Armstrong

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.