Add support for rm69299 Visionox panel driver and add devicetree bindings for visionox panel
Subsystems (5)
v11 cover Add support for rm69299 Visionox panel driver and add devicetree bindings for visionox panel
Adding support for visionox rm69299 panel driver and adding bindings for the same panel.
https://patchwork.kernel.org/patch/11461943/ has already been added to drm-misc-next.
Harigovindan P (2):
drm/panel: add support for rm69299 visionox panel driver
dt-bindings: documenting compatible string vendor "visionox"
.../devicetree/bindings/vendor-prefixes.yaml | 2 + drivers/gpu/drm/panel/Kconfig | 8 + drivers/gpu/drm/panel/Makefile | 1 + .../gpu/drm/panel/panel-visionox-rm69299.c | 304 ++++++++++++++++++ 4 files changed, 315 insertions(+) create mode 100644 drivers/gpu/drm/panel/panel-visionox-rm69299.c
Signature · 1 line
2.25.1
PATCH v11 1/2 drm/panel: add support for rm69299 visionox panel driver
Add support for Visionox panel driver.
---
Changes in v2:
- Dropping redundant space in Kconfig(Sam Ravnborg).
- Changing structure for include files(Sam Ravnborg).
- Removing backlight related code and functions(Sam Ravnborg).
- Removing repeated printing of error message(Sam Ravnborg).
- Adding drm_connector as an argument for get_modes function.
Changes in v3:
- Adding arguments for drm_panel_init to support against mainline.
Changes in v4:
- Removing error messages from regulator_set_load.
- Removing dev struct entry.
- Removing checks.
- Dropping empty comment lines.
Changes in v5:
- Removing unused struct member variables.
- Removing blank lines.
- Fixed indentation.
- Invoking dsi_detach and panel_remove while early exiting from probe.
Changes in v6:
- Changed "35597" to "rm69299" for power_on function.
- Removing rm69299_config since it supports single type of panel for now.
- Fixed alignment.
- Using goto statements when regulator_set_load fails.
Changes in v7:
- Added new goto statement when regulator_set_load fails.
Changes in v8,v9,v10:
- Had changes in first patch, did not make any change in panel driver.
Changes in v11:
- Fixing checkpatch script errors.
- Updated assignment of panel.dev property in probe.
drivers/gpu/drm/panel/Kconfig | 8 + drivers/gpu/drm/panel/Makefile | 1 + .../gpu/drm/panel/panel-visionox-rm69299.c | 304 ++++++++++++++++++ 3 files changed, 313 insertions(+) create mode 100644 drivers/gpu/drm/panel/panel-visionox-rm69299.c
drivers/gpu/drm/panel/Kconfig +8 -0
@@ -444,6 +444,14 @@ config DRM_PANEL_TRULY_NT35597_WQXGA Say Y here if you want to enable support for Truly NT35597 WQXGA Dual DSI Video Mode panel +config DRM_PANEL_VISIONOX_RM69299 + tristate "Visionox RM69299" + depends on OF + depends on DRM_MIPI_DSI + help + Say Y here if you want to enable support for Visionox + RM69299 DSI Video Mode panel. + config DRM_PANEL_XINPENG_XPP055C272 tristate "Xinpeng XPP055C272 panel driver" depends on OF
drivers/gpu/drm/panel/Makefile +1 -0
@@ -47,4 +47,5 @@ obj-$(CONFIG_DRM_PANEL_TPO_TD028TTEC1) += panel-tpo-td028ttec1.o obj-$(CONFIG_DRM_PANEL_TPO_TD043MTEA1) += panel-tpo-td043mtea1.o obj-$(CONFIG_DRM_PANEL_TPO_TPG110) += panel-tpo-tpg110.o obj-$(CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA) += panel-truly-nt35597.o +obj-$(CONFIG_DRM_PANEL_VISIONOX_RM69299) += panel-visionox-rm69299.o obj-$(CONFIG_DRM_PANEL_XINPENG_XPP055C272) += panel-xinpeng-xpp055c272.o
drivers/gpu/drm/panel/panel-visionox-rm69299.c new file +303 -0
303 lines not on this page · raw message
Signature · 1 line
2.25.1
Re: [PATCH v11 1/2] drm/panel: add support for rm69299 visionox panel driver
Hi,
Quoted 3 lines · Harigovindan P
Add support for Visionox panel driver.
Signed-off-by Harigovindan P <[email protected]>
Please keep tags from previous versions (like my Reviewed-by from v7) when making minimal changes.
Also there is no need to keep sending the bindings patch, it already landed in drm-misc.
Quoted 5 lines
drivers/gpu/drm/panel/panel-visionox-rm69299.c new file +0
-0
...
Quoted 3 lines
+MODULE_DESCRIPTION("Visionox RM69299 DSI Panel Driver");
Signature · 1 line
2.25.1
The last two lines break the patch:
git am /tmp/v11-1-2-drm-panel-add-support-for-rm69299-visionox-panel-driver.patch
Applying: drm/panel: add support for rm69299 visionox panel driver
error: corrupt patch at line 379
Patch failed at 0001 drm/panel: add support for rm69299 visionox panel driver
Besides the broken format:
Re: [PATCH v11 1/2] drm/panel: add support for rm69299 visionox panel driver
In reply to Harigovindan PHi Harigovindan
Quoted 4 lines · Harigovindan P
Add support for Visionox panel driver.
Signed-off-by Harigovindan P <[email protected]>Reviewed-by Matthias Kaehlcke <[email protected]>
Thanks for your persistence on this.
Patch applied.
I fixed a few lingering --strict releated checkpatch warnings when I applied.
Sam
Quoted 384 lines
---
Changes in v2:
- Dropping redundant space in Kconfig(Sam Ravnborg).
- Changing structure for include files(Sam Ravnborg).
- Removing backlight related code and functions(Sam Ravnborg).
- Removing repeated printing of error message(Sam Ravnborg).
- Addingdrm_connectoras an argument forget_modesfunction.
Changes in v3:
- Adding arguments fordrm_panel_initto support against mainline.
Changes in v4:
- Removing error messages fromregulator_set_load.
- Removing dev struct entry.
- Removing checks.
- Dropping empty comment lines.
Changes in v5:
- Removing unused struct member variables.
- Removing blank lines.
- Fixed indentation.
- Invokingdsi_detachandpanel_removewhile early exiting from probe.
Changes in v6:
- Changed "35597" to "rm69299" forpower_onfunction.
- Removingrm69299_configsince it supports single type of panel for now.
- Fixed alignment.
- Using goto statements whenregulator_set_loadfails.
Changes in v7:
- Added new goto statement whenregulator_set_loadfails.
Changes in v8,v9,v10:
- Had changes in first patch, did not make any change in panel driver.
Changes in v11:
- Fixing checkpatch script errors.
- Updated assignment of panel.dev property in probe.drivers/gpu/drm/panel/Kconfig | 8 + drivers/gpu/drm/panel/Makefile | 1 + .../gpu/drm/panel/panel-visionox-rm69299.c | 304 ++++++++++++++++++ 3 files changed, 313 insertions(+) create mode 100644 drivers/gpu/drm/panel/panel-visionox-rm69299.cdrivers/gpu/drm/panel/Kconfig +8
-0@@ -444,6 +444,14 @@ config DRM_PANEL_TRULY_NT35597_WQXGA Say Y here if you want to enable support for Truly NT35597 WQXGA Dual DSI Video Mode panel +config DRM_PANEL_VISIONOX_RM69299 + tristate "Visionox RM69299" + depends on OF + depends on DRM_MIPI_DSI + help + Say Y here if you want to enable support for Visionox + RM69299 DSI Video Mode panel. + config DRM_PANEL_XINPENG_XPP055C272 tristate "Xinpeng XPP055C272 panel driver" depends on OFdrivers/gpu/drm/panel/Makefile +1
-0@@ -47,4 +47,5 @@ obj-$(CONFIG_DRM_PANEL_TPO_TD028TTEC1) += panel-tpo-td028ttec1.o obj-$(CONFIG_DRM_PANEL_TPO_TD043MTEA1) += panel-tpo-td043mtea1.o obj-$(CONFIG_DRM_PANEL_TPO_TPG110) += panel-tpo-tpg110.o obj-$(CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA) += panel-truly-nt35597.o +obj-$(CONFIG_DRM_PANEL_VISIONOX_RM69299) += panel-visionox-rm69299.o obj-$(CONFIG_DRM_PANEL_XINPENG_XPP055C272) += panel-xinpeng-xpp055c272.odrivers/gpu/drm/panel/panel-visionox-rm69299.c new file +304
-0@@ -0,0 +1,304 @@ +// SPDX-License-Identifier: GPL-2.0 +/* +* Copyright (c) 2019, The Linux Foundation. All rights reserved. +*/ + +#include <linux/delay.h> +#include <linux/module.h> +#include <linux/of_device.h> +#include <linux/gpio/consumer.h> +#include <linux/regulator/consumer.h> + +#include <video/mipi_display.h> + +#include <drm/drm_mipi_dsi.h> +#include <drm/drm_modes.h> +#include <drm/drm_panel.h> +#include <drm/drm_print.h> + +struct visionox_rm69299 { +struct drm_panel panel; +struct regulator_bulk_data supplies[2 ]; +struct gpio_desc *reset_gpio; +struct mipi_dsi_device *dsi; +bool prepared; +bool enabled; +}; + +static inline struct visionox_rm69299 *panel_to_ctx (struct drm_panel *panel) +{ + return container_of(panel, struct visionox_rm69299, panel); +} + +static int visionox_rm69299_power_on (struct visionox_rm69299 *ctx) +{ +int ret; + + ret =regulator_bulk_enable (ARRAY_SIZE (ctx->supplies), ctx->supplies); +if (ret <0 ) +return ret; + +/* +* Reset sequence of visionox panel requires the panel to be +* out of reset for 10ms, followed by being held in reset +* for 10ms and then out again +*/ +gpiod_set_value (ctx->reset_gpio,1 ); +usleep_range (10000 ,20000 ); +gpiod_set_value (ctx->reset_gpio,0 ); +usleep_range (10000 ,20000 ); +gpiod_set_value (ctx->reset_gpio,1 ); +usleep_range (10000 ,20000 ); + +return 0 ; +} + +static int visionox_rm69299_power_off (struct visionox_rm69299 *ctx) +{ +gpiod_set_value (ctx->reset_gpio,0 ); + +return regulator_bulk_disable (ARRAY_SIZE (ctx->supplies), ctx->supplies); +} + +static int visionox_rm69299_unprepare (struct drm_panel *panel) +{ +struct visionox_rm69299 *ctx =panel_to_ctx (panel); +int ret; + + ctx->dsi->mode_flags =0 ; + + ret =mipi_dsi_dcs_write (ctx->dsi,MIPI_DCS_SET_DISPLAY_OFF ,NULL ,0 ); +if (ret <0 ) +DRM_DEV_ERROR (ctx->panel.dev, +"set_display_off cmd failed ret = %d\n" , ret); + +/* 120ms delay required here as per DCS spec */ +msleep (120 ); + + ret =mipi_dsi_dcs_write (ctx->dsi,MIPI_DCS_ENTER_SLEEP_MODE ,NULL ,0 ); +if (ret <0 ) { +DRM_DEV_ERROR (ctx->panel.dev, +"enter_sleep cmd failed ret = %d\n" , ret); + } + + ret =visionox_rm69299_power_off (ctx); + + ctx->prepared = false; +return ret; +} + +static int visionox_rm69299_prepare (struct drm_panel *panel) +{ +struct visionox_rm69299 *ctx =panel_to_ctx (panel); +int ret; + +if (ctx->prepared) +return 0 ; + + ret =visionox_rm69299_power_on (ctx); +if (ret <0 ) +return ret; + + ctx->dsi->mode_flags |=MIPI_DSI_MODE_LPM ; + + ret =mipi_dsi_dcs_write_buffer (ctx->dsi, (u8 []){0xfe ,0x00 },2 ); +if (ret <0 ) { +DRM_DEV_ERROR (ctx->panel.dev, +"cmd set tx 0 failed, ret = %d\n" , ret); + goto power_off; + } + + ret =mipi_dsi_dcs_write_buffer (ctx->dsi, (u8 []){0xc2 ,0x08 },2 ); +if (ret <0 ) { +DRM_DEV_ERROR (ctx->panel.dev, +"cmd set tx 1 failed, ret = %d\n" , ret); + goto power_off; + } + + ret =mipi_dsi_dcs_write_buffer (ctx->dsi, (u8 []){0x35 ,0x00 },2 ); +if (ret <0 ) { +DRM_DEV_ERROR (ctx->panel.dev, +"cmd set tx 2 failed, ret = %d\n" , ret); + goto power_off; + } + + ret =mipi_dsi_dcs_write_buffer (ctx->dsi, (u8 []){0x51 ,0xff },2 ); +if (ret <0 ) { +DRM_DEV_ERROR (ctx->panel.dev, +"cmd set tx 3 failed, ret = %d\n" , ret); + goto power_off; + } + + ret =mipi_dsi_dcs_write (ctx->dsi,MIPI_DCS_EXIT_SLEEP_MODE ,NULL ,0 ); +if (ret <0 ) { +DRM_DEV_ERROR (ctx->panel.dev, +"exit_sleep_mode cmd failed ret = %d\n" , ret); + goto power_off; + } + +/* Per DSI spec wait 120ms after sending exit sleep DCS command */ +msleep (120 ); + + ret =mipi_dsi_dcs_write (ctx->dsi,MIPI_DCS_SET_DISPLAY_ON ,NULL ,0 ); +if (ret <0 ) { +DRM_DEV_ERROR (ctx->panel.dev, +"set_display_on cmd failed ret = %d\n" , ret); + goto power_off; + } + +/* Per DSI spec wait 120ms after sending set_display_on DCS command */ +msleep (120 ); + + ctx->prepared = true; + +return 0 ; + +power_off: +return ret; +} + +static const struct drm_display_mode visionox_rm69299_1080x2248_60hz = { + .name ="1080x2248" , + .clock =158695 , + .hdisplay =1080 , + .hsync_start =1080 +26 , + .hsync_end =1080 +26 +2 , + .htotal =1080 +26 +2 +36 , + .vdisplay =2248 , + .vsync_start =2248 +56 , + .vsync_end =2248 +56 +4 , + .vtotal =2248 +56 +4 +4 , + .vrefresh =60 , + .flags =0 , +}; + +static int visionox_rm69299_get_modes (struct drm_panel *panel, +struct drm_connector *connector) +{ +struct visionox_rm69299 *ctx =panel_to_ctx (panel); +struct drm_display_mode *mode; + + mode =drm_mode_create (connector->dev); +if (!mode) { +DRM_DEV_ERROR (ctx->panel.dev, +"failed to create a new display mode\n" ); +return 0 ; + } + + connector->display_info.width_mm =74 ; + connector->display_info.height_mm =131 ; +drm_mode_copy (mode, &visionox_rm69299_1080x2248_60hz); + mode->type =DRM_MODE_TYPE_DRIVER |DRM_MODE_TYPE_PREFERRED ; +drm_mode_probed_add (connector, mode); + +return 1 ; +} + +static const struct drm_panel_funcs visionox_rm69299_drm_funcs = { + .unprepare = visionox_rm69299_unprepare, + .prepare = visionox_rm69299_prepare, + .get_modes = visionox_rm69299_get_modes, +}; + +static int visionox_rm69299_probe (struct mipi_dsi_device *dsi) +{ +struct device *dev = &dsi->dev; +struct visionox_rm69299 *ctx; +int ret; + + ctx =devm_kzalloc (dev,sizeof (*ctx),GFP_KERNEL ); +if (!ctx) +return -ENOMEM ; + +mipi_dsi_set_drvdata (dsi, ctx); + + ctx->panel.dev = dev; + ctx->dsi = dsi; + + ctx->supplies[0 ].supply ="vdda" ; + ctx->supplies[1 ].supply ="vdd3p3" ; + + ret =devm_regulator_bulk_get (ctx->panel.dev,ARRAY_SIZE (ctx->supplies), + ctx->supplies); +if (ret <0 ) +return ret; + + ctx->reset_gpio =devm_gpiod_get (ctx->panel.dev, +"reset" ,GPIOD_OUT_LOW ); +if (IS_ERR (ctx->reset_gpio)) { +DRM_DEV_ERROR (dev,"cannot get reset gpio %ld\n" , +PTR_ERR (ctx->reset_gpio)); +return PTR_ERR (ctx->reset_gpio); + } + +drm_panel_init (&ctx->panel, dev, &visionox_rm69299_drm_funcs, +DRM_MODE_CONNECTOR_DSI ); + ctx->panel.dev = dev; + ctx->panel.funcs = &visionox_rm69299_drm_funcs; +drm_panel_add (&ctx->panel); + + dsi->lanes =4 ; + dsi->format =MIPI_DSI_FMT_RGB888 ; + dsi->mode_flags =MIPI_DSI_MODE_VIDEO |MIPI_DSI_MODE_LPM | +MIPI_DSI_CLOCK_NON_CONTINUOUS ; + ret =mipi_dsi_attach (dsi); +if (ret <0 ) { +DRM_DEV_ERROR (dev,"dsi attach failed ret = %d\n" , ret); + goto err_dsi_attach; + } + + ret =regulator_set_load (ctx->supplies[0 ].consumer,32000 ); +if (ret) { +DRM_DEV_ERROR (dev, +"regulator set load failed for vdda supply ret = %d\n" , + ret); + goto err_set_load; + } + + ret =regulator_set_load (ctx->supplies[1 ].consumer,13200 ); +if (ret) { +DRM_DEV_ERROR (dev, +"regulator set load failed for vdd3p3 supply ret = %d\n" , + ret); + goto err_set_load; + } + +return 0 ; + +err_set_load: +mipi_dsi_detach (dsi); +err_dsi_attach: +drm_panel_remove (&ctx->panel); +return ret; +} + +static int visionox_rm69299_remove (struct mipi_dsi_device *dsi) +{ +struct visionox_rm69299 *ctx =mipi_dsi_get_drvdata (dsi); + +mipi_dsi_detach (ctx->dsi); +mipi_dsi_device_unregister (ctx->dsi); + +drm_panel_remove (&ctx->panel); +return 0 ; +} + +static const struct of_device_id visionox_rm69299_of_match[] = { + { + .compatible ="visionox,rm69299-1080p-display" , + } +}; +MODULE_DEVICE_TABLE (of, visionox_rm69299_of_match); + +static struct mipi_dsi_driver visionox_rm69299_driver = { + .driver = { + .name ="panel-visionox-rm69299" , + .of_match_table = visionox_rm69299_of_match, + }, + .probe = visionox_rm69299_probe, + .remove = visionox_rm69299_remove, +}; +module_mipi_dsi_driver (visionox_rm69299_driver); + +MODULE_DESCRIPTION ("Visionox RM69299 DSI Panel Driver" ); +Signature · 5 lines
2.25.1 _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel
Dave Airlie
maintainerRe: [PATCH v11 1/2] drm/panel: add support for rm69299 visionox panel driver
Quoted 9 lines · Sam Ravnborg
Hi Harigovindan
Quoted 4 lines · Harigovindan P
Add support for Visionox panel driver.
Signed-off-by Harigovindan P <[email protected]>Reviewed-by Matthias Kaehlcke <[email protected]>
Quoted 7 lines
Thanks for your persistence on this.
Patch applied.I fixed a few lingering --strict releated checkpatch warnings when I applied.
Sam
I'm seeing
WARNING: modpost: missing MODULE_LICENSE() indrivers/gpu/drm/panel/panel-visionox-rm69299.o
Can we fix that up?
Dave.
Quoted 389 lines
Quoted 380 lines
---
Changes in v2:
- Dropping redundant space in Kconfig(Sam Ravnborg).
- Changing structure for include files(Sam Ravnborg).
- Removing backlight related code and functions(Sam Ravnborg).
- Removing repeated printing of error message(Sam Ravnborg).
- Addingdrm_connectoras an argument forget_modesfunction.
Changes in v3:
- Adding arguments fordrm_panel_initto support against mainline.
Changes in v4:
- Removing error messages fromregulator_set_load.
- Removing dev struct entry.
- Removing checks.
- Dropping empty comment lines.
Changes in v5:
- Removing unused struct member variables.
- Removing blank lines.
- Fixed indentation.
- Invokingdsi_detachandpanel_removewhile early exiting from probe.
Changes in v6:
- Changed "35597" to "rm69299" forpower_onfunction.
- Removingrm69299_configsince it supports single type of panel for now.
- Fixed alignment.
- Using goto statements whenregulator_set_loadfails.
Changes in v7:
- Added new goto statement whenregulator_set_loadfails.
Changes in v8,v9,v10:
- Had changes in first patch, did not make any change in panel driver.
Changes in v11:
- Fixing checkpatch script errors.
- Updated assignment of panel.dev property in probe.drivers/gpu/drm/panel/Kconfig | 8 + drivers/gpu/drm/panel/Makefile | 1 + .../gpu/drm/panel/panel-visionox-rm69299.c | 304 ++++++++++++++++++ 3 files changed, 313 insertions(+) create mode 100644 drivers/gpu/drm/panel/panel-visionox-rm69299.cdrivers/gpu/drm/panel/Kconfig +8
-0@@ -444,6 +444,14 @@ config DRM_PANEL_TRULY_NT35597_WQXGA Say Y here if you want to enable support for Truly NT35597 WQXGA Dual DSI Video Mode panel +config DRM_PANEL_VISIONOX_RM69299 + tristate "Visionox RM69299" + depends on OF + depends on DRM_MIPI_DSI + help + Say Y here if you want to enable support for Visionox + RM69299 DSI Video Mode panel. + config DRM_PANEL_XINPENG_XPP055C272 tristate "Xinpeng XPP055C272 panel driver" depends on OFdrivers/gpu/drm/panel/Makefile +1
-0@@ -47,4 +47,5 @@ obj-$(CONFIG_DRM_PANEL_TPO_TD028TTEC1) += panel-tpo-td028ttec1.o obj-$(CONFIG_DRM_PANEL_TPO_TD043MTEA1) += panel-tpo-td043mtea1.o obj-$(CONFIG_DRM_PANEL_TPO_TPG110) += panel-tpo-tpg110.o obj-$(CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA) += panel-truly-nt35597.o +obj-$(CONFIG_DRM_PANEL_VISIONOX_RM69299) += panel-visionox-rm69299.o obj-$(CONFIG_DRM_PANEL_XINPENG_XPP055C272) += panel-xinpeng-xpp055c272.odrivers/gpu/drm/panel/panel-visionox-rm69299.c new file +304
-1@@ -0,0 +1,304 @@ +// SPDX-License-Identifier: GPL-2.0 +/* +* Copyright (c) 2019, The Linux Foundation. All rights reserved. +*/ + +#include <linux/delay.h> +#include <linux/module.h> +#include <linux/of_device.h> +#include <linux/gpio/consumer.h> +#include <linux/regulator/consumer.h> + +#include <video/mipi_display.h> + +#include <drm/drm_mipi_dsi.h> +#include <drm/drm_modes.h> +#include <drm/drm_panel.h> +#include <drm/drm_print.h> + +struct visionox_rm69299 { +struct drm_panel panel; +struct regulator_bulk_data supplies[2 ]; +struct gpio_desc *reset_gpio; +struct mipi_dsi_device *dsi; +bool prepared; +bool enabled; +}; + +static inline struct visionox_rm69299 *panel_to_ctx (struct drm_panel *panel) +{ + return container_of(panel, struct visionox_rm69299, panel); +} + +static int visionox_rm69299_power_on (struct visionox_rm69299 *ctx) +{ +int ret; + + ret =regulator_bulk_enable (ARRAY_SIZE (ctx->supplies), ctx->supplies); +if (ret <0 ) +return ret; + +/* +* Reset sequence of visionox panel requires the panel to be +* out of reset for 10ms, followed by being held in reset +* for 10ms and then out again +*/ +gpiod_set_value (ctx->reset_gpio,1 ); +usleep_range (10000 ,20000 ); +gpiod_set_value (ctx->reset_gpio,0 ); +usleep_range (10000 ,20000 ); +gpiod_set_value (ctx->reset_gpio,1 ); +usleep_range (10000 ,20000 ); + +return 0 ; +} + +static int visionox_rm69299_power_off (struct visionox_rm69299 *ctx) +{ +gpiod_set_value (ctx->reset_gpio,0 ); + +return regulator_bulk_disable (ARRAY_SIZE (ctx->supplies), ctx->supplies); +} + +static int visionox_rm69299_unprepare (struct drm_panel *panel) +{ +struct visionox_rm69299 *ctx =panel_to_ctx (panel); +int ret; + + ctx->dsi->mode_flags =0 ; + + ret =mipi_dsi_dcs_write (ctx->dsi,MIPI_DCS_SET_DISPLAY_OFF ,NULL ,0 ); +if (ret <0 ) +DRM_DEV_ERROR (ctx->panel.dev, +"set_display_off cmd failed ret = %d\n" , ret); + +/* 120ms delay required here as per DCS spec */ +msleep (120 ); + + ret =mipi_dsi_dcs_write (ctx->dsi,MIPI_DCS_ENTER_SLEEP_MODE ,NULL ,0 ); +if (ret <0 ) { +DRM_DEV_ERROR (ctx->panel.dev, +"enter_sleep cmd failed ret = %d\n" , ret); + } + + ret =visionox_rm69299_power_off (ctx); + + ctx->prepared = false; +return ret; +} + +static int visionox_rm69299_prepare (struct drm_panel *panel) +{ +struct visionox_rm69299 *ctx =panel_to_ctx (panel); +int ret; + +if (ctx->prepared) +return 0 ; + + ret =visionox_rm69299_power_on (ctx); +if (ret <0 ) +return ret; + + ctx->dsi->mode_flags |=MIPI_DSI_MODE_LPM ; + + ret =mipi_dsi_dcs_write_buffer (ctx->dsi, (u8 []){0xfe ,0x00 },2 ); +if (ret <0 ) { +DRM_DEV_ERROR (ctx->panel.dev, +"cmd set tx 0 failed, ret = %d\n" , ret); + goto power_off; + } + + ret =mipi_dsi_dcs_write_buffer (ctx->dsi, (u8 []){0xc2 ,0x08 },2 ); +if (ret <0 ) { +DRM_DEV_ERROR (ctx->panel.dev, +"cmd set tx 1 failed, ret = %d\n" , ret); + goto power_off; + } + + ret =mipi_dsi_dcs_write_buffer (ctx->dsi, (u8 []){0x35 ,0x00 },2 ); +if (ret <0 ) { +DRM_DEV_ERROR (ctx->panel.dev, +"cmd set tx 2 failed, ret = %d\n" , ret); + goto power_off; + } + + ret =mipi_dsi_dcs_write_buffer (ctx->dsi, (u8 []){0x51 ,0xff },2 ); +if (ret <0 ) { +DRM_DEV_ERROR (ctx->panel.dev, +"cmd set tx 3 failed, ret = %d\n" , ret); + goto power_off; + } + + ret =mipi_dsi_dcs_write (ctx->dsi,MIPI_DCS_EXIT_SLEEP_MODE ,NULL ,0 ); +if (ret <0 ) { +DRM_DEV_ERROR (ctx->panel.dev, +"exit_sleep_mode cmd failed ret = %d\n" , ret); + goto power_off; + } + +/* Per DSI spec wait 120ms after sending exit sleep DCS command */ +msleep (120 ); + + ret =mipi_dsi_dcs_write (ctx->dsi,MIPI_DCS_SET_DISPLAY_ON ,NULL ,0 ); +if (ret <0 ) { +DRM_DEV_ERROR (ctx->panel.dev, +"set_display_on cmd failed ret = %d\n" , ret); + goto power_off; + } + +/* Per DSI spec wait 120ms after sending set_display_on DCS command */ +msleep (120 ); + + ctx->prepared = true; + +return 0 ; + +power_off: +return ret; +} + +static const struct drm_display_mode visionox_rm69299_1080x2248_60hz = { + .name ="1080x2248" , + .clock =158695 , + .hdisplay =1080 , + .hsync_start =1080 +26 , + .hsync_end =1080 +26 +2 , + .htotal =1080 +26 +2 +36 , + .vdisplay =2248 , + .vsync_start =2248 +56 , + .vsync_end =2248 +56 +4 , + .vtotal =2248 +56 +4 +4 , + .vrefresh =60 , + .flags =0 , +}; + +static int visionox_rm69299_get_modes (struct drm_panel *panel, +struct drm_connector *connector) +{ +struct visionox_rm69299 *ctx =panel_to_ctx (panel); +struct drm_display_mode *mode; + + mode =drm_mode_create (connector->dev); +if (!mode) { +DRM_DEV_ERROR (ctx->panel.dev, +"failed to create a new display mode\n" ); +return 0 ; + } + + connector->display_info.width_mm =74 ; + connector->display_info.height_mm =131 ; +drm_mode_copy (mode, &visionox_rm69299_1080x2248_60hz); + mode->type =DRM_MODE_TYPE_DRIVER |DRM_MODE_TYPE_PREFERRED ; +drm_mode_probed_add (connector, mode); + +return 1 ; +} + +static const struct drm_panel_funcs visionox_rm69299_drm_funcs = { + .unprepare = visionox_rm69299_unprepare, + .prepare = visionox_rm69299_prepare, + .get_modes = visionox_rm69299_get_modes, +}; + +static int visionox_rm69299_probe (struct mipi_dsi_device *dsi) +{ +struct device *dev = &dsi->dev; +struct visionox_rm69299 *ctx; +int ret; + + ctx =devm_kzalloc (dev,sizeof (*ctx),GFP_KERNEL ); +if (!ctx) +return -ENOMEM ; + +mipi_dsi_set_drvdata (dsi, ctx); + + ctx->panel.dev = dev; + ctx->dsi = dsi; + + ctx->supplies[0 ].supply ="vdda" ; + ctx->supplies[1 ].supply ="vdd3p3" ; + + ret =devm_regulator_bulk_get (ctx->panel.dev,ARRAY_SIZE (ctx->supplies), + ctx->supplies); +if (ret <0 ) +return ret; + + ctx->reset_gpio =devm_gpiod_get (ctx->panel.dev, +"reset" ,GPIOD_OUT_LOW ); +if (IS_ERR (ctx->reset_gpio)) { +DRM_DEV_ERROR (dev,"cannot get reset gpio %ld\n" , +PTR_ERR (ctx->reset_gpio)); +return PTR_ERR (ctx->reset_gpio); + } + +drm_panel_init (&ctx->panel, dev, &visionox_rm69299_drm_funcs, +DRM_MODE_CONNECTOR_DSI ); + ctx->panel.dev = dev; + ctx->panel.funcs = &visionox_rm69299_drm_funcs; +drm_panel_add (&ctx->panel); + + dsi->lanes =4 ; + dsi->format =MIPI_DSI_FMT_RGB888 ; + dsi->mode_flags =MIPI_DSI_MODE_VIDEO |MIPI_DSI_MODE_LPM | +MIPI_DSI_CLOCK_NON_CONTINUOUS ; + ret =mipi_dsi_attach (dsi); +if (ret <0 ) { +DRM_DEV_ERROR (dev,"dsi attach failed ret = %d\n" , ret); + goto err_dsi_attach; + } + + ret =regulator_set_load (ctx->supplies[0 ].consumer,32000 ); +if (ret) { +DRM_DEV_ERROR (dev, +"regulator set load failed for vdda supply ret = %d\n" , + ret); + goto err_set_load; + } + + ret =regulator_set_load (ctx->supplies[1 ].consumer,13200 ); +if (ret) { +DRM_DEV_ERROR (dev, +"regulator set load failed for vdd3p3 supply ret = %d\n" , + ret); + goto err_set_load; + } + +return 0 ; + +err_set_load: +mipi_dsi_detach (dsi); +err_dsi_attach: +drm_panel_remove (&ctx->panel); +return ret; +} + +static int visionox_rm69299_remove (struct mipi_dsi_device *dsi) +{ +struct visionox_rm69299 *ctx =mipi_dsi_get_drvdata (dsi); + +mipi_dsi_detach (ctx->dsi); +mipi_dsi_device_unregister (ctx->dsi); + +drm_panel_remove (&ctx->panel); +return 0 ; +} + +static const struct of_device_id visionox_rm69299_of_match[] = { + { + .compatible ="visionox,rm69299-1080p-display" , + } +}; +MODULE_DEVICE_TABLE (of, visionox_rm69299_of_match); + +static struct mipi_dsi_driver visionox_rm69299_driver = { + .driver = { + .name ="panel-visionox-rm69299" , + .of_match_table = visionox_rm69299_of_match, + }, + .probe = visionox_rm69299_probe, + .remove = visionox_rm69299_remove, +}; +module_mipi_dsi_driver (visionox_rm69299_driver); + +MODULE_DESCRIPTION ("Visionox RM69299 DSI Panel Driver" ); + --Quoted 5 lines
2.25.1
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel
Re: [PATCH v11 1/2] drm/panel: add support for rm69299 visionox panel driver
Hi Dave.
Quoted 16 lines · Dave Airlie
Quoted 15 lines · Sam Ravnborg
Hi Harigovindan
Quoted 4 lines · Harigovindan P
Add support for Visionox panel driver.
Signed-off-by Harigovindan P <[email protected]>Reviewed-by Matthias Kaehlcke <[email protected]>Thanks for your persistence on this.
Patch applied.I fixed a few lingering --strict releated checkpatch warnings when I applied.
Quoted 8 lines
Quoted 1 line
Sam
I'm seeing
WARNING: modpost: missing
MODULE_LICENSE()indrivers/gpu/drm/panel/panel-visionox-rm69299.oCan we fix that up?
The patch is in drm-misc-next:e41b49b7e4d4ad9755af4813a57b5f6a09e357d7
"drm: panel: add MODULE_LICENSE to panel-visionox-rm69299.c"
Holler if this does not fix it or we need to expedit it somehow.
Sam
Quoted 392 lines
Dave.
Quoted 389 lines
Quoted 380 lines
---
Changes in v2:
- Dropping redundant space in Kconfig(Sam Ravnborg).
- Changing structure for include files(Sam Ravnborg).
- Removing backlight related code and functions(Sam Ravnborg).
- Removing repeated printing of error message(Sam Ravnborg).
- Addingdrm_connectoras an argument forget_modesfunction.
Changes in v3:
- Adding arguments fordrm_panel_initto support against mainline.
Changes in v4:
- Removing error messages fromregulator_set_load.
- Removing dev struct entry.
- Removing checks.
- Dropping empty comment lines.
Changes in v5:
- Removing unused struct member variables.
- Removing blank lines.
- Fixed indentation.
- Invokingdsi_detachandpanel_removewhile early exiting from probe.
Changes in v6:
- Changed "35597" to "rm69299" forpower_onfunction.
- Removingrm69299_configsince it supports single type of panel for now.
- Fixed alignment.
- Using goto statements whenregulator_set_loadfails.
Changes in v7:
- Added new goto statement whenregulator_set_loadfails.
Changes in v8,v9,v10:
- Had changes in first patch, did not make any change in panel driver.
Changes in v11:
- Fixing checkpatch script errors.
- Updated assignment of panel.dev property in probe.drivers/gpu/drm/panel/Kconfig | 8 + drivers/gpu/drm/panel/Makefile | 1 + .../gpu/drm/panel/panel-visionox-rm69299.c | 304 ++++++++++++++++++ 3 files changed, 313 insertions(+) create mode 100644 drivers/gpu/drm/panel/panel-visionox-rm69299.cdrivers/gpu/drm/panel/Kconfig +8
-0@@ -444,6 +444,14 @@ config DRM_PANEL_TRULY_NT35597_WQXGA Say Y here if you want to enable support for Truly NT35597 WQXGA Dual DSI Video Mode panel +config DRM_PANEL_VISIONOX_RM69299 + tristate "Visionox RM69299" + depends on OF + depends on DRM_MIPI_DSI + help + Say Y here if you want to enable support for Visionox + RM69299 DSI Video Mode panel. + config DRM_PANEL_XINPENG_XPP055C272 tristate "Xinpeng XPP055C272 panel driver" depends on OFdrivers/gpu/drm/panel/Makefile +1
-0@@ -47,4 +47,5 @@ obj-$(CONFIG_DRM_PANEL_TPO_TD028TTEC1) += panel-tpo-td028ttec1.o obj-$(CONFIG_DRM_PANEL_TPO_TD043MTEA1) += panel-tpo-td043mtea1.o obj-$(CONFIG_DRM_PANEL_TPO_TPG110) += panel-tpo-tpg110.o obj-$(CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA) += panel-truly-nt35597.o +obj-$(CONFIG_DRM_PANEL_VISIONOX_RM69299) += panel-visionox-rm69299.o obj-$(CONFIG_DRM_PANEL_XINPENG_XPP055C272) += panel-xinpeng-xpp055c272.odrivers/gpu/drm/panel/panel-visionox-rm69299.c new file +304
-1@@ -0,0 +1,304 @@ +// SPDX-License-Identifier: GPL-2.0 +/* +* Copyright (c) 2019, The Linux Foundation. All rights reserved. +*/ + +#include <linux/delay.h> +#include <linux/module.h> +#include <linux/of_device.h> +#include <linux/gpio/consumer.h> +#include <linux/regulator/consumer.h> + +#include <video/mipi_display.h> + +#include <drm/drm_mipi_dsi.h> +#include <drm/drm_modes.h> +#include <drm/drm_panel.h> +#include <drm/drm_print.h> + +struct visionox_rm69299 { +struct drm_panel panel; +struct regulator_bulk_data supplies[2 ]; +struct gpio_desc *reset_gpio; +struct mipi_dsi_device *dsi; +bool prepared; +bool enabled; +}; + +static inline struct visionox_rm69299 *panel_to_ctx (struct drm_panel *panel) +{ + return container_of(panel, struct visionox_rm69299, panel); +} + +static int visionox_rm69299_power_on (struct visionox_rm69299 *ctx) +{ +int ret; + + ret =regulator_bulk_enable (ARRAY_SIZE (ctx->supplies), ctx->supplies); +if (ret <0 ) +return ret; + +/* +* Reset sequence of visionox panel requires the panel to be +* out of reset for 10ms, followed by being held in reset +* for 10ms and then out again +*/ +gpiod_set_value (ctx->reset_gpio,1 ); +usleep_range (10000 ,20000 ); +gpiod_set_value (ctx->reset_gpio,0 ); +usleep_range (10000 ,20000 ); +gpiod_set_value (ctx->reset_gpio,1 ); +usleep_range (10000 ,20000 ); + +return 0 ; +} + +static int visionox_rm69299_power_off (struct visionox_rm69299 *ctx) +{ +gpiod_set_value (ctx->reset_gpio,0 ); + +return regulator_bulk_disable (ARRAY_SIZE (ctx->supplies), ctx->supplies); +} + +static int visionox_rm69299_unprepare (struct drm_panel *panel) +{ +struct visionox_rm69299 *ctx =panel_to_ctx (panel); +int ret; + + ctx->dsi->mode_flags =0 ; + + ret =mipi_dsi_dcs_write (ctx->dsi,MIPI_DCS_SET_DISPLAY_OFF ,NULL ,0 ); +if (ret <0 ) +DRM_DEV_ERROR (ctx->panel.dev, +"set_display_off cmd failed ret = %d\n" , ret); + +/* 120ms delay required here as per DCS spec */ +msleep (120 ); + + ret =mipi_dsi_dcs_write (ctx->dsi,MIPI_DCS_ENTER_SLEEP_MODE ,NULL ,0 ); +if (ret <0 ) { +DRM_DEV_ERROR (ctx->panel.dev, +"enter_sleep cmd failed ret = %d\n" , ret); + } + + ret =visionox_rm69299_power_off (ctx); + + ctx->prepared = false; +return ret; +} + +static int visionox_rm69299_prepare (struct drm_panel *panel) +{ +struct visionox_rm69299 *ctx =panel_to_ctx (panel); +int ret; + +if (ctx->prepared) +return 0 ; + + ret =visionox_rm69299_power_on (ctx); +if (ret <0 ) +return ret; + + ctx->dsi->mode_flags |=MIPI_DSI_MODE_LPM ; + + ret =mipi_dsi_dcs_write_buffer (ctx->dsi, (u8 []){0xfe ,0x00 },2 ); +if (ret <0 ) { +DRM_DEV_ERROR (ctx->panel.dev, +"cmd set tx 0 failed, ret = %d\n" , ret); + goto power_off; + } + + ret =mipi_dsi_dcs_write_buffer (ctx->dsi, (u8 []){0xc2 ,0x08 },2 ); +if (ret <0 ) { +DRM_DEV_ERROR (ctx->panel.dev, +"cmd set tx 1 failed, ret = %d\n" , ret); + goto power_off; + } + + ret =mipi_dsi_dcs_write_buffer (ctx->dsi, (u8 []){0x35 ,0x00 },2 ); +if (ret <0 ) { +DRM_DEV_ERROR (ctx->panel.dev, +"cmd set tx 2 failed, ret = %d\n" , ret); + goto power_off; + } + + ret =mipi_dsi_dcs_write_buffer (ctx->dsi, (u8 []){0x51 ,0xff },2 ); +if (ret <0 ) { +DRM_DEV_ERROR (ctx->panel.dev, +"cmd set tx 3 failed, ret = %d\n" , ret); + goto power_off; + } + + ret =mipi_dsi_dcs_write (ctx->dsi,MIPI_DCS_EXIT_SLEEP_MODE ,NULL ,0 ); +if (ret <0 ) { +DRM_DEV_ERROR (ctx->panel.dev, +"exit_sleep_mode cmd failed ret = %d\n" , ret); + goto power_off; + } + +/* Per DSI spec wait 120ms after sending exit sleep DCS command */ +msleep (120 ); + + ret =mipi_dsi_dcs_write (ctx->dsi,MIPI_DCS_SET_DISPLAY_ON ,NULL ,0 ); +if (ret <0 ) { +DRM_DEV_ERROR (ctx->panel.dev, +"set_display_on cmd failed ret = %d\n" , ret); + goto power_off; + } + +/* Per DSI spec wait 120ms after sending set_display_on DCS command */ +msleep (120 ); + + ctx->prepared = true; + +return 0 ; + +power_off: +return ret; +} + +static const struct drm_display_mode visionox_rm69299_1080x2248_60hz = { + .name ="1080x2248" , + .clock =158695 , + .hdisplay =1080 , + .hsync_start =1080 +26 , + .hsync_end =1080 +26 +2 , + .htotal =1080 +26 +2 +36 , + .vdisplay =2248 , + .vsync_start =2248 +56 , + .vsync_end =2248 +56 +4 , + .vtotal =2248 +56 +4 +4 , + .vrefresh =60 , + .flags =0 , +}; + +static int visionox_rm69299_get_modes (struct drm_panel *panel, +struct drm_connector *connector) +{ +struct visionox_rm69299 *ctx =panel_to_ctx (panel); +struct drm_display_mode *mode; + + mode =drm_mode_create (connector->dev); +if (!mode) { +DRM_DEV_ERROR (ctx->panel.dev, +"failed to create a new display mode\n" ); +return 0 ; + } + + connector->display_info.width_mm =74 ; + connector->display_info.height_mm =131 ; +drm_mode_copy (mode, &visionox_rm69299_1080x2248_60hz); + mode->type =DRM_MODE_TYPE_DRIVER |DRM_MODE_TYPE_PREFERRED ; +drm_mode_probed_add (connector, mode); + +return 1 ; +} + +static const struct drm_panel_funcs visionox_rm69299_drm_funcs = { + .unprepare = visionox_rm69299_unprepare, + .prepare = visionox_rm69299_prepare, + .get_modes = visionox_rm69299_get_modes, +}; + +static int visionox_rm69299_probe (struct mipi_dsi_device *dsi) +{ +struct device *dev = &dsi->dev; +struct visionox_rm69299 *ctx; +int ret; + + ctx =devm_kzalloc (dev,sizeof (*ctx),GFP_KERNEL ); +if (!ctx) +return -ENOMEM ; + +mipi_dsi_set_drvdata (dsi, ctx); + + ctx->panel.dev = dev; + ctx->dsi = dsi; + + ctx->supplies[0 ].supply ="vdda" ; + ctx->supplies[1 ].supply ="vdd3p3" ; + + ret =devm_regulator_bulk_get (ctx->panel.dev,ARRAY_SIZE (ctx->supplies), + ctx->supplies); +if (ret <0 ) +return ret; + + ctx->reset_gpio =devm_gpiod_get (ctx->panel.dev, +"reset" ,GPIOD_OUT_LOW ); +if (IS_ERR (ctx->reset_gpio)) { +DRM_DEV_ERROR (dev,"cannot get reset gpio %ld\n" , +PTR_ERR (ctx->reset_gpio)); +return PTR_ERR (ctx->reset_gpio); + } + +drm_panel_init (&ctx->panel, dev, &visionox_rm69299_drm_funcs, +DRM_MODE_CONNECTOR_DSI ); + ctx->panel.dev = dev; + ctx->panel.funcs = &visionox_rm69299_drm_funcs; +drm_panel_add (&ctx->panel); + + dsi->lanes =4 ; + dsi->format =MIPI_DSI_FMT_RGB888 ; + dsi->mode_flags =MIPI_DSI_MODE_VIDEO |MIPI_DSI_MODE_LPM | +MIPI_DSI_CLOCK_NON_CONTINUOUS ; + ret =mipi_dsi_attach (dsi); +if (ret <0 ) { +DRM_DEV_ERROR (dev,"dsi attach failed ret = %d\n" , ret); + goto err_dsi_attach; + } + + ret =regulator_set_load (ctx->supplies[0 ].consumer,32000 ); +if (ret) { +DRM_DEV_ERROR (dev, +"regulator set load failed for vdda supply ret = %d\n" , + ret); + goto err_set_load; + } + + ret =regulator_set_load (ctx->supplies[1 ].consumer,13200 ); +if (ret) { +DRM_DEV_ERROR (dev, +"regulator set load failed for vdd3p3 supply ret = %d\n" , + ret); + goto err_set_load; + } + +return 0 ; + +err_set_load: +mipi_dsi_detach (dsi); +err_dsi_attach: +drm_panel_remove (&ctx->panel); +return ret; +} + +static int visionox_rm69299_remove (struct mipi_dsi_device *dsi) +{ +struct visionox_rm69299 *ctx =mipi_dsi_get_drvdata (dsi); + +mipi_dsi_detach (ctx->dsi); +mipi_dsi_device_unregister (ctx->dsi); + +drm_panel_remove (&ctx->panel); +return 0 ; +} + +static const struct of_device_id visionox_rm69299_of_match[] = { + { + .compatible ="visionox,rm69299-1080p-display" , + } +}; +MODULE_DEVICE_TABLE (of, visionox_rm69299_of_match); + +static struct mipi_dsi_driver visionox_rm69299_driver = { + .driver = { + .name ="panel-visionox-rm69299" , + .of_match_table = visionox_rm69299_of_match, + }, + .probe = visionox_rm69299_probe, + .remove = visionox_rm69299_remove, +}; +module_mipi_dsi_driver (visionox_rm69299_driver); + +MODULE_DESCRIPTION ("Visionox RM69299 DSI Panel Driver" ); + --Quoted 5 lines
2.25.1
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel
PATCH v11 2/2 dt-bindings: documenting compatible string vendor "visionox"
In reply to Harigovindan PDocumenting compatible string vendor "visionox" in vendor-prefix yaml file.
---
Changes in v11:
- Added visionox compatible string in vendor-prefixes.yaml
- Added as a part of checkpatch script error for panel driver.
Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++ 1 file changed, 2 insertions(+)
Documentation/devicetree/bindings/vendor-prefixes.yaml +2 -0
@@ -1047,6 +1047,8 @@ patternProperties: description: Tronsmart "^truly,.*": description: Truly Semiconductors Limited + "visionox,.*": + description: Visionox "^tsd,.*": description: Theobroma Systems Design und Consulting GmbH "^tyan,.*":
Signature · 1 line
2.25.1
Rob Herring
maintainerRe: [PATCH v11 2/2] dt-bindings: documenting compatible string vendor "visionox"
Quoted 11 lines · Harigovindan P
Documenting compatible string vendor "visionox" in vendor-prefix yaml file.
Signed-off-by Harigovindan P <[email protected]>---
Changes in v11:
- Added visionox compatible string invendor-prefixes.yaml
- Added as a part of checkpatch script error for panel driver.Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++ 1 file changed, 2 insertions(+)
My bot found errors running 'make dt_binding_check' on your patch:
/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/vendor-prefixes.yaml: patternProperties:visionox,.*: {'description': 'Visionox'} is not valid under any of the given schemas (Possible causes of the failure):
/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/vendor-prefixes.yaml: patternProperties:visionox,.*: 'not' is a required property
Documentation/devicetree/bindings/Makefile:11: recipe for target 'Documentation/devicetree/bindings/vendor-prefixes.example.dts' failed make[1]: *** [Documentation/devicetree/bindings/vendor-prefixes.example.dts] Error 1
make[1]: *** Waiting for unfinished jobs....
warning: no schema found in file: Documentation/devicetree/bindings/vendor-prefixes.yaml /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/vendor-prefixes.yaml: ignoring, error in schema: patternProperties: visionox,.*
warning: no schema found in file: Documentation/devicetree/bindings/vendor-prefixes.yaml /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/vendor-prefixes.yaml: ignoring, error in schema: patternProperties: visionox,.* Makefile:1300: recipe for target 'dt_binding_check' failed
make: *** [dt_binding_check] Error 2
See https://patchwork.ozlabs.org/patch/1273941
If you already ran 'make dt_binding_check' and didn't see the above error(s), then make sure dt-schema is up to date:
pip3 install git+https://github.com/devicetree-org/dt-schema.git@master --upgrade
Please check and re-submit.
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel
PATCH v12 2/2 dt-bindings: documenting compatible string vendor "visionox"
In reply to Harigovindan PDocumenting compatible string vendor "visionox" in vendor-prefix yaml file.
---
Changes in v11:
- Added compatible string in vendor-prefix yaml file
Changes in v12:
- Fixed the string to clear dt_binding_check errors.
Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++ 1 file changed, 2 insertions(+)
Documentation/devicetree/bindings/vendor-prefixes.yaml +2 -0
@@ -1047,6 +1047,8 @@ patternProperties: description: Tronsmart "^truly,.*": description: Truly Semiconductors Limited + "^visionox,.*": + description: Visionox "^tsd,.*": description: Theobroma Systems Design und Consulting GmbH "^tyan,.*":
Signature · 1 line
2.25.1
Re: [PATCH v12 2/2] dt-bindings: documenting compatible string vendor "visionox"
Quoted 7 lines · Harigovindan P
Documenting compatible string vendor "visionox" in vendor-prefix yaml file.
Signed-off-by Harigovindan P <[email protected]>---
Changes in v11:
- Added compatible string in vendor-prefix yaml file
Quoted 6 lines
Changes in v12:
- Fixed the string to cleardt_binding_checkerrors.Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++ 1 file changed, 2 insertions(+)
Sam Ravnborg
AppliedRe: [PATCH v12 2/2] dt-bindings: documenting compatible string vendor "visionox"
In reply to Harigovindan PQuoted 3 lines · Harigovindan P
Documenting compatible string vendor "visionox" in vendor-prefix yaml file.
Signed-off-by Harigovindan P <[email protected]>
Thanks, applied.
Sam
Quoted 30 lines
---
Changes in v11:
- Added compatible string in vendor-prefix yaml fileChanges in v12:
- Fixed the string to cleardt_binding_checkerrors.Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++ 1 file changed, 2 insertions(+)Documentation/devicetree/bindings/vendor-prefixes.yaml +2
-0@@ -1047,6 +1047,8 @@ patternProperties: description: Tronsmart "^truly,.*": description: Truly Semiconductors Limited + "^visionox,.*": + description: Visionox "^tsd,.*": description: Theobroma Systems Design und Consulting GmbH "^tyan,.*":Signature · 6 lines
2.25.1 _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel