forked from Minki/linux
drm/vc4: hdmi: Remove vc4_hdmi_connector
The vc4_hdmi_connector was only used to switch between drm_connector to drm_encoder. However, we can now use vc4_hdmi to do the switch, so that structure is redundant. Signed-off-by: Maxime Ripard <maxime@cerno.tech> Tested-by: Chanwoo Choi <cw00.choi@samsung.com> Tested-by: Hoegeun Kwon <hoegeun.kwon@samsung.com> Tested-by: Stefan Wahren <stefan.wahren@i2se.com> Reviewed-by: Eric Anholt <eric@anholt.net> Link: https://patchwork.freedesktop.org/patch/msgid/aee5120728db350b19c074de4290eafaf01e6671.1599120059.git-series.maxime@cerno.tech
This commit is contained in:
parent
283d347d6e
commit
0532e5e5e0
@ -189,13 +189,10 @@ static const struct drm_connector_helper_funcs vc4_hdmi_connector_helper_funcs =
|
|||||||
static int vc4_hdmi_connector_init(struct drm_device *dev,
|
static int vc4_hdmi_connector_init(struct drm_device *dev,
|
||||||
struct vc4_hdmi *vc4_hdmi)
|
struct vc4_hdmi *vc4_hdmi)
|
||||||
{
|
{
|
||||||
struct vc4_hdmi_connector *hdmi_connector = &vc4_hdmi->connector;
|
struct drm_connector *connector = &vc4_hdmi->connector;
|
||||||
struct drm_connector *connector = &hdmi_connector->base;
|
|
||||||
struct drm_encoder *encoder = &vc4_hdmi->encoder.base.base;
|
struct drm_encoder *encoder = &vc4_hdmi->encoder.base.base;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
hdmi_connector->encoder = encoder;
|
|
||||||
|
|
||||||
drm_connector_init_with_ddc(dev, connector,
|
drm_connector_init_with_ddc(dev, connector,
|
||||||
&vc4_hdmi_connector_funcs,
|
&vc4_hdmi_connector_funcs,
|
||||||
DRM_MODE_CONNECTOR_HDMIA,
|
DRM_MODE_CONNECTOR_HDMIA,
|
||||||
@ -284,7 +281,7 @@ static void vc4_hdmi_set_avi_infoframe(struct drm_encoder *encoder)
|
|||||||
{
|
{
|
||||||
struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
|
struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
|
||||||
struct vc4_hdmi_encoder *vc4_encoder = to_vc4_hdmi_encoder(encoder);
|
struct vc4_hdmi_encoder *vc4_encoder = to_vc4_hdmi_encoder(encoder);
|
||||||
struct drm_connector *connector = &vc4_hdmi->connector.base;
|
struct drm_connector *connector = &vc4_hdmi->connector;
|
||||||
struct drm_connector_state *cstate = connector->state;
|
struct drm_connector_state *cstate = connector->state;
|
||||||
struct drm_crtc *crtc = encoder->crtc;
|
struct drm_crtc *crtc = encoder->crtc;
|
||||||
const struct drm_display_mode *mode = &crtc->state->adjusted_mode;
|
const struct drm_display_mode *mode = &crtc->state->adjusted_mode;
|
||||||
@ -663,7 +660,7 @@ static int vc4_hdmi_audio_startup(struct snd_pcm_substream *substream,
|
|||||||
{
|
{
|
||||||
struct vc4_hdmi *vc4_hdmi = dai_to_hdmi(dai);
|
struct vc4_hdmi *vc4_hdmi = dai_to_hdmi(dai);
|
||||||
struct drm_encoder *encoder = &vc4_hdmi->encoder.base.base;
|
struct drm_encoder *encoder = &vc4_hdmi->encoder.base.base;
|
||||||
struct drm_connector *connector = &vc4_hdmi->connector.base;
|
struct drm_connector *connector = &vc4_hdmi->connector;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (vc4_hdmi->audio.substream && vc4_hdmi->audio.substream != substream)
|
if (vc4_hdmi->audio.substream && vc4_hdmi->audio.substream != substream)
|
||||||
@ -837,7 +834,7 @@ static int vc4_hdmi_audio_eld_ctl_info(struct snd_kcontrol *kcontrol,
|
|||||||
{
|
{
|
||||||
struct snd_soc_component *component = snd_kcontrol_chip(kcontrol);
|
struct snd_soc_component *component = snd_kcontrol_chip(kcontrol);
|
||||||
struct vc4_hdmi *vc4_hdmi = snd_component_to_hdmi(component);
|
struct vc4_hdmi *vc4_hdmi = snd_component_to_hdmi(component);
|
||||||
struct drm_connector *connector = &vc4_hdmi->connector.base;
|
struct drm_connector *connector = &vc4_hdmi->connector;
|
||||||
|
|
||||||
uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
|
uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
|
||||||
uinfo->count = sizeof(connector->eld);
|
uinfo->count = sizeof(connector->eld);
|
||||||
@ -850,7 +847,7 @@ static int vc4_hdmi_audio_eld_ctl_get(struct snd_kcontrol *kcontrol,
|
|||||||
{
|
{
|
||||||
struct snd_soc_component *component = snd_kcontrol_chip(kcontrol);
|
struct snd_soc_component *component = snd_kcontrol_chip(kcontrol);
|
||||||
struct vc4_hdmi *vc4_hdmi = snd_component_to_hdmi(component);
|
struct vc4_hdmi *vc4_hdmi = snd_component_to_hdmi(component);
|
||||||
struct drm_connector *connector = &vc4_hdmi->connector.base;
|
struct drm_connector *connector = &vc4_hdmi->connector;
|
||||||
|
|
||||||
memcpy(ucontrol->value.bytes.data, connector->eld,
|
memcpy(ucontrol->value.bytes.data, connector->eld,
|
||||||
sizeof(connector->eld));
|
sizeof(connector->eld));
|
||||||
@ -1304,7 +1301,7 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data)
|
|||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto err_destroy_conn;
|
goto err_destroy_conn;
|
||||||
|
|
||||||
cec_fill_conn_info_from_drm(&conn_info, &vc4_hdmi->connector.base);
|
cec_fill_conn_info_from_drm(&conn_info, &vc4_hdmi->connector);
|
||||||
cec_s_conn_info(vc4_hdmi->cec_adap, &conn_info);
|
cec_s_conn_info(vc4_hdmi->cec_adap, &conn_info);
|
||||||
|
|
||||||
HDMI_WRITE(VC4_HDMI_CPU_MASK_SET, 0xffffffff);
|
HDMI_WRITE(VC4_HDMI_CPU_MASK_SET, 0xffffffff);
|
||||||
@ -1341,7 +1338,7 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data)
|
|||||||
err_delete_cec_adap:
|
err_delete_cec_adap:
|
||||||
cec_delete_adapter(vc4_hdmi->cec_adap);
|
cec_delete_adapter(vc4_hdmi->cec_adap);
|
||||||
err_destroy_conn:
|
err_destroy_conn:
|
||||||
vc4_hdmi_connector_destroy(&vc4_hdmi->connector.base);
|
vc4_hdmi_connector_destroy(&vc4_hdmi->connector);
|
||||||
#endif
|
#endif
|
||||||
err_destroy_encoder:
|
err_destroy_encoder:
|
||||||
drm_encoder_cleanup(encoder);
|
drm_encoder_cleanup(encoder);
|
||||||
@ -1381,7 +1378,7 @@ static void vc4_hdmi_unbind(struct device *dev, struct device *master,
|
|||||||
vc4_hdmi = dev_get_drvdata(dev);
|
vc4_hdmi = dev_get_drvdata(dev);
|
||||||
|
|
||||||
cec_unregister_adapter(vc4_hdmi->cec_adap);
|
cec_unregister_adapter(vc4_hdmi->cec_adap);
|
||||||
vc4_hdmi_connector_destroy(&vc4_hdmi->connector.base);
|
vc4_hdmi_connector_destroy(&vc4_hdmi->connector);
|
||||||
drm_encoder_cleanup(&vc4_hdmi->encoder.base.base);
|
drm_encoder_cleanup(&vc4_hdmi->encoder.base.base);
|
||||||
|
|
||||||
clk_disable_unprepare(vc4_hdmi->hsm_clock);
|
clk_disable_unprepare(vc4_hdmi->hsm_clock);
|
||||||
|
@ -21,23 +21,6 @@ to_vc4_hdmi_encoder(struct drm_encoder *encoder)
|
|||||||
return container_of(encoder, struct vc4_hdmi_encoder, base.base);
|
return container_of(encoder, struct vc4_hdmi_encoder, base.base);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* VC4 HDMI connector KMS struct */
|
|
||||||
struct vc4_hdmi_connector {
|
|
||||||
struct drm_connector base;
|
|
||||||
|
|
||||||
/* Since the connector is attached to just the one encoder,
|
|
||||||
* this is the reference to it so we can do the best_encoder()
|
|
||||||
* hook.
|
|
||||||
*/
|
|
||||||
struct drm_encoder *encoder;
|
|
||||||
};
|
|
||||||
|
|
||||||
static inline struct vc4_hdmi_connector *
|
|
||||||
to_vc4_hdmi_connector(struct drm_connector *connector)
|
|
||||||
{
|
|
||||||
return container_of(connector, struct vc4_hdmi_connector, base);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* HDMI audio information */
|
/* HDMI audio information */
|
||||||
struct vc4_hdmi_audio {
|
struct vc4_hdmi_audio {
|
||||||
struct snd_soc_card card;
|
struct snd_soc_card card;
|
||||||
@ -58,7 +41,7 @@ struct vc4_hdmi {
|
|||||||
struct platform_device *pdev;
|
struct platform_device *pdev;
|
||||||
|
|
||||||
struct vc4_hdmi_encoder encoder;
|
struct vc4_hdmi_encoder encoder;
|
||||||
struct vc4_hdmi_connector connector;
|
struct drm_connector connector;
|
||||||
|
|
||||||
struct i2c_adapter *ddc;
|
struct i2c_adapter *ddc;
|
||||||
void __iomem *hdmicore_regs;
|
void __iomem *hdmicore_regs;
|
||||||
@ -81,9 +64,7 @@ struct vc4_hdmi {
|
|||||||
static inline struct vc4_hdmi *
|
static inline struct vc4_hdmi *
|
||||||
connector_to_vc4_hdmi(struct drm_connector *connector)
|
connector_to_vc4_hdmi(struct drm_connector *connector)
|
||||||
{
|
{
|
||||||
struct vc4_hdmi_connector *_connector = to_vc4_hdmi_connector(connector);
|
return container_of(connector, struct vc4_hdmi, connector);
|
||||||
|
|
||||||
return container_of(_connector, struct vc4_hdmi, connector);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline struct vc4_hdmi *
|
static inline struct vc4_hdmi *
|
||||||
|
Loading…
Reference in New Issue
Block a user