Merge tag 'drm-next-20230814' of git://git.kernel.org/pub/scm/linux/kernel/git/pinchartl/linux into drm-next
Renesas R-Car DU miscellaneous changes Signed-off-by: Dave Airlie <airlied@redhat.com> From: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Link: https://patchwork.freedesktop.org/patch/msgid/20230814130531.GC22929@pendragon.ideasonboard.com
This commit is contained in:
@@ -696,6 +696,10 @@ static int rcar_du_probe(struct platform_device *pdev)
|
||||
/* DRM/KMS objects */
|
||||
ret = rcar_du_modeset_init(rcdu);
|
||||
if (ret < 0) {
|
||||
/*
|
||||
* Don't use dev_err_probe(), as it would overwrite the probe
|
||||
* deferral reason recorded in rcar_du_modeset_init().
|
||||
*/
|
||||
if (ret != -EPROBE_DEFER)
|
||||
dev_err(&pdev->dev,
|
||||
"failed to initialize DRM/KMS (%d)\n", ret);
|
||||
@@ -710,7 +714,7 @@ static int rcar_du_probe(struct platform_device *pdev)
|
||||
if (ret)
|
||||
goto error;
|
||||
|
||||
DRM_INFO("Device %s probed\n", dev_name(&pdev->dev));
|
||||
drm_info(&rcdu->ddev, "Device %s probed\n", dev_name(&pdev->dev));
|
||||
|
||||
drm_fbdev_generic_setup(&rcdu->ddev, 32);
|
||||
|
||||
|
||||
@@ -935,7 +935,8 @@ int rcar_du_modeset_init(struct rcar_du_device *rcdu)
|
||||
/* Initialize the Color Management Modules. */
|
||||
ret = rcar_du_cmm_init(rcdu);
|
||||
if (ret)
|
||||
return ret;
|
||||
return dev_err_probe(rcdu->dev, ret,
|
||||
"failed to initialize CMM\n");
|
||||
|
||||
/* Create the CRTCs. */
|
||||
for (swindex = 0, hwindex = 0; swindex < rcdu->num_crtcs; ++hwindex) {
|
||||
@@ -955,7 +956,8 @@ int rcar_du_modeset_init(struct rcar_du_device *rcdu)
|
||||
/* Initialize the encoders. */
|
||||
ret = rcar_du_encoders_init(rcdu);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
return dev_err_probe(rcdu->dev, ret,
|
||||
"failed to initialize encoders\n");
|
||||
|
||||
if (ret == 0) {
|
||||
dev_err(rcdu->dev, "error: no encoder could be initialized\n");
|
||||
|
||||
@@ -123,6 +123,8 @@ static const u32 rcar_du_vsp_formats[] = {
|
||||
DRM_FORMAT_RGB888,
|
||||
DRM_FORMAT_BGRA8888,
|
||||
DRM_FORMAT_BGRX8888,
|
||||
DRM_FORMAT_ABGR8888,
|
||||
DRM_FORMAT_XBGR8888,
|
||||
DRM_FORMAT_ARGB8888,
|
||||
DRM_FORMAT_XRGB8888,
|
||||
DRM_FORMAT_UYVY,
|
||||
@@ -155,6 +157,8 @@ static const u32 rcar_du_vsp_formats_gen4[] = {
|
||||
DRM_FORMAT_RGB888,
|
||||
DRM_FORMAT_BGRA8888,
|
||||
DRM_FORMAT_BGRX8888,
|
||||
DRM_FORMAT_ABGR8888,
|
||||
DRM_FORMAT_XBGR8888,
|
||||
DRM_FORMAT_ARGB8888,
|
||||
DRM_FORMAT_XRGB8888,
|
||||
DRM_FORMAT_RGBX1010102,
|
||||
@@ -177,6 +181,41 @@ static const u32 rcar_du_vsp_formats_gen4[] = {
|
||||
DRM_FORMAT_Y212,
|
||||
};
|
||||
|
||||
static u32 rcar_du_vsp_state_get_format(struct rcar_du_vsp_plane_state *state)
|
||||
{
|
||||
u32 fourcc = state->format->fourcc;
|
||||
|
||||
if (state->state.pixel_blend_mode == DRM_MODE_BLEND_PIXEL_NONE) {
|
||||
switch (fourcc) {
|
||||
case DRM_FORMAT_ARGB1555:
|
||||
fourcc = DRM_FORMAT_XRGB1555;
|
||||
break;
|
||||
|
||||
case DRM_FORMAT_ARGB4444:
|
||||
fourcc = DRM_FORMAT_XRGB4444;
|
||||
break;
|
||||
|
||||
case DRM_FORMAT_ARGB8888:
|
||||
fourcc = DRM_FORMAT_XRGB8888;
|
||||
break;
|
||||
|
||||
case DRM_FORMAT_ABGR8888:
|
||||
fourcc = DRM_FORMAT_XBGR8888;
|
||||
break;
|
||||
|
||||
case DRM_FORMAT_BGRA8888:
|
||||
fourcc = DRM_FORMAT_BGRX8888;
|
||||
break;
|
||||
|
||||
case DRM_FORMAT_RGBA1010102:
|
||||
fourcc = DRM_FORMAT_RGBX1010102;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return fourcc;
|
||||
}
|
||||
|
||||
static void rcar_du_vsp_plane_setup(struct rcar_du_vsp_plane *plane)
|
||||
{
|
||||
struct rcar_du_vsp_plane_state *state =
|
||||
@@ -190,7 +229,7 @@ static void rcar_du_vsp_plane_setup(struct rcar_du_vsp_plane *plane)
|
||||
.alpha = state->state.alpha >> 8,
|
||||
.zpos = state->state.zpos,
|
||||
};
|
||||
u32 fourcc = state->format->fourcc;
|
||||
u32 fourcc = rcar_du_vsp_state_get_format(state);
|
||||
unsigned int i;
|
||||
|
||||
cfg.src.left = state->state.src.x1 >> 16;
|
||||
@@ -207,22 +246,6 @@ static void rcar_du_vsp_plane_setup(struct rcar_du_vsp_plane *plane)
|
||||
cfg.mem[i] = sg_dma_address(state->sg_tables[i].sgl)
|
||||
+ fb->offsets[i];
|
||||
|
||||
if (state->state.pixel_blend_mode == DRM_MODE_BLEND_PIXEL_NONE) {
|
||||
switch (fourcc) {
|
||||
case DRM_FORMAT_ARGB1555:
|
||||
fourcc = DRM_FORMAT_XRGB1555;
|
||||
break;
|
||||
|
||||
case DRM_FORMAT_ARGB4444:
|
||||
fourcc = DRM_FORMAT_XRGB4444;
|
||||
break;
|
||||
|
||||
case DRM_FORMAT_ARGB8888:
|
||||
fourcc = DRM_FORMAT_XRGB8888;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
format = rcar_du_format_info(fourcc);
|
||||
cfg.pixelformat = format->v4l2;
|
||||
|
||||
|
||||
@@ -1001,7 +1001,6 @@ static int rcar_mipi_dsi_get_clocks(struct rcar_mipi_dsi *dsi)
|
||||
static int rcar_mipi_dsi_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct rcar_mipi_dsi *dsi;
|
||||
struct resource *mem;
|
||||
int ret;
|
||||
|
||||
dsi = devm_kzalloc(&pdev->dev, sizeof(*dsi), GFP_KERNEL);
|
||||
@@ -1018,8 +1017,7 @@ static int rcar_mipi_dsi_probe(struct platform_device *pdev)
|
||||
return ret;
|
||||
|
||||
/* Acquire resources. */
|
||||
mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
dsi->mmio = devm_ioremap_resource(dsi->dev, mem);
|
||||
dsi->mmio = devm_platform_ioremap_resource(pdev, 0);
|
||||
if (IS_ERR(dsi->mmio))
|
||||
return PTR_ERR(dsi->mmio);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user