From 6f2e19e44878102257c3411697237bb0f1cf0563 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 30 Aug 2023 18:02:30 +0100 Subject: [PATCH 1/5] defconfigs: Add TINYDRM_ILI9486 to defconfigs Adds the DRM driver for the ILI9486. Signed-off-by: Dave Stevenson --- arch/arm/configs/bcm2709_defconfig | 1 + arch/arm/configs/bcm2711_defconfig | 1 + arch/arm/configs/bcmrpi_defconfig | 1 + arch/arm64/configs/bcm2711_defconfig | 1 + arch/arm64/configs/bcmrpi3_defconfig | 1 + 5 files changed, 5 insertions(+) diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig index 10b8e8714d96fa..516efb4213189b 100644 --- a/arch/arm/configs/bcm2709_defconfig +++ b/arch/arm/configs/bcm2709_defconfig @@ -968,6 +968,7 @@ CONFIG_DRM_PANEL_MIPI_DBI=m CONFIG_TINYDRM_HX8357D=m CONFIG_TINYDRM_ILI9225=m CONFIG_TINYDRM_ILI9341=m +CONFIG_TINYDRM_ILI9486=m CONFIG_TINYDRM_MI0283QT=m CONFIG_TINYDRM_REPAPER=m CONFIG_TINYDRM_ST7586=m diff --git a/arch/arm/configs/bcm2711_defconfig b/arch/arm/configs/bcm2711_defconfig index d15ff78b140a0a..4feac0aee9df70 100644 --- a/arch/arm/configs/bcm2711_defconfig +++ b/arch/arm/configs/bcm2711_defconfig @@ -987,6 +987,7 @@ CONFIG_DRM_PANEL_MIPI_DBI=m CONFIG_TINYDRM_HX8357D=m CONFIG_TINYDRM_ILI9225=m CONFIG_TINYDRM_ILI9341=m +CONFIG_TINYDRM_ILI9486=m CONFIG_TINYDRM_MI0283QT=m CONFIG_TINYDRM_REPAPER=m CONFIG_TINYDRM_ST7586=m diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig index 59f4993f7a8b61..b4d2da008f7a21 100644 --- a/arch/arm/configs/bcmrpi_defconfig +++ b/arch/arm/configs/bcmrpi_defconfig @@ -962,6 +962,7 @@ CONFIG_DRM_PANEL_MIPI_DBI=m CONFIG_TINYDRM_HX8357D=m CONFIG_TINYDRM_ILI9225=m CONFIG_TINYDRM_ILI9341=m +CONFIG_TINYDRM_ILI9486=m CONFIG_TINYDRM_MI0283QT=m CONFIG_TINYDRM_REPAPER=m CONFIG_TINYDRM_ST7586=m diff --git a/arch/arm64/configs/bcm2711_defconfig b/arch/arm64/configs/bcm2711_defconfig index 30ceaf59456af6..423f1b3dae4034 100644 --- a/arch/arm64/configs/bcm2711_defconfig +++ b/arch/arm64/configs/bcm2711_defconfig @@ -1002,6 +1002,7 @@ CONFIG_DRM_PANEL_MIPI_DBI=m CONFIG_TINYDRM_HX8357D=m CONFIG_TINYDRM_ILI9225=m CONFIG_TINYDRM_ILI9341=m +CONFIG_TINYDRM_ILI9486=m CONFIG_TINYDRM_MI0283QT=m CONFIG_TINYDRM_REPAPER=m CONFIG_TINYDRM_ST7586=m diff --git a/arch/arm64/configs/bcmrpi3_defconfig b/arch/arm64/configs/bcmrpi3_defconfig index 287f81fa88aba6..a3903cb1f1642b 100644 --- a/arch/arm64/configs/bcmrpi3_defconfig +++ b/arch/arm64/configs/bcmrpi3_defconfig @@ -938,6 +938,7 @@ CONFIG_DRM_PANEL_MIPI_DBI=m CONFIG_TINYDRM_HX8357D=m CONFIG_TINYDRM_ILI9225=m CONFIG_TINYDRM_ILI9341=m +CONFIG_TINYDRM_ILI9486=m CONFIG_TINYDRM_MI0283QT=m CONFIG_TINYDRM_REPAPER=m CONFIG_TINYDRM_ST7586=m From 5f21808db362db17f8b7119578cce487ccce7873 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 30 Aug 2023 18:03:37 +0100 Subject: [PATCH 2/5] dtoverlays: Add drm option to piscreen overlay Adds the option of selecting the DRM/KMS TinyDRM driver for this panel, rather than the deprecated FBTFT one. Signed-off-by: Dave Stevenson --- arch/arm/boot/dts/overlays/README | 3 +++ arch/arm/boot/dts/overlays/piscreen-overlay.dts | 10 +++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README index 1c6ddebe9723cc..1b6fe60d00e77f 100644 --- a/arch/arm/boot/dts/overlays/README +++ b/arch/arm/boot/dts/overlays/README @@ -3245,6 +3245,9 @@ Params: speed Display SPI bus speed xohms Touchpanel sensitivity (X-plate resistance) + drm Select the DRM/KMS driver instead of the FBTFT + one + Name: piscreen2r Info: PiScreen 2 with resistive TP display by OzzMaker.com diff --git a/arch/arm/boot/dts/overlays/piscreen-overlay.dts b/arch/arm/boot/dts/overlays/piscreen-overlay.dts index 1ac75a248fab51..80aef4c01ae11e 100644 --- a/arch/arm/boot/dts/overlays/piscreen-overlay.dts +++ b/arch/arm/boot/dts/overlays/piscreen-overlay.dts @@ -6,6 +6,8 @@ /dts-v1/; /plugin/; +#include + / { compatible = "brcm,bcm2835"; @@ -59,9 +61,9 @@ fps = <30>; buswidth = <8>; regwidth = <16>; - reset-gpios = <&gpio 25 1>; - dc-gpios = <&gpio 24 0>; - led-gpios = <&gpio 22 0>; + reset-gpios = <&gpio 25 GPIO_ACTIVE_LOW>; + dc-gpios = <&gpio 24 GPIO_ACTIVE_HIGH>; + led-gpios = <&gpio 22 GPIO_ACTIVE_HIGH>; debug = <0>; init = <0x10000b0 0x00 @@ -98,5 +100,7 @@ fps = <&piscreen>,"fps:0"; debug = <&piscreen>,"debug:0"; xohms = <&piscreen_ts>,"ti,x-plate-ohms;0"; + drm = <&piscreen>,"compatible=waveshare,rpi-lcd-35", + <&piscreen>,"reset-gpios:8=",; }; }; From 498f6f0c32a8c73a55920262fd859f72c79e101b Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 1 Sep 2023 12:17:38 +0100 Subject: [PATCH 3/5] drm/ili9486: Resolve clash in spi_device_id names For "Really Good Reasons" [1] the SPI core requires a match between compatible device strings and the name in spi_device_id. The ili9486 driver uses compatible strings "waveshare,rpi-lcd-35" and "ozzmaker,piscreen", but "rpi-lcd-35" and "piscreen" are missing, so add them. Compatible string "ilitek,ili9486" is already used by staging/fbtft/fb_ili9486, therefore leaving it present in ili9486 as an spi_device_id causes the incorrect module to be loaded, therefore remove this id. [1] https://elixir.bootlin.com/linux/latest/source/drivers/spi/spi.c#L487 Signed-off-by: Dave Stevenson --- drivers/gpu/drm/tiny/ili9486.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c index 7b3048a3d90866..436cbe3f418248 100644 --- a/drivers/gpu/drm/tiny/ili9486.c +++ b/drivers/gpu/drm/tiny/ili9486.c @@ -187,7 +187,8 @@ static const struct of_device_id ili9486_of_match[] = { MODULE_DEVICE_TABLE(of, ili9486_of_match); static const struct spi_device_id ili9486_id[] = { - { "ili9486", 0 }, + { "rpi-lcd-35", 0 }, + { "piscreen", 0 }, { } }; MODULE_DEVICE_TABLE(spi, ili9486_id); From 652db489dfeb7236afef0a9e35e8a33a9d8430cd Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 1 Sep 2023 12:23:30 +0100 Subject: [PATCH 4/5] input: ads7846: Add missing spi_device_id strings The SPI core logs error messages if a compatible string device name is not also present as an spi_device_id. No spi_device_id values are specified by the driver, therefore we get 4 log lines every time it is loaded: SPI driver ads7846 has no spi_device_id for ti,tsc2046 SPI driver ads7846 has no spi_device_id for ti,ads7843 SPI driver ads7846 has no spi_device_id for ti,ads7845 SPI driver ads7846 has no spi_device_id for ti,ads7873 Add the spi_device_id values for these devices. Signed-off-by: Dave Stevenson --- drivers/input/touchscreen/ads7846.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c index bed68a68f3303c..cfb5d0cec7eff2 100644 --- a/drivers/input/touchscreen/ads7846.c +++ b/drivers/input/touchscreen/ads7846.c @@ -1127,6 +1127,17 @@ static const struct of_device_id ads7846_dt_ids[] = { }; MODULE_DEVICE_TABLE(of, ads7846_dt_ids); +static const struct spi_device_id ads7846_spi_ids[] = { + { "tsc2046", 0 }, + { "ads7843", 0 }, + { "ads7843", 0 }, + { "ads7845", 0 }, + { "ads7846", 0 }, + { "ads7873", 0 }, + { } +}; +MODULE_DEVICE_TABLE(spi, ads7846_spi_ids); + static const struct ads7846_platform_data *ads7846_probe_dt(struct device *dev) { struct ads7846_platform_data *pdata; @@ -1424,6 +1435,7 @@ static struct spi_driver ads7846_driver = { .pm = &ads7846_pm, .of_match_table = of_match_ptr(ads7846_dt_ids), }, + .id_table = ads7846_spi_ids, .probe = ads7846_probe, .remove = ads7846_remove, }; From 7674a76efc403bbe3dc38d067e27f9d7e4aa04ac Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 30 Aug 2023 18:05:43 +0100 Subject: [PATCH 5/5] staging: bcm2835-codec: Downgrade the level for a debug message The debug message from bcm2835_codec_buf_prepare when the buffer size is incorrect can be a little spammy if the application isn't careful on how it drives it, therefore drop the priority of the message. Signed-off-by: Dave Stevenson --- .../staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c b/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c index b38b5fff3c280c..e21112bbb90bb8 100644 --- a/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c +++ b/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c @@ -2883,7 +2883,7 @@ static int bcm2835_codec_buf_prepare(struct vb2_buffer *vb) } if (vb2_plane_size(vb, 0) < q_data->sizeimage) { - v4l2_err(&ctx->dev->v4l2_dev, "%s data will not fit into plane (%lu < %lu)\n", + v4l2_dbg(1, debug, &ctx->dev->v4l2_dev, "%s data will not fit into plane (%lu < %lu)\n", __func__, vb2_plane_size(vb, 0), (long)q_data->sizeimage); return -EINVAL;