drm: rcar-du: Replace direct DRM encoder access with cast macro
Add a new macro to downcast an rcar_du_encoder pointer to a drm_encoder pointer and use it. This prepares for the replacement of the rcar_drm_encoder encoder field with a drm_slave_encoder. Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
This commit is contained in:
parent
3ea4d5ec68
commit
4b96b70cfa
|
@ -33,7 +33,7 @@ rcar_du_connector_best_encoder(struct drm_connector *connector)
|
|||
{
|
||||
struct rcar_du_connector *rcon = to_rcar_connector(connector);
|
||||
|
||||
return &rcon->encoder->encoder;
|
||||
return rcar_encoder_to_drm_encoder(rcon->encoder);
|
||||
}
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
|
@ -146,6 +146,7 @@ int rcar_du_encoder_init(struct rcar_du_device *rcdu,
|
|||
struct device_node *con_node)
|
||||
{
|
||||
struct rcar_du_encoder *renc;
|
||||
struct drm_encoder *encoder;
|
||||
unsigned int encoder_type;
|
||||
int ret;
|
||||
|
||||
|
@ -154,6 +155,7 @@ int rcar_du_encoder_init(struct rcar_du_device *rcdu,
|
|||
return -ENOMEM;
|
||||
|
||||
renc->output = output;
|
||||
encoder = rcar_encoder_to_drm_encoder(renc);
|
||||
|
||||
switch (output) {
|
||||
case RCAR_DU_OUTPUT_LVDS0:
|
||||
|
@ -182,12 +184,12 @@ int rcar_du_encoder_init(struct rcar_du_device *rcdu,
|
|||
break;
|
||||
}
|
||||
|
||||
ret = drm_encoder_init(rcdu->ddev, &renc->encoder, &encoder_funcs,
|
||||
ret = drm_encoder_init(rcdu->ddev, encoder, &encoder_funcs,
|
||||
encoder_type);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
drm_encoder_helper_add(&renc->encoder, &encoder_helper_funcs);
|
||||
drm_encoder_helper_add(encoder, &encoder_helper_funcs);
|
||||
|
||||
switch (encoder_type) {
|
||||
case DRM_MODE_ENCODER_LVDS:
|
||||
|
|
|
@ -35,6 +35,8 @@ struct rcar_du_encoder {
|
|||
#define to_rcar_encoder(e) \
|
||||
container_of(e, struct rcar_du_encoder, encoder)
|
||||
|
||||
#define rcar_encoder_to_drm_encoder(e) (&(e)->encoder)
|
||||
|
||||
struct rcar_du_connector {
|
||||
struct drm_connector connector;
|
||||
struct rcar_du_encoder *encoder;
|
||||
|
|
|
@ -84,6 +84,7 @@ int rcar_du_lvds_connector_init(struct rcar_du_device *rcdu,
|
|||
struct rcar_du_encoder *renc,
|
||||
/* TODO const */ struct device_node *np)
|
||||
{
|
||||
struct drm_encoder *encoder = rcar_encoder_to_drm_encoder(renc);
|
||||
struct rcar_du_lvds_connector *lvdscon;
|
||||
struct drm_connector *connector;
|
||||
struct display_timing timing;
|
||||
|
@ -120,11 +121,11 @@ int rcar_du_lvds_connector_init(struct rcar_du_device *rcdu,
|
|||
drm_object_property_set_value(&connector->base,
|
||||
rcdu->ddev->mode_config.dpms_property, DRM_MODE_DPMS_OFF);
|
||||
|
||||
ret = drm_mode_connector_attach_encoder(connector, &renc->encoder);
|
||||
ret = drm_mode_connector_attach_encoder(connector, encoder);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
connector->encoder = &renc->encoder;
|
||||
connector->encoder = encoder;
|
||||
lvdscon->connector.encoder = renc;
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -52,6 +52,7 @@ static const struct drm_connector_funcs connector_funcs = {
|
|||
int rcar_du_vga_connector_init(struct rcar_du_device *rcdu,
|
||||
struct rcar_du_encoder *renc)
|
||||
{
|
||||
struct drm_encoder *encoder = rcar_encoder_to_drm_encoder(renc);
|
||||
struct rcar_du_connector *rcon;
|
||||
struct drm_connector *connector;
|
||||
int ret;
|
||||
|
@ -78,11 +79,11 @@ int rcar_du_vga_connector_init(struct rcar_du_device *rcdu,
|
|||
drm_object_property_set_value(&connector->base,
|
||||
rcdu->ddev->mode_config.dpms_property, DRM_MODE_DPMS_OFF);
|
||||
|
||||
ret = drm_mode_connector_attach_encoder(connector, &renc->encoder);
|
||||
ret = drm_mode_connector_attach_encoder(connector, encoder);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
connector->encoder = &renc->encoder;
|
||||
connector->encoder = encoder;
|
||||
rcon->encoder = renc;
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue