2023-12-18 15:50:50

by Johan Jonker

[permalink] [raw]
Subject: [PATCH v2 0/2] Rockchip rk3066_hdmi update

Update the Rockchip rk3066_hdmi driver in a somewhat similar way
to what is proposed for the inno_hdmi driver.

Changed V2:
Drop already applied patches
Remove "Remove useless output format" patch for now
Add fill_modes hook removal patch

Johan Jonker (2):
drm/rockchip: rk3066_hdmi: remove unused drm device pointer
drm/rockchip: rk3066_hdmi: drop custom fill_modes hook

drivers/gpu/drm/rockchip/rk3066_hdmi.c | 16 +---------------
1 file changed, 1 insertion(+), 15 deletions(-)

--
2.39.2



2023-12-18 15:51:25

by Johan Jonker

[permalink] [raw]
Subject: [PATCH v2 1/2] drm/rockchip: rk3066_hdmi: remove unused drm device pointer

The drm_dev field in the rk3066_hdmi struct stores a pointer to the DRM
device but is never used anywhere in the driver. Let's remove it.

Signed-off-by: Johan Jonker <[email protected]>
---
drivers/gpu/drm/rockchip/rk3066_hdmi.c | 2 --
1 file changed, 2 deletions(-)

diff --git a/drivers/gpu/drm/rockchip/rk3066_hdmi.c b/drivers/gpu/drm/rockchip/rk3066_hdmi.c
index 62e6d8187de7..0dac6d133767 100644
--- a/drivers/gpu/drm/rockchip/rk3066_hdmi.c
+++ b/drivers/gpu/drm/rockchip/rk3066_hdmi.c
@@ -40,7 +40,6 @@ struct rk3066_hdmi_i2c {

struct rk3066_hdmi {
struct device *dev;
- struct drm_device *drm_dev;
struct regmap *grf_regmap;
int irq;
struct clk *hclk;
@@ -752,7 +751,6 @@ static int rk3066_hdmi_bind(struct device *dev, struct device *master,
return -ENOMEM;

hdmi->dev = dev;
- hdmi->drm_dev = drm;
hdmi->regs = devm_platform_ioremap_resource(pdev, 0);
if (IS_ERR(hdmi->regs))
return PTR_ERR(hdmi->regs);
--
2.39.2


2023-12-18 15:51:57

by Johan Jonker

[permalink] [raw]
Subject: [PATCH v2 2/2] drm/rockchip: rk3066_hdmi: drop custom fill_modes hook

CRTC size validation for the display controller has been added with
Commit 8e140cb60270 ("drm/rockchip: vop: limit maximum resolution to
hardware capabilities"), so we can drop the custom fill_modes hook.

Signed-off-by: Johan Jonker <[email protected]>
---
drivers/gpu/drm/rockchip/rk3066_hdmi.c | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/rockchip/rk3066_hdmi.c b/drivers/gpu/drm/rockchip/rk3066_hdmi.c
index 0dac6d133767..6dadd753985c 100644
--- a/drivers/gpu/drm/rockchip/rk3066_hdmi.c
+++ b/drivers/gpu/drm/rockchip/rk3066_hdmi.c
@@ -501,18 +501,6 @@ rk3066_hdmi_connector_best_encoder(struct drm_connector *connector)
return &hdmi->encoder.encoder;
}

-static int
-rk3066_hdmi_probe_single_connector_modes(struct drm_connector *connector,
- uint32_t maxX, uint32_t maxY)
-{
- if (maxX > 1920)
- maxX = 1920;
- if (maxY > 1080)
- maxY = 1080;
-
- return drm_helper_probe_single_connector_modes(connector, maxX, maxY);
-}
-
static void rk3066_hdmi_connector_destroy(struct drm_connector *connector)
{
drm_connector_unregister(connector);
@@ -520,7 +508,7 @@ static void rk3066_hdmi_connector_destroy(struct drm_connector *connector)
}

static const struct drm_connector_funcs rk3066_hdmi_connector_funcs = {
- .fill_modes = rk3066_hdmi_probe_single_connector_modes,
+ .fill_modes = drm_helper_probe_single_connector_modes,
.detect = rk3066_hdmi_connector_detect,
.destroy = rk3066_hdmi_connector_destroy,
.reset = drm_atomic_helper_connector_reset,
--
2.39.2


2023-12-19 12:56:33

by Maxime Ripard

[permalink] [raw]
Subject: Re: [PATCH v2 2/2] drm/rockchip: rk3066_hdmi: drop custom fill_modes hook

Hi,

On Mon, Dec 18, 2023 at 04:49:06PM +0100, Johan Jonker wrote:
> CRTC size validation for the display controller has been added with
> Commit 8e140cb60270 ("drm/rockchip: vop: limit maximum resolution to
> hardware capabilities"), so we can drop the custom fill_modes hook.
>
> Signed-off-by: Johan Jonker <[email protected]>

I'm not sure those two are equivalent. CRTC and connectors usually have
different requirements and capabilities, and thus different,
supplementary, mode_valid/atomic_check implementations.

Maxime


Attachments:
(No filename) (543.00 B)
signature.asc (235.00 B)
Download all attachments

2023-12-19 13:01:11

by Maxime Ripard

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] drm/rockchip: rk3066_hdmi: remove unused drm device pointer

On Mon, 18 Dec 2023 16:48:40 +0100, Johan Jonker wrote:
> The drm_dev field in the rk3066_hdmi struct stores a pointer to the DRM
> device but is never used anywhere in the driver. Let's remove it.
>
> Signed-off-by: Johan Jonker <[email protected]>

Reviewed-by: Maxime Ripard <[email protected]>

Thanks!
Maxime

2023-12-19 15:41:02

by Johan Jonker

[permalink] [raw]
Subject: Re: [PATCH v2 2/2] drm/rockchip: rk3066_hdmi: drop custom fill_modes hook



On 12/19/23 13:55, Maxime Ripard wrote:
> Hi,
>
> On Mon, Dec 18, 2023 at 04:49:06PM +0100, Johan Jonker wrote:
>> CRTC size validation for the display controller has been added with
>> Commit 8e140cb60270 ("drm/rockchip: vop: limit maximum resolution to
>> hardware capabilities"), so we can drop the custom fill_modes hook.
>>
>> Signed-off-by: Johan Jonker <[email protected]>
>

> I'm not sure those two are equivalent. CRTC and connectors usually have
> different requirements and capabilities, and thus different,
> supplementary, mode_valid/atomic_check implementations.

Rockchip RK3066 CRTC and connector resolution max_output are equivalent.

From Rockchip PX2 TRM V1.0.pdf page 17:
- Video Encoder
Maximum frame rate is up to 30fps@1920x1080

- Display Interface
Support LCD or TFT interfaces up to 1920x1080

- HDMI TX Interface
HDMI version 1.4a, HDCP revision 1.4 and DVI version 1.0 compliant transmitter
Supports DTV from 480i to 1080i/p HD resolution, and PC from VGA to UXGA by LCDC0 or LCDC1 in RK PX2


Compared to the drm_helper_probe_single_connector_modes() this function added an extra max_output

Checked in rockchip_drm_vop.c is:
https://lore.kernel.org/linux-rockchip/[email protected]/

+ if (vop->data->max_output.width && mode->hdisplay > vop->data->max_output.width)
+ return MODE_BAD_HVALUE;
+
+ if (vop->data->max_output.height && mode->vdisplay > vop->data->max_output.height)
+ return MODE_BAD_VVALUE;

For RK3066 VOP max_output:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/rockchip/rockchip_vop_reg.c#n506

This patch was made with HDMI in mind.

.max_output = { 1920, 1080 },

This first part was added by Heiko, but not was not part my patch that I submitted:
- if (maxX > 1920)
- maxX = 1920;
- if (maxY > 1080)
- maxY = 1080;
-
- return drm_helper_probe_single_connector_modes(connector, maxX, maxY);
-}

Original patch:
https://patchwork.freedesktop.org/patch/msgid/[email protected]

+static int
+rk3066_hdmi_probe_single_connector_modes(struct drm_connector *connector,
+ uint32_t maxX, uint32_t maxY)
+{
+ return drm_helper_probe_single_connector_modes(connector, 1920, 1080);
+}

Rockchip RK3066 CRTC and connector resolution max_output are equivalent.

Johan

>
> Maxime

2023-12-21 09:22:31

by Maxime Ripard

[permalink] [raw]
Subject: Re: [PATCH v2 2/2] drm/rockchip: rk3066_hdmi: drop custom fill_modes hook

On Tue, Dec 19, 2023 at 04:40:12PM +0100, Johan Jonker wrote:
>
>
> On 12/19/23 13:55, Maxime Ripard wrote:
> > Hi,
> >
> > On Mon, Dec 18, 2023 at 04:49:06PM +0100, Johan Jonker wrote:
> >> CRTC size validation for the display controller has been added with
> >> Commit 8e140cb60270 ("drm/rockchip: vop: limit maximum resolution to
> >> hardware capabilities"), so we can drop the custom fill_modes hook.
> >>
> >> Signed-off-by: Johan Jonker <[email protected]>
> >
>
> > I'm not sure those two are equivalent. CRTC and connectors usually have
> > different requirements and capabilities, and thus different,
> > supplementary, mode_valid/atomic_check implementations.
>
> Rockchip RK3066 CRTC and connector resolution max_output are equivalent.
>
> From Rockchip PX2 TRM V1.0.pdf page 17:
> - Video Encoder
> Maximum frame rate is up to 30fps@1920x1080
>
> - Display Interface
> Support LCD or TFT interfaces up to 1920x1080
>
> - HDMI TX Interface
> HDMI version 1.4a, HDCP revision 1.4 and DVI version 1.0 compliant transmitter
> Supports DTV from 480i to 1080i/p HD resolution, and PC from VGA to UXGA by LCDC0 or LCDC1 in RK PX2

My point is that there's two limits: the CRTC and HDMI controller ones.
You should put the CRTC ones in the CRTC driver, and the HDMI controller
ones in the HDMI controller driver.

If they are equivalent, great, it's going to filter out the same things, but...

> Compared to the drm_helper_probe_single_connector_modes() this function added an extra max_output
>
> Checked in rockchip_drm_vop.c is:
> https://lore.kernel.org/linux-rockchip/[email protected]/
>
> + if (vop->data->max_output.width && mode->hdisplay > vop->data->max_output.width)
> + return MODE_BAD_HVALUE;
> +
> + if (vop->data->max_output.height && mode->vdisplay > vop->data->max_output.height)
> + return MODE_BAD_VVALUE;
>
> For RK3066 VOP max_output:
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/rockchip/rockchip_vop_reg.c#n506
>
> This patch was made with HDMI in mind.
>
> .max_output = { 1920, 1080 },
>
> This first part was added by Heiko, but not was not part my patch that I submitted:
> - if (maxX > 1920)
> - maxX = 1920;
> - if (maxY > 1080)
> - maxY = 1080;
> -
> - return drm_helper_probe_single_connector_modes(connector, maxX, maxY);
> -}
>
> Original patch:
> https://patchwork.freedesktop.org/patch/msgid/[email protected]
>
> +static int
> +rk3066_hdmi_probe_single_connector_modes(struct drm_connector *connector,
> + uint32_t maxX, uint32_t maxY)
> +{
> + return drm_helper_probe_single_connector_modes(connector, 1920, 1080);
> +}
>
> Rockchip RK3066 CRTC and connector resolution max_output are equivalent.

... a user / dev unfamiliar with the SoC won't have to go through that
to figure out how it's handled, it will be obvious.

Maxime


Attachments:
(No filename) (2.92 kB)
signature.asc (235.00 B)
Download all attachments