linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] dt-bindings: display/panel: Add Innolux EJ030NA
@ 2021-06-25 12:10 Paul Cercueil
  2021-06-25 12:10 ` [PATCH 2/2] drm/panel: Add Innolux EJ030NA 3.0" 320x480 panel Paul Cercueil
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Paul Cercueil @ 2021-06-25 12:10 UTC (permalink / raw)
  To: Thierry Reding, Sam Ravnborg, Rob Herring
  Cc: dri-devel, devicetree, linux-kernel, list,
	Christophe Branchereau, Paul Cercueil

Add binding for the Innolux EJ030NA panel, which is a 320x480 3.0" 4:3
24-bit TFT LCD panel with non-square pixels and a delta-RGB 8-bit
interface.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
---
 .../display/panel/innolux,ej030na.yaml        | 62 +++++++++++++++++++
 1 file changed, 62 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/display/panel/innolux,ej030na.yaml

diff --git a/Documentation/devicetree/bindings/display/panel/innolux,ej030na.yaml b/Documentation/devicetree/bindings/display/panel/innolux,ej030na.yaml
new file mode 100644
index 000000000000..cda36c04e85c
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/panel/innolux,ej030na.yaml
@@ -0,0 +1,62 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/panel/innolux,ej030na.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Innolux EJ030NA 3.0" (320x480 pixels) 24-bit TFT LCD panel
+
+description: |
+  The panel must obey the rules for a SPI slave device as specified in
+  spi/spi-controller.yaml
+
+maintainers:
+  - Paul Cercueil <paul@crapouillou.net>
+
+allOf:
+  - $ref: panel-common.yaml#
+
+properties:
+  compatible:
+    const: innolux,ej030na
+
+  backlight: true
+  port: true
+  power-supply: true
+  reg: true
+  reset-gpios: true
+
+required:
+  - compatible
+  - reg
+  - power-supply
+  - reset-gpios
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    spi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        panel@0 {
+            compatible = "innolux,ej030na";
+            reg = <0>;
+
+            spi-max-frequency = <10000000>;
+
+            reset-gpios = <&gpe 4 GPIO_ACTIVE_LOW>;
+            power-supply = <&lcd_power>;
+
+            backlight = <&backlight>;
+
+            port {
+                panel_input: endpoint {
+                    remote-endpoint = <&panel_output>;
+                };
+            };
+        };
+    };
-- 
2.30.2


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

* [PATCH 2/2] drm/panel: Add Innolux EJ030NA 3.0" 320x480 panel
  2021-06-25 12:10 [PATCH 1/2] dt-bindings: display/panel: Add Innolux EJ030NA Paul Cercueil
@ 2021-06-25 12:10 ` Paul Cercueil
       [not found]   ` <YOk7xCNes0VTCG21@ravnborg.org>
       [not found] ` <YOk60yTP9L1gT3+W@ravnborg.org>
  2021-07-14 20:30 ` Rob Herring
  2 siblings, 1 reply; 8+ messages in thread
From: Paul Cercueil @ 2021-06-25 12:10 UTC (permalink / raw)
  To: Thierry Reding, Sam Ravnborg, Rob Herring
  Cc: dri-devel, devicetree, linux-kernel, list,
	Christophe Branchereau, Paul Cercueil

From: Christophe Branchereau <cbranchereau@gmail.com>

Add support for the Innolux/Chimei EJ030NA 3.0"
320x480 TFT panel.

This panel can be found in the LDKs, RS97 V2.1 and RG300 (non IPS)
handheld gaming consoles.

While being 320x480, it is actually a horizontal 4:3
panel with non-square pixels in delta arrangement.

Signed-off-by: Christophe Branchereau <cbranchereau@gmail.com>
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
---
 drivers/gpu/drm/panel/Kconfig                 |   9 +
 drivers/gpu/drm/panel/Makefile                |   1 +
 drivers/gpu/drm/panel/panel-innolux-ej030na.c | 289 ++++++++++++++++++
 3 files changed, 299 insertions(+)
 create mode 100644 drivers/gpu/drm/panel/panel-innolux-ej030na.c

diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig
index 09acd18b3592..bfc6c23b2509 100644
--- a/drivers/gpu/drm/panel/Kconfig
+++ b/drivers/gpu/drm/panel/Kconfig
@@ -134,6 +134,15 @@ config DRM_PANEL_ILITEK_ILI9881C
 	  Say Y if you want to enable support for panels based on the
 	  Ilitek ILI9881c controller.
 
+config DRM_PANEL_INNOLUX_EJ030NA
+        tristate "Innolux EJ030NA 320x480 LCD panel"
+        depends on OF && SPI
+        select REGMAP_SPI
+        help
+          Say Y here to enable support for the Innolux/Chimei EJ030NA
+          320x480 3.0" panel as found in the RS97 V2.1, RG300(non-ips)
+          and LDK handheld gaming consoles.
+
 config DRM_PANEL_INNOLUX_P079ZCA
 	tristate "Innolux P079ZCA panel"
 	depends on OF
diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile
index a350e0990d17..1b865e8ea7c9 100644
--- a/drivers/gpu/drm/panel/Makefile
+++ b/drivers/gpu/drm/panel/Makefile
@@ -12,6 +12,7 @@ obj-$(CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02) += panel-feixin-k101-im2ba02.o
 obj-$(CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D) += panel-feiyang-fy07024di26a30d.o
 obj-$(CONFIG_DRM_PANEL_ILITEK_IL9322) += panel-ilitek-ili9322.o
 obj-$(CONFIG_DRM_PANEL_ILITEK_ILI9881C) += panel-ilitek-ili9881c.o
+obj-$(CONFIG_DRM_PANEL_INNOLUX_EJ030NA) += panel-innolux-ej030na.o
 obj-$(CONFIG_DRM_PANEL_INNOLUX_P079ZCA) += panel-innolux-p079zca.o
 obj-$(CONFIG_DRM_PANEL_JDI_LT070ME05000) += panel-jdi-lt070me05000.o
 obj-$(CONFIG_DRM_PANEL_KHADAS_TS050) += panel-khadas-ts050.o
diff --git a/drivers/gpu/drm/panel/panel-innolux-ej030na.c b/drivers/gpu/drm/panel/panel-innolux-ej030na.c
new file mode 100644
index 000000000000..4160b99ef544
--- /dev/null
+++ b/drivers/gpu/drm/panel/panel-innolux-ej030na.c
@@ -0,0 +1,289 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Innolux/Chimei EJ030NA TFT LCD panel driver
+ *
+ * Copyright (C) 2020, Paul Cercueil <paul@crapouillou.net>
+ * Copyright (C) 2020, Christophe Branchereau <cbranchereau@gmail.com>
+ */
+
+#include <linux/delay.h>
+#include <linux/device.h>
+#include <linux/gpio/consumer.h>
+#include <linux/media-bus-format.h>
+#include <linux/module.h>
+#include <linux/of_device.h>
+#include <linux/regmap.h>
+#include <linux/regulator/consumer.h>
+#include <linux/spi/spi.h>
+
+#include <drm/drm_modes.h>
+#include <drm/drm_panel.h>
+
+struct ej030na_info {
+	const struct drm_display_mode *display_modes;
+	unsigned int num_modes;
+	u16 width_mm, height_mm;
+	u32 bus_format, bus_flags;
+};
+
+struct ej030na {
+	struct drm_panel panel;
+	struct spi_device *spi;
+	struct regmap *map;
+
+	const struct ej030na_info *panel_info;
+
+	struct regulator *supply;
+	struct gpio_desc *reset_gpio;
+};
+
+static inline struct ej030na *to_ej030na(struct drm_panel *panel)
+{
+	return container_of(panel, struct ej030na, panel);
+}
+
+static const struct reg_sequence ej030na_init_sequence[] = {
+	{ 0x05, 0x1e },
+	{ 0x05, 0x5c },
+	{ 0x02, 0x14 },
+	{ 0x03, 0x40 },
+	{ 0x04, 0x07 },
+	{ 0x06, 0x12 },
+	{ 0x07, 0xd2 },
+	{ 0x0c, 0x06 },
+	{ 0x0d, 0x40 },
+	{ 0x0e, 0x40 },
+	{ 0x0f, 0x40 },
+	{ 0x10, 0x40 },
+	{ 0x11, 0x40 },
+	{ 0x2f, 0x40 },
+	{ 0x5a, 0x02 },
+
+	{ 0x30, 0x07 },
+	{ 0x31, 0x57 },
+	{ 0x32, 0x53 },
+	{ 0x33, 0x77 },
+	{ 0x34, 0xb8 },
+	{ 0x35, 0xbd },
+	{ 0x36, 0xb8 },
+	{ 0x37, 0xe7 },
+	{ 0x38, 0x04 },
+	{ 0x39, 0xff },
+
+	{ 0x40, 0x0b },
+	{ 0x41, 0xb8 },
+	{ 0x42, 0xab },
+	{ 0x43, 0xb9 },
+	{ 0x44, 0x6a },
+	{ 0x45, 0x56 },
+	{ 0x46, 0x61 },
+	{ 0x47, 0x08 },
+	{ 0x48, 0x0f },
+	{ 0x49, 0x0f },
+
+	{ 0x2b, 0x01 },
+};
+
+static int ej030na_prepare(struct drm_panel *panel)
+{
+	struct ej030na *priv = to_ej030na(panel);
+	struct device *dev = &priv->spi->dev;
+	int err;
+
+	err = regulator_enable(priv->supply);
+	if (err) {
+		dev_err(dev, "Failed to enable power supply: %d\n", err);
+		return err;
+	}
+
+	/* Reset the chip */
+	gpiod_set_value_cansleep(priv->reset_gpio, 1);
+	usleep_range(50, 150);
+	gpiod_set_value_cansleep(priv->reset_gpio, 0);
+	usleep_range(50, 150);
+
+	err = regmap_multi_reg_write(priv->map, ej030na_init_sequence,
+				     ARRAY_SIZE(ej030na_init_sequence));
+	if (err) {
+		dev_err(dev, "Failed to init registers: %d\n", err);
+		goto err_disable_regulator;
+	}
+
+	msleep(120);
+
+	return 0;
+
+err_disable_regulator:
+	regulator_disable(priv->supply);
+	return err;
+}
+
+static int ej030na_unprepare(struct drm_panel *panel)
+{
+	struct ej030na *priv = to_ej030na(panel);
+
+	gpiod_set_value_cansleep(priv->reset_gpio, 1);
+	regulator_disable(priv->supply);
+
+	return 0;
+}
+
+static int ej030na_get_modes(struct drm_panel *panel,
+				struct drm_connector *connector)
+{
+	struct ej030na *priv = to_ej030na(panel);
+	const struct ej030na_info *panel_info = priv->panel_info;
+	struct drm_display_mode *mode;
+	unsigned int i;
+
+	for (i = 0; i < panel_info->num_modes; i++) {
+		mode = drm_mode_duplicate(connector->dev,
+					  &panel_info->display_modes[i]);
+		if (!mode)
+			return -ENOMEM;
+
+		drm_mode_set_name(mode);
+
+		mode->type = DRM_MODE_TYPE_DRIVER;
+		if (panel_info->num_modes == 1)
+			mode->type |= DRM_MODE_TYPE_PREFERRED;
+
+		drm_mode_probed_add(connector, mode);
+	}
+
+	connector->display_info.bpc = 8;
+	connector->display_info.width_mm = panel_info->width_mm;
+	connector->display_info.height_mm = panel_info->height_mm;
+
+	drm_display_info_set_bus_formats(&connector->display_info,
+					 &panel_info->bus_format, 1);
+	connector->display_info.bus_flags = panel_info->bus_flags;
+
+	return panel_info->num_modes;
+}
+
+static const struct drm_panel_funcs ej030na_funcs = {
+	.prepare	= ej030na_prepare,
+	.unprepare	= ej030na_unprepare,
+	.get_modes	= ej030na_get_modes,
+};
+
+static const struct regmap_config ej030na_regmap_config = {
+	.reg_bits = 8,
+	.val_bits = 8,
+	.max_register = 0x5a,
+};
+
+static int ej030na_probe(struct spi_device *spi)
+{
+	struct device *dev = &spi->dev;
+	struct ej030na *priv;
+	int err;
+
+	priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
+	if (!priv)
+		return -ENOMEM;
+
+	priv->spi = spi;
+	spi_set_drvdata(spi, priv);
+
+	priv->map = devm_regmap_init_spi(spi, &ej030na_regmap_config);
+	if (IS_ERR(priv->map)) {
+		dev_err(dev, "Unable to init regmap\n");
+		return PTR_ERR(priv->map);
+	}
+
+	priv->panel_info = of_device_get_match_data(dev);
+	if (!priv->panel_info)
+		return -EINVAL;
+
+	priv->supply = devm_regulator_get(dev, "power");
+	if (IS_ERR(priv->supply)) {
+		dev_err(dev, "Failed to get power supply\n");
+		return PTR_ERR(priv->supply);
+	}
+
+	priv->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH);
+	if (IS_ERR(priv->reset_gpio)) {
+		dev_err(dev, "Failed to get reset GPIO\n");
+		return PTR_ERR(priv->reset_gpio);
+	}
+
+	drm_panel_init(&priv->panel, dev, &ej030na_funcs,
+		       DRM_MODE_CONNECTOR_DPI);
+
+	err = drm_panel_of_backlight(&priv->panel);
+	if (err)
+		return err;
+
+	drm_panel_add(&priv->panel);
+
+	return 0;
+}
+
+static int ej030na_remove(struct spi_device *spi)
+{
+	struct ej030na *priv = spi_get_drvdata(spi);
+
+	drm_panel_remove(&priv->panel);
+	drm_panel_disable(&priv->panel);
+	drm_panel_unprepare(&priv->panel);
+
+	return 0;
+}
+
+static const struct drm_display_mode ej030na_modes[] = {
+	{ /* 60 Hz */
+		.clock = 14400,
+		.hdisplay = 320,
+		.hsync_start = 320 + 10,
+		.hsync_end = 320 + 10 + 37,
+		.htotal = 320 + 10 + 37 + 33,
+		.vdisplay = 480,
+		.vsync_start = 480 + 102,
+		.vsync_end = 480 + 102 + 9 + 9,
+		.vtotal = 480 + 102 + 9 + 9,
+		.flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC,
+	},
+	{ /* 50 Hz */
+		.clock = 12000,
+		.hdisplay = 320,
+		.hsync_start = 320 + 10,
+		.hsync_end = 320 + 10 + 37,
+		.htotal = 320 + 10 + 37 + 33,
+		.vdisplay = 480,
+		.vsync_start = 480 + 102,
+		.vsync_end = 480 + 102 + 9,
+		.vtotal = 480 + 102 + 9 + 9,
+		.flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC,
+	},
+};
+
+static const struct ej030na_info ej030na_info = {
+	.display_modes = ej030na_modes,
+	.num_modes = ARRAY_SIZE(ej030na_modes),
+	.width_mm = 70,
+	.height_mm = 51,
+	.bus_format = MEDIA_BUS_FMT_RGB888_3X8_DELTA,
+	.bus_flags = DRM_BUS_FLAG_PIXDATA_SAMPLE_POSEDGE | DRM_BUS_FLAG_DE_LOW,
+};
+
+static const struct of_device_id ej030na_of_match[] = {
+	{ .compatible = "innolux,ej030na", .data = &ej030na_info },
+	{ /* sentinel */ }
+};
+MODULE_DEVICE_TABLE(of, ej030na_of_match);
+
+static struct spi_driver ej030na_driver = {
+	.driver = {
+		.name = "panel-innolux-ej030na",
+		.of_match_table = ej030na_of_match,
+	},
+	.probe = ej030na_probe,
+	.remove = ej030na_remove,
+};
+module_spi_driver(ej030na_driver);
+
+MODULE_AUTHOR("Paul Cercueil <paul@crapouillou.net>");
+MODULE_AUTHOR("Christophe Branchereau <cbranchereau@gmail.com>");
+MODULE_LICENSE("GPL v2");
-- 
2.30.2


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

* Re: [PATCH 1/2] dt-bindings: display/panel: Add Innolux EJ030NA
       [not found] ` <YOk60yTP9L1gT3+W@ravnborg.org>
@ 2021-07-10  9:42   ` Paul Cercueil
       [not found]     ` <YOlvev0nvXVYU01y@ravnborg.org>
  0 siblings, 1 reply; 8+ messages in thread
From: Paul Cercueil @ 2021-07-10  9:42 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: Thierry Reding, Rob Herring, dri-devel, devicetree, linux-kernel,
	list, Christophe Branchereau

Hi Sam, thanks for the review.

Le sam., juil. 10 2021 at 08:14:43 +0200, Sam Ravnborg 
<sam@ravnborg.org> a écrit :
> Hi Paul,
> 
> On Fri, Jun 25, 2021 at 01:10:44PM +0100, Paul Cercueil wrote:
>>  Add binding for the Innolux EJ030NA panel, which is a 320x480 3.0" 
>> 4:3
>>  24-bit TFT LCD panel with non-square pixels and a delta-RGB 8-bit
>>  interface.
>> 
>>  Signed-off-by: Paul Cercueil <paul@crapouillou.net>
>>  ---
>>   .../display/panel/innolux,ej030na.yaml        | 62 
>> +++++++++++++++++++
>>   1 file changed, 62 insertions(+)
>>   create mode 100644 
>> Documentation/devicetree/bindings/display/panel/innolux,ej030na.yaml
>> 
>>  diff --git 
>> a/Documentation/devicetree/bindings/display/panel/innolux,ej030na.yaml 
>> b/Documentation/devicetree/bindings/display/panel/innolux,ej030na.yaml
>>  new file mode 100644
>>  index 000000000000..cda36c04e85c
>>  --- /dev/null
>>  +++ 
>> b/Documentation/devicetree/bindings/display/panel/innolux,ej030na.yaml
>>  @@ -0,0 +1,62 @@
>>  +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
>>  +%YAML 1.2
>>  +---
>>  +$id: 
>> http://devicetree.org/schemas/display/panel/innolux,ej030na.yaml#
>>  +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>  +
>>  +title: Innolux EJ030NA 3.0" (320x480 pixels) 24-bit TFT LCD panel
>>  +
>>  +description: |
>>  +  The panel must obey the rules for a SPI slave device as 
>> specified in
>>  +  spi/spi-controller.yaml
>>  +
>>  +maintainers:
>>  +  - Paul Cercueil <paul@crapouillou.net>
>>  +
>>  +allOf:
>>  +  - $ref: panel-common.yaml#
>>  +
>>  +properties:
>>  +  compatible:
>>  +    const: innolux,ej030na
>>  +
>>  +  backlight: true
>>  +  port: true
>>  +  power-supply: true
>>  +  reg: true
>>  +  reset-gpios: true
>>  +
>>  +required:
>>  +  - compatible
>>  +  - reg
>>  +  - power-supply
>>  +  - reset-gpios
>>  +
>>  +unevaluatedProperties: false
> I had expected:
> additionalProperties: false
> 
> With this fixed:
> Reviewed-by: Sam Ravnborg <sam@ravnborg.org>

I am not sure; the doc states that this (additionalProperties: false) 
"can't be used in case where another schema is referenced", which is 
the case here, as we include "panel-common.yaml".

Cheers,
-Paul

>>  +
>>  +examples:
>>  +  - |
>>  +    #include <dt-bindings/gpio/gpio.h>
>>  +
>>  +    spi {
>>  +        #address-cells = <1>;
>>  +        #size-cells = <0>;
>>  +
>>  +        panel@0 {
>>  +            compatible = "innolux,ej030na";
>>  +            reg = <0>;
>>  +
>>  +            spi-max-frequency = <10000000>;
>>  +
>>  +            reset-gpios = <&gpe 4 GPIO_ACTIVE_LOW>;
>>  +            power-supply = <&lcd_power>;
>>  +
>>  +            backlight = <&backlight>;
>>  +
>>  +            port {
>>  +                panel_input: endpoint {
>>  +                    remote-endpoint = <&panel_output>;
>>  +                };
>>  +            };
>>  +        };
>>  +    };
>>  --
>>  2.30.2



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

* Re: [PATCH 1/2] dt-bindings: display/panel: Add Innolux EJ030NA
       [not found]     ` <YOlvev0nvXVYU01y@ravnborg.org>
@ 2021-07-10 10:21       ` Paul Cercueil
  2021-07-14 20:30         ` Rob Herring
  0 siblings, 1 reply; 8+ messages in thread
From: Paul Cercueil @ 2021-07-10 10:21 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: Thierry Reding, Rob Herring, dri-devel, devicetree, linux-kernel,
	list, Christophe Branchereau


[...]

>>  I am not sure; the doc states that this (additionalProperties: 
>> false) "can't
>>  be used in case where another schema is referenced", which is the 
>> case here,
>>  as we include "panel-common.yaml".
> 
> This DT schema already list all relevant properties like:
> 
> 	backlight: true
> 
> So "additionalProperties: false" tells that no other properties are
> allowed other than the listed properties.
> 
> To my best understanding unevaluatedProperties: false is less strict 
> and
> should be used if one does not list all possilbe properties.
> This could be the case for a panel haging below a SPI controller as in
> this case. So in other words giving this some extra thought I think
> unevaluatedProperties: false is OK here.

A panel below a SPI controller would have all its SPI-specific 
properties covered by spi-controller.yaml, I believe? So maybe 
"additionalProperties: false" would work?

In any case, if I use "additionalProperties: false", "make 
dt_binding_check" complains that my example's "spi-max-frequency" 
property is not covered. So maybe you are right.

> So my r-b is ok if you keep it as it.
> 
> PS. Where do you guys hang out with the downfall of freenode - 
> somewhere
> on oftc?

We moved to #opendingux on Libera.

Cheers,
-Paul



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

* Re: [PATCH 1/2] dt-bindings: display/panel: Add Innolux EJ030NA
  2021-07-10 10:21       ` Paul Cercueil
