All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/4] simplefb: Add regulator handling support
@ 2015-10-23  3:50 ` Chen-Yu Tsai
  0 siblings, 0 replies; 50+ messages in thread
From: Chen-Yu Tsai @ 2015-10-23  3:50 UTC (permalink / raw)
  To: Hans de Goede, Jean-Christophe Plagniol-Villard, Tomi Valkeinen,
	Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Maxime Ripard
  Cc: Chen-Yu Tsai, linux-fbdev, devicetree, linux-kernel,
	linux-arm-kernel, Mark Brown

Hi everyone,

This is v4 of the simplefb regulator support series. This series adds
regulator claiming and enabling support for simplefb.

Changes since v4:
  - Fixed inverted logic when testing the property name.
  - Fixed regulator supply name string copy length off by 1.
  - Added real world user, MSI Primo 81 dts patches.

Changes since v3:
  - Dropped extra "if" which is always true, leftover from v1.
  - Updated commit message of patch 1

Sometimes the simplefb display output path consits of external conversion
chips and/or LCD drivers and backlights. These devices normally have
GPIOs to turn them on and/or bring them out of reset, and regulators
supplying power to them.

While the kernel does not touch unclaimed GPIOs, the regulator core
happily disables unused regulators. Thus we need simplefb to claim
and enable the regulators used throughout the display pipeline.

The binding supports any named regulator supplies under its device
node. The driver will look through its properties, and claim any
regulators by matching "*-supply", as Mark suggested.

I've not done a generic helper in the regulator core yet, instead doing
the regulator property handling in the simplefb code for now.


Patch 1 adds the regulator properties to the DT binding.

Patch 2 adds code to the simplefb driver to claim and enable regulators.
Hans, I dropped your Reviewed-by tag from this patch.

Patch 3 adds labels to the simplefb device nodes in sun6i-a31.dtsi
so we can reference them in the board dts files, like in the next
patch.

Patch 4 adds a dts file for MSI's Primo 81 tablet.


Regards
ChenYu

Chen-Yu Tsai (3):
  dt-bindings: simplefb: Support regulator supply properties
  simplefb: Claim and enable regulators
  ARM: dts: sun6i: Add simplefb node labels to reference at board level

Karsten Merker (1):
  ARM: dts: sun6i: Add dts file for MSI Primo81 tablet

 .../bindings/video/simple-framebuffer.txt          |  13 +-
 arch/arm/boot/dts/Makefile                         |   1 +
 arch/arm/boot/dts/sun6i-a31.dtsi                   |   4 +-
 arch/arm/boot/dts/sun6i-a31s-primo81.dts           | 255 +++++++++++++++++++++
 drivers/video/fbdev/simplefb.c                     | 120 +++++++++-
 5 files changed, 386 insertions(+), 7 deletions(-)
 create mode 100644 arch/arm/boot/dts/sun6i-a31s-primo81.dts

-- 
2.6.1


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

* [PATCH v4 0/4] simplefb: Add regulator handling support
@ 2015-10-23  3:50 ` Chen-Yu Tsai
  0 siblings, 0 replies; 50+ messages in thread
From: Chen-Yu Tsai @ 2015-10-23  3:50 UTC (permalink / raw)
  To: linux-arm-kernel

Hi everyone,

This is v4 of the simplefb regulator support series. This series adds
regulator claiming and enabling support for simplefb.

Changes since v4:
  - Fixed inverted logic when testing the property name.
  - Fixed regulator supply name string copy length off by 1.
  - Added real world user, MSI Primo 81 dts patches.

Changes since v3:
  - Dropped extra "if" which is always true, leftover from v1.
  - Updated commit message of patch 1

Sometimes the simplefb display output path consits of external conversion
chips and/or LCD drivers and backlights. These devices normally have
GPIOs to turn them on and/or bring them out of reset, and regulators
supplying power to them.

While the kernel does not touch unclaimed GPIOs, the regulator core
happily disables unused regulators. Thus we need simplefb to claim
and enable the regulators used throughout the display pipeline.

The binding supports any named regulator supplies under its device
node. The driver will look through its properties, and claim any
regulators by matching "*-supply", as Mark suggested.

I've not done a generic helper in the regulator core yet, instead doing
the regulator property handling in the simplefb code for now.


Patch 1 adds the regulator properties to the DT binding.

Patch 2 adds code to the simplefb driver to claim and enable regulators.
Hans, I dropped your Reviewed-by tag from this patch.

Patch 3 adds labels to the simplefb device nodes in sun6i-a31.dtsi
so we can reference them in the board dts files, like in the next
patch.

Patch 4 adds a dts file for MSI's Primo 81 tablet.


Regards
ChenYu

Chen-Yu Tsai (3):
  dt-bindings: simplefb: Support regulator supply properties
  simplefb: Claim and enable regulators
  ARM: dts: sun6i: Add simplefb node labels to reference at board level

Karsten Merker (1):
  ARM: dts: sun6i: Add dts file for MSI Primo81 tablet

 .../bindings/video/simple-framebuffer.txt          |  13 +-
 arch/arm/boot/dts/Makefile                         |   1 +
 arch/arm/boot/dts/sun6i-a31.dtsi                   |   4 +-
 arch/arm/boot/dts/sun6i-a31s-primo81.dts           | 255 +++++++++++++++++++++
 drivers/video/fbdev/simplefb.c                     | 120 +++++++++-
 5 files changed, 386 insertions(+), 7 deletions(-)
 create mode 100644 arch/arm/boot/dts/sun6i-a31s-primo81.dts

-- 
2.6.1


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

* [PATCH v4 0/4] simplefb: Add regulator handling support
@ 2015-10-23  3:50 ` Chen-Yu Tsai
  0 siblings, 0 replies; 50+ messages in thread
From: Chen-Yu Tsai @ 2015-10-23  3:50 UTC (permalink / raw)
  To: linux-arm-kernel

Hi everyone,

This is v4 of the simplefb regulator support series. This series adds
regulator claiming and enabling support for simplefb.

Changes since v4:
  - Fixed inverted logic when testing the property name.
  - Fixed regulator supply name string copy length off by 1.
  - Added real world user, MSI Primo 81 dts patches.

Changes since v3:
  - Dropped extra "if" which is always true, leftover from v1.
  - Updated commit message of patch 1

Sometimes the simplefb display output path consits of external conversion
chips and/or LCD drivers and backlights. These devices normally have
GPIOs to turn them on and/or bring them out of reset, and regulators
supplying power to them.

While the kernel does not touch unclaimed GPIOs, the regulator core
happily disables unused regulators. Thus we need simplefb to claim
and enable the regulators used throughout the display pipeline.

The binding supports any named regulator supplies under its device
node. The driver will look through its properties, and claim any
regulators by matching "*-supply", as Mark suggested.

I've not done a generic helper in the regulator core yet, instead doing
the regulator property handling in the simplefb code for now.


Patch 1 adds the regulator properties to the DT binding.

Patch 2 adds code to the simplefb driver to claim and enable regulators.
Hans, I dropped your Reviewed-by tag from this patch.

Patch 3 adds labels to the simplefb device nodes in sun6i-a31.dtsi
so we can reference them in the board dts files, like in the next
patch.

Patch 4 adds a dts file for MSI's Primo 81 tablet.


Regards
ChenYu

Chen-Yu Tsai (3):
  dt-bindings: simplefb: Support regulator supply properties
  simplefb: Claim and enable regulators
  ARM: dts: sun6i: Add simplefb node labels to reference at board level

Karsten Merker (1):
  ARM: dts: sun6i: Add dts file for MSI Primo81 tablet

 .../bindings/video/simple-framebuffer.txt          |  13 +-
 arch/arm/boot/dts/Makefile                         |   1 +
 arch/arm/boot/dts/sun6i-a31.dtsi                   |   4 +-
 arch/arm/boot/dts/sun6i-a31s-primo81.dts           | 255 +++++++++++++++++++++
 drivers/video/fbdev/simplefb.c                     | 120 +++++++++-
 5 files changed, 386 insertions(+), 7 deletions(-)
 create mode 100644 arch/arm/boot/dts/sun6i-a31s-primo81.dts

-- 
2.6.1

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

* [PATCH v4 1/4] dt-bindings: simplefb: Support regulator supply properties
  2015-10-23  3:50 ` Chen-Yu Tsai
  (?)
@ 2015-10-23  3:50   ` Chen-Yu Tsai
  -1 siblings, 0 replies; 50+ messages in thread
From: Chen-Yu Tsai @ 2015-10-23  3:50 UTC (permalink / raw)
  To: Hans de Goede, Jean-Christophe Plagniol-Villard, Tomi Valkeinen,
	Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Maxime Ripard
  Cc: Chen-Yu Tsai, linux-fbdev, devicetree, linux-kernel,
	linux-arm-kernel, Mark Brown

The physical display tied to the framebuffer may have regulators
providing power to it, such as power for LCDs or interface conversion
chips.

The number of regulators in use may vary, but the regulator supply
binding can not be a list. Instead just support any named regulator
supply properties under the device node. These should be properly
named to match the device schematics / design. The driver should
take care to go through them all.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Mark Brown <broonie@kernel.org>
---
 .../devicetree/bindings/video/simple-framebuffer.txt        | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/Documentation/devicetree/bindings/video/simple-framebuffer.txt b/Documentation/devicetree/bindings/video/simple-framebuffer.txt
index 4474ef6e0b95..8c9e9f515c87 100644
--- a/Documentation/devicetree/bindings/video/simple-framebuffer.txt
+++ b/Documentation/devicetree/bindings/video/simple-framebuffer.txt
@@ -47,10 +47,14 @@ Required properties:
   - a8b8g8r8 (32-bit pixels, d[31:24]=a, d[23:16]=b, d[15:8]=g, d[7:0]=r).
 
 Optional properties:
-- clocks : List of clocks used by the framebuffer. Clocks listed here
-           are expected to already be configured correctly. The OS must
-           ensure these clocks are not modified or disabled while the
-           simple framebuffer remains active.
+- clocks : List of clocks used by the framebuffer.
+- *-supply : Any number of regulators used by the framebuffer. These should
+	     be named according to the names in the device's design.
+
+  The above resources are expected to already be configured correctly.
+  The OS must ensure they are not modified or disabled while the simple
+  framebuffer remains active.
+
 - display : phandle pointing to the primary display hardware node
 
 Example:
@@ -68,6 +72,7 @@ chosen {
 		stride = <(1600 * 2)>;
 		format = "r5g6b5";
 		clocks = <&ahb_gates 36>, <&ahb_gates 43>, <&ahb_gates 44>;
+		lcd-supply = <&reg_dc1sw>;
 		display = <&lcdc0>;
 	};
 	stdout-path = "display0";
-- 
2.6.1


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

* [PATCH v4 1/4] dt-bindings: simplefb: Support regulator supply properties
@ 2015-10-23  3:50   ` Chen-Yu Tsai
  0 siblings, 0 replies; 50+ messages in thread
From: Chen-Yu Tsai @ 2015-10-23  3:50 UTC (permalink / raw)
  To: linux-arm-kernel

The physical display tied to the framebuffer may have regulators
providing power to it, such as power for LCDs or interface conversion
chips.

The number of regulators in use may vary, but the regulator supply
binding can not be a list. Instead just support any named regulator
supply properties under the device node. These should be properly
named to match the device schematics / design. The driver should
take care to go through them all.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Mark Brown <broonie@kernel.org>
---
 .../devicetree/bindings/video/simple-framebuffer.txt        | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/Documentation/devicetree/bindings/video/simple-framebuffer.txt b/Documentation/devicetree/bindings/video/simple-framebuffer.txt
index 4474ef6e0b95..8c9e9f515c87 100644
--- a/Documentation/devicetree/bindings/video/simple-framebuffer.txt
+++ b/Documentation/devicetree/bindings/video/simple-framebuffer.txt
@@ -47,10 +47,14 @@ Required properties:
   - a8b8g8r8 (32-bit pixels, d[31:24]=a, d[23:16]=b, d[15:8]=g, d[7:0]=r).
 
 Optional properties:
-- clocks : List of clocks used by the framebuffer. Clocks listed here
-           are expected to already be configured correctly. The OS must
-           ensure these clocks are not modified or disabled while the
-           simple framebuffer remains active.
+- clocks : List of clocks used by the framebuffer.
+- *-supply : Any number of regulators used by the framebuffer. These should
+	     be named according to the names in the device's design.
+
+  The above resources are expected to already be configured correctly.
+  The OS must ensure they are not modified or disabled while the simple
+  framebuffer remains active.
+
 - display : phandle pointing to the primary display hardware node
 
 Example:
@@ -68,6 +72,7 @@ chosen {
 		stride = <(1600 * 2)>;
 		format = "r5g6b5";
 		clocks = <&ahb_gates 36>, <&ahb_gates 43>, <&ahb_gates 44>;
+		lcd-supply = <&reg_dc1sw>;
 		display = <&lcdc0>;
 	};
 	stdout-path = "display0";
-- 
2.6.1


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

* [PATCH v4 1/4] dt-bindings: simplefb: Support regulator supply properties
@ 2015-10-23  3:50   ` Chen-Yu Tsai
  0 siblings, 0 replies; 50+ messages in thread
From: Chen-Yu Tsai @ 2015-10-23  3:50 UTC (permalink / raw)
  To: linux-arm-kernel

The physical display tied to the framebuffer may have regulators
providing power to it, such as power for LCDs or interface conversion
chips.

The number of regulators in use may vary, but the regulator supply
binding can not be a list. Instead just support any named regulator
supply properties under the device node. These should be properly
named to match the device schematics / design. The driver should
take care to go through them all.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Mark Brown <broonie@kernel.org>
---
 .../devicetree/bindings/video/simple-framebuffer.txt        | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/Documentation/devicetree/bindings/video/simple-framebuffer.txt b/Documentation/devicetree/bindings/video/simple-framebuffer.txt
index 4474ef6e0b95..8c9e9f515c87 100644
--- a/Documentation/devicetree/bindings/video/simple-framebuffer.txt
+++ b/Documentation/devicetree/bindings/video/simple-framebuffer.txt
@@ -47,10 +47,14 @@ Required properties:
   - a8b8g8r8 (32-bit pixels, d[31:24]=a, d[23:16]=b, d[15:8]=g, d[7:0]=r).
 
 Optional properties:
-- clocks : List of clocks used by the framebuffer. Clocks listed here
-           are expected to already be configured correctly. The OS must
-           ensure these clocks are not modified or disabled while the
-           simple framebuffer remains active.
+- clocks : List of clocks used by the framebuffer.
+- *-supply : Any number of regulators used by the framebuffer. These should
+	     be named according to the names in the device's design.
+
+  The above resources are expected to already be configured correctly.
+  The OS must ensure they are not modified or disabled while the simple
+  framebuffer remains active.
+
 - display : phandle pointing to the primary display hardware node
 
 Example:
@@ -68,6 +72,7 @@ chosen {
 		stride = <(1600 * 2)>;
 		format = "r5g6b5";
 		clocks = <&ahb_gates 36>, <&ahb_gates 43>, <&ahb_gates 44>;
+		lcd-supply = <&reg_dc1sw>;
 		display = <&lcdc0>;
 	};
 	stdout-path = "display0";
-- 
2.6.1

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

* [PATCH v4 2/4] simplefb: Claim and enable regulators
  2015-10-23  3:50 ` Chen-Yu Tsai
  (?)
@ 2015-10-23  3:50   ` Chen-Yu Tsai
  -1 siblings, 0 replies; 50+ messages in thread
From: Chen-Yu Tsai @ 2015-10-23  3:50 UTC (permalink / raw)
  To: Hans de Goede, Jean-Christophe Plagniol-Villard, Tomi Valkeinen,
	Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Maxime Ripard
  Cc: Chen-Yu Tsai, linux-fbdev, devicetree, linux-kernel,
	linux-arm-kernel, Mark Brown

This claims and enables regulators listed in the simple framebuffer dt
node. This is needed so that regulators powering the display pipeline
and external hardware, described in the device node and known by the
kernel code, will remain properly enabled.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Acked-by: Mark Brown <broonie@kernel.org>
---
 drivers/video/fbdev/simplefb.c | 120 ++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 119 insertions(+), 1 deletion(-)

diff --git a/drivers/video/fbdev/simplefb.c b/drivers/video/fbdev/simplefb.c
index 52c5c7e63b52..48ccf6db62a2 100644
--- a/drivers/video/fbdev/simplefb.c
+++ b/drivers/video/fbdev/simplefb.c
@@ -28,7 +28,10 @@
 #include <linux/platform_device.h>
 #include <linux/clk.h>
 #include <linux/clk-provider.h>
+#include <linux/of.h>
 #include <linux/of_platform.h>
+#include <linux/parser.h>
+#include <linux/regulator/consumer.h>
 
 static struct fb_fix_screeninfo simplefb_fix = {
 	.id		= "simple",
@@ -174,6 +177,10 @@ struct simplefb_par {
 	int clk_count;
 	struct clk **clks;
 #endif
+#if defined CONFIG_OF && defined CONFIG_REGULATOR
+	u32 regulator_count;
+	struct regulator **regulators;
+#endif
 };
 
 #if defined CONFIG_OF && defined CONFIG_COMMON_CLK
@@ -269,6 +276,110 @@ static int simplefb_clocks_init(struct simplefb_par *par,
 static void simplefb_clocks_destroy(struct simplefb_par *par) { }
 #endif
 
+#if defined CONFIG_OF && defined CONFIG_REGULATOR
+
+#define SUPPLY_SUFFIX "-supply"
+
+/*
+ * Regulator handling code.
+ *
+ * Here we handle the num-supplies and vin*-supply properties of our
+ * "simple-framebuffer" dt node. This is necessary so that we can make sure
+ * that any regulators needed by the display hardware that the bootloader
+ * set up for us (and for which it provided a simplefb dt node), stay up,
+ * for the life of the simplefb driver.
+ *
+ * When the driver unloads, we cleanly disable, and then release the
+ * regulators.
+ *
+ * We only complain about errors here, no action is taken as the most likely
+ * error can only happen due to a mismatch between the bootloader which set
+ * up simplefb, and the regulator definitions in the device tree. Chances are
+ * that there are no adverse effects, and if there are, a clean teardown of
+ * the fb probe will not help us much either. So just complain and carry on,
+ * and hope that the user actually gets a working fb at the end of things.
+ */
+static int simplefb_regulators_init(struct simplefb_par *par,
+	struct platform_device *pdev)
+{
+	struct device_node *np = pdev->dev.of_node;
+	struct property *prop;
+	struct regulator *regulator;
+	const char *p;
+	int count = 0, i = 0, ret;
+
+	if (dev_get_platdata(&pdev->dev) || !np)
+		return 0;
+
+	/* Count the number of regulator supplies */
+	for_each_property_of_node(np, prop) {
+		p = strstr(prop->name, SUPPLY_SUFFIX);
+		if (p && p != prop->name)
+			count++;
+	}
+
+	if (!count)
+		return 0;
+
+	par->regulators = devm_kcalloc(&pdev->dev, count,
+				       sizeof(struct regulator *), GFP_KERNEL);
+	if (!par->regulators)
+		return -ENOMEM;
+
+	/* Get all the regulators */
+	for_each_property_of_node(np, prop) {
+		char name[32]; /* 32 is max size of property name */
+
+		p = strstr(prop->name, SUPPLY_SUFFIX);
+		if (!p || p == prop->name)
+			continue;
+
+		strlcpy(name, prop->name,
+			strlen(prop->name) - strlen(SUPPLY_SUFFIX) + 1);
+		regulator = devm_regulator_get_optional(&pdev->dev, name);
+		if (IS_ERR(regulator)) {
+			if (PTR_ERR(regulator) == -EPROBE_DEFER)
+				return -EPROBE_DEFER;
+			dev_err(&pdev->dev, "regulator %s not found: %ld\n",
+				name, PTR_ERR(regulator));
+			continue;
+		}
+		par->regulators[i++] = regulator;
+	}
+	par->regulator_count = i;
+
+	/* Enable all the regulators */
+	for (i = 0; i < par->regulator_count; i++) {
+		ret = regulator_enable(par->regulators[i]);
+		if (ret) {
+			dev_err(&pdev->dev,
+				"failed to enable regulator %d: %d\n",
+				i, ret);
+			devm_regulator_put(par->regulators[i]);
+			par->regulators[i] = NULL;
+		}
+	}
+
+	return 0;
+}
+
+static void simplefb_regulators_destroy(struct simplefb_par *par)
+{
+	int i;
+
+	if (!par->regulators)
+		return;
+
+	for (i = 0; i < par->regulator_count; i++)
+		if (par->regulators[i])
+			regulator_disable(par->regulators[i]);
+}
+#else
+static int simplefb_regulators_init(struct simplefb_par *par,
+	struct platform_device *pdev) { return 0; }
+static void simplefb_regulators_destroy(struct simplefb_par *par) { }
+#endif
+
 static int simplefb_probe(struct platform_device *pdev)
 {
 	int ret;
@@ -340,6 +451,10 @@ static int simplefb_probe(struct platform_device *pdev)
 	if (ret < 0)
 		goto error_unmap;
 
+	ret = simplefb_regulators_init(par, pdev);
+	if (ret < 0)
+		goto error_clocks;
+
 	dev_info(&pdev->dev, "framebuffer at 0x%lx, 0x%x bytes, mapped to 0x%p\n",
 			     info->fix.smem_start, info->fix.smem_len,
 			     info->screen_base);
@@ -351,13 +466,15 @@ static int simplefb_probe(struct platform_device *pdev)
 	ret = register_framebuffer(info);
 	if (ret < 0) {
 		dev_err(&pdev->dev, "Unable to register simplefb: %d\n", ret);
-		goto error_clocks;
+		goto error_regulators;
 	}
 
 	dev_info(&pdev->dev, "fb%d: simplefb registered!\n", info->node);
 
 	return 0;
 
+error_regulators:
+	simplefb_regulators_destroy(par);
 error_clocks:
 	simplefb_clocks_destroy(par);
 error_unmap:
@@ -373,6 +490,7 @@ static int simplefb_remove(struct platform_device *pdev)
 	struct simplefb_par *par = info->par;
 
 	unregister_framebuffer(info);
+	simplefb_regulators_destroy(par);
 	simplefb_clocks_destroy(par);
 	framebuffer_release(info);
 
-- 
2.6.1


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

* [PATCH v4 2/4] simplefb: Claim and enable regulators
@ 2015-10-23  3:50   ` Chen-Yu Tsai
  0 siblings, 0 replies; 50+ messages in thread
From: Chen-Yu Tsai @ 2015-10-23  3:50 UTC (permalink / raw)
  To: linux-arm-kernel

This claims and enables regulators listed in the simple framebuffer dt
node. This is needed so that regulators powering the display pipeline
and external hardware, described in the device node and known by the
kernel code, will remain properly enabled.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Acked-by: Mark Brown <broonie@kernel.org>
---
 drivers/video/fbdev/simplefb.c | 120 ++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 119 insertions(+), 1 deletion(-)

diff --git a/drivers/video/fbdev/simplefb.c b/drivers/video/fbdev/simplefb.c
index 52c5c7e63b52..48ccf6db62a2 100644
--- a/drivers/video/fbdev/simplefb.c
+++ b/drivers/video/fbdev/simplefb.c
@@ -28,7 +28,10 @@
 #include <linux/platform_device.h>
 #include <linux/clk.h>
 #include <linux/clk-provider.h>
+#include <linux/of.h>
 #include <linux/of_platform.h>
+#include <linux/parser.h>
+#include <linux/regulator/consumer.h>
 
 static struct fb_fix_screeninfo simplefb_fix = {
 	.id		= "simple",
@@ -174,6 +177,10 @@ struct simplefb_par {
 	int clk_count;
 	struct clk **clks;
 #endif
+#if defined CONFIG_OF && defined CONFIG_REGULATOR
+	u32 regulator_count;
+	struct regulator **regulators;
+#endif
 };
 
 #if defined CONFIG_OF && defined CONFIG_COMMON_CLK
@@ -269,6 +276,110 @@ static int simplefb_clocks_init(struct simplefb_par *par,
 static void simplefb_clocks_destroy(struct simplefb_par *par) { }
 #endif
 
+#if defined CONFIG_OF && defined CONFIG_REGULATOR
+
+#define SUPPLY_SUFFIX "-supply"
+
+/*
+ * Regulator handling code.
+ *
+ * Here we handle the num-supplies and vin*-supply properties of our
+ * "simple-framebuffer" dt node. This is necessary so that we can make sure
+ * that any regulators needed by the display hardware that the bootloader
+ * set up for us (and for which it provided a simplefb dt node), stay up,
+ * for the life of the simplefb driver.
+ *
+ * When the driver unloads, we cleanly disable, and then release the
+ * regulators.
+ *
+ * We only complain about errors here, no action is taken as the most likely
+ * error can only happen due to a mismatch between the bootloader which set
+ * up simplefb, and the regulator definitions in the device tree. Chances are
+ * that there are no adverse effects, and if there are, a clean teardown of
+ * the fb probe will not help us much either. So just complain and carry on,
+ * and hope that the user actually gets a working fb at the end of things.
+ */
+static int simplefb_regulators_init(struct simplefb_par *par,
+	struct platform_device *pdev)
+{
+	struct device_node *np = pdev->dev.of_node;
+	struct property *prop;
+	struct regulator *regulator;
+	const char *p;
+	int count = 0, i = 0, ret;
+
+	if (dev_get_platdata(&pdev->dev) || !np)
+		return 0;
+
+	/* Count the number of regulator supplies */
+	for_each_property_of_node(np, prop) {
+		p = strstr(prop->name, SUPPLY_SUFFIX);
+		if (p && p != prop->name)
+			count++;
+	}
+
+	if (!count)
+		return 0;
+
+	par->regulators = devm_kcalloc(&pdev->dev, count,
+				       sizeof(struct regulator *), GFP_KERNEL);
+	if (!par->regulators)
+		return -ENOMEM;
+
+	/* Get all the regulators */
+	for_each_property_of_node(np, prop) {
+		char name[32]; /* 32 is max size of property name */
+
+		p = strstr(prop->name, SUPPLY_SUFFIX);
+		if (!p || p = prop->name)
+			continue;
+
+		strlcpy(name, prop->name,
+			strlen(prop->name) - strlen(SUPPLY_SUFFIX) + 1);
+		regulator = devm_regulator_get_optional(&pdev->dev, name);
+		if (IS_ERR(regulator)) {
+			if (PTR_ERR(regulator) = -EPROBE_DEFER)
+				return -EPROBE_DEFER;
+			dev_err(&pdev->dev, "regulator %s not found: %ld\n",
+				name, PTR_ERR(regulator));
+			continue;
+		}
+		par->regulators[i++] = regulator;
+	}
+	par->regulator_count = i;
+
+	/* Enable all the regulators */
+	for (i = 0; i < par->regulator_count; i++) {
+		ret = regulator_enable(par->regulators[i]);
+		if (ret) {
+			dev_err(&pdev->dev,
+				"failed to enable regulator %d: %d\n",
+				i, ret);
+			devm_regulator_put(par->regulators[i]);
+			par->regulators[i] = NULL;
+		}
+	}
+
+	return 0;
+}
+
+static void simplefb_regulators_destroy(struct simplefb_par *par)
+{
+	int i;
+
+	if (!par->regulators)
+		return;
+
+	for (i = 0; i < par->regulator_count; i++)
+		if (par->regulators[i])
+			regulator_disable(par->regulators[i]);
+}
+#else
+static int simplefb_regulators_init(struct simplefb_par *par,
+	struct platform_device *pdev) { return 0; }
+static void simplefb_regulators_destroy(struct simplefb_par *par) { }
+#endif
+
 static int simplefb_probe(struct platform_device *pdev)
 {
 	int ret;
@@ -340,6 +451,10 @@ static int simplefb_probe(struct platform_device *pdev)
 	if (ret < 0)
 		goto error_unmap;
 
+	ret = simplefb_regulators_init(par, pdev);
+	if (ret < 0)
+		goto error_clocks;
+
 	dev_info(&pdev->dev, "framebuffer at 0x%lx, 0x%x bytes, mapped to 0x%p\n",
 			     info->fix.smem_start, info->fix.smem_len,
 			     info->screen_base);
@@ -351,13 +466,15 @@ static int simplefb_probe(struct platform_device *pdev)
 	ret = register_framebuffer(info);
 	if (ret < 0) {
 		dev_err(&pdev->dev, "Unable to register simplefb: %d\n", ret);
-		goto error_clocks;
+		goto error_regulators;
 	}
 
 	dev_info(&pdev->dev, "fb%d: simplefb registered!\n", info->node);
 
 	return 0;
 
+error_regulators:
+	simplefb_regulators_destroy(par);
 error_clocks:
 	simplefb_clocks_destroy(par);
 error_unmap:
@@ -373,6 +490,7 @@ static int simplefb_remove(struct platform_device *pdev)
 	struct simplefb_par *par = info->par;
 
 	unregister_framebuffer(info);
+	simplefb_regulators_destroy(par);
 	simplefb_clocks_destroy(par);
 	framebuffer_release(info);
 
-- 
2.6.1


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

* [PATCH v4 2/4] simplefb: Claim and enable regulators
@ 2015-10-23  3:50   ` Chen-Yu Tsai
  0 siblings, 0 replies; 50+ messages in thread
From: Chen-Yu Tsai @ 2015-10-23  3:50 UTC (permalink / raw)
  To: linux-arm-kernel

This claims and enables regulators listed in the simple framebuffer dt
node. This is needed so that regulators powering the display pipeline
and external hardware, described in the device node and known by the
kernel code, will remain properly enabled.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Acked-by: Mark Brown <broonie@kernel.org>
---
 drivers/video/fbdev/simplefb.c | 120 ++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 119 insertions(+), 1 deletion(-)

diff --git a/drivers/video/fbdev/simplefb.c b/drivers/video/fbdev/simplefb.c
index 52c5c7e63b52..48ccf6db62a2 100644
--- a/drivers/video/fbdev/simplefb.c
+++ b/drivers/video/fbdev/simplefb.c
@@ -28,7 +28,10 @@
 #include <linux/platform_device.h>
 #include <linux/clk.h>
 #include <linux/clk-provider.h>
+#include <linux/of.h>
 #include <linux/of_platform.h>
+#include <linux/parser.h>
+#include <linux/regulator/consumer.h>
 
 static struct fb_fix_screeninfo simplefb_fix = {
 	.id		= "simple",
@@ -174,6 +177,10 @@ struct simplefb_par {
 	int clk_count;
 	struct clk **clks;
 #endif
+#if defined CONFIG_OF && defined CONFIG_REGULATOR
+	u32 regulator_count;
+	struct regulator **regulators;
+#endif
 };
 
 #if defined CONFIG_OF && defined CONFIG_COMMON_CLK
@@ -269,6 +276,110 @@ static int simplefb_clocks_init(struct simplefb_par *par,
 static void simplefb_clocks_destroy(struct simplefb_par *par) { }
 #endif
 
+#if defined CONFIG_OF && defined CONFIG_REGULATOR
+
+#define SUPPLY_SUFFIX "-supply"
+
+/*
+ * Regulator handling code.
+ *
+ * Here we handle the num-supplies and vin*-supply properties of our
+ * "simple-framebuffer" dt node. This is necessary so that we can make sure
+ * that any regulators needed by the display hardware that the bootloader
+ * set up for us (and for which it provided a simplefb dt node), stay up,
+ * for the life of the simplefb driver.
+ *
+ * When the driver unloads, we cleanly disable, and then release the
+ * regulators.
+ *
+ * We only complain about errors here, no action is taken as the most likely
+ * error can only happen due to a mismatch between the bootloader which set
+ * up simplefb, and the regulator definitions in the device tree. Chances are
+ * that there are no adverse effects, and if there are, a clean teardown of
+ * the fb probe will not help us much either. So just complain and carry on,
+ * and hope that the user actually gets a working fb at the end of things.
+ */
+static int simplefb_regulators_init(struct simplefb_par *par,
+	struct platform_device *pdev)
+{
+	struct device_node *np = pdev->dev.of_node;
+	struct property *prop;
+	struct regulator *regulator;
+	const char *p;
+	int count = 0, i = 0, ret;
+
+	if (dev_get_platdata(&pdev->dev) || !np)
+		return 0;
+
+	/* Count the number of regulator supplies */
+	for_each_property_of_node(np, prop) {
+		p = strstr(prop->name, SUPPLY_SUFFIX);
+		if (p && p != prop->name)
+			count++;
+	}
+
+	if (!count)
+		return 0;
+
+	par->regulators = devm_kcalloc(&pdev->dev, count,
+				       sizeof(struct regulator *), GFP_KERNEL);
+	if (!par->regulators)
+		return -ENOMEM;
+
+	/* Get all the regulators */
+	for_each_property_of_node(np, prop) {
+		char name[32]; /* 32 is max size of property name */
+
+		p = strstr(prop->name, SUPPLY_SUFFIX);
+		if (!p || p == prop->name)
+			continue;
+
+		strlcpy(name, prop->name,
+			strlen(prop->name) - strlen(SUPPLY_SUFFIX) + 1);
+		regulator = devm_regulator_get_optional(&pdev->dev, name);
+		if (IS_ERR(regulator)) {
+			if (PTR_ERR(regulator) == -EPROBE_DEFER)
+				return -EPROBE_DEFER;
+			dev_err(&pdev->dev, "regulator %s not found: %ld\n",
+				name, PTR_ERR(regulator));
+			continue;
+		}
+		par->regulators[i++] = regulator;
+	}
+	par->regulator_count = i;
+
+	/* Enable all the regulators */
+	for (i = 0; i < par->regulator_count; i++) {
+		ret = regulator_enable(par->regulators[i]);
+		if (ret) {
+			dev_err(&pdev->dev,
+				"failed to enable regulator %d: %d\n",
+				i, ret);
+			devm_regulator_put(par->regulators[i]);
+			par->regulators[i] = NULL;
+		}
+	}
+
+	return 0;
+}
+
+static void simplefb_regulators_destroy(struct simplefb_par *par)
+{
+	int i;
+
+	if (!par->regulators)
+		return;
+
+	for (i = 0; i < par->regulator_count; i++)
+		if (par->regulators[i])
+			regulator_disable(par->regulators[i]);
+}
+#else
+static int simplefb_regulators_init(struct simplefb_par *par,
+	struct platform_device *pdev) { return 0; }
+static void simplefb_regulators_destroy(struct simplefb_par *par) { }
+#endif
+
 static int simplefb_probe(struct platform_device *pdev)
 {
 	int ret;
@@ -340,6 +451,10 @@ static int simplefb_probe(struct platform_device *pdev)
 	if (ret < 0)
 		goto error_unmap;
 
+	ret = simplefb_regulators_init(par, pdev);
+	if (ret < 0)
+		goto error_clocks;
+
 	dev_info(&pdev->dev, "framebuffer at 0x%lx, 0x%x bytes, mapped to 0x%p\n",
 			     info->fix.smem_start, info->fix.smem_len,
 			     info->screen_base);
@@ -351,13 +466,15 @@ static int simplefb_probe(struct platform_device *pdev)
 	ret = register_framebuffer(info);
 	if (ret < 0) {
 		dev_err(&pdev->dev, "Unable to register simplefb: %d\n", ret);
-		goto error_clocks;
+		goto error_regulators;
 	}
 
 	dev_info(&pdev->dev, "fb%d: simplefb registered!\n", info->node);
 
 	return 0;
 
+error_regulators:
+	simplefb_regulators_destroy(par);
 error_clocks:
 	simplefb_clocks_destroy(par);
 error_unmap:
@@ -373,6 +490,7 @@ static int simplefb_remove(struct platform_device *pdev)
 	struct simplefb_par *par = info->par;
 
 	unregister_framebuffer(info);
+	simplefb_regulators_destroy(par);
 	simplefb_clocks_destroy(par);
 	framebuffer_release(info);
 
-- 
2.6.1

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

* [PATCH v4 3/4] ARM: dts: sun6i: Add simplefb node labels to reference at board level
@ 2015-10-23  3:50   ` Chen-Yu Tsai
  0 siblings, 0 replies; 50+ messages in thread
From: Chen-Yu Tsai @ 2015-10-23  3:50 UTC (permalink / raw)
  To: Hans de Goede, Jean-Christophe Plagniol-Villard, Tomi Valkeinen,
	Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Maxime Ripard
  Cc: Chen-Yu Tsai, linux-fbdev, devicetree, linux-kernel,
	linux-arm-kernel, Mark Brown

Some boards, such as tablets, have regulators providing power to parts
of the display pipeline, like signal converters and LCD panels.

Add labels to the simplefb device nodes so that we can reference them
in the board dts files to add regulator supply properties.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---
 arch/arm/boot/dts/sun6i-a31.dtsi | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boot/dts/sun6i-a31.dtsi b/arch/arm/boot/dts/sun6i-a31.dtsi
index 83c18798cae0..b6ad7850fac6 100644
--- a/arch/arm/boot/dts/sun6i-a31.dtsi
+++ b/arch/arm/boot/dts/sun6i-a31.dtsi
@@ -61,7 +61,7 @@
 		#size-cells = <1>;
 		ranges;
 
-		framebuffer@0 {
+		simplefb_hdmi: framebuffer@0 {
 			compatible = "allwinner,simple-framebuffer",
 				     "simple-framebuffer";
 			allwinner,pipeline = "de_be0-lcd0-hdmi";
@@ -69,7 +69,7 @@
 			status = "disabled";
 		};
 
-		framebuffer@1 {
+		simplefb_lcd: framebuffer@1 {
 			compatible = "allwinner,simple-framebuffer",
 				     "simple-framebuffer";
 			allwinner,pipeline = "de_be0-lcd0";
-- 
2.6.1


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

* [PATCH v4 3/4] ARM: dts: sun6i: Add simplefb node labels to reference at board level
@ 2015-10-23  3:50   ` Chen-Yu Tsai
  0 siblings, 0 replies; 50+ messages in thread
From: Chen-Yu Tsai @ 2015-10-23  3:50 UTC (permalink / raw)
  To: Hans de Goede, Jean-Christophe Plagniol-Villard, Tomi Valkeinen,
	Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Maxime Ripard
  Cc: Chen-Yu Tsai, linux-fbdev-u79uwXL29TY76Z2rM5mHXA,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Mark Brown

Some boards, such as tablets, have regulators providing power to parts
of the display pipeline, like signal converters and LCD panels.

Add labels to the simplefb device nodes so that we can reference them
in the board dts files to add regulator supply properties.

Signed-off-by: Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>
---
 arch/arm/boot/dts/sun6i-a31.dtsi | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boot/dts/sun6i-a31.dtsi b/arch/arm/boot/dts/sun6i-a31.dtsi
index 83c18798cae0..b6ad7850fac6 100644
--- a/arch/arm/boot/dts/sun6i-a31.dtsi
+++ b/arch/arm/boot/dts/sun6i-a31.dtsi
@@ -61,7 +61,7 @@
 		#size-cells = <1>;
 		ranges;
 
-		framebuffer@0 {
+		simplefb_hdmi: framebuffer@0 {
 			compatible = "allwinner,simple-framebuffer",
 				     "simple-framebuffer";
 			allwinner,pipeline = "de_be0-lcd0-hdmi";
@@ -69,7 +69,7 @@
 			status = "disabled";
 		};
 
-		framebuffer@1 {
+		simplefb_lcd: framebuffer@1 {
 			compatible = "allwinner,simple-framebuffer",
 				     "simple-framebuffer";
 			allwinner,pipeline = "de_be0-lcd0";
-- 
2.6.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] 50+ messages in thread

* [PATCH v4 3/4] ARM: dts: sun6i: Add simplefb node labels to reference at board level
@ 2015-10-23  3:50   ` Chen-Yu Tsai
  0 siblings, 0 replies; 50+ messages in thread
From: Chen-Yu Tsai @ 2015-10-23  3:50 UTC (permalink / raw)
  To: linux-arm-kernel

Some boards, such as tablets, have regulators providing power to parts
of the display pipeline, like signal converters and LCD panels.

Add labels to the simplefb device nodes so that we can reference them
in the board dts files to add regulator supply properties.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---
 arch/arm/boot/dts/sun6i-a31.dtsi | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boot/dts/sun6i-a31.dtsi b/arch/arm/boot/dts/sun6i-a31.dtsi
index 83c18798cae0..b6ad7850fac6 100644
--- a/arch/arm/boot/dts/sun6i-a31.dtsi
+++ b/arch/arm/boot/dts/sun6i-a31.dtsi
@@ -61,7 +61,7 @@
 		#size-cells = <1>;
 		ranges;
 
-		framebuffer@0 {
+		simplefb_hdmi: framebuffer@0 {
 			compatible = "allwinner,simple-framebuffer",
 				     "simple-framebuffer";
 			allwinner,pipeline = "de_be0-lcd0-hdmi";
@@ -69,7 +69,7 @@
 			status = "disabled";
 		};
 
-		framebuffer@1 {
+		simplefb_lcd: framebuffer@1 {
 			compatible = "allwinner,simple-framebuffer",
 				     "simple-framebuffer";
 			allwinner,pipeline = "de_be0-lcd0";
-- 
2.6.1


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

* [PATCH v4 3/4] ARM: dts: sun6i: Add simplefb node labels to reference at board level
@ 2015-10-23  3:50   ` Chen-Yu Tsai
  0 siblings, 0 replies; 50+ messages in thread
From: Chen-Yu Tsai @ 2015-10-23  3:50 UTC (permalink / raw)
  To: linux-arm-kernel

Some boards, such as tablets, have regulators providing power to parts
of the display pipeline, like signal converters and LCD panels.

Add labels to the simplefb device nodes so that we can reference them
in the board dts files to add regulator supply properties.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---
 arch/arm/boot/dts/sun6i-a31.dtsi | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boot/dts/sun6i-a31.dtsi b/arch/arm/boot/dts/sun6i-a31.dtsi
index 83c18798cae0..b6ad7850fac6 100644
--- a/arch/arm/boot/dts/sun6i-a31.dtsi
+++ b/arch/arm/boot/dts/sun6i-a31.dtsi
@@ -61,7 +61,7 @@
 		#size-cells = <1>;
 		ranges;
 
-		framebuffer at 0 {
+		simplefb_hdmi: framebuffer at 0 {
 			compatible = "allwinner,simple-framebuffer",
 				     "simple-framebuffer";
 			allwinner,pipeline = "de_be0-lcd0-hdmi";
@@ -69,7 +69,7 @@
 			status = "disabled";
 		};
 
-		framebuffer at 1 {
+		simplefb_lcd: framebuffer at 1 {
 			compatible = "allwinner,simple-framebuffer",
 				     "simple-framebuffer";
 			allwinner,pipeline = "de_be0-lcd0";
-- 
2.6.1

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

* [PATCH v4 4/4] ARM: dts: sun6i: Add dts file for MSI Primo81 tablet
  2015-10-23  3:50 ` Chen-Yu Tsai
  (?)
@ 2015-10-23  3:50   ` Chen-Yu Tsai
  -1 siblings, 0 replies; 50+ messages in thread
From: Chen-Yu Tsai @ 2015-10-23  3:50 UTC (permalink / raw)
  To: Hans de Goede, Jean-Christophe Plagniol-Villard, Tomi Valkeinen,
	Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Maxime Ripard
  Cc: Karsten Merker, linux-fbdev, devicetree, linux-kernel,
	linux-arm-kernel, Mark Brown, Siarhei Siamashka, Chen-Yu Tsai

From: Karsten Merker <merker@debian.org>

The MSI Primo81 is an A31s based tablet, with 1G RAM, 16G NAND,
768x1024 IPS LCD display, mono speaker, 0.3 MP front camera, 2.0 MP
rear camera, 3500 mAh battery, gt911 touchscreen, mma8452 accelerometer
and rtl8188etv usb wifi. Has "power", "volume+" and "volume-" buttons
(both volume buttons are also connected to the UBOOT_SEL pin). The
external connectors are represented by MicroSD slot, MiniHDMI, MicroUSB
OTG and 3.5mm headphone jack.

USB OTG is enabled in host only mode. AXP221 USB power supply and
GPIO support are required for full USB OTG support.

Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Signed-off-by: Karsten Merker <merker@debian.org>
Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---

Changes since last submission (was part of Sinlinx SinA31s series)

  - Update axp22x.dtsi file name
  - Sort regulators
  - Drop URL in commit message
  - Drop comment for capacitive touch panel
  - Add simplefb regulators
  - Drop regulator-always-on for regulators that aren't critical
  - Fix CPU and GPU regulator supply mix-up

---
 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/sun6i-a31s-primo81.dts | 255 +++++++++++++++++++++++++++++++
 2 files changed, 256 insertions(+)
 create mode 100644 arch/arm/boot/dts/sun6i-a31s-primo81.dts

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index c00b72e750ab..78ade1a5e886 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -612,6 +612,7 @@ dtb-$(CONFIG_MACH_SUN6I) += \
 	sun6i-a31-m9.dtb \
 	sun6i-a31-mele-a1000g-quad.dtb \
 	sun6i-a31s-cs908.dtb \
+	sun6i-a31s-primo81.dtb \
 	sun6i-a31s-sina31s.dtb \
 	sun6i-a31s-sinovoip-bpi-m2.dtb \
 	sun6i-a31s-yones-toptech-bs1078-v2.dtb
diff --git a/arch/arm/boot/dts/sun6i-a31s-primo81.dts b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
new file mode 100644
index 000000000000..2d4250b1faf8
--- /dev/null
+++ b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
@@ -0,0 +1,255 @@
+/*
+ * Copyright 2014 Siarhei Siamashka <siarhei.siamashka@gmail.com>
+ * Copyright 2015 Karsten Merker <merker@debian.org>
+ * Copyright 2015 Chen-Yu Tsai <wens@csie.org>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include "sun6i-a31s.dtsi"
+#include "sunxi-common-regulators.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/pinctrl/sun4i-a10.h>
+
+/ {
+	model = "MSI Primo81 tablet";
+	compatible = "msi,primo81", "allwinner,sun6i-a31s";
+};
+
+&cpu0 {
+	cpu-supply = <&reg_dcdc3>;
+};
+
+&ehci0 {
+	/* rtl8188etv wifi is connected here */
+	status = "okay";
+};
+
+&i2c0 {
+	/* pull-ups and device VDDIO use AXP221 DLDO3 */
+	pinctrl-names = "default";
+	pinctrl-0 = <&i2c0_pins_a>;
+	status = "failed";
+};
+
+&i2c1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&i2c1_pins_a>;
+	status = "okay";
+
+	ctp@5d {
+		pinctrl-names = "default";
+		pinctrl-0 = <&gt911_int_primo81>;
+		compatible = "goodix,gt911";
+		reg = <0x5d>;
+		interrupt-parent = <&pio>;
+		interrupts = <0 3 IRQ_TYPE_LEVEL_HIGH>; /* PA3 */
+	};
+};
+
+&i2c2 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&i2c2_pins_a>;
+	status = "okay";
+
+	accelerometer@1c {
+		pinctrl-names = "default";
+		pinctrl-0 = <&mma8452_int_primo81>;
+		compatible = "fsl,mma8452";
+		reg = <0x1c>;
+		interrupt-parent = <&pio>;
+		interrupts = <0 9 IRQ_TYPE_LEVEL_HIGH>; /* PA9 */
+		#io-channel-cells = <1>;
+	};
+};
+
+&lradc {
+	vref-supply = <&reg_aldo3>;
+	status = "okay";
+
+	button@158 {
+		label = "Volume Up";
+		linux,code = <KEY_VOLUMEUP>;
+		channel = <0>;
+		voltage = <158730>;
+	};
+
+	button@349 {
+		label = "Volume Down";
+		linux,code = <KEY_VOLUMEDOWN>;
+		channel = <0>;
+		voltage = <349206>;
+	};
+};
+
+&mmc0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_primo81>;
+	vmmc-supply = <&reg_dcdc1>;
+	bus-width = <4>;
+	cd-gpios = <&pio 0 8 GPIO_ACTIVE_HIGH>; /* PA8 */
+	cd-inverted;
+	status = "okay";
+};
+
+&pio {
+	gt911_int_primo81: gt911_int_pin@0 {
+		allwinner,pins = "PA3";
+		allwinner,function = "gpio_in";
+		allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+		allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+	};
+
+	mma8452_int_primo81: mma8452_int_pin@0 {
+		allwinner,pins = "PA9";
+		allwinner,function = "gpio_in";
+		allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+		allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
+	};
+
+	mmc0_cd_pin_primo81: mmc0_cd_pin@0 {
+		allwinner,pins = "PA8";
+		allwinner,function = "gpio_in";
+		allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+		allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
+	};
+};
+
+&p2wi {
+	status = "okay";
+
+	axp22x: pmic@68 {
+		compatible = "x-powers,axp221";
+		reg = <0x68>;
+		interrupt-parent = <&nmi_intc>;
+		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+	};
+};
+
+#include "axp22x.dtsi"
+
+&reg_aldo3 {
+	regulator-always-on;
+	regulator-min-microvolt = <2700000>;
+	regulator-max-microvolt = <3300000>;
+	regulator-name = "avcc";
+};
+
+&reg_dc1sw {
+	regulator-min-microvolt = <3000000>;
+	regulator-max-microvolt = <3000000>;
+	regulator-name = "vcc-lcd";
+};
+
+&reg_dc5ldo {
+	regulator-min-microvolt = <700000>;
+	regulator-max-microvolt = <1320000>;
+	regulator-name = "vdd-cpus"; /* This is an educated guess */
+};
+
+&reg_dcdc1 {
+	regulator-always-on;
+	regulator-min-microvolt = <3000000>;
+	regulator-max-microvolt = <3000000>;
+	regulator-name = "vcc-3v0";
+};
+
+&reg_dcdc2 {
+	regulator-min-microvolt = <700000>;
+	regulator-max-microvolt = <1320000>;
+	regulator-name = "vdd-gpu";
+};
+
+&reg_dcdc3 {
+	regulator-always-on;
+	regulator-min-microvolt = <700000>;
+	regulator-max-microvolt = <1320000>;
+	regulator-name = "vdd-cpu";
+};
+
+&reg_dcdc4 {
+	regulator-always-on;
+	regulator-min-microvolt = <700000>;
+	regulator-max-microvolt = <1320000>;
+	regulator-name = "vdd-sys-dll";
+};
+
+&reg_dcdc5 {
+	regulator-always-on;
+	regulator-min-microvolt = <1500000>;
+	regulator-max-microvolt = <1500000>;
+	regulator-name = "vcc-dram";
+};
+
+&reg_dldo1 {
+	regulator-min-microvolt = <3300000>;
+	regulator-max-microvolt = <3300000>;
+	regulator-name = "vcc-wifi";
+};
+
+&reg_dldo3 {
+	regulator-min-microvolt = <2800000>;
+	regulator-max-microvolt = <2800000>;
+	regulator-name = "vddio-csi";
+};
+
+&reg_eldo3 {
+	regulator-min-microvolt = <1080000>;
+	regulator-max-microvolt = <1320000>;
+	regulator-name = "vdd-mipi-bridge";
+};
+
+&simplefb_lcd {
+	vcc-lcd-supply = <&reg_dc1sw>;
+	vdd-mipi-bridge-supply = <&reg_eldo3>;
+};
+
+&usb_otg {
+	/* otg support requires support for AXP221 usb-power-supply and GPIO */
+	dr_mode = "host";
+	status = "okay";
+};
+
+&usbphy {
+	usb1_vbus-supply = <&reg_dldo1>;
+	status = "okay";
+};
-- 
2.6.1


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

* [PATCH v4 4/4] ARM: dts: sun6i: Add dts file for MSI Primo81 tablet
@ 2015-10-23  3:50   ` Chen-Yu Tsai
  0 siblings, 0 replies; 50+ messages in thread
From: Chen-Yu Tsai @ 2015-10-23  3:50 UTC (permalink / raw)
  To: linux-arm-kernel

From: Karsten Merker <merker@debian.org>

The MSI Primo81 is an A31s based tablet, with 1G RAM, 16G NAND,
768x1024 IPS LCD display, mono speaker, 0.3 MP front camera, 2.0 MP
rear camera, 3500 mAh battery, gt911 touchscreen, mma8452 accelerometer
and rtl8188etv usb wifi. Has "power", "volume+" and "volume-" buttons
(both volume buttons are also connected to the UBOOT_SEL pin). The
external connectors are represented by MicroSD slot, MiniHDMI, MicroUSB
OTG and 3.5mm headphone jack.

USB OTG is enabled in host only mode. AXP221 USB power supply and
GPIO support are required for full USB OTG support.

Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Signed-off-by: Karsten Merker <merker@debian.org>
Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---

Changes since last submission (was part of Sinlinx SinA31s series)

  - Update axp22x.dtsi file name
  - Sort regulators
  - Drop URL in commit message
  - Drop comment for capacitive touch panel
  - Add simplefb regulators
  - Drop regulator-always-on for regulators that aren't critical
  - Fix CPU and GPU regulator supply mix-up

---
 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/sun6i-a31s-primo81.dts | 255 +++++++++++++++++++++++++++++++
 2 files changed, 256 insertions(+)
 create mode 100644 arch/arm/boot/dts/sun6i-a31s-primo81.dts

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index c00b72e750ab..78ade1a5e886 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -612,6 +612,7 @@ dtb-$(CONFIG_MACH_SUN6I) += \
 	sun6i-a31-m9.dtb \
 	sun6i-a31-mele-a1000g-quad.dtb \
 	sun6i-a31s-cs908.dtb \
+	sun6i-a31s-primo81.dtb \
 	sun6i-a31s-sina31s.dtb \
 	sun6i-a31s-sinovoip-bpi-m2.dtb \
 	sun6i-a31s-yones-toptech-bs1078-v2.dtb
diff --git a/arch/arm/boot/dts/sun6i-a31s-primo81.dts b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
new file mode 100644
index 000000000000..2d4250b1faf8
--- /dev/null
+++ b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
@@ -0,0 +1,255 @@
+/*
+ * Copyright 2014 Siarhei Siamashka <siarhei.siamashka@gmail.com>
+ * Copyright 2015 Karsten Merker <merker@debian.org>
+ * Copyright 2015 Chen-Yu Tsai <wens@csie.org>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include "sun6i-a31s.dtsi"
+#include "sunxi-common-regulators.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/pinctrl/sun4i-a10.h>
+
+/ {
+	model = "MSI Primo81 tablet";
+	compatible = "msi,primo81", "allwinner,sun6i-a31s";
+};
+
+&cpu0 {
+	cpu-supply = <&reg_dcdc3>;
+};
+
+&ehci0 {
+	/* rtl8188etv wifi is connected here */
+	status = "okay";
+};
+
+&i2c0 {
+	/* pull-ups and device VDDIO use AXP221 DLDO3 */
+	pinctrl-names = "default";
+	pinctrl-0 = <&i2c0_pins_a>;
+	status = "failed";
+};
+
+&i2c1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&i2c1_pins_a>;
+	status = "okay";
+
+	ctp@5d {
+		pinctrl-names = "default";
+		pinctrl-0 = <&gt911_int_primo81>;
+		compatible = "goodix,gt911";
+		reg = <0x5d>;
+		interrupt-parent = <&pio>;
+		interrupts = <0 3 IRQ_TYPE_LEVEL_HIGH>; /* PA3 */
+	};
+};
+
+&i2c2 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&i2c2_pins_a>;
+	status = "okay";
+
+	accelerometer@1c {
+		pinctrl-names = "default";
+		pinctrl-0 = <&mma8452_int_primo81>;
+		compatible = "fsl,mma8452";
+		reg = <0x1c>;
+		interrupt-parent = <&pio>;
+		interrupts = <0 9 IRQ_TYPE_LEVEL_HIGH>; /* PA9 */
+		#io-channel-cells = <1>;
+	};
+};
+
+&lradc {
+	vref-supply = <&reg_aldo3>;
+	status = "okay";
+
+	button@158 {
+		label = "Volume Up";
+		linux,code = <KEY_VOLUMEUP>;
+		channel = <0>;
+		voltage = <158730>;
+	};
+
+	button@349 {
+		label = "Volume Down";
+		linux,code = <KEY_VOLUMEDOWN>;
+		channel = <0>;
+		voltage = <349206>;
+	};
+};
+
+&mmc0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_primo81>;
+	vmmc-supply = <&reg_dcdc1>;
+	bus-width = <4>;
+	cd-gpios = <&pio 0 8 GPIO_ACTIVE_HIGH>; /* PA8 */
+	cd-inverted;
+	status = "okay";
+};
+
+&pio {
+	gt911_int_primo81: gt911_int_pin@0 {
+		allwinner,pins = "PA3";
+		allwinner,function = "gpio_in";
+		allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+		allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+	};
+
+	mma8452_int_primo81: mma8452_int_pin@0 {
+		allwinner,pins = "PA9";
+		allwinner,function = "gpio_in";
+		allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+		allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
+	};
+
+	mmc0_cd_pin_primo81: mmc0_cd_pin@0 {
+		allwinner,pins = "PA8";
+		allwinner,function = "gpio_in";
+		allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+		allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
+	};
+};
+
+&p2wi {
+	status = "okay";
+
+	axp22x: pmic@68 {
+		compatible = "x-powers,axp221";
+		reg = <0x68>;
+		interrupt-parent = <&nmi_intc>;
+		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+	};
+};
+
+#include "axp22x.dtsi"
+
+&reg_aldo3 {
+	regulator-always-on;
+	regulator-min-microvolt = <2700000>;
+	regulator-max-microvolt = <3300000>;
+	regulator-name = "avcc";
+};
+
+&reg_dc1sw {
+	regulator-min-microvolt = <3000000>;
+	regulator-max-microvolt = <3000000>;
+	regulator-name = "vcc-lcd";
+};
+
+&reg_dc5ldo {
+	regulator-min-microvolt = <700000>;
+	regulator-max-microvolt = <1320000>;
+	regulator-name = "vdd-cpus"; /* This is an educated guess */
+};
+
+&reg_dcdc1 {
+	regulator-always-on;
+	regulator-min-microvolt = <3000000>;
+	regulator-max-microvolt = <3000000>;
+	regulator-name = "vcc-3v0";
+};
+
+&reg_dcdc2 {
+	regulator-min-microvolt = <700000>;
+	regulator-max-microvolt = <1320000>;
+	regulator-name = "vdd-gpu";
+};
+
+&reg_dcdc3 {
+	regulator-always-on;
+	regulator-min-microvolt = <700000>;
+	regulator-max-microvolt = <1320000>;
+	regulator-name = "vdd-cpu";
+};
+
+&reg_dcdc4 {
+	regulator-always-on;
+	regulator-min-microvolt = <700000>;
+	regulator-max-microvolt = <1320000>;
+	regulator-name = "vdd-sys-dll";
+};
+
+&reg_dcdc5 {
+	regulator-always-on;
+	regulator-min-microvolt = <1500000>;
+	regulator-max-microvolt = <1500000>;
+	regulator-name = "vcc-dram";
+};
+
+&reg_dldo1 {
+	regulator-min-microvolt = <3300000>;
+	regulator-max-microvolt = <3300000>;
+	regulator-name = "vcc-wifi";
+};
+
+&reg_dldo3 {
+	regulator-min-microvolt = <2800000>;
+	regulator-max-microvolt = <2800000>;
+	regulator-name = "vddio-csi";
+};
+
+&reg_eldo3 {
+	regulator-min-microvolt = <1080000>;
+	regulator-max-microvolt = <1320000>;
+	regulator-name = "vdd-mipi-bridge";
+};
+
+&simplefb_lcd {
+	vcc-lcd-supply = <&reg_dc1sw>;
+	vdd-mipi-bridge-supply = <&reg_eldo3>;
+};
+
+&usb_otg {
+	/* otg support requires support for AXP221 usb-power-supply and GPIO */
+	dr_mode = "host";
+	status = "okay";
+};
+
+&usbphy {
+	usb1_vbus-supply = <&reg_dldo1>;
+	status = "okay";
+};
-- 
2.6.1


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

* [PATCH v4 4/4] ARM: dts: sun6i: Add dts file for MSI Primo81 tablet
@ 2015-10-23  3:50   ` Chen-Yu Tsai
  0 siblings, 0 replies; 50+ messages in thread
From: Chen-Yu Tsai @ 2015-10-23  3:50 UTC (permalink / raw)
  To: linux-arm-kernel

From: Karsten Merker <merker@debian.org>

The MSI Primo81 is an A31s based tablet, with 1G RAM, 16G NAND,
768x1024 IPS LCD display, mono speaker, 0.3 MP front camera, 2.0 MP
rear camera, 3500 mAh battery, gt911 touchscreen, mma8452 accelerometer
and rtl8188etv usb wifi. Has "power", "volume+" and "volume-" buttons
(both volume buttons are also connected to the UBOOT_SEL pin). The
external connectors are represented by MicroSD slot, MiniHDMI, MicroUSB
OTG and 3.5mm headphone jack.

USB OTG is enabled in host only mode. AXP221 USB power supply and
GPIO support are required for full USB OTG support.

Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Signed-off-by: Karsten Merker <merker@debian.org>
Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---

Changes since last submission (was part of Sinlinx SinA31s series)

  - Update axp22x.dtsi file name
  - Sort regulators
  - Drop URL in commit message
  - Drop comment for capacitive touch panel
  - Add simplefb regulators
  - Drop regulator-always-on for regulators that aren't critical
  - Fix CPU and GPU regulator supply mix-up

---
 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/sun6i-a31s-primo81.dts | 255 +++++++++++++++++++++++++++++++
 2 files changed, 256 insertions(+)
 create mode 100644 arch/arm/boot/dts/sun6i-a31s-primo81.dts

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index c00b72e750ab..78ade1a5e886 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -612,6 +612,7 @@ dtb-$(CONFIG_MACH_SUN6I) += \
 	sun6i-a31-m9.dtb \
 	sun6i-a31-mele-a1000g-quad.dtb \
 	sun6i-a31s-cs908.dtb \
+	sun6i-a31s-primo81.dtb \
 	sun6i-a31s-sina31s.dtb \
 	sun6i-a31s-sinovoip-bpi-m2.dtb \
 	sun6i-a31s-yones-toptech-bs1078-v2.dtb
diff --git a/arch/arm/boot/dts/sun6i-a31s-primo81.dts b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
new file mode 100644
index 000000000000..2d4250b1faf8
--- /dev/null
+++ b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
@@ -0,0 +1,255 @@
+/*
+ * Copyright 2014 Siarhei Siamashka <siarhei.siamashka@gmail.com>
+ * Copyright 2015 Karsten Merker <merker@debian.org>
+ * Copyright 2015 Chen-Yu Tsai <wens@csie.org>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include "sun6i-a31s.dtsi"
+#include "sunxi-common-regulators.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/pinctrl/sun4i-a10.h>
+
+/ {
+	model = "MSI Primo81 tablet";
+	compatible = "msi,primo81", "allwinner,sun6i-a31s";
+};
+
+&cpu0 {
+	cpu-supply = <&reg_dcdc3>;
+};
+
+&ehci0 {
+	/* rtl8188etv wifi is connected here */
+	status = "okay";
+};
+
+&i2c0 {
+	/* pull-ups and device VDDIO use AXP221 DLDO3 */
+	pinctrl-names = "default";
+	pinctrl-0 = <&i2c0_pins_a>;
+	status = "failed";
+};
+
+&i2c1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&i2c1_pins_a>;
+	status = "okay";
+
+	ctp at 5d {
+		pinctrl-names = "default";
+		pinctrl-0 = <&gt911_int_primo81>;
+		compatible = "goodix,gt911";
+		reg = <0x5d>;
+		interrupt-parent = <&pio>;
+		interrupts = <0 3 IRQ_TYPE_LEVEL_HIGH>; /* PA3 */
+	};
+};
+
+&i2c2 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&i2c2_pins_a>;
+	status = "okay";
+
+	accelerometer at 1c {
+		pinctrl-names = "default";
+		pinctrl-0 = <&mma8452_int_primo81>;
+		compatible = "fsl,mma8452";
+		reg = <0x1c>;
+		interrupt-parent = <&pio>;
+		interrupts = <0 9 IRQ_TYPE_LEVEL_HIGH>; /* PA9 */
+		#io-channel-cells = <1>;
+	};
+};
+
+&lradc {
+	vref-supply = <&reg_aldo3>;
+	status = "okay";
+
+	button at 158 {
+		label = "Volume Up";
+		linux,code = <KEY_VOLUMEUP>;
+		channel = <0>;
+		voltage = <158730>;
+	};
+
+	button at 349 {
+		label = "Volume Down";
+		linux,code = <KEY_VOLUMEDOWN>;
+		channel = <0>;
+		voltage = <349206>;
+	};
+};
+
+&mmc0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_primo81>;
+	vmmc-supply = <&reg_dcdc1>;
+	bus-width = <4>;
+	cd-gpios = <&pio 0 8 GPIO_ACTIVE_HIGH>; /* PA8 */
+	cd-inverted;
+	status = "okay";
+};
+
+&pio {
+	gt911_int_primo81: gt911_int_pin at 0 {
+		allwinner,pins = "PA3";
+		allwinner,function = "gpio_in";
+		allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+		allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+	};
+
+	mma8452_int_primo81: mma8452_int_pin at 0 {
+		allwinner,pins = "PA9";
+		allwinner,function = "gpio_in";
+		allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+		allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
+	};
+
+	mmc0_cd_pin_primo81: mmc0_cd_pin at 0 {
+		allwinner,pins = "PA8";
+		allwinner,function = "gpio_in";
+		allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+		allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
+	};
+};
+
+&p2wi {
+	status = "okay";
+
+	axp22x: pmic at 68 {
+		compatible = "x-powers,axp221";
+		reg = <0x68>;
+		interrupt-parent = <&nmi_intc>;
+		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+	};
+};
+
+#include "axp22x.dtsi"
+
+&reg_aldo3 {
+	regulator-always-on;
+	regulator-min-microvolt = <2700000>;
+	regulator-max-microvolt = <3300000>;
+	regulator-name = "avcc";
+};
+
+&reg_dc1sw {
+	regulator-min-microvolt = <3000000>;
+	regulator-max-microvolt = <3000000>;
+	regulator-name = "vcc-lcd";
+};
+
+&reg_dc5ldo {
+	regulator-min-microvolt = <700000>;
+	regulator-max-microvolt = <1320000>;
+	regulator-name = "vdd-cpus"; /* This is an educated guess */
+};
+
+&reg_dcdc1 {
+	regulator-always-on;
+	regulator-min-microvolt = <3000000>;
+	regulator-max-microvolt = <3000000>;
+	regulator-name = "vcc-3v0";
+};
+
+&reg_dcdc2 {
+	regulator-min-microvolt = <700000>;
+	regulator-max-microvolt = <1320000>;
+	regulator-name = "vdd-gpu";
+};
+
+&reg_dcdc3 {
+	regulator-always-on;
+	regulator-min-microvolt = <700000>;
+	regulator-max-microvolt = <1320000>;
+	regulator-name = "vdd-cpu";
+};
+
+&reg_dcdc4 {
+	regulator-always-on;
+	regulator-min-microvolt = <700000>;
+	regulator-max-microvolt = <1320000>;
+	regulator-name = "vdd-sys-dll";
+};
+
+&reg_dcdc5 {
+	regulator-always-on;
+	regulator-min-microvolt = <1500000>;
+	regulator-max-microvolt = <1500000>;
+	regulator-name = "vcc-dram";
+};
+
+&reg_dldo1 {
+	regulator-min-microvolt = <3300000>;
+	regulator-max-microvolt = <3300000>;
+	regulator-name = "vcc-wifi";
+};
+
+&reg_dldo3 {
+	regulator-min-microvolt = <2800000>;
+	regulator-max-microvolt = <2800000>;
+	regulator-name = "vddio-csi";
+};
+
+&reg_eldo3 {
+	regulator-min-microvolt = <1080000>;
+	regulator-max-microvolt = <1320000>;
+	regulator-name = "vdd-mipi-bridge";
+};
+
+&simplefb_lcd {
+	vcc-lcd-supply = <&reg_dc1sw>;
+	vdd-mipi-bridge-supply = <&reg_eldo3>;
+};
+
+&usb_otg {
+	/* otg support requires support for AXP221 usb-power-supply and GPIO */
+	dr_mode = "host";
+	status = "okay";
+};
+
+&usbphy {
+	usb1_vbus-supply = <&reg_dldo1>;
+	status = "okay";
+};
-- 
2.6.1

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

* Re: [PATCH v4 0/4] simplefb: Add regulator handling support
@ 2015-10-23  6:05   ` Maxime Ripard
  0 siblings, 0 replies; 50+ messages in thread
From: Maxime Ripard @ 2015-10-23  6:05 UTC (permalink / raw)
  To: Chen-Yu Tsai
  Cc: Hans de Goede, Jean-Christophe Plagniol-Villard, Tomi Valkeinen,
	Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	linux-fbdev, devicetree, linux-kernel, linux-arm-kernel,
	Mark Brown

[-- Attachment #1: Type: text/plain, Size: 1926 bytes --]

On Fri, Oct 23, 2015 at 11:50:37AM +0800, Chen-Yu Tsai wrote:
> Hi everyone,
> 
> This is v4 of the simplefb regulator support series. This series adds
> regulator claiming and enabling support for simplefb.
> 
> Changes since v4:
>   - Fixed inverted logic when testing the property name.
>   - Fixed regulator supply name string copy length off by 1.
>   - Added real world user, MSI Primo 81 dts patches.
> 
> Changes since v3:
>   - Dropped extra "if" which is always true, leftover from v1.
>   - Updated commit message of patch 1
> 
> Sometimes the simplefb display output path consits of external conversion
> chips and/or LCD drivers and backlights. These devices normally have
> GPIOs to turn them on and/or bring them out of reset, and regulators
> supplying power to them.
> 
> While the kernel does not touch unclaimed GPIOs, the regulator core
> happily disables unused regulators. Thus we need simplefb to claim
> and enable the regulators used throughout the display pipeline.
> 
> The binding supports any named regulator supplies under its device
> node. The driver will look through its properties, and claim any
> regulators by matching "*-supply", as Mark suggested.
> 
> I've not done a generic helper in the regulator core yet, instead doing
> the regulator property handling in the simplefb code for now.
> 
> 
> Patch 1 adds the regulator properties to the DT binding.
> 
> Patch 2 adds code to the simplefb driver to claim and enable regulators.
> Hans, I dropped your Reviewed-by tag from this patch.
> 
> Patch 3 adds labels to the simplefb device nodes in sun6i-a31.dtsi
> so we can reference them in the board dts files, like in the next
> patch.
> 
> Patch 4 adds a dts file for MSI's Primo 81 tablet.

Applied 3 and 4.

Thanks!
Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

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

* Re: [PATCH v4 0/4] simplefb: Add regulator handling support
@ 2015-10-23  6:05   ` Maxime Ripard
  0 siblings, 0 replies; 50+ messages in thread
From: Maxime Ripard @ 2015-10-23  6:05 UTC (permalink / raw)
  To: Chen-Yu Tsai
  Cc: Hans de Goede, Jean-Christophe Plagniol-Villard, Tomi Valkeinen,
	Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	linux-fbdev-u79uwXL29TY76Z2rM5mHXA,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Mark Brown

[-- Attachment #1: Type: text/plain, Size: 1926 bytes --]

On Fri, Oct 23, 2015 at 11:50:37AM +0800, Chen-Yu Tsai wrote:
> Hi everyone,
> 
> This is v4 of the simplefb regulator support series. This series adds
> regulator claiming and enabling support for simplefb.
> 
> Changes since v4:
>   - Fixed inverted logic when testing the property name.
>   - Fixed regulator supply name string copy length off by 1.
>   - Added real world user, MSI Primo 81 dts patches.
> 
> Changes since v3:
>   - Dropped extra "if" which is always true, leftover from v1.
>   - Updated commit message of patch 1
> 
> Sometimes the simplefb display output path consits of external conversion
> chips and/or LCD drivers and backlights. These devices normally have
> GPIOs to turn them on and/or bring them out of reset, and regulators
> supplying power to them.
> 
> While the kernel does not touch unclaimed GPIOs, the regulator core
> happily disables unused regulators. Thus we need simplefb to claim
> and enable the regulators used throughout the display pipeline.
> 
> The binding supports any named regulator supplies under its device
> node. The driver will look through its properties, and claim any
> regulators by matching "*-supply", as Mark suggested.
> 
> I've not done a generic helper in the regulator core yet, instead doing
> the regulator property handling in the simplefb code for now.
> 
> 
> Patch 1 adds the regulator properties to the DT binding.
> 
> Patch 2 adds code to the simplefb driver to claim and enable regulators.
> Hans, I dropped your Reviewed-by tag from this patch.
> 
> Patch 3 adds labels to the simplefb device nodes in sun6i-a31.dtsi
> so we can reference them in the board dts files, like in the next
> patch.
> 
> Patch 4 adds a dts file for MSI's Primo 81 tablet.

Applied 3 and 4.

Thanks!
Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

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

* Re: [PATCH v4 0/4] simplefb: Add regulator handling support
@ 2015-10-23  6:05   ` Maxime Ripard
  0 siblings, 0 replies; 50+ messages in thread
From: Maxime Ripard @ 2015-10-23  6:05 UTC (permalink / raw)
  To: linux-arm-kernel

[-- Attachment #1: Type: text/plain, Size: 1926 bytes --]

On Fri, Oct 23, 2015 at 11:50:37AM +0800, Chen-Yu Tsai wrote:
> Hi everyone,
> 
> This is v4 of the simplefb regulator support series. This series adds
> regulator claiming and enabling support for simplefb.
> 
> Changes since v4:
>   - Fixed inverted logic when testing the property name.
>   - Fixed regulator supply name string copy length off by 1.
>   - Added real world user, MSI Primo 81 dts patches.
> 
> Changes since v3:
>   - Dropped extra "if" which is always true, leftover from v1.
>   - Updated commit message of patch 1
> 
> Sometimes the simplefb display output path consits of external conversion
> chips and/or LCD drivers and backlights. These devices normally have
> GPIOs to turn them on and/or bring them out of reset, and regulators
> supplying power to them.
> 
> While the kernel does not touch unclaimed GPIOs, the regulator core
> happily disables unused regulators. Thus we need simplefb to claim
> and enable the regulators used throughout the display pipeline.
> 
> The binding supports any named regulator supplies under its device
> node. The driver will look through its properties, and claim any
> regulators by matching "*-supply", as Mark suggested.
> 
> I've not done a generic helper in the regulator core yet, instead doing
> the regulator property handling in the simplefb code for now.
> 
> 
> Patch 1 adds the regulator properties to the DT binding.
> 
> Patch 2 adds code to the simplefb driver to claim and enable regulators.
> Hans, I dropped your Reviewed-by tag from this patch.
> 
> Patch 3 adds labels to the simplefb device nodes in sun6i-a31.dtsi
> so we can reference them in the board dts files, like in the next
> patch.
> 
> Patch 4 adds a dts file for MSI's Primo 81 tablet.

Applied 3 and 4.

Thanks!
Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

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

* [PATCH v4 0/4] simplefb: Add regulator handling support
@ 2015-10-23  6:05   ` Maxime Ripard
  0 siblings, 0 replies; 50+ messages in thread
From: Maxime Ripard @ 2015-10-23  6:05 UTC (permalink / raw)
  To: linux-arm-kernel

On Fri, Oct 23, 2015 at 11:50:37AM +0800, Chen-Yu Tsai wrote:
> Hi everyone,
> 
> This is v4 of the simplefb regulator support series. This series adds
> regulator claiming and enabling support for simplefb.
> 
> Changes since v4:
>   - Fixed inverted logic when testing the property name.
>   - Fixed regulator supply name string copy length off by 1.
>   - Added real world user, MSI Primo 81 dts patches.
> 
> Changes since v3:
>   - Dropped extra "if" which is always true, leftover from v1.
>   - Updated commit message of patch 1
> 
> Sometimes the simplefb display output path consits of external conversion
> chips and/or LCD drivers and backlights. These devices normally have
> GPIOs to turn them on and/or bring them out of reset, and regulators
> supplying power to them.
> 
> While the kernel does not touch unclaimed GPIOs, the regulator core
> happily disables unused regulators. Thus we need simplefb to claim
> and enable the regulators used throughout the display pipeline.
> 
> The binding supports any named regulator supplies under its device
> node. The driver will look through its properties, and claim any
> regulators by matching "*-supply", as Mark suggested.
> 
> I've not done a generic helper in the regulator core yet, instead doing
> the regulator property handling in the simplefb code for now.
> 
> 
> Patch 1 adds the regulator properties to the DT binding.
> 
> Patch 2 adds code to the simplefb driver to claim and enable regulators.
> Hans, I dropped your Reviewed-by tag from this patch.
> 
> Patch 3 adds labels to the simplefb device nodes in sun6i-a31.dtsi
> so we can reference them in the board dts files, like in the next
> patch.
> 
> Patch 4 adds a dts file for MSI's Primo 81 tablet.

Applied 3 and 4.

Thanks!
Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20151023/0197e5a3/attachment.sig>

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

* Re: [PATCH v4 0/4] simplefb: Add regulator handling support
  2015-10-23  3:50 ` Chen-Yu Tsai
  (?)
@ 2015-10-23 13:49   ` Hans de Goede
  -1 siblings, 0 replies; 50+ messages in thread
From: Hans de Goede @ 2015-10-23 13:49 UTC (permalink / raw)
  To: Chen-Yu Tsai, Jean-Christophe Plagniol-Villard, Tomi Valkeinen,
	Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Maxime Ripard
  Cc: linux-fbdev, devicetree, linux-kernel, linux-arm-kernel, Mark Brown

Hi,

Patches 1/2 look good and are:

Reviewed-by: Hans de Goede <hdegoede@redhat.com>

And the approach used for the regulators in them is also:

Acked-by: Mark Brown <broonie@kernel.org>

So patches 1/2 are ready for merging.

Jean-Christophe or Tomi, can you pick up patch 1 &  2 please ?

Regards,

Hans



On 10/23/2015 05:50 AM, Chen-Yu Tsai wrote:
> Hi everyone,
>
> This is v4 of the simplefb regulator support series. This series adds
> regulator claiming and enabling support for simplefb.
>
> Changes since v4:
>    - Fixed inverted logic when testing the property name.
>    - Fixed regulator supply name string copy length off by 1.
>    - Added real world user, MSI Primo 81 dts patches.
>
> Changes since v3:
>    - Dropped extra "if" which is always true, leftover from v1.
>    - Updated commit message of patch 1
>
> Sometimes the simplefb display output path consits of external conversion
> chips and/or LCD drivers and backlights. These devices normally have
> GPIOs to turn them on and/or bring them out of reset, and regulators
> supplying power to them.
>
> While the kernel does not touch unclaimed GPIOs, the regulator core
> happily disables unused regulators. Thus we need simplefb to claim
> and enable the regulators used throughout the display pipeline.
>
> The binding supports any named regulator supplies under its device
> node. The driver will look through its properties, and claim any
> regulators by matching "*-supply", as Mark suggested.
>
> I've not done a generic helper in the regulator core yet, instead doing
> the regulator property handling in the simplefb code for now.
>
>
> Patch 1 adds the regulator properties to the DT binding.
>
> Patch 2 adds code to the simplefb driver to claim and enable regulators.
> Hans, I dropped your Reviewed-by tag from this patch.
>
> Patch 3 adds labels to the simplefb device nodes in sun6i-a31.dtsi
> so we can reference them in the board dts files, like in the next
> patch.
>
> Patch 4 adds a dts file for MSI's Primo 81 tablet.
>
>
> Regards
> ChenYu
>
> Chen-Yu Tsai (3):
>    dt-bindings: simplefb: Support regulator supply properties
>    simplefb: Claim and enable regulators
>    ARM: dts: sun6i: Add simplefb node labels to reference at board level
>
> Karsten Merker (1):
>    ARM: dts: sun6i: Add dts file for MSI Primo81 tablet
>
>   .../bindings/video/simple-framebuffer.txt          |  13 +-
>   arch/arm/boot/dts/Makefile                         |   1 +
>   arch/arm/boot/dts/sun6i-a31.dtsi                   |   4 +-
>   arch/arm/boot/dts/sun6i-a31s-primo81.dts           | 255 +++++++++++++++++++++
>   drivers/video/fbdev/simplefb.c                     | 120 +++++++++-
>   5 files changed, 386 insertions(+), 7 deletions(-)
>   create mode 100644 arch/arm/boot/dts/sun6i-a31s-primo81.dts
>

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

* Re: [PATCH v4 0/4] simplefb: Add regulator handling support
@ 2015-10-23 13:49   ` Hans de Goede
  0 siblings, 0 replies; 50+ messages in thread
From: Hans de Goede @ 2015-10-23 13:49 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

Patches 1/2 look good and are:

Reviewed-by: Hans de Goede <hdegoede@redhat.com>

And the approach used for the regulators in them is also:

Acked-by: Mark Brown <broonie@kernel.org>

So patches 1/2 are ready for merging.

Jean-Christophe or Tomi, can you pick up patch 1 &  2 please ?

Regards,

Hans



On 10/23/2015 05:50 AM, Chen-Yu Tsai wrote:
> Hi everyone,
>
> This is v4 of the simplefb regulator support series. This series adds
> regulator claiming and enabling support for simplefb.
>
> Changes since v4:
>    - Fixed inverted logic when testing the property name.
>    - Fixed regulator supply name string copy length off by 1.
>    - Added real world user, MSI Primo 81 dts patches.
>
> Changes since v3:
>    - Dropped extra "if" which is always true, leftover from v1.
>    - Updated commit message of patch 1
>
> Sometimes the simplefb display output path consits of external conversion
> chips and/or LCD drivers and backlights. These devices normally have
> GPIOs to turn them on and/or bring them out of reset, and regulators
> supplying power to them.
>
> While the kernel does not touch unclaimed GPIOs, the regulator core
> happily disables unused regulators. Thus we need simplefb to claim
> and enable the regulators used throughout the display pipeline.
>
> The binding supports any named regulator supplies under its device
> node. The driver will look through its properties, and claim any
> regulators by matching "*-supply", as Mark suggested.
>
> I've not done a generic helper in the regulator core yet, instead doing
> the regulator property handling in the simplefb code for now.
>
>
> Patch 1 adds the regulator properties to the DT binding.
>
> Patch 2 adds code to the simplefb driver to claim and enable regulators.
> Hans, I dropped your Reviewed-by tag from this patch.
>
> Patch 3 adds labels to the simplefb device nodes in sun6i-a31.dtsi
> so we can reference them in the board dts files, like in the next
> patch.
>
> Patch 4 adds a dts file for MSI's Primo 81 tablet.
>
>
> Regards
> ChenYu
>
> Chen-Yu Tsai (3):
>    dt-bindings: simplefb: Support regulator supply properties
>    simplefb: Claim and enable regulators
>    ARM: dts: sun6i: Add simplefb node labels to reference at board level
>
> Karsten Merker (1):
>    ARM: dts: sun6i: Add dts file for MSI Primo81 tablet
>
>   .../bindings/video/simple-framebuffer.txt          |  13 +-
>   arch/arm/boot/dts/Makefile                         |   1 +
>   arch/arm/boot/dts/sun6i-a31.dtsi                   |   4 +-
>   arch/arm/boot/dts/sun6i-a31s-primo81.dts           | 255 +++++++++++++++++++++
>   drivers/video/fbdev/simplefb.c                     | 120 +++++++++-
>   5 files changed, 386 insertions(+), 7 deletions(-)
>   create mode 100644 arch/arm/boot/dts/sun6i-a31s-primo81.dts
>

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

* [PATCH v4 0/4] simplefb: Add regulator handling support
@ 2015-10-23 13:49   ` Hans de Goede
  0 siblings, 0 replies; 50+ messages in thread
From: Hans de Goede @ 2015-10-23 13:49 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

Patches 1/2 look good and are:

Reviewed-by: Hans de Goede <hdegoede@redhat.com>

And the approach used for the regulators in them is also:

Acked-by: Mark Brown <broonie@kernel.org>

So patches 1/2 are ready for merging.

Jean-Christophe or Tomi, can you pick up patch 1 &  2 please ?

Regards,

Hans



On 10/23/2015 05:50 AM, Chen-Yu Tsai wrote:
> Hi everyone,
>
> This is v4 of the simplefb regulator support series. This series adds
> regulator claiming and enabling support for simplefb.
>
> Changes since v4:
>    - Fixed inverted logic when testing the property name.
>    - Fixed regulator supply name string copy length off by 1.
>    - Added real world user, MSI Primo 81 dts patches.
>
> Changes since v3:
>    - Dropped extra "if" which is always true, leftover from v1.
>    - Updated commit message of patch 1
>
> Sometimes the simplefb display output path consits of external conversion
> chips and/or LCD drivers and backlights. These devices normally have
> GPIOs to turn them on and/or bring them out of reset, and regulators
> supplying power to them.
>
> While the kernel does not touch unclaimed GPIOs, the regulator core
> happily disables unused regulators. Thus we need simplefb to claim
> and enable the regulators used throughout the display pipeline.
>
> The binding supports any named regulator supplies under its device
> node. The driver will look through its properties, and claim any
> regulators by matching "*-supply", as Mark suggested.
>
> I've not done a generic helper in the regulator core yet, instead doing
> the regulator property handling in the simplefb code for now.
>
>
> Patch 1 adds the regulator properties to the DT binding.
>
> Patch 2 adds code to the simplefb driver to claim and enable regulators.
> Hans, I dropped your Reviewed-by tag from this patch.
>
> Patch 3 adds labels to the simplefb device nodes in sun6i-a31.dtsi
> so we can reference them in the board dts files, like in the next
> patch.
>
> Patch 4 adds a dts file for MSI's Primo 81 tablet.
>
>
> Regards
> ChenYu
>
> Chen-Yu Tsai (3):
>    dt-bindings: simplefb: Support regulator supply properties
>    simplefb: Claim and enable regulators
>    ARM: dts: sun6i: Add simplefb node labels to reference at board level
>
> Karsten Merker (1):
>    ARM: dts: sun6i: Add dts file for MSI Primo81 tablet
>
>   .../bindings/video/simple-framebuffer.txt          |  13 +-
>   arch/arm/boot/dts/Makefile                         |   1 +
>   arch/arm/boot/dts/sun6i-a31.dtsi                   |   4 +-
>   arch/arm/boot/dts/sun6i-a31s-primo81.dts           | 255 +++++++++++++++++++++
>   drivers/video/fbdev/simplefb.c                     | 120 +++++++++-
>   5 files changed, 386 insertions(+), 7 deletions(-)
>   create mode 100644 arch/arm/boot/dts/sun6i-a31s-primo81.dts
>

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

* Re: [PATCH v4 4/4] ARM: dts: sun6i: Add dts file for MSI Primo81 tablet
  2015-10-23  3:50   ` Chen-Yu Tsai
  (?)
  (?)
@ 2015-10-23 14:53   ` Karsten Merker
  2015-10-23 15:46       ` Chen-Yu Tsai
  -1 siblings, 1 reply; 50+ messages in thread
From: Karsten Merker @ 2015-10-23 14:53 UTC (permalink / raw)
  To: Chen-Yu Tsai
  Cc: Hans de Goede, Jean-Christophe Plagniol-Villard, Tomi Valkeinen,
	Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Maxime Ripard, Karsten Merker, linux-fbdev, devicetree,
	linux-kernel, linux-arm-kernel, Mark Brown, Siarhei Siamashka

On Fri, Oct 23, 2015 at 11:50:41AM +0800, Chen-Yu Tsai wrote:

> From: Karsten Merker <merker@debian.org>
> 
> The MSI Primo81 is an A31s based tablet, with 1G RAM, 16G NAND,
> 768x1024 IPS LCD display, mono speaker, 0.3 MP front camera, 2.0 MP
> rear camera, 3500 mAh battery, gt911 touchscreen, mma8452 accelerometer
> and rtl8188etv usb wifi. Has "power", "volume+" and "volume-" buttons
> (both volume buttons are also connected to the UBOOT_SEL pin). The

Hello Chen-Yu,

the volume button function is something that I wanted to confirm
again but forgot to ask previously: Siarhei had pointed out that
only the volume+ button triggers UBOOT_SEL, but for me actually
both volume buttons work as described above.  Could you
cross-check that on your Primo81?

> external connectors are represented by MicroSD slot, MiniHDMI, MicroUSB
> OTG and 3.5mm headphone jack.
> 
> USB OTG is enabled in host only mode. AXP221 USB power supply and
> GPIO support are required for full USB OTG support.
> 
> Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
> Signed-off-by: Karsten Merker <merker@debian.org>
> Signed-off-by: Chen-Yu Tsai <wens@csie.org>
> ---
> 
> Changes since last submission (was part of Sinlinx SinA31s series)
> 
>   - Update axp22x.dtsi file name
>   - Sort regulators
>   - Drop URL in commit message
>   - Drop comment for capacitive touch panel
>   - Add simplefb regulators
>   - Drop regulator-always-on for regulators that aren't critical
>   - Fix CPU and GPU regulator supply mix-up
> 
> ---
>  arch/arm/boot/dts/Makefile               |   1 +
>  arch/arm/boot/dts/sun6i-a31s-primo81.dts | 255 +++++++++++++++++++++++++++++++
>  2 files changed, 256 insertions(+)
>  create mode 100644 arch/arm/boot/dts/sun6i-a31s-primo81.dts
> 
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index c00b72e750ab..78ade1a5e886 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -612,6 +612,7 @@ dtb-$(CONFIG_MACH_SUN6I) += \
>  	sun6i-a31-m9.dtb \
>  	sun6i-a31-mele-a1000g-quad.dtb \
>  	sun6i-a31s-cs908.dtb \
> +	sun6i-a31s-primo81.dtb \
>  	sun6i-a31s-sina31s.dtb \
>  	sun6i-a31s-sinovoip-bpi-m2.dtb \
>  	sun6i-a31s-yones-toptech-bs1078-v2.dtb
> diff --git a/arch/arm/boot/dts/sun6i-a31s-primo81.dts b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
> new file mode 100644
> index 000000000000..2d4250b1faf8
> --- /dev/null
> +++ b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
> @@ -0,0 +1,255 @@
> +/*
> + * Copyright 2014 Siarhei Siamashka <siarhei.siamashka@gmail.com>
> + * Copyright 2015 Karsten Merker <merker@debian.org>
> + * Copyright 2015 Chen-Yu Tsai <wens@csie.org>
> + *
> + * This file is dual-licensed: you can use it either under the terms
> + * of the GPL or the X11 license, at your option. Note that this dual
> + * licensing only applies to this file, and not this project as a
> + * whole.
> + *
> + *  a) This file is free software; you can redistribute it and/or
> + *     modify it under the terms of the GNU General Public License as
> + *     published by the Free Software Foundation; either version 2 of the
> + *     License, or (at your option) any later version.
> + *
> + *     This file is distributed in the hope that it will be useful,
> + *     but WITHOUT ANY WARRANTY; without even the implied warranty of
> + *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + *     GNU General Public License for more details.
> + *
> + * Or, alternatively,
> + *
> + *  b) Permission is hereby granted, free of charge, to any person
> + *     obtaining a copy of this software and associated documentation
> + *     files (the "Software"), to deal in the Software without
> + *     restriction, including without limitation the rights to use,
> + *     copy, modify, merge, publish, distribute, sublicense, and/or
> + *     sell copies of the Software, and to permit persons to whom the
> + *     Software is furnished to do so, subject to the following
> + *     conditions:
> + *
> + *     The above copyright notice and this permission notice shall be
> + *     included in all copies or substantial portions of the Software.
> + *
> + *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> + *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
> + *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
> + *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
> + *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
> + *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> + *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
> + *     OTHER DEALINGS IN THE SOFTWARE.
> + */
> +
> +/dts-v1/;
> +#include "sun6i-a31s.dtsi"
> +#include "sunxi-common-regulators.dtsi"
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/input/input.h>
> +#include <dt-bindings/pinctrl/sun4i-a10.h>
> +
> +/ {
> +	model = "MSI Primo81 tablet";
> +	compatible = "msi,primo81", "allwinner,sun6i-a31s";
> +};
> +
> +&cpu0 {
> +	cpu-supply = <&reg_dcdc3>;
> +};
> +
> +&ehci0 {
> +	/* rtl8188etv wifi is connected here */
> +	status = "okay";
> +};
> +
> +&i2c0 {
> +	/* pull-ups and device VDDIO use AXP221 DLDO3 */
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&i2c0_pins_a>;
> +	status = "failed";
> +};
> +
> +&i2c1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&i2c1_pins_a>;
> +	status = "okay";
> +
> +	ctp@5d {
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&gt911_int_primo81>;
> +		compatible = "goodix,gt911";
> +		reg = <0x5d>;
> +		interrupt-parent = <&pio>;
> +		interrupts = <0 3 IRQ_TYPE_LEVEL_HIGH>; /* PA3 */

I'd like to add a

		touchscreen-swapped-x-y = "true";

as described in
Documentation/devicetree/bindings/input/touchscreen/touchscreen.txt
here, as the display is in portrait mode while the touchscreen is
in landscape mode and needs to have the x and y axes swapped to
work in the same coordinate system as the display.

Regarding the driver side: the goodix driver in kernel 4.3
doesn't yet support this property, but patches to add support for
it are on the linux-input list and should hopefully make it into
kernel 4.4.

> +	};
> +};
> +
> +&i2c2 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&i2c2_pins_a>;
> +	status = "okay";
> +
> +	accelerometer@1c {
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&mma8452_int_primo81>;
> +		compatible = "fsl,mma8452";
> +		reg = <0x1c>;
> +		interrupt-parent = <&pio>;
> +		interrupts = <0 9 IRQ_TYPE_LEVEL_HIGH>; /* PA9 */
> +		#io-channel-cells = <1>;
> +	};
> +};
> +
> +&lradc {
> +	vref-supply = <&reg_aldo3>;
> +	status = "okay";
> +
> +	button@158 {
> +		label = "Volume Up";
> +		linux,code = <KEY_VOLUMEUP>;
> +		channel = <0>;
> +		voltage = <158730>;
> +	};
> +
> +	button@349 {
> +		label = "Volume Down";
> +		linux,code = <KEY_VOLUMEDOWN>;
> +		channel = <0>;
> +		voltage = <349206>;
> +	};
> +};
> +
> +&mmc0 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_primo81>;
> +	vmmc-supply = <&reg_dcdc1>;
> +	bus-width = <4>;
> +	cd-gpios = <&pio 0 8 GPIO_ACTIVE_HIGH>; /* PA8 */
> +	cd-inverted;
> +	status = "okay";
> +};
> +
> +&pio {
> +	gt911_int_primo81: gt911_int_pin@0 {
> +		allwinner,pins = "PA3";
> +		allwinner,function = "gpio_in";
> +		allwinner,drive = <SUN4I_PINCTRL_10_MA>;
> +		allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
> +	};
> +
> +	mma8452_int_primo81: mma8452_int_pin@0 {
> +		allwinner,pins = "PA9";
> +		allwinner,function = "gpio_in";
> +		allwinner,drive = <SUN4I_PINCTRL_10_MA>;
> +		allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
> +	};
> +
> +	mmc0_cd_pin_primo81: mmc0_cd_pin@0 {
> +		allwinner,pins = "PA8";
> +		allwinner,function = "gpio_in";
> +		allwinner,drive = <SUN4I_PINCTRL_10_MA>;
> +		allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
> +	};
> +};
> +
> +&p2wi {
> +	status = "okay";
> +
> +	axp22x: pmic@68 {
> +		compatible = "x-powers,axp221";
> +		reg = <0x68>;
> +		interrupt-parent = <&nmi_intc>;
> +		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
> +	};
> +};
> +
> +#include "axp22x.dtsi"
> +
> +&reg_aldo3 {
> +	regulator-always-on;
> +	regulator-min-microvolt = <2700000>;
> +	regulator-max-microvolt = <3300000>;
> +	regulator-name = "avcc";
> +};
> +
> +&reg_dc1sw {
> +	regulator-min-microvolt = <3000000>;
> +	regulator-max-microvolt = <3000000>;
> +	regulator-name = "vcc-lcd";
> +};
> +
> +&reg_dc5ldo {
> +	regulator-min-microvolt = <700000>;
> +	regulator-max-microvolt = <1320000>;
> +	regulator-name = "vdd-cpus"; /* This is an educated guess */
> +};
> +
> +&reg_dcdc1 {
> +	regulator-always-on;
> +	regulator-min-microvolt = <3000000>;
> +	regulator-max-microvolt = <3000000>;
> +	regulator-name = "vcc-3v0";
> +};
> +
> +&reg_dcdc2 {
> +	regulator-min-microvolt = <700000>;
> +	regulator-max-microvolt = <1320000>;
> +	regulator-name = "vdd-gpu";
> +};
> +
> +&reg_dcdc3 {
> +	regulator-always-on;
> +	regulator-min-microvolt = <700000>;
> +	regulator-max-microvolt = <1320000>;
> +	regulator-name = "vdd-cpu";
> +};
> +
> +&reg_dcdc4 {
> +	regulator-always-on;
> +	regulator-min-microvolt = <700000>;
> +	regulator-max-microvolt = <1320000>;
> +	regulator-name = "vdd-sys-dll";
> +};
> +
> +&reg_dcdc5 {
> +	regulator-always-on;
> +	regulator-min-microvolt = <1500000>;
> +	regulator-max-microvolt = <1500000>;
> +	regulator-name = "vcc-dram";
> +};
> +
> +&reg_dldo1 {
> +	regulator-min-microvolt = <3300000>;
> +	regulator-max-microvolt = <3300000>;
> +	regulator-name = "vcc-wifi";
> +};
> +
> +&reg_dldo3 {
> +	regulator-min-microvolt = <2800000>;
> +	regulator-max-microvolt = <2800000>;
> +	regulator-name = "vddio-csi";
> +};
> +
> +&reg_eldo3 {
> +	regulator-min-microvolt = <1080000>;
> +	regulator-max-microvolt = <1320000>;
> +	regulator-name = "vdd-mipi-bridge";
> +};
> +
> +&simplefb_lcd {
> +	vcc-lcd-supply = <&reg_dc1sw>;
> +	vdd-mipi-bridge-supply = <&reg_eldo3>;
> +};
> +
> +&usb_otg {
> +	/* otg support requires support for AXP221 usb-power-supply and GPIO */
> +	dr_mode = "host";
> +	status = "okay";
> +};
> +
> +&usbphy {
> +	usb1_vbus-supply = <&reg_dldo1>;
> +	status = "okay";
> +};
> -- 
> 2.6.1

Regards,
Karsten
-- 
Gem. Par. 28 Abs. 4 Bundesdatenschutzgesetz widerspreche ich der Nutzung
sowie der Weitergabe meiner personenbezogenen Daten für Zwecke der
Werbung sowie der Markt- oder Meinungsforschung.

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

* Re: [PATCH v4 4/4] ARM: dts: sun6i: Add dts file for MSI Primo81 tablet
  2015-10-23 14:53   ` Karsten Merker
  2015-10-23 15:46       ` Chen-Yu Tsai
@ 2015-10-23 15:46       ` Chen-Yu Tsai
  0 siblings, 0 replies; 50+ messages in thread
From: Chen-Yu Tsai @ 2015-10-23 15:46 UTC (permalink / raw)
  To: Karsten Merker
  Cc: Chen-Yu Tsai, Hans de Goede, Jean-Christophe Plagniol-Villard,
	Tomi Valkeinen, Rob Herring, Pawel Moll, Mark Rutland,
	Ian Campbell, Kumar Gala, Maxime Ripard, linux-fbdev, devicetree,
	linux-kernel, linux-arm-kernel, Mark Brown, Siarhei Siamashka

On Fri, Oct 23, 2015 at 10:53 PM, Karsten Merker <merker@debian.org> wrote:
> On Fri, Oct 23, 2015 at 11:50:41AM +0800, Chen-Yu Tsai wrote:
>
>> From: Karsten Merker <merker@debian.org>
>>
>> The MSI Primo81 is an A31s based tablet, with 1G RAM, 16G NAND,
>> 768x1024 IPS LCD display, mono speaker, 0.3 MP front camera, 2.0 MP
>> rear camera, 3500 mAh battery, gt911 touchscreen, mma8452 accelerometer
>> and rtl8188etv usb wifi. Has "power", "volume+" and "volume-" buttons
>> (both volume buttons are also connected to the UBOOT_SEL pin). The
>
> Hello Chen-Yu,
>
> the volume button function is something that I wanted to confirm
> again but forgot to ask previously: Siarhei had pointed out that
> only the volume+ button triggers UBOOT_SEL, but for me actually
> both volume buttons work as described above.  Could you
> cross-check that on your Primo81?

IIRC both work. I can test next week.

>
>> external connectors are represented by MicroSD slot, MiniHDMI, MicroUSB
>> OTG and 3.5mm headphone jack.
>>
>> USB OTG is enabled in host only mode. AXP221 USB power supply and
>> GPIO support are required for full USB OTG support.
>>
>> Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
>> Signed-off-by: Karsten Merker <merker@debian.org>
>> Signed-off-by: Chen-Yu Tsai <wens@csie.org>
>> ---
>>
>> Changes since last submission (was part of Sinlinx SinA31s series)
>>
>>   - Update axp22x.dtsi file name
>>   - Sort regulators
>>   - Drop URL in commit message
>>   - Drop comment for capacitive touch panel
>>   - Add simplefb regulators
>>   - Drop regulator-always-on for regulators that aren't critical
>>   - Fix CPU and GPU regulator supply mix-up
>>
>> ---
>>  arch/arm/boot/dts/Makefile               |   1 +
>>  arch/arm/boot/dts/sun6i-a31s-primo81.dts | 255 +++++++++++++++++++++++++++++++
>>  2 files changed, 256 insertions(+)
>>  create mode 100644 arch/arm/boot/dts/sun6i-a31s-primo81.dts
>>
>> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
>> index c00b72e750ab..78ade1a5e886 100644
>> --- a/arch/arm/boot/dts/Makefile
>> +++ b/arch/arm/boot/dts/Makefile
>> @@ -612,6 +612,7 @@ dtb-$(CONFIG_MACH_SUN6I) += \
>>       sun6i-a31-m9.dtb \
>>       sun6i-a31-mele-a1000g-quad.dtb \
>>       sun6i-a31s-cs908.dtb \
>> +     sun6i-a31s-primo81.dtb \
>>       sun6i-a31s-sina31s.dtb \
>>       sun6i-a31s-sinovoip-bpi-m2.dtb \
>>       sun6i-a31s-yones-toptech-bs1078-v2.dtb
>> diff --git a/arch/arm/boot/dts/sun6i-a31s-primo81.dts b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
>> new file mode 100644
>> index 000000000000..2d4250b1faf8
>> --- /dev/null
>> +++ b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
>> @@ -0,0 +1,255 @@
>> +/*
>> + * Copyright 2014 Siarhei Siamashka <siarhei.siamashka@gmail.com>
>> + * Copyright 2015 Karsten Merker <merker@debian.org>
>> + * Copyright 2015 Chen-Yu Tsai <wens@csie.org>
>> + *
>> + * This file is dual-licensed: you can use it either under the terms
>> + * of the GPL or the X11 license, at your option. Note that this dual
>> + * licensing only applies to this file, and not this project as a
>> + * whole.
>> + *
>> + *  a) This file is free software; you can redistribute it and/or
>> + *     modify it under the terms of the GNU General Public License as
>> + *     published by the Free Software Foundation; either version 2 of the
>> + *     License, or (at your option) any later version.
>> + *
>> + *     This file is distributed in the hope that it will be useful,
>> + *     but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>> + *     GNU General Public License for more details.
>> + *
>> + * Or, alternatively,
>> + *
>> + *  b) Permission is hereby granted, free of charge, to any person
>> + *     obtaining a copy of this software and associated documentation
>> + *     files (the "Software"), to deal in the Software without
>> + *     restriction, including without limitation the rights to use,
>> + *     copy, modify, merge, publish, distribute, sublicense, and/or
>> + *     sell copies of the Software, and to permit persons to whom the
>> + *     Software is furnished to do so, subject to the following
>> + *     conditions:
>> + *
>> + *     The above copyright notice and this permission notice shall be
>> + *     included in all copies or substantial portions of the Software.
>> + *
>> + *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
>> + *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
>> + *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
>> + *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
>> + *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
>> + *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
>> + *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
>> + *     OTHER DEALINGS IN THE SOFTWARE.
>> + */
>> +
>> +/dts-v1/;
>> +#include "sun6i-a31s.dtsi"
>> +#include "sunxi-common-regulators.dtsi"
>> +
>> +#include <dt-bindings/gpio/gpio.h>
>> +#include <dt-bindings/input/input.h>
>> +#include <dt-bindings/pinctrl/sun4i-a10.h>
>> +
>> +/ {
>> +     model = "MSI Primo81 tablet";
>> +     compatible = "msi,primo81", "allwinner,sun6i-a31s";
>> +};
>> +
>> +&cpu0 {
>> +     cpu-supply = <&reg_dcdc3>;
>> +};
>> +
>> +&ehci0 {
>> +     /* rtl8188etv wifi is connected here */
>> +     status = "okay";
>> +};
>> +
>> +&i2c0 {
>> +     /* pull-ups and device VDDIO use AXP221 DLDO3 */
>> +     pinctrl-names = "default";
>> +     pinctrl-0 = <&i2c0_pins_a>;
>> +     status = "failed";
>> +};
>> +
>> +&i2c1 {
>> +     pinctrl-names = "default";
>> +     pinctrl-0 = <&i2c1_pins_a>;
>> +     status = "okay";
>> +
>> +     ctp@5d {
>> +             pinctrl-names = "default";
>> +             pinctrl-0 = <&gt911_int_primo81>;
>> +             compatible = "goodix,gt911";
>> +             reg = <0x5d>;
>> +             interrupt-parent = <&pio>;
>> +             interrupts = <0 3 IRQ_TYPE_LEVEL_HIGH>; /* PA3 */
>
> I'd like to add a
>
>                 touchscreen-swapped-x-y = "true";
>
> as described in
> Documentation/devicetree/bindings/input/touchscreen/touchscreen.txt
> here, as the display is in portrait mode while the touchscreen is
> in landscape mode and needs to have the x and y axes swapped to
> work in the same coordinate system as the display.
>
> Regarding the driver side: the goodix driver in kernel 4.3
> doesn't yet support this property, but patches to add support for
> it are on the linux-input list and should hopefully make it into
> kernel 4.4.

The DTS is already in Maxime's tree, and in sunxi-next. Feel free to
send a follow-up patch adding them. I was waiting for those patches
to be merged.

Regards
ChenYu

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

* Re: [PATCH v4 4/4] ARM: dts: sun6i: Add dts file for MSI Primo81 tablet
@ 2015-10-23 15:46       ` Chen-Yu Tsai
  0 siblings, 0 replies; 50+ messages in thread
From: Chen-Yu Tsai @ 2015-10-23 15:46 UTC (permalink / raw)
  To: linux-arm-kernel

On Fri, Oct 23, 2015 at 10:53 PM, Karsten Merker <merker@debian.org> wrote:
> On Fri, Oct 23, 2015 at 11:50:41AM +0800, Chen-Yu Tsai wrote:
>
>> From: Karsten Merker <merker@debian.org>
>>
>> The MSI Primo81 is an A31s based tablet, with 1G RAM, 16G NAND,
>> 768x1024 IPS LCD display, mono speaker, 0.3 MP front camera, 2.0 MP
>> rear camera, 3500 mAh battery, gt911 touchscreen, mma8452 accelerometer
>> and rtl8188etv usb wifi. Has "power", "volume+" and "volume-" buttons
>> (both volume buttons are also connected to the UBOOT_SEL pin). The
>
> Hello Chen-Yu,
>
> the volume button function is something that I wanted to confirm
> again but forgot to ask previously: Siarhei had pointed out that
> only the volume+ button triggers UBOOT_SEL, but for me actually
> both volume buttons work as described above.  Could you
> cross-check that on your Primo81?

IIRC both work. I can test next week.

>
>> external connectors are represented by MicroSD slot, MiniHDMI, MicroUSB
>> OTG and 3.5mm headphone jack.
>>
>> USB OTG is enabled in host only mode. AXP221 USB power supply and
>> GPIO support are required for full USB OTG support.
>>
>> Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
>> Signed-off-by: Karsten Merker <merker@debian.org>
>> Signed-off-by: Chen-Yu Tsai <wens@csie.org>
>> ---
>>
>> Changes since last submission (was part of Sinlinx SinA31s series)
>>
>>   - Update axp22x.dtsi file name
>>   - Sort regulators
>>   - Drop URL in commit message
>>   - Drop comment for capacitive touch panel
>>   - Add simplefb regulators
>>   - Drop regulator-always-on for regulators that aren't critical
>>   - Fix CPU and GPU regulator supply mix-up
>>
>> ---
>>  arch/arm/boot/dts/Makefile               |   1 +
>>  arch/arm/boot/dts/sun6i-a31s-primo81.dts | 255 +++++++++++++++++++++++++++++++
>>  2 files changed, 256 insertions(+)
>>  create mode 100644 arch/arm/boot/dts/sun6i-a31s-primo81.dts
>>
>> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
>> index c00b72e750ab..78ade1a5e886 100644
>> --- a/arch/arm/boot/dts/Makefile
>> +++ b/arch/arm/boot/dts/Makefile
>> @@ -612,6 +612,7 @@ dtb-$(CONFIG_MACH_SUN6I) += \
>>       sun6i-a31-m9.dtb \
>>       sun6i-a31-mele-a1000g-quad.dtb \
>>       sun6i-a31s-cs908.dtb \
>> +     sun6i-a31s-primo81.dtb \
>>       sun6i-a31s-sina31s.dtb \
>>       sun6i-a31s-sinovoip-bpi-m2.dtb \
>>       sun6i-a31s-yones-toptech-bs1078-v2.dtb
>> diff --git a/arch/arm/boot/dts/sun6i-a31s-primo81.dts b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
>> new file mode 100644
>> index 000000000000..2d4250b1faf8
>> --- /dev/null
>> +++ b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
>> @@ -0,0 +1,255 @@
>> +/*
>> + * Copyright 2014 Siarhei Siamashka <siarhei.siamashka@gmail.com>
>> + * Copyright 2015 Karsten Merker <merker@debian.org>
>> + * Copyright 2015 Chen-Yu Tsai <wens@csie.org>
>> + *
>> + * This file is dual-licensed: you can use it either under the terms
>> + * of the GPL or the X11 license, at your option. Note that this dual
>> + * licensing only applies to this file, and not this project as a
>> + * whole.
>> + *
>> + *  a) This file is free software; you can redistribute it and/or
>> + *     modify it under the terms of the GNU General Public License as
>> + *     published by the Free Software Foundation; either version 2 of the
>> + *     License, or (at your option) any later version.
>> + *
>> + *     This file is distributed in the hope that it will be useful,
>> + *     but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>> + *     GNU General Public License for more details.
>> + *
>> + * Or, alternatively,
>> + *
>> + *  b) Permission is hereby granted, free of charge, to any person
>> + *     obtaining a copy of this software and associated documentation
>> + *     files (the "Software"), to deal in the Software without
>> + *     restriction, including without limitation the rights to use,
>> + *     copy, modify, merge, publish, distribute, sublicense, and/or
>> + *     sell copies of the Software, and to permit persons to whom the
>> + *     Software is furnished to do so, subject to the following
>> + *     conditions:
>> + *
>> + *     The above copyright notice and this permission notice shall be
>> + *     included in all copies or substantial portions of the Software.
>> + *
>> + *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
>> + *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
>> + *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
>> + *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
>> + *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
>> + *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
>> + *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
>> + *     OTHER DEALINGS IN THE SOFTWARE.
>> + */
>> +
>> +/dts-v1/;
>> +#include "sun6i-a31s.dtsi"
>> +#include "sunxi-common-regulators.dtsi"
>> +
>> +#include <dt-bindings/gpio/gpio.h>
>> +#include <dt-bindings/input/input.h>
>> +#include <dt-bindings/pinctrl/sun4i-a10.h>
>> +
>> +/ {
>> +     model = "MSI Primo81 tablet";
>> +     compatible = "msi,primo81", "allwinner,sun6i-a31s";
>> +};
>> +
>> +&cpu0 {
>> +     cpu-supply = <&reg_dcdc3>;
>> +};
>> +
>> +&ehci0 {
>> +     /* rtl8188etv wifi is connected here */
>> +     status = "okay";
>> +};
>> +
>> +&i2c0 {
>> +     /* pull-ups and device VDDIO use AXP221 DLDO3 */
>> +     pinctrl-names = "default";
>> +     pinctrl-0 = <&i2c0_pins_a>;
>> +     status = "failed";
>> +};
>> +
>> +&i2c1 {
>> +     pinctrl-names = "default";
>> +     pinctrl-0 = <&i2c1_pins_a>;
>> +     status = "okay";
>> +
>> +     ctp@5d {
>> +             pinctrl-names = "default";
>> +             pinctrl-0 = <&gt911_int_primo81>;
>> +             compatible = "goodix,gt911";
>> +             reg = <0x5d>;
>> +             interrupt-parent = <&pio>;
>> +             interrupts = <0 3 IRQ_TYPE_LEVEL_HIGH>; /* PA3 */
>
> I'd like to add a
>
>                 touchscreen-swapped-x-y = "true";
>
> as described in
> Documentation/devicetree/bindings/input/touchscreen/touchscreen.txt
> here, as the display is in portrait mode while the touchscreen is
> in landscape mode and needs to have the x and y axes swapped to
> work in the same coordinate system as the display.
>
> Regarding the driver side: the goodix driver in kernel 4.3
> doesn't yet support this property, but patches to add support for
> it are on the linux-input list and should hopefully make it into
> kernel 4.4.

The DTS is already in Maxime's tree, and in sunxi-next. Feel free to
send a follow-up patch adding them. I was waiting for those patches
to be merged.

Regards
ChenYu

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

* [PATCH v4 4/4] ARM: dts: sun6i: Add dts file for MSI Primo81 tablet
@ 2015-10-23 15:46       ` Chen-Yu Tsai
  0 siblings, 0 replies; 50+ messages in thread
From: Chen-Yu Tsai @ 2015-10-23 15:46 UTC (permalink / raw)
  To: linux-arm-kernel

On Fri, Oct 23, 2015 at 10:53 PM, Karsten Merker <merker@debian.org> wrote:
> On Fri, Oct 23, 2015 at 11:50:41AM +0800, Chen-Yu Tsai wrote:
>
>> From: Karsten Merker <merker@debian.org>
>>
>> The MSI Primo81 is an A31s based tablet, with 1G RAM, 16G NAND,
>> 768x1024 IPS LCD display, mono speaker, 0.3 MP front camera, 2.0 MP
>> rear camera, 3500 mAh battery, gt911 touchscreen, mma8452 accelerometer
>> and rtl8188etv usb wifi. Has "power", "volume+" and "volume-" buttons
>> (both volume buttons are also connected to the UBOOT_SEL pin). The
>
> Hello Chen-Yu,
>
> the volume button function is something that I wanted to confirm
> again but forgot to ask previously: Siarhei had pointed out that
> only the volume+ button triggers UBOOT_SEL, but for me actually
> both volume buttons work as described above.  Could you
> cross-check that on your Primo81?

IIRC both work. I can test next week.

>
>> external connectors are represented by MicroSD slot, MiniHDMI, MicroUSB
>> OTG and 3.5mm headphone jack.
>>
>> USB OTG is enabled in host only mode. AXP221 USB power supply and
>> GPIO support are required for full USB OTG support.
>>
>> Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
>> Signed-off-by: Karsten Merker <merker@debian.org>
>> Signed-off-by: Chen-Yu Tsai <wens@csie.org>
>> ---
>>
>> Changes since last submission (was part of Sinlinx SinA31s series)
>>
>>   - Update axp22x.dtsi file name
>>   - Sort regulators
>>   - Drop URL in commit message
>>   - Drop comment for capacitive touch panel
>>   - Add simplefb regulators
>>   - Drop regulator-always-on for regulators that aren't critical
>>   - Fix CPU and GPU regulator supply mix-up
>>
>> ---
>>  arch/arm/boot/dts/Makefile               |   1 +
>>  arch/arm/boot/dts/sun6i-a31s-primo81.dts | 255 +++++++++++++++++++++++++++++++
>>  2 files changed, 256 insertions(+)
>>  create mode 100644 arch/arm/boot/dts/sun6i-a31s-primo81.dts
>>
>> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
>> index c00b72e750ab..78ade1a5e886 100644
>> --- a/arch/arm/boot/dts/Makefile
>> +++ b/arch/arm/boot/dts/Makefile
>> @@ -612,6 +612,7 @@ dtb-$(CONFIG_MACH_SUN6I) += \
>>       sun6i-a31-m9.dtb \
>>       sun6i-a31-mele-a1000g-quad.dtb \
>>       sun6i-a31s-cs908.dtb \
>> +     sun6i-a31s-primo81.dtb \
>>       sun6i-a31s-sina31s.dtb \
>>       sun6i-a31s-sinovoip-bpi-m2.dtb \
>>       sun6i-a31s-yones-toptech-bs1078-v2.dtb
>> diff --git a/arch/arm/boot/dts/sun6i-a31s-primo81.dts b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
>> new file mode 100644
>> index 000000000000..2d4250b1faf8
>> --- /dev/null
>> +++ b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
>> @@ -0,0 +1,255 @@
>> +/*
>> + * Copyright 2014 Siarhei Siamashka <siarhei.siamashka@gmail.com>
>> + * Copyright 2015 Karsten Merker <merker@debian.org>
>> + * Copyright 2015 Chen-Yu Tsai <wens@csie.org>
>> + *
>> + * This file is dual-licensed: you can use it either under the terms
>> + * of the GPL or the X11 license, at your option. Note that this dual
>> + * licensing only applies to this file, and not this project as a
>> + * whole.
>> + *
>> + *  a) This file is free software; you can redistribute it and/or
>> + *     modify it under the terms of the GNU General Public License as
>> + *     published by the Free Software Foundation; either version 2 of the
>> + *     License, or (at your option) any later version.
>> + *
>> + *     This file is distributed in the hope that it will be useful,
>> + *     but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>> + *     GNU General Public License for more details.
>> + *
>> + * Or, alternatively,
>> + *
>> + *  b) Permission is hereby granted, free of charge, to any person
>> + *     obtaining a copy of this software and associated documentation
>> + *     files (the "Software"), to deal in the Software without
>> + *     restriction, including without limitation the rights to use,
>> + *     copy, modify, merge, publish, distribute, sublicense, and/or
>> + *     sell copies of the Software, and to permit persons to whom the
>> + *     Software is furnished to do so, subject to the following
>> + *     conditions:
>> + *
>> + *     The above copyright notice and this permission notice shall be
>> + *     included in all copies or substantial portions of the Software.
>> + *
>> + *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
>> + *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
>> + *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
>> + *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
>> + *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
>> + *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
>> + *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
>> + *     OTHER DEALINGS IN THE SOFTWARE.
>> + */
>> +
>> +/dts-v1/;
>> +#include "sun6i-a31s.dtsi"
>> +#include "sunxi-common-regulators.dtsi"
>> +
>> +#include <dt-bindings/gpio/gpio.h>
>> +#include <dt-bindings/input/input.h>
>> +#include <dt-bindings/pinctrl/sun4i-a10.h>
>> +
>> +/ {
>> +     model = "MSI Primo81 tablet";
>> +     compatible = "msi,primo81", "allwinner,sun6i-a31s";
>> +};
>> +
>> +&cpu0 {
>> +     cpu-supply = <&reg_dcdc3>;
>> +};
>> +
>> +&ehci0 {
>> +     /* rtl8188etv wifi is connected here */
>> +     status = "okay";
>> +};
>> +
>> +&i2c0 {
>> +     /* pull-ups and device VDDIO use AXP221 DLDO3 */
>> +     pinctrl-names = "default";
>> +     pinctrl-0 = <&i2c0_pins_a>;
>> +     status = "failed";
>> +};
>> +
>> +&i2c1 {
>> +     pinctrl-names = "default";
>> +     pinctrl-0 = <&i2c1_pins_a>;
>> +     status = "okay";
>> +
>> +     ctp at 5d {
>> +             pinctrl-names = "default";
>> +             pinctrl-0 = <&gt911_int_primo81>;
>> +             compatible = "goodix,gt911";
>> +             reg = <0x5d>;
>> +             interrupt-parent = <&pio>;
>> +             interrupts = <0 3 IRQ_TYPE_LEVEL_HIGH>; /* PA3 */
>
> I'd like to add a
>
>                 touchscreen-swapped-x-y = "true";
>
> as described in
> Documentation/devicetree/bindings/input/touchscreen/touchscreen.txt
> here, as the display is in portrait mode while the touchscreen is
> in landscape mode and needs to have the x and y axes swapped to
> work in the same coordinate system as the display.
>
> Regarding the driver side: the goodix driver in kernel 4.3
> doesn't yet support this property, but patches to add support for
> it are on the linux-input list and should hopefully make it into
> kernel 4.4.

The DTS is already in Maxime's tree, and in sunxi-next. Feel free to
send a follow-up patch adding them. I was waiting for those patches
to be merged.

Regards
ChenYu

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

* Re: [PATCH v4 4/4] ARM: dts: sun6i: Add dts file for MSI Primo81 tablet
  2015-10-23 15:46       ` Chen-Yu Tsai
  (?)
  (?)
@ 2015-10-23 15:56         ` Chen-Yu Tsai
  -1 siblings, 0 replies; 50+ messages in thread
From: Chen-Yu Tsai @ 2015-10-23 15:56 UTC (permalink / raw)
  To: Karsten Merker
  Cc: Hans de Goede, Jean-Christophe Plagniol-Villard, Tomi Valkeinen,
	Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Maxime Ripard, linux-fbdev, devicetree, linux-kernel,
	linux-arm-kernel, Mark Brown, Siarhei Siamashka, Chen-Yu Tsai

On Fri, Oct 23, 2015 at 11:46 PM, Chen-Yu Tsai <wens@csie.org> wrote:
> On Fri, Oct 23, 2015 at 10:53 PM, Karsten Merker <merker@debian.org> wrote:
>> On Fri, Oct 23, 2015 at 11:50:41AM +0800, Chen-Yu Tsai wrote:
>>
>>> From: Karsten Merker <merker@debian.org>
>>>
>>> The MSI Primo81 is an A31s based tablet, with 1G RAM, 16G NAND,
>>> 768x1024 IPS LCD display, mono speaker, 0.3 MP front camera, 2.0 MP
>>> rear camera, 3500 mAh battery, gt911 touchscreen, mma8452 accelerometer
>>> and rtl8188etv usb wifi. Has "power", "volume+" and "volume-" buttons
>>> (both volume buttons are also connected to the UBOOT_SEL pin). The
>>
>> Hello Chen-Yu,
>>
>> the volume button function is something that I wanted to confirm
>> again but forgot to ask previously: Siarhei had pointed out that
>> only the volume+ button triggers UBOOT_SEL, but for me actually
>> both volume buttons work as described above.  Could you
>> cross-check that on your Primo81?
>
> IIRC both work. I can test next week.
>
>>
>>> external connectors are represented by MicroSD slot, MiniHDMI, MicroUSB
>>> OTG and 3.5mm headphone jack.
>>>
>>> USB OTG is enabled in host only mode. AXP221 USB power supply and
>>> GPIO support are required for full USB OTG support.
>>>
>>> Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
>>> Signed-off-by: Karsten Merker <merker@debian.org>
>>> Signed-off-by: Chen-Yu Tsai <wens@csie.org>
>>> ---
>>>
>>> Changes since last submission (was part of Sinlinx SinA31s series)
>>>
>>>   - Update axp22x.dtsi file name
>>>   - Sort regulators
>>>   - Drop URL in commit message
>>>   - Drop comment for capacitive touch panel
>>>   - Add simplefb regulators
>>>   - Drop regulator-always-on for regulators that aren't critical
>>>   - Fix CPU and GPU regulator supply mix-up
>>>
>>> ---
>>>  arch/arm/boot/dts/Makefile               |   1 +
>>>  arch/arm/boot/dts/sun6i-a31s-primo81.dts | 255 +++++++++++++++++++++++++++++++
>>>  2 files changed, 256 insertions(+)
>>>  create mode 100644 arch/arm/boot/dts/sun6i-a31s-primo81.dts
>>>
>>> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
>>> index c00b72e750ab..78ade1a5e886 100644
>>> --- a/arch/arm/boot/dts/Makefile
>>> +++ b/arch/arm/boot/dts/Makefile
>>> @@ -612,6 +612,7 @@ dtb-$(CONFIG_MACH_SUN6I) += \
>>>       sun6i-a31-m9.dtb \
>>>       sun6i-a31-mele-a1000g-quad.dtb \
>>>       sun6i-a31s-cs908.dtb \
>>> +     sun6i-a31s-primo81.dtb \
>>>       sun6i-a31s-sina31s.dtb \
>>>       sun6i-a31s-sinovoip-bpi-m2.dtb \
>>>       sun6i-a31s-yones-toptech-bs1078-v2.dtb
>>> diff --git a/arch/arm/boot/dts/sun6i-a31s-primo81.dts b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
>>> new file mode 100644
>>> index 000000000000..2d4250b1faf8
>>> --- /dev/null
>>> +++ b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
>>> @@ -0,0 +1,255 @@
>>> +/*
>>> + * Copyright 2014 Siarhei Siamashka <siarhei.siamashka@gmail.com>
>>> + * Copyright 2015 Karsten Merker <merker@debian.org>
>>> + * Copyright 2015 Chen-Yu Tsai <wens@csie.org>
>>> + *
>>> + * This file is dual-licensed: you can use it either under the terms
>>> + * of the GPL or the X11 license, at your option. Note that this dual
>>> + * licensing only applies to this file, and not this project as a
>>> + * whole.
>>> + *
>>> + *  a) This file is free software; you can redistribute it and/or
>>> + *     modify it under the terms of the GNU General Public License as
>>> + *     published by the Free Software Foundation; either version 2 of the
>>> + *     License, or (at your option) any later version.
>>> + *
>>> + *     This file is distributed in the hope that it will be useful,
>>> + *     but WITHOUT ANY WARRANTY; without even the implied warranty of
>>> + *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>>> + *     GNU General Public License for more details.
>>> + *
>>> + * Or, alternatively,
>>> + *
>>> + *  b) Permission is hereby granted, free of charge, to any person
>>> + *     obtaining a copy of this software and associated documentation
>>> + *     files (the "Software"), to deal in the Software without
>>> + *     restriction, including without limitation the rights to use,
>>> + *     copy, modify, merge, publish, distribute, sublicense, and/or
>>> + *     sell copies of the Software, and to permit persons to whom the
>>> + *     Software is furnished to do so, subject to the following
>>> + *     conditions:
>>> + *
>>> + *     The above copyright notice and this permission notice shall be
>>> + *     included in all copies or substantial portions of the Software.
>>> + *
>>> + *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
>>> + *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
>>> + *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
>>> + *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
>>> + *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
>>> + *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
>>> + *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
>>> + *     OTHER DEALINGS IN THE SOFTWARE.
>>> + */
>>> +
>>> +/dts-v1/;
>>> +#include "sun6i-a31s.dtsi"
>>> +#include "sunxi-common-regulators.dtsi"
>>> +
>>> +#include <dt-bindings/gpio/gpio.h>
>>> +#include <dt-bindings/input/input.h>
>>> +#include <dt-bindings/pinctrl/sun4i-a10.h>
>>> +
>>> +/ {
>>> +     model = "MSI Primo81 tablet";
>>> +     compatible = "msi,primo81", "allwinner,sun6i-a31s";
>>> +};
>>> +
>>> +&cpu0 {
>>> +     cpu-supply = <&reg_dcdc3>;
>>> +};
>>> +
>>> +&ehci0 {
>>> +     /* rtl8188etv wifi is connected here */
>>> +     status = "okay";
>>> +};
>>> +
>>> +&i2c0 {
>>> +     /* pull-ups and device VDDIO use AXP221 DLDO3 */
>>> +     pinctrl-names = "default";
>>> +     pinctrl-0 = <&i2c0_pins_a>;
>>> +     status = "failed";
>>> +};
>>> +
>>> +&i2c1 {
>>> +     pinctrl-names = "default";
>>> +     pinctrl-0 = <&i2c1_pins_a>;
>>> +     status = "okay";
>>> +
>>> +     ctp@5d {
>>> +             pinctrl-names = "default";
>>> +             pinctrl-0 = <&gt911_int_primo81>;
>>> +             compatible = "goodix,gt911";
>>> +             reg = <0x5d>;
>>> +             interrupt-parent = <&pio>;
>>> +             interrupts = <0 3 IRQ_TYPE_LEVEL_HIGH>; /* PA3 */
>>
>> I'd like to add a
>>
>>                 touchscreen-swapped-x-y = "true";

You don't need the '="true"' part. Boolean properties mean true
if they exist, and false if they aren't.

>>
>> as described in
>> Documentation/devicetree/bindings/input/touchscreen/touchscreen.txt
>> here, as the display is in portrait mode while the touchscreen is
>> in landscape mode and needs to have the x and y axes swapped to
>> work in the same coordinate system as the display.
>>
>> Regarding the driver side: the goodix driver in kernel 4.3
>> doesn't yet support this property, but patches to add support for
>> it are on the linux-input list and should hopefully make it into
>> kernel 4.4.
>
> The DTS is already in Maxime's tree, and in sunxi-next. Feel free to
> send a follow-up patch adding them. I was waiting for those patches
> to be merged.

Sorry, spoke too soon. Maxime hasn't pushed it out yet. Could you send
a patch adding touchscreen-swapped-x-y for Maxime to squash in?

My tablet is at my office. I won't be able to test it over the weekend.

Thanks
ChenYu

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

* Re: [PATCH v4 4/4] ARM: dts: sun6i: Add dts file for MSI Primo81 tablet
@ 2015-10-23 15:56         ` Chen-Yu Tsai
  0 siblings, 0 replies; 50+ messages in thread
From: Chen-Yu Tsai @ 2015-10-23 15:56 UTC (permalink / raw)
  To: Karsten Merker
  Cc: Hans de Goede, Jean-Christophe Plagniol-Villard, Tomi Valkeinen,
	Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Maxime Ripard, linux-fbdev-u79uwXL29TY76Z2rM5mHXA, devicetree,
	linux-kernel, linux-arm-kernel, Mark Brown, Siarhei Siamashka,
	Chen-Yu Tsai

On Fri, Oct 23, 2015 at 11:46 PM, Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org> wrote:
> On Fri, Oct 23, 2015 at 10:53 PM, Karsten Merker <merker-8fiUuRrzOP0dnm+yROfE0A@public.gmane.org> wrote:
>> On Fri, Oct 23, 2015 at 11:50:41AM +0800, Chen-Yu Tsai wrote:
>>
>>> From: Karsten Merker <merker-8fiUuRrzOP0dnm+yROfE0A@public.gmane.org>
>>>
>>> The MSI Primo81 is an A31s based tablet, with 1G RAM, 16G NAND,
>>> 768x1024 IPS LCD display, mono speaker, 0.3 MP front camera, 2.0 MP
>>> rear camera, 3500 mAh battery, gt911 touchscreen, mma8452 accelerometer
>>> and rtl8188etv usb wifi. Has "power", "volume+" and "volume-" buttons
>>> (both volume buttons are also connected to the UBOOT_SEL pin). The
>>
>> Hello Chen-Yu,
>>
>> the volume button function is something that I wanted to confirm
>> again but forgot to ask previously: Siarhei had pointed out that
>> only the volume+ button triggers UBOOT_SEL, but for me actually
>> both volume buttons work as described above.  Could you
>> cross-check that on your Primo81?
>
> IIRC both work. I can test next week.
>
>>
>>> external connectors are represented by MicroSD slot, MiniHDMI, MicroUSB
>>> OTG and 3.5mm headphone jack.
>>>
>>> USB OTG is enabled in host only mode. AXP221 USB power supply and
>>> GPIO support are required for full USB OTG support.
>>>
>>> Signed-off-by: Siarhei Siamashka <siarhei.siamashka-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>>> Signed-off-by: Karsten Merker <merker-8fiUuRrzOP0dnm+yROfE0A@public.gmane.org>
>>> Signed-off-by: Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>
>>> ---
>>>
>>> Changes since last submission (was part of Sinlinx SinA31s series)
>>>
>>>   - Update axp22x.dtsi file name
>>>   - Sort regulators
>>>   - Drop URL in commit message
>>>   - Drop comment for capacitive touch panel
>>>   - Add simplefb regulators
>>>   - Drop regulator-always-on for regulators that aren't critical
>>>   - Fix CPU and GPU regulator supply mix-up
>>>
>>> ---
>>>  arch/arm/boot/dts/Makefile               |   1 +
>>>  arch/arm/boot/dts/sun6i-a31s-primo81.dts | 255 +++++++++++++++++++++++++++++++
>>>  2 files changed, 256 insertions(+)
>>>  create mode 100644 arch/arm/boot/dts/sun6i-a31s-primo81.dts
>>>
>>> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
>>> index c00b72e750ab..78ade1a5e886 100644
>>> --- a/arch/arm/boot/dts/Makefile
>>> +++ b/arch/arm/boot/dts/Makefile
>>> @@ -612,6 +612,7 @@ dtb-$(CONFIG_MACH_SUN6I) += \
>>>       sun6i-a31-m9.dtb \
>>>       sun6i-a31-mele-a1000g-quad.dtb \
>>>       sun6i-a31s-cs908.dtb \
>>> +     sun6i-a31s-primo81.dtb \
>>>       sun6i-a31s-sina31s.dtb \
>>>       sun6i-a31s-sinovoip-bpi-m2.dtb \
>>>       sun6i-a31s-yones-toptech-bs1078-v2.dtb
>>> diff --git a/arch/arm/boot/dts/sun6i-a31s-primo81.dts b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
>>> new file mode 100644
>>> index 000000000000..2d4250b1faf8
>>> --- /dev/null
>>> +++ b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
>>> @@ -0,0 +1,255 @@
>>> +/*
>>> + * Copyright 2014 Siarhei Siamashka <siarhei.siamashka-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>>> + * Copyright 2015 Karsten Merker <merker-8fiUuRrzOP0dnm+yROfE0A@public.gmane.org>
>>> + * Copyright 2015 Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>
>>> + *
>>> + * This file is dual-licensed: you can use it either under the terms
>>> + * of the GPL or the X11 license, at your option. Note that this dual
>>> + * licensing only applies to this file, and not this project as a
>>> + * whole.
>>> + *
>>> + *  a) This file is free software; you can redistribute it and/or
>>> + *     modify it under the terms of the GNU General Public License as
>>> + *     published by the Free Software Foundation; either version 2 of the
>>> + *     License, or (at your option) any later version.
>>> + *
>>> + *     This file is distributed in the hope that it will be useful,
>>> + *     but WITHOUT ANY WARRANTY; without even the implied warranty of
>>> + *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>>> + *     GNU General Public License for more details.
>>> + *
>>> + * Or, alternatively,
>>> + *
>>> + *  b) Permission is hereby granted, free of charge, to any person
>>> + *     obtaining a copy of this software and associated documentation
>>> + *     files (the "Software"), to deal in the Software without
>>> + *     restriction, including without limitation the rights to use,
>>> + *     copy, modify, merge, publish, distribute, sublicense, and/or
>>> + *     sell copies of the Software, and to permit persons to whom the
>>> + *     Software is furnished to do so, subject to the following
>>> + *     conditions:
>>> + *
>>> + *     The above copyright notice and this permission notice shall be
>>> + *     included in all copies or substantial portions of the Software.
>>> + *
>>> + *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
>>> + *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
>>> + *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
>>> + *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
>>> + *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
>>> + *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
>>> + *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
>>> + *     OTHER DEALINGS IN THE SOFTWARE.
>>> + */
>>> +
>>> +/dts-v1/;
>>> +#include "sun6i-a31s.dtsi"
>>> +#include "sunxi-common-regulators.dtsi"
>>> +
>>> +#include <dt-bindings/gpio/gpio.h>
>>> +#include <dt-bindings/input/input.h>
>>> +#include <dt-bindings/pinctrl/sun4i-a10.h>
>>> +
>>> +/ {
>>> +     model = "MSI Primo81 tablet";
>>> +     compatible = "msi,primo81", "allwinner,sun6i-a31s";
>>> +};
>>> +
>>> +&cpu0 {
>>> +     cpu-supply = <&reg_dcdc3>;
>>> +};
>>> +
>>> +&ehci0 {
>>> +     /* rtl8188etv wifi is connected here */
>>> +     status = "okay";
>>> +};
>>> +
>>> +&i2c0 {
>>> +     /* pull-ups and device VDDIO use AXP221 DLDO3 */
>>> +     pinctrl-names = "default";
>>> +     pinctrl-0 = <&i2c0_pins_a>;
>>> +     status = "failed";
>>> +};
>>> +
>>> +&i2c1 {
>>> +     pinctrl-names = "default";
>>> +     pinctrl-0 = <&i2c1_pins_a>;
>>> +     status = "okay";
>>> +
>>> +     ctp@5d {
>>> +             pinctrl-names = "default";
>>> +             pinctrl-0 = <&gt911_int_primo81>;
>>> +             compatible = "goodix,gt911";
>>> +             reg = <0x5d>;
>>> +             interrupt-parent = <&pio>;
>>> +             interrupts = <0 3 IRQ_TYPE_LEVEL_HIGH>; /* PA3 */
>>
>> I'd like to add a
>>
>>                 touchscreen-swapped-x-y = "true";

You don't need the '="true"' part. Boolean properties mean true
if they exist, and false if they aren't.

>>
>> as described in
>> Documentation/devicetree/bindings/input/touchscreen/touchscreen.txt
>> here, as the display is in portrait mode while the touchscreen is
>> in landscape mode and needs to have the x and y axes swapped to
>> work in the same coordinate system as the display.
>>
>> Regarding the driver side: the goodix driver in kernel 4.3
>> doesn't yet support this property, but patches to add support for
>> it are on the linux-input list and should hopefully make it into
>> kernel 4.4.
>
> The DTS is already in Maxime's tree, and in sunxi-next. Feel free to
> send a follow-up patch adding them. I was waiting for those patches
> to be merged.

Sorry, spoke too soon. Maxime hasn't pushed it out yet. Could you send
a patch adding touchscreen-swapped-x-y for Maxime to squash in?

My tablet is at my office. I won't be able to test it over the weekend.

Thanks
ChenYu
--
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] 50+ messages in thread

* Re: [PATCH v4 4/4] ARM: dts: sun6i: Add dts file for MSI Primo81 tablet
@ 2015-10-23 15:56         ` Chen-Yu Tsai
  0 siblings, 0 replies; 50+ messages in thread
From: Chen-Yu Tsai @ 2015-10-23 15:56 UTC (permalink / raw)
  To: linux-arm-kernel

On Fri, Oct 23, 2015 at 11:46 PM, Chen-Yu Tsai <wens@csie.org> wrote:
> On Fri, Oct 23, 2015 at 10:53 PM, Karsten Merker <merker@debian.org> wrote:
>> On Fri, Oct 23, 2015 at 11:50:41AM +0800, Chen-Yu Tsai wrote:
>>
>>> From: Karsten Merker <merker@debian.org>
>>>
>>> The MSI Primo81 is an A31s based tablet, with 1G RAM, 16G NAND,
>>> 768x1024 IPS LCD display, mono speaker, 0.3 MP front camera, 2.0 MP
>>> rear camera, 3500 mAh battery, gt911 touchscreen, mma8452 accelerometer
>>> and rtl8188etv usb wifi. Has "power", "volume+" and "volume-" buttons
>>> (both volume buttons are also connected to the UBOOT_SEL pin). The
>>
>> Hello Chen-Yu,
>>
>> the volume button function is something that I wanted to confirm
>> again but forgot to ask previously: Siarhei had pointed out that
>> only the volume+ button triggers UBOOT_SEL, but for me actually
>> both volume buttons work as described above.  Could you
>> cross-check that on your Primo81?
>
> IIRC both work. I can test next week.
>
>>
>>> external connectors are represented by MicroSD slot, MiniHDMI, MicroUSB
>>> OTG and 3.5mm headphone jack.
>>>
>>> USB OTG is enabled in host only mode. AXP221 USB power supply and
>>> GPIO support are required for full USB OTG support.
>>>
>>> Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
>>> Signed-off-by: Karsten Merker <merker@debian.org>
>>> Signed-off-by: Chen-Yu Tsai <wens@csie.org>
>>> ---
>>>
>>> Changes since last submission (was part of Sinlinx SinA31s series)
>>>
>>>   - Update axp22x.dtsi file name
>>>   - Sort regulators
>>>   - Drop URL in commit message
>>>   - Drop comment for capacitive touch panel
>>>   - Add simplefb regulators
>>>   - Drop regulator-always-on for regulators that aren't critical
>>>   - Fix CPU and GPU regulator supply mix-up
>>>
>>> ---
>>>  arch/arm/boot/dts/Makefile               |   1 +
>>>  arch/arm/boot/dts/sun6i-a31s-primo81.dts | 255 +++++++++++++++++++++++++++++++
>>>  2 files changed, 256 insertions(+)
>>>  create mode 100644 arch/arm/boot/dts/sun6i-a31s-primo81.dts
>>>
>>> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
>>> index c00b72e750ab..78ade1a5e886 100644
>>> --- a/arch/arm/boot/dts/Makefile
>>> +++ b/arch/arm/boot/dts/Makefile
>>> @@ -612,6 +612,7 @@ dtb-$(CONFIG_MACH_SUN6I) += \
>>>       sun6i-a31-m9.dtb \
>>>       sun6i-a31-mele-a1000g-quad.dtb \
>>>       sun6i-a31s-cs908.dtb \
>>> +     sun6i-a31s-primo81.dtb \
>>>       sun6i-a31s-sina31s.dtb \
>>>       sun6i-a31s-sinovoip-bpi-m2.dtb \
>>>       sun6i-a31s-yones-toptech-bs1078-v2.dtb
>>> diff --git a/arch/arm/boot/dts/sun6i-a31s-primo81.dts b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
>>> new file mode 100644
>>> index 000000000000..2d4250b1faf8
>>> --- /dev/null
>>> +++ b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
>>> @@ -0,0 +1,255 @@
>>> +/*
>>> + * Copyright 2014 Siarhei Siamashka <siarhei.siamashka@gmail.com>
>>> + * Copyright 2015 Karsten Merker <merker@debian.org>
>>> + * Copyright 2015 Chen-Yu Tsai <wens@csie.org>
>>> + *
>>> + * This file is dual-licensed: you can use it either under the terms
>>> + * of the GPL or the X11 license, at your option. Note that this dual
>>> + * licensing only applies to this file, and not this project as a
>>> + * whole.
>>> + *
>>> + *  a) This file is free software; you can redistribute it and/or
>>> + *     modify it under the terms of the GNU General Public License as
>>> + *     published by the Free Software Foundation; either version 2 of the
>>> + *     License, or (at your option) any later version.
>>> + *
>>> + *     This file is distributed in the hope that it will be useful,
>>> + *     but WITHOUT ANY WARRANTY; without even the implied warranty of
>>> + *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>>> + *     GNU General Public License for more details.
>>> + *
>>> + * Or, alternatively,
>>> + *
>>> + *  b) Permission is hereby granted, free of charge, to any person
>>> + *     obtaining a copy of this software and associated documentation
>>> + *     files (the "Software"), to deal in the Software without
>>> + *     restriction, including without limitation the rights to use,
>>> + *     copy, modify, merge, publish, distribute, sublicense, and/or
>>> + *     sell copies of the Software, and to permit persons to whom the
>>> + *     Software is furnished to do so, subject to the following
>>> + *     conditions:
>>> + *
>>> + *     The above copyright notice and this permission notice shall be
>>> + *     included in all copies or substantial portions of the Software.
>>> + *
>>> + *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
>>> + *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
>>> + *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
>>> + *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
>>> + *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
>>> + *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
>>> + *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
>>> + *     OTHER DEALINGS IN THE SOFTWARE.
>>> + */
>>> +
>>> +/dts-v1/;
>>> +#include "sun6i-a31s.dtsi"
>>> +#include "sunxi-common-regulators.dtsi"
>>> +
>>> +#include <dt-bindings/gpio/gpio.h>
>>> +#include <dt-bindings/input/input.h>
>>> +#include <dt-bindings/pinctrl/sun4i-a10.h>
>>> +
>>> +/ {
>>> +     model = "MSI Primo81 tablet";
>>> +     compatible = "msi,primo81", "allwinner,sun6i-a31s";
>>> +};
>>> +
>>> +&cpu0 {
>>> +     cpu-supply = <&reg_dcdc3>;
>>> +};
>>> +
>>> +&ehci0 {
>>> +     /* rtl8188etv wifi is connected here */
>>> +     status = "okay";
>>> +};
>>> +
>>> +&i2c0 {
>>> +     /* pull-ups and device VDDIO use AXP221 DLDO3 */
>>> +     pinctrl-names = "default";
>>> +     pinctrl-0 = <&i2c0_pins_a>;
>>> +     status = "failed";
>>> +};
>>> +
>>> +&i2c1 {
>>> +     pinctrl-names = "default";
>>> +     pinctrl-0 = <&i2c1_pins_a>;
>>> +     status = "okay";
>>> +
>>> +     ctp@5d {
>>> +             pinctrl-names = "default";
>>> +             pinctrl-0 = <&gt911_int_primo81>;
>>> +             compatible = "goodix,gt911";
>>> +             reg = <0x5d>;
>>> +             interrupt-parent = <&pio>;
>>> +             interrupts = <0 3 IRQ_TYPE_LEVEL_HIGH>; /* PA3 */
>>
>> I'd like to add a
>>
>>                 touchscreen-swapped-x-y = "true";

You don't need the '="true"' part. Boolean properties mean true
if they exist, and false if they aren't.

>>
>> as described in
>> Documentation/devicetree/bindings/input/touchscreen/touchscreen.txt
>> here, as the display is in portrait mode while the touchscreen is
>> in landscape mode and needs to have the x and y axes swapped to
>> work in the same coordinate system as the display.
>>
>> Regarding the driver side: the goodix driver in kernel 4.3
>> doesn't yet support this property, but patches to add support for
>> it are on the linux-input list and should hopefully make it into
>> kernel 4.4.
>
> The DTS is already in Maxime's tree, and in sunxi-next. Feel free to
> send a follow-up patch adding them. I was waiting for those patches
> to be merged.

Sorry, spoke too soon. Maxime hasn't pushed it out yet. Could you send
a patch adding touchscreen-swapped-x-y for Maxime to squash in?

My tablet is at my office. I won't be able to test it over the weekend.

Thanks
ChenYu

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

* [PATCH v4 4/4] ARM: dts: sun6i: Add dts file for MSI Primo81 tablet
@ 2015-10-23 15:56         ` Chen-Yu Tsai
  0 siblings, 0 replies; 50+ messages in thread
From: Chen-Yu Tsai @ 2015-10-23 15:56 UTC (permalink / raw)
  To: linux-arm-kernel

On Fri, Oct 23, 2015 at 11:46 PM, Chen-Yu Tsai <wens@csie.org> wrote:
> On Fri, Oct 23, 2015 at 10:53 PM, Karsten Merker <merker@debian.org> wrote:
>> On Fri, Oct 23, 2015 at 11:50:41AM +0800, Chen-Yu Tsai wrote:
>>
>>> From: Karsten Merker <merker@debian.org>
>>>
>>> The MSI Primo81 is an A31s based tablet, with 1G RAM, 16G NAND,
>>> 768x1024 IPS LCD display, mono speaker, 0.3 MP front camera, 2.0 MP
>>> rear camera, 3500 mAh battery, gt911 touchscreen, mma8452 accelerometer
>>> and rtl8188etv usb wifi. Has "power", "volume+" and "volume-" buttons
>>> (both volume buttons are also connected to the UBOOT_SEL pin). The
>>
>> Hello Chen-Yu,
>>
>> the volume button function is something that I wanted to confirm
>> again but forgot to ask previously: Siarhei had pointed out that
>> only the volume+ button triggers UBOOT_SEL, but for me actually
>> both volume buttons work as described above.  Could you
>> cross-check that on your Primo81?
>
> IIRC both work. I can test next week.
>
>>
>>> external connectors are represented by MicroSD slot, MiniHDMI, MicroUSB
>>> OTG and 3.5mm headphone jack.
>>>
>>> USB OTG is enabled in host only mode. AXP221 USB power supply and
>>> GPIO support are required for full USB OTG support.
>>>
>>> Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
>>> Signed-off-by: Karsten Merker <merker@debian.org>
>>> Signed-off-by: Chen-Yu Tsai <wens@csie.org>
>>> ---
>>>
>>> Changes since last submission (was part of Sinlinx SinA31s series)
>>>
>>>   - Update axp22x.dtsi file name
>>>   - Sort regulators
>>>   - Drop URL in commit message
>>>   - Drop comment for capacitive touch panel
>>>   - Add simplefb regulators
>>>   - Drop regulator-always-on for regulators that aren't critical
>>>   - Fix CPU and GPU regulator supply mix-up
>>>
>>> ---
>>>  arch/arm/boot/dts/Makefile               |   1 +
>>>  arch/arm/boot/dts/sun6i-a31s-primo81.dts | 255 +++++++++++++++++++++++++++++++
>>>  2 files changed, 256 insertions(+)
>>>  create mode 100644 arch/arm/boot/dts/sun6i-a31s-primo81.dts
>>>
>>> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
>>> index c00b72e750ab..78ade1a5e886 100644
>>> --- a/arch/arm/boot/dts/Makefile
>>> +++ b/arch/arm/boot/dts/Makefile
>>> @@ -612,6 +612,7 @@ dtb-$(CONFIG_MACH_SUN6I) += \
>>>       sun6i-a31-m9.dtb \
>>>       sun6i-a31-mele-a1000g-quad.dtb \
>>>       sun6i-a31s-cs908.dtb \
>>> +     sun6i-a31s-primo81.dtb \
>>>       sun6i-a31s-sina31s.dtb \
>>>       sun6i-a31s-sinovoip-bpi-m2.dtb \
>>>       sun6i-a31s-yones-toptech-bs1078-v2.dtb
>>> diff --git a/arch/arm/boot/dts/sun6i-a31s-primo81.dts b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
>>> new file mode 100644
>>> index 000000000000..2d4250b1faf8
>>> --- /dev/null
>>> +++ b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
>>> @@ -0,0 +1,255 @@
>>> +/*
>>> + * Copyright 2014 Siarhei Siamashka <siarhei.siamashka@gmail.com>
>>> + * Copyright 2015 Karsten Merker <merker@debian.org>
>>> + * Copyright 2015 Chen-Yu Tsai <wens@csie.org>
>>> + *
>>> + * This file is dual-licensed: you can use it either under the terms
>>> + * of the GPL or the X11 license, at your option. Note that this dual
>>> + * licensing only applies to this file, and not this project as a
>>> + * whole.
>>> + *
>>> + *  a) This file is free software; you can redistribute it and/or
>>> + *     modify it under the terms of the GNU General Public License as
>>> + *     published by the Free Software Foundation; either version 2 of the
>>> + *     License, or (at your option) any later version.
>>> + *
>>> + *     This file is distributed in the hope that it will be useful,
>>> + *     but WITHOUT ANY WARRANTY; without even the implied warranty of
>>> + *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>>> + *     GNU General Public License for more details.
>>> + *
>>> + * Or, alternatively,
>>> + *
>>> + *  b) Permission is hereby granted, free of charge, to any person
>>> + *     obtaining a copy of this software and associated documentation
>>> + *     files (the "Software"), to deal in the Software without
>>> + *     restriction, including without limitation the rights to use,
>>> + *     copy, modify, merge, publish, distribute, sublicense, and/or
>>> + *     sell copies of the Software, and to permit persons to whom the
>>> + *     Software is furnished to do so, subject to the following
>>> + *     conditions:
>>> + *
>>> + *     The above copyright notice and this permission notice shall be
>>> + *     included in all copies or substantial portions of the Software.
>>> + *
>>> + *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
>>> + *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
>>> + *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
>>> + *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
>>> + *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
>>> + *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
>>> + *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
>>> + *     OTHER DEALINGS IN THE SOFTWARE.
>>> + */
>>> +
>>> +/dts-v1/;
>>> +#include "sun6i-a31s.dtsi"
>>> +#include "sunxi-common-regulators.dtsi"
>>> +
>>> +#include <dt-bindings/gpio/gpio.h>
>>> +#include <dt-bindings/input/input.h>
>>> +#include <dt-bindings/pinctrl/sun4i-a10.h>
>>> +
>>> +/ {
>>> +     model = "MSI Primo81 tablet";
>>> +     compatible = "msi,primo81", "allwinner,sun6i-a31s";
>>> +};
>>> +
>>> +&cpu0 {
>>> +     cpu-supply = <&reg_dcdc3>;
>>> +};
>>> +
>>> +&ehci0 {
>>> +     /* rtl8188etv wifi is connected here */
>>> +     status = "okay";
>>> +};
>>> +
>>> +&i2c0 {
>>> +     /* pull-ups and device VDDIO use AXP221 DLDO3 */
>>> +     pinctrl-names = "default";
>>> +     pinctrl-0 = <&i2c0_pins_a>;
>>> +     status = "failed";
>>> +};
>>> +
>>> +&i2c1 {
>>> +     pinctrl-names = "default";
>>> +     pinctrl-0 = <&i2c1_pins_a>;
>>> +     status = "okay";
>>> +
>>> +     ctp at 5d {
>>> +             pinctrl-names = "default";
>>> +             pinctrl-0 = <&gt911_int_primo81>;
>>> +             compatible = "goodix,gt911";
>>> +             reg = <0x5d>;
>>> +             interrupt-parent = <&pio>;
>>> +             interrupts = <0 3 IRQ_TYPE_LEVEL_HIGH>; /* PA3 */
>>
>> I'd like to add a
>>
>>                 touchscreen-swapped-x-y = "true";

You don't need the '="true"' part. Boolean properties mean true
if they exist, and false if they aren't.

>>
>> as described in
>> Documentation/devicetree/bindings/input/touchscreen/touchscreen.txt
>> here, as the display is in portrait mode while the touchscreen is
>> in landscape mode and needs to have the x and y axes swapped to
>> work in the same coordinate system as the display.
>>
>> Regarding the driver side: the goodix driver in kernel 4.3
>> doesn't yet support this property, but patches to add support for
>> it are on the linux-input list and should hopefully make it into
>> kernel 4.4.
>
> The DTS is already in Maxime's tree, and in sunxi-next. Feel free to
> send a follow-up patch adding them. I was waiting for those patches
> to be merged.

Sorry, spoke too soon. Maxime hasn't pushed it out yet. Could you send
a patch adding touchscreen-swapped-x-y for Maxime to squash in?

My tablet is at my office. I won't be able to test it over the weekend.

Thanks
ChenYu

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

* Re: [PATCH v4 4/4] ARM: dts: sun6i: Add dts file for MSI Primo81 tablet
  2015-10-23 15:56         ` Chen-Yu Tsai
                           ` (2 preceding siblings ...)
  (?)
@ 2015-10-23 16:56         ` Karsten Merker
  2015-10-24  3:15             ` Chen-Yu Tsai
  -1 siblings, 1 reply; 50+ messages in thread
From: Karsten Merker @ 2015-10-23 16:56 UTC (permalink / raw)
  To: Chen-Yu Tsai
  Cc: Karsten Merker, Hans de Goede, Jean-Christophe Plagniol-Villard,
	Tomi Valkeinen, Rob Herring, Pawel Moll, Mark Rutland,
	Ian Campbell, Kumar Gala, Maxime Ripard, linux-fbdev, devicetree,
	linux-kernel, linux-arm-kernel, Mark Brown, Siarhei Siamashka

On Fri, Oct 23, 2015 at 11:56:35PM +0800, Chen-Yu Tsai wrote:
> On Fri, Oct 23, 2015 at 11:46 PM, Chen-Yu Tsai <wens@csie.org> wrote:
> > On Fri, Oct 23, 2015 at 10:53 PM, Karsten Merker <merker@debian.org> wrote:
> >> On Fri, Oct 23, 2015 at 11:50:41AM +0800, Chen-Yu Tsai wrote:
[...]
> >>> +/ {
> >>> +     model = "MSI Primo81 tablet";
> >>> +     compatible = "msi,primo81", "allwinner,sun6i-a31s";
> >>> +};
[...]
> >>> +&i2c1 {
> >>> +     pinctrl-names = "default";
> >>> +     pinctrl-0 = <&i2c1_pins_a>;
> >>> +     status = "okay";
> >>> +
> >>> +     ctp@5d {
> >>> +             pinctrl-names = "default";
> >>> +             pinctrl-0 = <&gt911_int_primo81>;
> >>> +             compatible = "goodix,gt911";
> >>> +             reg = <0x5d>;
> >>> +             interrupt-parent = <&pio>;
> >>> +             interrupts = <0 3 IRQ_TYPE_LEVEL_HIGH>; /* PA3 */
> >>
> >> I'd like to add a
> >>
> >>                 touchscreen-swapped-x-y = "true";
> >>
> >> as described in
> >> Documentation/devicetree/bindings/input/touchscreen/touchscreen.txt
> >> here, as the display is in portrait mode while the touchscreen is
> >> in landscape mode and needs to have the x and y axes swapped to
> >> work in the same coordinate system as the display.
> >>
> >> Regarding the driver side: the goodix driver in kernel 4.3
> >> doesn't yet support this property, but patches to add support for
> >> it are on the linux-input list and should hopefully make it into
> >> kernel 4.4.
> >
> > The DTS is already in Maxime's tree, and in sunxi-next. Feel free to
> > send a follow-up patch adding them. I was waiting for those patches
> > to be merged.
> 
> Sorry, spoke too soon. Maxime hasn't pushed it out yet. Could you send
> a patch adding touchscreen-swapped-x-y for Maxime to squash in?

I'm happy to do so, but I have just stumbled over a problem with
actually building the dtb for testing - it fails with

  arch/arm/boot/dts/sun6i-a31s-primo81.dts:242.1-14 Label or path simplefb_lcd not found

The dts references simplefb_lcd:

+&simplefb_lcd {
+       vcc-lcd-supply = <&reg_dc1sw>;
+       vdd-mipi-bridge-supply = <&reg_eldo3>;
+};

but I don't see where it would be defined. This is on the current
sunxi/for-next branch of
https://git.kernel.org/cgit/linux/kernel/git/mripard/linux.git
with the Primo81 dts patch on top. Am I perhaps missing some
required additional patch here?

Regards,
Karsten
-- 
Gem. Par. 28 Abs. 4 Bundesdatenschutzgesetz widerspreche ich der Nutzung
sowie der Weitergabe meiner personenbezogenen Daten für Zwecke der
Werbung sowie der Markt- oder Meinungsforschung.

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

* Re: [PATCH v4 4/4] ARM: dts: sun6i: Add dts file for MSI Primo81 tablet
  2015-10-23 16:56         ` Karsten Merker
  2015-10-24  3:15             ` Chen-Yu Tsai
@ 2015-10-24  3:15             ` Chen-Yu Tsai
  0 siblings, 0 replies; 50+ messages in thread
From: Chen-Yu Tsai @ 2015-10-24  3:15 UTC (permalink / raw)
  To: Karsten Merker
  Cc: Chen-Yu Tsai, Hans de Goede, Jean-Christophe Plagniol-Villard,
	Tomi Valkeinen, Rob Herring, Pawel Moll, Mark Rutland,
	Ian Campbell, Kumar Gala, Maxime Ripard, linux-fbdev, devicetree,
	linux-kernel, linux-arm-kernel, Mark Brown, Siarhei Siamashka

On Sat, Oct 24, 2015 at 12:56 AM, Karsten Merker <merker@debian.org> wrote:
> On Fri, Oct 23, 2015 at 11:56:35PM +0800, Chen-Yu Tsai wrote:
>> On Fri, Oct 23, 2015 at 11:46 PM, Chen-Yu Tsai <wens@csie.org> wrote:
>> > On Fri, Oct 23, 2015 at 10:53 PM, Karsten Merker <merker@debian.org> wrote:
>> >> On Fri, Oct 23, 2015 at 11:50:41AM +0800, Chen-Yu Tsai wrote:
> [...]
>> >>> +/ {
>> >>> +     model = "MSI Primo81 tablet";
>> >>> +     compatible = "msi,primo81", "allwinner,sun6i-a31s";
>> >>> +};
> [...]
>> >>> +&i2c1 {
>> >>> +     pinctrl-names = "default";
>> >>> +     pinctrl-0 = <&i2c1_pins_a>;
>> >>> +     status = "okay";
>> >>> +
>> >>> +     ctp@5d {
>> >>> +             pinctrl-names = "default";
>> >>> +             pinctrl-0 = <&gt911_int_primo81>;
>> >>> +             compatible = "goodix,gt911";
>> >>> +             reg = <0x5d>;
>> >>> +             interrupt-parent = <&pio>;
>> >>> +             interrupts = <0 3 IRQ_TYPE_LEVEL_HIGH>; /* PA3 */
>> >>
>> >> I'd like to add a
>> >>
>> >>                 touchscreen-swapped-x-y = "true";
>> >>
>> >> as described in
>> >> Documentation/devicetree/bindings/input/touchscreen/touchscreen.txt
>> >> here, as the display is in portrait mode while the touchscreen is
>> >> in landscape mode and needs to have the x and y axes swapped to
>> >> work in the same coordinate system as the display.
>> >>
>> >> Regarding the driver side: the goodix driver in kernel 4.3
>> >> doesn't yet support this property, but patches to add support for
>> >> it are on the linux-input list and should hopefully make it into
>> >> kernel 4.4.
>> >
>> > The DTS is already in Maxime's tree, and in sunxi-next. Feel free to
>> > send a follow-up patch adding them. I was waiting for those patches
>> > to be merged.
>>
>> Sorry, spoke too soon. Maxime hasn't pushed it out yet. Could you send
>> a patch adding touchscreen-swapped-x-y for Maxime to squash in?
>
> I'm happy to do so, but I have just stumbled over a problem with
> actually building the dtb for testing - it fails with
>
>   arch/arm/boot/dts/sun6i-a31s-primo81.dts:242.1-14 Label or path simplefb_lcd not found
>
> The dts references simplefb_lcd:
>
> +&simplefb_lcd {
> +       vcc-lcd-supply = <&reg_dc1sw>;
> +       vdd-mipi-bridge-supply = <&reg_eldo3>;
> +};
>
> but I don't see where it would be defined. This is on the current
> sunxi/for-next branch of
> https://git.kernel.org/cgit/linux/kernel/git/mripard/linux.git
> with the Primo81 dts patch on top. Am I perhaps missing some
> required additional patch here?

Yes. The previous patch that adds labels to the simplefb nodes.
Both patches are now in sunxi/for-next in Maxime's tree now.

ChenYu

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

* Re: [PATCH v4 4/4] ARM: dts: sun6i: Add dts file for MSI Primo81 tablet
@ 2015-10-24  3:15             ` Chen-Yu Tsai
  0 siblings, 0 replies; 50+ messages in thread
From: Chen-Yu Tsai @ 2015-10-24  3:15 UTC (permalink / raw)
  To: linux-arm-kernel

On Sat, Oct 24, 2015 at 12:56 AM, Karsten Merker <merker@debian.org> wrote:
> On Fri, Oct 23, 2015 at 11:56:35PM +0800, Chen-Yu Tsai wrote:
>> On Fri, Oct 23, 2015 at 11:46 PM, Chen-Yu Tsai <wens@csie.org> wrote:
>> > On Fri, Oct 23, 2015 at 10:53 PM, Karsten Merker <merker@debian.org> wrote:
>> >> On Fri, Oct 23, 2015 at 11:50:41AM +0800, Chen-Yu Tsai wrote:
> [...]
>> >>> +/ {
>> >>> +     model = "MSI Primo81 tablet";
>> >>> +     compatible = "msi,primo81", "allwinner,sun6i-a31s";
>> >>> +};
> [...]
>> >>> +&i2c1 {
>> >>> +     pinctrl-names = "default";
>> >>> +     pinctrl-0 = <&i2c1_pins_a>;
>> >>> +     status = "okay";
>> >>> +
>> >>> +     ctp@5d {
>> >>> +             pinctrl-names = "default";
>> >>> +             pinctrl-0 = <&gt911_int_primo81>;
>> >>> +             compatible = "goodix,gt911";
>> >>> +             reg = <0x5d>;
>> >>> +             interrupt-parent = <&pio>;
>> >>> +             interrupts = <0 3 IRQ_TYPE_LEVEL_HIGH>; /* PA3 */
>> >>
>> >> I'd like to add a
>> >>
>> >>                 touchscreen-swapped-x-y = "true";
>> >>
>> >> as described in
>> >> Documentation/devicetree/bindings/input/touchscreen/touchscreen.txt
>> >> here, as the display is in portrait mode while the touchscreen is
>> >> in landscape mode and needs to have the x and y axes swapped to
>> >> work in the same coordinate system as the display.
>> >>
>> >> Regarding the driver side: the goodix driver in kernel 4.3
>> >> doesn't yet support this property, but patches to add support for
>> >> it are on the linux-input list and should hopefully make it into
>> >> kernel 4.4.
>> >
>> > The DTS is already in Maxime's tree, and in sunxi-next. Feel free to
>> > send a follow-up patch adding them. I was waiting for those patches
>> > to be merged.
>>
>> Sorry, spoke too soon. Maxime hasn't pushed it out yet. Could you send
>> a patch adding touchscreen-swapped-x-y for Maxime to squash in?
>
> I'm happy to do so, but I have just stumbled over a problem with
> actually building the dtb for testing - it fails with
>
>   arch/arm/boot/dts/sun6i-a31s-primo81.dts:242.1-14 Label or path simplefb_lcd not found
>
> The dts references simplefb_lcd:
>
> +&simplefb_lcd {
> +       vcc-lcd-supply = <&reg_dc1sw>;
> +       vdd-mipi-bridge-supply = <&reg_eldo3>;
> +};
>
> but I don't see where it would be defined. This is on the current
> sunxi/for-next branch of
> https://git.kernel.org/cgit/linux/kernel/git/mripard/linux.git
> with the Primo81 dts patch on top. Am I perhaps missing some
> required additional patch here?

Yes. The previous patch that adds labels to the simplefb nodes.
Both patches are now in sunxi/for-next in Maxime's tree now.

ChenYu

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

* [PATCH v4 4/4] ARM: dts: sun6i: Add dts file for MSI Primo81 tablet
@ 2015-10-24  3:15             ` Chen-Yu Tsai
  0 siblings, 0 replies; 50+ messages in thread
From: Chen-Yu Tsai @ 2015-10-24  3:15 UTC (permalink / raw)
  To: linux-arm-kernel

On Sat, Oct 24, 2015 at 12:56 AM, Karsten Merker <merker@debian.org> wrote:
> On Fri, Oct 23, 2015 at 11:56:35PM +0800, Chen-Yu Tsai wrote:
>> On Fri, Oct 23, 2015 at 11:46 PM, Chen-Yu Tsai <wens@csie.org> wrote:
>> > On Fri, Oct 23, 2015 at 10:53 PM, Karsten Merker <merker@debian.org> wrote:
>> >> On Fri, Oct 23, 2015 at 11:50:41AM +0800, Chen-Yu Tsai wrote:
> [...]
>> >>> +/ {
>> >>> +     model = "MSI Primo81 tablet";
>> >>> +     compatible = "msi,primo81", "allwinner,sun6i-a31s";
>> >>> +};
> [...]
>> >>> +&i2c1 {
>> >>> +     pinctrl-names = "default";
>> >>> +     pinctrl-0 = <&i2c1_pins_a>;
>> >>> +     status = "okay";
>> >>> +
>> >>> +     ctp at 5d {
>> >>> +             pinctrl-names = "default";
>> >>> +             pinctrl-0 = <&gt911_int_primo81>;
>> >>> +             compatible = "goodix,gt911";
>> >>> +             reg = <0x5d>;
>> >>> +             interrupt-parent = <&pio>;
>> >>> +             interrupts = <0 3 IRQ_TYPE_LEVEL_HIGH>; /* PA3 */
>> >>
>> >> I'd like to add a
>> >>
>> >>                 touchscreen-swapped-x-y = "true";
>> >>
>> >> as described in
>> >> Documentation/devicetree/bindings/input/touchscreen/touchscreen.txt
>> >> here, as the display is in portrait mode while the touchscreen is
>> >> in landscape mode and needs to have the x and y axes swapped to
>> >> work in the same coordinate system as the display.
>> >>
>> >> Regarding the driver side: the goodix driver in kernel 4.3
>> >> doesn't yet support this property, but patches to add support for
>> >> it are on the linux-input list and should hopefully make it into
>> >> kernel 4.4.
>> >
>> > The DTS is already in Maxime's tree, and in sunxi-next. Feel free to
>> > send a follow-up patch adding them. I was waiting for those patches
>> > to be merged.
>>
>> Sorry, spoke too soon. Maxime hasn't pushed it out yet. Could you send
>> a patch adding touchscreen-swapped-x-y for Maxime to squash in?
>
> I'm happy to do so, but I have just stumbled over a problem with
> actually building the dtb for testing - it fails with
>
>   arch/arm/boot/dts/sun6i-a31s-primo81.dts:242.1-14 Label or path simplefb_lcd not found
>
> The dts references simplefb_lcd:
>
> +&simplefb_lcd {
> +       vcc-lcd-supply = <&reg_dc1sw>;
> +       vdd-mipi-bridge-supply = <&reg_eldo3>;
> +};
>
> but I don't see where it would be defined. This is on the current
> sunxi/for-next branch of
> https://git.kernel.org/cgit/linux/kernel/git/mripard/linux.git
> with the Primo81 dts patch on top. Am I perhaps missing some
> required additional patch here?

Yes. The previous patch that adds labels to the simplefb nodes.
Both patches are now in sunxi/for-next in Maxime's tree now.

ChenYu

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

* Re: [PATCH v4 4/4] ARM: dts: sun6i: Add dts file for MSI Primo81 tablet
  2015-10-23 15:56         ` Chen-Yu Tsai
  (?)
@ 2015-10-24  7:09           ` Maxime Ripard
  -1 siblings, 0 replies; 50+ messages in thread
From: Maxime Ripard @ 2015-10-24  7:09 UTC (permalink / raw)
  To: Chen-Yu Tsai
  Cc: Karsten Merker, Hans de Goede, Jean-Christophe Plagniol-Villard,
	Tomi Valkeinen, Rob Herring, Pawel Moll, Mark Rutland,
	Ian Campbell, Kumar Gala, linux-fbdev, devicetree, linux-kernel,
	linux-arm-kernel, Mark Brown, Siarhei Siamashka

[-- Attachment #1: Type: text/plain, Size: 1121 bytes --]

Hi,

On Fri, Oct 23, 2015 at 11:56:35PM +0800, Chen-Yu Tsai wrote:
> >> as described in
> >> Documentation/devicetree/bindings/input/touchscreen/touchscreen.txt
> >> here, as the display is in portrait mode while the touchscreen is
> >> in landscape mode and needs to have the x and y axes swapped to
> >> work in the same coordinate system as the display.
> >>
> >> Regarding the driver side: the goodix driver in kernel 4.3
> >> doesn't yet support this property, but patches to add support for
> >> it are on the linux-input list and should hopefully make it into
> >> kernel 4.4.
> >
> > The DTS is already in Maxime's tree, and in sunxi-next. Feel free to
> > send a follow-up patch adding them. I was waiting for those patches
> > to be merged.
> 
> Sorry, spoke too soon. Maxime hasn't pushed it out yet. Could you send
> a patch adding touchscreen-swapped-x-y for Maxime to squash in?

I did the last DT pull request for 4.4 yesterday, so I won't squash
any patches.

Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

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

* Re: [PATCH v4 4/4] ARM: dts: sun6i: Add dts file for MSI Primo81 tablet
@ 2015-10-24  7:09           ` Maxime Ripard
  0 siblings, 0 replies; 50+ messages in thread
From: Maxime Ripard @ 2015-10-24  7:09 UTC (permalink / raw)
  To: linux-arm-kernel

[-- Attachment #1: Type: text/plain, Size: 1121 bytes --]

Hi,

On Fri, Oct 23, 2015 at 11:56:35PM +0800, Chen-Yu Tsai wrote:
> >> as described in
> >> Documentation/devicetree/bindings/input/touchscreen/touchscreen.txt
> >> here, as the display is in portrait mode while the touchscreen is
> >> in landscape mode and needs to have the x and y axes swapped to
> >> work in the same coordinate system as the display.
> >>
> >> Regarding the driver side: the goodix driver in kernel 4.3
> >> doesn't yet support this property, but patches to add support for
> >> it are on the linux-input list and should hopefully make it into
> >> kernel 4.4.
> >
> > The DTS is already in Maxime's tree, and in sunxi-next. Feel free to
> > send a follow-up patch adding them. I was waiting for those patches
> > to be merged.
> 
> Sorry, spoke too soon. Maxime hasn't pushed it out yet. Could you send
> a patch adding touchscreen-swapped-x-y for Maxime to squash in?

I did the last DT pull request for 4.4 yesterday, so I won't squash
any patches.

Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

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

* [PATCH v4 4/4] ARM: dts: sun6i: Add dts file for MSI Primo81 tablet
@ 2015-10-24  7:09           ` Maxime Ripard
  0 siblings, 0 replies; 50+ messages in thread
From: Maxime Ripard @ 2015-10-24  7:09 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

On Fri, Oct 23, 2015 at 11:56:35PM +0800, Chen-Yu Tsai wrote:
> >> as described in
> >> Documentation/devicetree/bindings/input/touchscreen/touchscreen.txt
> >> here, as the display is in portrait mode while the touchscreen is
> >> in landscape mode and needs to have the x and y axes swapped to
> >> work in the same coordinate system as the display.
> >>
> >> Regarding the driver side: the goodix driver in kernel 4.3
> >> doesn't yet support this property, but patches to add support for
> >> it are on the linux-input list and should hopefully make it into
> >> kernel 4.4.
> >
> > The DTS is already in Maxime's tree, and in sunxi-next. Feel free to
> > send a follow-up patch adding them. I was waiting for those patches
> > to be merged.
> 
> Sorry, spoke too soon. Maxime hasn't pushed it out yet. Could you send
> a patch adding touchscreen-swapped-x-y for Maxime to squash in?

I did the last DT pull request for 4.4 yesterday, so I won't squash
any patches.

Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20151024/d45c62ae/attachment.sig>

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

* Re: [PATCH v4 4/4] ARM: dts: sun6i: Add dts file for MSI Primo81 tablet
  2015-10-23 15:46       ` Chen-Yu Tsai
  (?)
@ 2015-10-24  9:33         ` Siarhei Siamashka
  -1 siblings, 0 replies; 50+ messages in thread
From: Siarhei Siamashka @ 2015-10-24  9:33 UTC (permalink / raw)
  To: Chen-Yu Tsai
  Cc: Karsten Merker, Hans de Goede, Jean-Christophe Plagniol-Villard,
	Tomi Valkeinen, Rob Herring, Pawel Moll, Mark Rutland,
	Ian Campbell, Kumar Gala, Maxime Ripard, linux-fbdev, devicetree,
	linux-kernel, linux-arm-kernel, Mark Brown

Hello,

On Fri, 23 Oct 2015 23:46:59 +0800
Chen-Yu Tsai <wens@csie.org> wrote:

> On Fri, Oct 23, 2015 at 10:53 PM, Karsten Merker <merker@debian.org> wrote:
> > On Fri, Oct 23, 2015 at 11:50:41AM +0800, Chen-Yu Tsai wrote:
> >
> >> From: Karsten Merker <merker@debian.org>
> >>
> >> The MSI Primo81 is an A31s based tablet, with 1G RAM, 16G NAND,
> >> 768x1024 IPS LCD display, mono speaker, 0.3 MP front camera, 2.0 MP
> >> rear camera, 3500 mAh battery, gt911 touchscreen, mma8452 accelerometer
> >> and rtl8188etv usb wifi. Has "power", "volume+" and "volume-" buttons
> >> (both volume buttons are also connected to the UBOOT_SEL pin). The
> >
> > Hello Chen-Yu,
> >
> > the volume button function is something that I wanted to confirm
> > again but forgot to ask previously: Siarhei had pointed out that
> > only the volume+ button triggers UBOOT_SEL, but for me actually
> > both volume buttons work as described above.  Could you
> > cross-check that on your Primo81?
> 
> IIRC both work. I can test next week.

Both buttons work this way because the Allwinner's firmware
additionally checks the buttons state via LRADC and switches
into the FEL mode in a software way. But if somebody flashes a
broken bootloader to NAND (something that is recognized by the
BROM, but dies instead of booting) then we may potentially have
a bricked device because booting from NAND has the highest
priority on A31s.

The UBOOT_SEL pin on the SoC can be used to change the default
boot order and allow to boot from the SD card or USB first
regardless of what is in NAND. So if at least one of the hardware
buttons is connected to the UBOOT_SEL pin, then we have an
unbrickable device.

Checking whether the hardware button is really connected to the
UBOOT_SEL pin can be done by reading the SRAM_VER_REG hardware
register and looking at the BOOT_SEL_PAD_STA bits:
    http://linux-sunxi.org/SRAM_Controller_Register_Guide#SRAM_VER_REG

And this can be done, for example, via using the devmem2 tool:
    "devmem2 0x01c00024"

Alternatively, it is also possible to use a modified variant of the
dialog tool, which is additionally polling the state of the FEL
button and interpreting long FEL button press as KEY_ENTER and
short press as KEY_DOWN:
    https://github.com/ssvb/dialog-sunxi

This patched dialog tool is a part of the board type selection stub,
used for creating universal board-independent SD card based installers
for Allwinner devices, which has been available for Linux distribution
maintainers since a while ago:
    http://lists.denx.de/pipermail/u-boot/2015-January/202306.html

Regarding the UBOOT_SEL pin in the MSI Primo81 tablet. After
buying this tablet, I was happy to confirm that at least the
"volume+" button is connected to the UBOOT_SEL pin, making the
tablet unbrickable. However appears that it was not just some sane
decision made by MSI engineers, but in fact connecting both LRADC
and UBOOT_SEL to tablet buttons is a part of the standard Allwinner's
reference schematics. One can search for "a20_pad_std_v1_1.pdf",
"a13-sch.pdf", "A31_PAD_STD_V1_90_130225.pdf" documents on the
Internet to find this information. Basically, we should expect
the majority of Allwinner A31(s) tablets to have a hardware FEL
button and be perfectly unbrickable :-)

-- 
Best regards,
Siarhei Siamashka

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

* Re: [PATCH v4 4/4] ARM: dts: sun6i: Add dts file for MSI Primo81 tablet
@ 2015-10-24  9:33         ` Siarhei Siamashka
  0 siblings, 0 replies; 50+ messages in thread
From: Siarhei Siamashka @ 2015-10-24  9:33 UTC (permalink / raw)
  To: linux-arm-kernel

Hello,

On Fri, 23 Oct 2015 23:46:59 +0800
Chen-Yu Tsai <wens@csie.org> wrote:

> On Fri, Oct 23, 2015 at 10:53 PM, Karsten Merker <merker@debian.org> wrote:
> > On Fri, Oct 23, 2015 at 11:50:41AM +0800, Chen-Yu Tsai wrote:
> >
> >> From: Karsten Merker <merker@debian.org>
> >>
> >> The MSI Primo81 is an A31s based tablet, with 1G RAM, 16G NAND,
> >> 768x1024 IPS LCD display, mono speaker, 0.3 MP front camera, 2.0 MP
> >> rear camera, 3500 mAh battery, gt911 touchscreen, mma8452 accelerometer
> >> and rtl8188etv usb wifi. Has "power", "volume+" and "volume-" buttons
> >> (both volume buttons are also connected to the UBOOT_SEL pin). The
> >
> > Hello Chen-Yu,
> >
> > the volume button function is something that I wanted to confirm
> > again but forgot to ask previously: Siarhei had pointed out that
> > only the volume+ button triggers UBOOT_SEL, but for me actually
> > both volume buttons work as described above.  Could you
> > cross-check that on your Primo81?
> 
> IIRC both work. I can test next week.

Both buttons work this way because the Allwinner's firmware
additionally checks the buttons state via LRADC and switches
into the FEL mode in a software way. But if somebody flashes a
broken bootloader to NAND (something that is recognized by the
BROM, but dies instead of booting) then we may potentially have
a bricked device because booting from NAND has the highest
priority on A31s.

The UBOOT_SEL pin on the SoC can be used to change the default
boot order and allow to boot from the SD card or USB first
regardless of what is in NAND. So if at least one of the hardware
buttons is connected to the UBOOT_SEL pin, then we have an
unbrickable device.

Checking whether the hardware button is really connected to the
UBOOT_SEL pin can be done by reading the SRAM_VER_REG hardware
register and looking at the BOOT_SEL_PAD_STA bits:
    http://linux-sunxi.org/SRAM_Controller_Register_Guide#SRAM_VER_REG

And this can be done, for example, via using the devmem2 tool:
    "devmem2 0x01c00024"

Alternatively, it is also possible to use a modified variant of the
dialog tool, which is additionally polling the state of the FEL
button and interpreting long FEL button press as KEY_ENTER and
short press as KEY_DOWN:
    https://github.com/ssvb/dialog-sunxi

This patched dialog tool is a part of the board type selection stub,
used for creating universal board-independent SD card based installers
for Allwinner devices, which has been available for Linux distribution
maintainers since a while ago:
    http://lists.denx.de/pipermail/u-boot/2015-January/202306.html

Regarding the UBOOT_SEL pin in the MSI Primo81 tablet. After
buying this tablet, I was happy to confirm that at least the
"volume+" button is connected to the UBOOT_SEL pin, making the
tablet unbrickable. However appears that it was not just some sane
decision made by MSI engineers, but in fact connecting both LRADC
and UBOOT_SEL to tablet buttons is a part of the standard Allwinner's
reference schematics. One can search for "a20_pad_std_v1_1.pdf",
"a13-sch.pdf", "A31_PAD_STD_V1_90_130225.pdf" documents on the
Internet to find this information. Basically, we should expect
the majority of Allwinner A31(s) tablets to have a hardware FEL
button and be perfectly unbrickable :-)

-- 
Best regards,
Siarhei Siamashka

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

* [PATCH v4 4/4] ARM: dts: sun6i: Add dts file for MSI Primo81 tablet
@ 2015-10-24  9:33         ` Siarhei Siamashka
  0 siblings, 0 replies; 50+ messages in thread
From: Siarhei Siamashka @ 2015-10-24  9:33 UTC (permalink / raw)
  To: linux-arm-kernel

Hello,

On Fri, 23 Oct 2015 23:46:59 +0800
Chen-Yu Tsai <wens@csie.org> wrote:

> On Fri, Oct 23, 2015 at 10:53 PM, Karsten Merker <merker@debian.org> wrote:
> > On Fri, Oct 23, 2015 at 11:50:41AM +0800, Chen-Yu Tsai wrote:
> >
> >> From: Karsten Merker <merker@debian.org>
> >>
> >> The MSI Primo81 is an A31s based tablet, with 1G RAM, 16G NAND,
> >> 768x1024 IPS LCD display, mono speaker, 0.3 MP front camera, 2.0 MP
> >> rear camera, 3500 mAh battery, gt911 touchscreen, mma8452 accelerometer
> >> and rtl8188etv usb wifi. Has "power", "volume+" and "volume-" buttons
> >> (both volume buttons are also connected to the UBOOT_SEL pin). The
> >
> > Hello Chen-Yu,
> >
> > the volume button function is something that I wanted to confirm
> > again but forgot to ask previously: Siarhei had pointed out that
> > only the volume+ button triggers UBOOT_SEL, but for me actually
> > both volume buttons work as described above.  Could you
> > cross-check that on your Primo81?
> 
> IIRC both work. I can test next week.

Both buttons work this way because the Allwinner's firmware
additionally checks the buttons state via LRADC and switches
into the FEL mode in a software way. But if somebody flashes a
broken bootloader to NAND (something that is recognized by the
BROM, but dies instead of booting) then we may potentially have
a bricked device because booting from NAND has the highest
priority on A31s.

The UBOOT_SEL pin on the SoC can be used to change the default
boot order and allow to boot from the SD card or USB first
regardless of what is in NAND. So if at least one of the hardware
buttons is connected to the UBOOT_SEL pin, then we have an
unbrickable device.

Checking whether the hardware button is really connected to the
UBOOT_SEL pin can be done by reading the SRAM_VER_REG hardware
register and looking at the BOOT_SEL_PAD_STA bits:
    http://linux-sunxi.org/SRAM_Controller_Register_Guide#SRAM_VER_REG

And this can be done, for example, via using the devmem2 tool:
    "devmem2 0x01c00024"

Alternatively, it is also possible to use a modified variant of the
dialog tool, which is additionally polling the state of the FEL
button and interpreting long FEL button press as KEY_ENTER and
short press as KEY_DOWN:
    https://github.com/ssvb/dialog-sunxi

This patched dialog tool is a part of the board type selection stub,
used for creating universal board-independent SD card based installers
for Allwinner devices, which has been available for Linux distribution
maintainers since a while ago:
    http://lists.denx.de/pipermail/u-boot/2015-January/202306.html

Regarding the UBOOT_SEL pin in the MSI Primo81 tablet. After
buying this tablet, I was happy to confirm that at least the
"volume+" button is connected to the UBOOT_SEL pin, making the
tablet unbrickable. However appears that it was not just some sane
decision made by MSI engineers, but in fact connecting both LRADC
and UBOOT_SEL to tablet buttons is a part of the standard Allwinner's
reference schematics. One can search for "a20_pad_std_v1_1.pdf",
"a13-sch.pdf", "A31_PAD_STD_V1_90_130225.pdf" documents on the
Internet to find this information. Basically, we should expect
the majority of Allwinner A31(s) tablets to have a hardware FEL
button and be perfectly unbrickable :-)

-- 
Best regards,
Siarhei Siamashka

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

* Re: [PATCH v4 4/4] ARM: dts: sun6i: Add dts file for MSI Primo81 tablet
  2015-10-24  3:15             ` Chen-Yu Tsai
@ 2015-10-24 20:57               ` Karsten Merker
  -1 siblings, 0 replies; 50+ messages in thread
From: Karsten Merker @ 2015-10-24 20:57 UTC (permalink / raw)
  To: Chen-Yu Tsai, Maxime Ripard
  Cc: Karsten Merker, Hans de Goede, Jean-Christophe Plagniol-Villard,
	Tomi Valkeinen, Rob Herring, Pawel Moll, Mark Rutland,
	Ian Campbell, Kumar Gala, Maxime Ripard, linux-fbdev, devicetree,
	linux-kernel, linux-arm-kernel, Mark Brown, Siarhei Siamashka

On Sat, Oct 24, 2015 at 11:15:51AM +0800, Chen-Yu Tsai wrote:
> On Sat, Oct 24, 2015 at 12:56 AM, Karsten Merker <merker@debian.org> wrote:
> > On Fri, Oct 23, 2015 at 11:56:35PM +0800, Chen-Yu Tsai wrote:
> >> On Fri, Oct 23, 2015 at 11:46 PM, Chen-Yu Tsai <wens@csie.org> wrote:
> >> > On Fri, Oct 23, 2015 at 10:53 PM, Karsten Merker <merker@debian.org> wrote:
> >> >> On Fri, Oct 23, 2015 at 11:50:41AM +0800, Chen-Yu Tsai wrote:
> > [...]
> >> >>> +/ {
> >> >>> +     model = "MSI Primo81 tablet";
> >> >>> +     compatible = "msi,primo81", "allwinner,sun6i-a31s";
> >> >>> +};
> > [...]
> >> >>> +&i2c1 {
> >> >>> +     pinctrl-names = "default";
> >> >>> +     pinctrl-0 = <&i2c1_pins_a>;
> >> >>> +     status = "okay";
> >> >>> +
> >> >>> +     ctp@5d {
> >> >>> +             pinctrl-names = "default";
> >> >>> +             pinctrl-0 = <&gt911_int_primo81>;
> >> >>> +             compatible = "goodix,gt911";
> >> >>> +             reg = <0x5d>;
> >> >>> +             interrupt-parent = <&pio>;
> >> >>> +             interrupts = <0 3 IRQ_TYPE_LEVEL_HIGH>; /* PA3 */
> >> >>
> >> >> I'd like to add a
> >> >>
> >> >>                 touchscreen-swapped-x-y = "true";
> >> >>
> >> >> as described in
> >> >> Documentation/devicetree/bindings/input/touchscreen/touchscreen.txt
> >> >> here, as the display is in portrait mode while the touchscreen is
> >> >> in landscape mode and needs to have the x and y axes swapped to
> >> >> work in the same coordinate system as the display.
> >> >>
> >> >> Regarding the driver side: the goodix driver in kernel 4.3
> >> >> doesn't yet support this property, but patches to add support for
> >> >> it are on the linux-input list and should hopefully make it into
> >> >> kernel 4.4.
> >> >
> >> > The DTS is already in Maxime's tree, and in sunxi-next. Feel free to
> >> > send a follow-up patch adding them. I was waiting for those patches
> >> > to be merged.
> >>
> >> Sorry, spoke too soon. Maxime hasn't pushed it out yet. Could you send
> >> a patch adding touchscreen-swapped-x-y for Maxime to squash in?
> >
> > I'm happy to do so, but I have just stumbled over a problem with
> > actually building the dtb for testing - it fails with
> >
> >   arch/arm/boot/dts/sun6i-a31s-primo81.dts:242.1-14 Label or path simplefb_lcd not found
> >
> > The dts references simplefb_lcd:
> >
> > +&simplefb_lcd {
> > +       vcc-lcd-supply = <&reg_dc1sw>;
> > +       vdd-mipi-bridge-supply = <&reg_eldo3>;
> > +};
> >
> > but I don't see where it would be defined. This is on the current
> > sunxi/for-next branch of
> > https://git.kernel.org/cgit/linux/kernel/git/mripard/linux.git
> > with the Primo81 dts patch on top. Am I perhaps missing some
> > required additional patch here?
> 
> Yes. The previous patch that adds labels to the simplefb nodes.

Thanks for the info, that one doesn't seem to have landed in
my inbox.

> Both patches are now in sunxi/for-next in Maxime's tree now.

I've pulled them in the meantime and will post a follow-up patch
immediately.

Regards,
Karsten
-- 
Gem. Par. 28 Abs. 4 Bundesdatenschutzgesetz widerspreche ich der Nutzung
sowie der Weitergabe meiner personenbezogenen Daten für Zwecke der
Werbung sowie der Markt- oder Meinungsforschung.

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

* Re: [PATCH v4 4/4] ARM: dts: sun6i: Add dts file for MSI Primo81 tablet
@ 2015-10-24 20:57               ` Karsten Merker
  0 siblings, 0 replies; 50+ messages in thread
From: Karsten Merker @ 2015-10-24 20:57 UTC (permalink / raw)
  To: Chen-Yu Tsai, Maxime Ripard
  Cc: Karsten Merker, Hans de Goede, Jean-Christophe Plagniol-Villard,
	Tomi Valkeinen, Rob Herring, Pawel Moll, Mark Rutland,
	Ian Campbell, Kumar Gala, linux-fbdev, devicetree, linux-kernel,
	linux-arm-kernel, Mark Brown, Siarhei Siamashka

On Sat, Oct 24, 2015 at 11:15:51AM +0800, Chen-Yu Tsai wrote:
> On Sat, Oct 24, 2015 at 12:56 AM, Karsten Merker <merker@debian.org> wrote:
> > On Fri, Oct 23, 2015 at 11:56:35PM +0800, Chen-Yu Tsai wrote:
> >> On Fri, Oct 23, 2015 at 11:46 PM, Chen-Yu Tsai <wens@csie.org> wrote:
> >> > On Fri, Oct 23, 2015 at 10:53 PM, Karsten Merker <merker@debian.org> wrote:
> >> >> On Fri, Oct 23, 2015 at 11:50:41AM +0800, Chen-Yu Tsai wrote:
> > [...]
> >> >>> +/ {
> >> >>> +     model = "MSI Primo81 tablet";
> >> >>> +     compatible = "msi,primo81", "allwinner,sun6i-a31s";
> >> >>> +};
> > [...]
> >> >>> +&i2c1 {
> >> >>> +     pinctrl-names = "default";
> >> >>> +     pinctrl-0 = <&i2c1_pins_a>;
> >> >>> +     status = "okay";
> >> >>> +
> >> >>> +     ctp@5d {
> >> >>> +             pinctrl-names = "default";
> >> >>> +             pinctrl-0 = <&gt911_int_primo81>;
> >> >>> +             compatible = "goodix,gt911";
> >> >>> +             reg = <0x5d>;
> >> >>> +             interrupt-parent = <&pio>;
> >> >>> +             interrupts = <0 3 IRQ_TYPE_LEVEL_HIGH>; /* PA3 */
> >> >>
> >> >> I'd like to add a
> >> >>
> >> >>                 touchscreen-swapped-x-y = "true";
> >> >>
> >> >> as described in
> >> >> Documentation/devicetree/bindings/input/touchscreen/touchscreen.txt
> >> >> here, as the display is in portrait mode while the touchscreen is
> >> >> in landscape mode and needs to have the x and y axes swapped to
> >> >> work in the same coordinate system as the display.
> >> >>
> >> >> Regarding the driver side: the goodix driver in kernel 4.3
> >> >> doesn't yet support this property, but patches to add support for
> >> >> it are on the linux-input list and should hopefully make it into
> >> >> kernel 4.4.
> >> >
> >> > The DTS is already in Maxime's tree, and in sunxi-next. Feel free to
> >> > send a follow-up patch adding them. I was waiting for those patches
> >> > to be merged.
> >>
> >> Sorry, spoke too soon. Maxime hasn't pushed it out yet. Could you send
> >> a patch adding touchscreen-swapped-x-y for Maxime to squash in?
> >
> > I'm happy to do so, but I have just stumbled over a problem with
> > actually building the dtb for testing - it fails with
> >
> >   arch/arm/boot/dts/sun6i-a31s-primo81.dts:242.1-14 Label or path simplefb_lcd not found
> >
> > The dts references simplefb_lcd:
> >
> > +&simplefb_lcd {
> > +       vcc-lcd-supply = <&reg_dc1sw>;
> > +       vdd-mipi-bridge-supply = <&reg_eldo3>;
> > +};
> >
> > but I don't see where it would be defined. This is on the current
> > sunxi/for-next branch of
> > https://git.kernel.org/cgit/linux/kernel/git/mripard/linux.git
> > with the Primo81 dts patch on top. Am I perhaps missing some
> > required additional patch here?
> 
> Yes. The previous patch that adds labels to the simplefb nodes.

Thanks for the info, that one doesn't seem to have landed in
my inbox.

> Both patches are now in sunxi/for-next in Maxime's tree now.

I've pulled them in the meantime and will post a follow-up patch
immediately.

Regards,
Karsten
-- 
Gem. Par. 28 Abs. 4 Bundesdatenschutzgesetz widerspreche ich der Nutzung
sowie der Weitergabe meiner personenbezogenen Daten für Zwecke der
Werbung sowie der Markt- oder Meinungsforschung.

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

* [PATCH] ARM: dts: sunxi: sun6i-a31s-primo81.dts: add touchscreen axis swapping property
@ 2015-10-24 21:07                 ` Karsten Merker
  0 siblings, 0 replies; 50+ messages in thread
From: Karsten Merker @ 2015-10-24 21:07 UTC (permalink / raw)
  To: Hans de Goede, Jean-Christophe Plagniol-Villard, Tomi Valkeinen,
	Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Maxime Ripard, Chen-Yu Tsai
  Cc: Karsten Merker, linux-fbdev, devicetree, linux-kernel,
	linux-arm-kernel, Mark Brown, Siarhei Siamashka

The MSI Primo81 has a display in portrait mode but a touchscreen
in landscape mode.  To have both of them use the same coordinate
system, the touchscreen-swapped-x-y property has to be set
for the touchscreen.

Signed-off-by: Karsten Merker <merker@debian.org>
---
 arch/arm/boot/dts/sun6i-a31s-primo81.dts | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm/boot/dts/sun6i-a31s-primo81.dts b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
index 2d4250b..68b479b 100644
--- a/arch/arm/boot/dts/sun6i-a31s-primo81.dts
+++ b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
@@ -83,6 +83,7 @@
 		reg = <0x5d>;
 		interrupt-parent = <&pio>;
 		interrupts = <0 3 IRQ_TYPE_LEVEL_HIGH>; /* PA3 */
+		touchscreen-swapped-x-y;
 	};
 };
 
-- 
2.1.4


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

* [PATCH] ARM: dts: sunxi: sun6i-a31s-primo81.dts: add touchscreen axis swapping property
@ 2015-10-24 21:07                 ` Karsten Merker
  0 siblings, 0 replies; 50+ messages in thread
From: Karsten Merker @ 2015-10-24 21:07 UTC (permalink / raw)
  To: Hans de Goede, Jean-Christophe Plagniol-Villard, Tomi Valkeinen,
	Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Maxime Ripard, Chen-Yu Tsai
  Cc: Karsten Merker, linux-fbdev-u79uwXL29TY76Z2rM5mHXA,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Mark Brown,
	Siarhei Siamashka

The MSI Primo81 has a display in portrait mode but a touchscreen
in landscape mode.  To have both of them use the same coordinate
system, the touchscreen-swapped-x-y property has to be set
for the touchscreen.

Signed-off-by: Karsten Merker <merker-8fiUuRrzOP0dnm+yROfE0A@public.gmane.org>
---
 arch/arm/boot/dts/sun6i-a31s-primo81.dts | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm/boot/dts/sun6i-a31s-primo81.dts b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
index 2d4250b..68b479b 100644
--- a/arch/arm/boot/dts/sun6i-a31s-primo81.dts
+++ b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
@@ -83,6 +83,7 @@
 		reg = <0x5d>;
 		interrupt-parent = <&pio>;
 		interrupts = <0 3 IRQ_TYPE_LEVEL_HIGH>; /* PA3 */
+		touchscreen-swapped-x-y;
 	};
 };
 
-- 
2.1.4

--
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] 50+ messages in thread

* [PATCH] ARM: dts: sunxi: sun6i-a31s-primo81.dts: add touchscreen axis swapping property
@ 2015-10-24 21:07                 ` Karsten Merker
  0 siblings, 0 replies; 50+ messages in thread
From: Karsten Merker @ 2015-10-24 21:07 UTC (permalink / raw)
  To: linux-arm-kernel

The MSI Primo81 has a display in portrait mode but a touchscreen
in landscape mode.  To have both of them use the same coordinate
system, the touchscreen-swapped-x-y property has to be set
for the touchscreen.

Signed-off-by: Karsten Merker <merker@debian.org>
---
 arch/arm/boot/dts/sun6i-a31s-primo81.dts | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm/boot/dts/sun6i-a31s-primo81.dts b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
index 2d4250b..68b479b 100644
--- a/arch/arm/boot/dts/sun6i-a31s-primo81.dts
+++ b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
@@ -83,6 +83,7 @@
 		reg = <0x5d>;
 		interrupt-parent = <&pio>;
 		interrupts = <0 3 IRQ_TYPE_LEVEL_HIGH>; /* PA3 */
+		touchscreen-swapped-x-y;
 	};
 };
 
-- 
2.1.4


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

* [PATCH] ARM: dts: sunxi: sun6i-a31s-primo81.dts: add touchscreen axis swapping property
@ 2015-10-24 21:07                 ` Karsten Merker
  0 siblings, 0 replies; 50+ messages in thread
From: Karsten Merker @ 2015-10-24 21:07 UTC (permalink / raw)
  To: linux-arm-kernel

The MSI Primo81 has a display in portrait mode but a touchscreen
in landscape mode.  To have both of them use the same coordinate
system, the touchscreen-swapped-x-y property has to be set
for the touchscreen.

Signed-off-by: Karsten Merker <merker@debian.org>
---
 arch/arm/boot/dts/sun6i-a31s-primo81.dts | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm/boot/dts/sun6i-a31s-primo81.dts b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
index 2d4250b..68b479b 100644
--- a/arch/arm/boot/dts/sun6i-a31s-primo81.dts
+++ b/arch/arm/boot/dts/sun6i-a31s-primo81.dts
@@ -83,6 +83,7 @@
 		reg = <0x5d>;
 		interrupt-parent = <&pio>;
 		interrupts = <0 3 IRQ_TYPE_LEVEL_HIGH>; /* PA3 */
+		touchscreen-swapped-x-y;
 	};
 };
 
-- 
2.1.4

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

* Re: [PATCH] ARM: dts: sunxi: sun6i-a31s-primo81.dts: add touchscreen axis swapping property
  2015-10-24 21:07                 ` Karsten Merker
  (?)
@ 2015-10-28  6:20                   ` Maxime Ripard
  -1 siblings, 0 replies; 50+ messages in thread
From: Maxime Ripard @ 2015-10-28  6:20 UTC (permalink / raw)
  To: Karsten Merker
  Cc: Hans de Goede, Jean-Christophe Plagniol-Villard, Tomi Valkeinen,
	Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Chen-Yu Tsai, linux-fbdev, devicetree, linux-kernel,
	linux-arm-kernel, Mark Brown, Siarhei Siamashka

[-- Attachment #1: Type: text/plain, Size: 511 bytes --]

Hi,

On Sat, Oct 24, 2015 at 11:07:31PM +0200, Karsten Merker wrote:
> The MSI Primo81 has a display in portrait mode but a touchscreen
> in landscape mode.  To have both of them use the same coordinate
> system, the touchscreen-swapped-x-y property has to be set
> for the touchscreen.
> 
> Signed-off-by: Karsten Merker <merker@debian.org>

Queued as a fix for 4.4.

Thanks!
Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

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

* Re: [PATCH] ARM: dts: sunxi: sun6i-a31s-primo81.dts: add touchscreen axis swapping property
@ 2015-10-28  6:20                   ` Maxime Ripard
  0 siblings, 0 replies; 50+ messages in thread
From: Maxime Ripard @ 2015-10-28  6:20 UTC (permalink / raw)
  To: linux-arm-kernel

[-- Attachment #1: Type: text/plain, Size: 511 bytes --]

Hi,

On Sat, Oct 24, 2015 at 11:07:31PM +0200, Karsten Merker wrote:
> The MSI Primo81 has a display in portrait mode but a touchscreen
> in landscape mode.  To have both of them use the same coordinate
> system, the touchscreen-swapped-x-y property has to be set
> for the touchscreen.
> 
> Signed-off-by: Karsten Merker <merker@debian.org>

Queued as a fix for 4.4.

Thanks!
Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

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

* [PATCH] ARM: dts: sunxi: sun6i-a31s-primo81.dts: add touchscreen axis swapping property
@ 2015-10-28  6:20                   ` Maxime Ripard
  0 siblings, 0 replies; 50+ messages in thread
From: Maxime Ripard @ 2015-10-28  6:20 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

On Sat, Oct 24, 2015 at 11:07:31PM +0200, Karsten Merker wrote:
> The MSI Primo81 has a display in portrait mode but a touchscreen
> in landscape mode.  To have both of them use the same coordinate
> system, the touchscreen-swapped-x-y property has to be set
> for the touchscreen.
> 
> Signed-off-by: Karsten Merker <merker@debian.org>

Queued as a fix for 4.4.

Thanks!
Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20151028/4946fbaa/attachment.sig>

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

end of thread, other threads:[~2015-10-28  6:20 UTC | newest]

Thread overview: 50+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-23  3:50 [PATCH v4 0/4] simplefb: Add regulator handling support Chen-Yu Tsai
2015-10-23  3:50 ` Chen-Yu Tsai
2015-10-23  3:50 ` Chen-Yu Tsai
2015-10-23  3:50 ` [PATCH v4 1/4] dt-bindings: simplefb: Support regulator supply properties Chen-Yu Tsai
2015-10-23  3:50   ` Chen-Yu Tsai
2015-10-23  3:50   ` Chen-Yu Tsai
2015-10-23  3:50 ` [PATCH v4 2/4] simplefb: Claim and enable regulators Chen-Yu Tsai
2015-10-23  3:50   ` Chen-Yu Tsai
2015-10-23  3:50   ` Chen-Yu Tsai
2015-10-23  3:50 ` [PATCH v4 3/4] ARM: dts: sun6i: Add simplefb node labels to reference at board level Chen-Yu Tsai
2015-10-23  3:50   ` Chen-Yu Tsai
2015-10-23  3:50   ` Chen-Yu Tsai
2015-10-23  3:50   ` Chen-Yu Tsai
2015-10-23  3:50 ` [PATCH v4 4/4] ARM: dts: sun6i: Add dts file for MSI Primo81 tablet Chen-Yu Tsai
2015-10-23  3:50   ` Chen-Yu Tsai
2015-10-23  3:50   ` Chen-Yu Tsai
2015-10-23 14:53   ` Karsten Merker
2015-10-23 15:46     ` Chen-Yu Tsai
2015-10-23 15:46       ` Chen-Yu Tsai
2015-10-23 15:46       ` Chen-Yu Tsai
2015-10-23 15:56       ` Chen-Yu Tsai
2015-10-23 15:56         ` Chen-Yu Tsai
2015-10-23 15:56         ` Chen-Yu Tsai
2015-10-23 15:56         ` Chen-Yu Tsai
2015-10-23 16:56         ` Karsten Merker
2015-10-24  3:15           ` Chen-Yu Tsai
2015-10-24  3:15             ` Chen-Yu Tsai
2015-10-24  3:15             ` Chen-Yu Tsai
2015-10-24 20:57             ` Karsten Merker
2015-10-24 20:57               ` Karsten Merker
2015-10-24 21:07               ` [PATCH] ARM: dts: sunxi: sun6i-a31s-primo81.dts: add touchscreen axis swapping property Karsten Merker
2015-10-24 21:07                 ` Karsten Merker
2015-10-24 21:07                 ` Karsten Merker
2015-10-24 21:07                 ` Karsten Merker
2015-10-28  6:20                 ` Maxime Ripard
2015-10-28  6:20                   ` Maxime Ripard
2015-10-28  6:20                   ` Maxime Ripard
2015-10-24  7:09         ` [PATCH v4 4/4] ARM: dts: sun6i: Add dts file for MSI Primo81 tablet Maxime Ripard
2015-10-24  7:09           ` Maxime Ripard
2015-10-24  7:09           ` Maxime Ripard
2015-10-24  9:33       ` Siarhei Siamashka
2015-10-24  9:33         ` Siarhei Siamashka
2015-10-24  9:33         ` Siarhei Siamashka
2015-10-23  6:05 ` [PATCH v4 0/4] simplefb: Add regulator handling support Maxime Ripard
2015-10-23  6:05   ` Maxime Ripard
2015-10-23  6:05   ` Maxime Ripard
2015-10-23  6:05   ` Maxime Ripard
2015-10-23 13:49 ` Hans de Goede
2015-10-23 13:49   ` Hans de Goede
2015-10-23 13:49   ` Hans de Goede

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.