@ 2021-07-14 20:30         ` Rob Herring
  2021-07-14 20:40           ` Paul Cercueil
  0 siblings, 1 reply; 8+ messages in thread
From: Rob Herring @ 2021-07-14 20:30 UTC (permalink / raw)
  To: Paul Cercueil
  Cc: Sam Ravnborg, Thierry Reding, dri-devel, devicetree,
	linux-kernel, list, Christophe Branchereau

On Sat, Jul 10, 2021 at 11:21:56AM +0100, Paul Cercueil wrote:
> 
> [...]
> 
> > >  I am not sure; the doc states that this (additionalProperties:
> > > false) "can't
> > >  be used in case where another schema is referenced", which is the
> > > case here,
> > >  as we include "panel-common.yaml".
> > 
> > This DT schema already list all relevant properties like:
> > 
> > 	backlight: true
> > 
> > So "additionalProperties: false" tells that no other properties are
> > allowed other than the listed properties.
> > 
> > To my best understanding unevaluatedProperties: false is less strict and
> > should be used if one does not list all possilbe properties.

Right. There's some value of listing which common properties you are 
using as well.

> > This could be the case for a panel haging below a SPI controller as in
> > this case. So in other words giving this some extra thought I think
> > unevaluatedProperties: false is OK here.
> 
> A panel below a SPI controller would have all its SPI-specific properties
> covered by spi-controller.yaml, I believe? So maybe "additionalProperties:
> false" would work?

No. Because spi-controller.yaml is evaluated on the SPI host node and 
this one is evaluated on the SPI slave. There's some work to address 
this, but it means every SPI slave will have to reference a SPI device 
schema. The bigger issue here is SPI controller specific device 
properties. So for this case, we'll have to use unevaluatedProperties.

> 
> In any case, if I use "additionalProperties: false", "make dt_binding_check"
> complains that my example's "spi-max-frequency" property is not covered. So
> maybe you are right.
> 
> > So my r-b is ok if you keep it as it.
> > 
> > PS. Where do you guys hang out with the downfall of freenode - somewhere
> > on oftc?
> 
> We moved to #opendingux on Libera.
> 
> Cheers,
> -Paul
> 
> 
> 

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

* Re: [PATCH 1/2] dt-bindings: display/panel: Add Innolux EJ030NA
  2021-06-25 12:10 [PATCH 1/2] dt-bindings: display/panel: Add Innolux EJ030NA Paul Cercueil
  2021-06-25 12:10 ` [PATCH 2/2] drm/panel: Add Innolux EJ030NA 3.0" 320x480 panel Paul Cercueil
       [not found] ` <YOk60yTP9L1gT3+W@ravnborg.org>
@ 2021-07-14 20:30 ` Rob Herring
  2 siblings, 0 replies; 8+ messages in thread
From: Rob Herring @ 2021-07-14 20:30 UTC (permalink / raw)
  To: Paul Cercueil
  Cc: linux-kernel, Thierry Reding, Sam Ravnborg, dri-devel,
	Rob Herring, Christophe Branchereau, list, devicetree

On Fri, 25 Jun 2021 13:10:44 +0100, Paul Cercueil wrote:
> Add binding for the Innolux EJ030NA panel, which is a 320x480 3.0" 4:3
> 24-bit TFT LCD panel with non-square pixels and a delta-RGB 8-bit
> interface.
> 
> Signed-off-by: Paul Cercueil <paul@crapouillou.net>
> ---
>  .../display/panel/innolux,ej030na.yaml        | 62 +++++++++++++++++++
>  1 file changed, 62 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/display/panel/innolux,ej030na.yaml
> 

Reviewed-by: Rob Herring <robh@kernel.org>

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

* Re: [PATCH 1/2] dt-bindings: display/panel: Add Innolux EJ030NA
  2021-07-14 20:30         ` Rob Herring
@ 2021-07-14 20:40           ` Paul Cercueil
  0 siblings, 0 replies; 8+ messages in thread
From: Paul Cercueil @ 2021-07-14 20:40 UTC (permalink / raw)
  To: Rob Herring
  Cc: Sam Ravnborg, Thierry Reding, dri-devel, devicetree,
	linux-kernel, list, Christophe Branchereau

Hi Rob,

Le mer., juil. 14 2021 at 14:30:13 -0600, Rob Herring <robh@kernel.org> 
a écrit :
> On Sat, Jul 10, 2021 at 11:21:56AM +0100, Paul Cercueil wrote:
>> 
>>  [...]
>> 
>>  > >  I am not sure; the doc states that this (additionalProperties:
>>  > > false) "can't
>>  > >  be used in case where another schema is referenced", which is 
>> the
>>  > > case here,
>>  > >  as we include "panel-common.yaml".
>>  >
>>  > This DT schema already list all relevant properties like:
>>  >
>>  > 	backlight: true
>>  >
>>  > So "additionalProperties: false" tells that no other properties 
>> are
>>  > allowed other than the listed properties.
>>  >
>>  > To my best understanding unevaluatedProperties: false is less 
>> strict and
>>  > should be used if one does not list all possilbe properties.
> 
> Right. There's some value of listing which common properties you are
> using as well.
> 
>>  > This could be the case for a panel haging below a SPI controller 
>> as in
>>  > this case. So in other words giving this some extra thought I 
>> think
>>  > unevaluatedProperties: false is OK here.
>> 
>>  A panel below a SPI controller would have all its SPI-specific 
>> properties
>>  covered by spi-controller.yaml, I believe? So maybe 
>> "additionalProperties:
>>  false" would work?
> 
> No. Because spi-controller.yaml is evaluated on the SPI host node and
> this one is evaluated on the SPI slave. There's some work to address
> this, but it means every SPI slave will have to reference a SPI device
> schema. The bigger issue here is SPI controller specific device
> properties. So for this case, we'll have to use unevaluatedProperties.

Thank you for the clarification.

Cheers,
-Paul


>> 
>>  In any case, if I use "additionalProperties: false", "make 
>> dt_binding_check"
>>  complains that my example's "spi-max-frequency" property is not 
>> covered. So
>>  maybe you are right.
>> 
>>  > So my r-b is ok if you keep it as it.
>>  >
>>  > PS. Where do you guys hang out with the downfall of freenode - 
>> somewhere
>>  > on oftc?
>> 
>>  We moved to #opendingux on Libera.
>> 
>>  Cheers,
>>  -Paul
>> 
>> 
>> 



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

* Re: [PATCH 2/2] drm/panel: Add Innolux EJ030NA 3.0" 320x480 panel
       [not found]   ` <YOk7xCNes0VTCG21@ravnborg.org>
@ 2021-07-14 20:51     ` Paul Cercueil
  0 siblings, 0 replies; 8+ messages in thread
From: Paul Cercueil @ 2021-07-14 20:51 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: Thierry Reding, Rob Herring, dri-devel, devicetree, linux-kernel,
	list, Christophe Branchereau

Hi Sam,

Le sam., juil. 10 2021 at 08:18:44 +0200, Sam Ravnborg 
<sam@ravnborg.org> a écrit :
> Hi Paul, Christophe,
> 
> On Fri, Jun 25, 2021 at 01:10:45PM +0100, Paul Cercueil wrote:
>>  From: Christophe Branchereau <cbranchereau@gmail.com>
>> 
>>  Add support for the Innolux/Chimei EJ030NA 3.0"
>>  320x480 TFT panel.
>> 
>>  This panel can be found in the LDKs, RS97 V2.1 and RG300 (non IPS)
>>  handheld gaming consoles.
>> 
>>  While being 320x480, it is actually a horizontal 4:3
>>  panel with non-square pixels in delta arrangement.
>> 
>>  Signed-off-by: Christophe Branchereau <cbranchereau@gmail.com>
>>  Signed-off-by: Paul Cercueil <paul@crapouillou.net>
> 
> The drivers looks good.
> Reviewed-by: Sam Ravnborg <sam@ravnborg.org>

Pushed to drm-misc-next.

Thanks for the review!

Cheers,
-Paul



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

end of thread, other threads:[~2021-07-14 20:51 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-25 12:10 [PATCH 1/2] dt-bindings: display/panel: Add Innolux EJ030NA Paul Cercueil
2021-06-25 12:10 ` [PATCH 2/2] drm/panel: Add Innolux EJ030NA 3.0" 320x480 panel Paul Cercueil
     [not found]   ` <YOk7xCNes0VTCG21@ravnborg.org>
2021-07-14 20:51     ` Paul Cercueil
     [not found] ` <YOk60yTP9L1gT3+W@ravnborg.org>
2021-07-10  9:42   ` [PATCH 1/2] dt-bindings: display/panel: Add Innolux EJ030NA Paul Cercueil
     [not found]     ` <YOlvev0nvXVYU01y@ravnborg.org>
2021-07-10 10:21       ` Paul Cercueil
2021-07-14 20:30         ` Rob Herring
2021-07-14 20:40           ` Paul Cercueil
2021-07-14 20:30 ` Rob Herring

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).