drm/i2c: tda998x: remove DRM slave encoder support
Remove the DRM slave encoder compatibility from the TDA998x driver. We now use the component helpers to manage the binding of DRM sub-drivers. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
96795df15c
commit
3d58e31888
@ -23,7 +23,6 @@
|
||||
|
||||
#include <drm/drmP.h>
|
||||
#include <drm/drm_crtc_helper.h>
|
||||
#include <drm/drm_encoder_slave.h>
|
||||
#include <drm/drm_edid.h>
|
||||
#include <drm/drm_of.h>
|
||||
#include <drm/i2c/tda998x.h>
|
||||
@ -53,8 +52,6 @@ struct tda998x_priv {
|
||||
bool edid_delay_active;
|
||||
};
|
||||
|
||||
#define to_tda998x_priv(x) ((struct tda998x_priv *)to_encoder_slave(x)->slave_priv)
|
||||
|
||||
/* The TDA9988 series of devices use a paged register scheme.. to simplify
|
||||
* things we encode the page # in upper bits of the register #. To read/
|
||||
* write a given register, we need to make sure CURPAGE register is set
|
||||
@ -1182,16 +1179,6 @@ static void tda998x_encoder_set_polling(struct tda998x_priv *priv,
|
||||
DRM_CONNECTOR_POLL_DISCONNECT;
|
||||
}
|
||||
|
||||
static int
|
||||
tda998x_encoder_set_property(struct drm_encoder *encoder,
|
||||
struct drm_connector *connector,
|
||||
struct drm_property *property,
|
||||
uint64_t val)
|
||||
{
|
||||
DBG("");
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void tda998x_destroy(struct tda998x_priv *priv)
|
||||
{
|
||||
/* disable all IRQs and free the IRQ handler */
|
||||
@ -1207,78 +1194,6 @@ static void tda998x_destroy(struct tda998x_priv *priv)
|
||||
i2c_unregister_device(priv->cec);
|
||||
}
|
||||
|
||||
/* Slave encoder support */
|
||||
|
||||
static void
|
||||
tda998x_encoder_slave_set_config(struct drm_encoder *encoder, void *params)
|
||||
{
|
||||
tda998x_encoder_set_config(to_tda998x_priv(encoder), params);
|
||||
}
|
||||
|
||||
static void tda998x_encoder_slave_destroy(struct drm_encoder *encoder)
|
||||
{
|
||||
struct tda998x_priv *priv = to_tda998x_priv(encoder);
|
||||
|
||||
tda998x_destroy(priv);
|
||||
drm_i2c_encoder_destroy(encoder);
|
||||
kfree(priv);
|
||||
}
|
||||
|
||||
static void tda998x_encoder_slave_dpms(struct drm_encoder *encoder, int mode)
|
||||
{
|
||||
tda998x_encoder_dpms(to_tda998x_priv(encoder), mode);
|
||||
}
|
||||
|
||||
static int tda998x_encoder_slave_mode_valid(struct drm_encoder *encoder,
|
||||
struct drm_display_mode *mode)
|
||||
{
|
||||
return tda998x_encoder_mode_valid(to_tda998x_priv(encoder), mode);
|
||||
}
|
||||
|
||||
static void
|
||||
tda998x_encoder_slave_mode_set(struct drm_encoder *encoder,
|
||||
struct drm_display_mode *mode,
|
||||
struct drm_display_mode *adjusted_mode)
|
||||
{
|
||||
tda998x_encoder_mode_set(to_tda998x_priv(encoder), mode, adjusted_mode);
|
||||
}
|
||||
|
||||
static enum drm_connector_status
|
||||
tda998x_encoder_slave_detect(struct drm_encoder *encoder,
|
||||
struct drm_connector *connector)
|
||||
{
|
||||
return tda998x_encoder_detect(to_tda998x_priv(encoder));
|
||||
}
|
||||
|
||||
static int tda998x_encoder_slave_get_modes(struct drm_encoder *encoder,
|
||||
struct drm_connector *connector)
|
||||
{
|
||||
return tda998x_encoder_get_modes(to_tda998x_priv(encoder), connector);
|
||||
}
|
||||
|
||||
static int
|
||||
tda998x_encoder_slave_create_resources(struct drm_encoder *encoder,
|
||||
struct drm_connector *connector)
|
||||
{
|
||||
tda998x_encoder_set_polling(to_tda998x_priv(encoder), connector);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct drm_encoder_slave_funcs tda998x_encoder_slave_funcs = {
|
||||
.set_config = tda998x_encoder_slave_set_config,
|
||||
.destroy = tda998x_encoder_slave_destroy,
|
||||
.dpms = tda998x_encoder_slave_dpms,
|
||||
.save = tda998x_encoder_save,
|
||||
.restore = tda998x_encoder_restore,
|
||||
.mode_fixup = tda998x_encoder_mode_fixup,
|
||||
.mode_valid = tda998x_encoder_slave_mode_valid,
|
||||
.mode_set = tda998x_encoder_slave_mode_set,
|
||||
.detect = tda998x_encoder_slave_detect,
|
||||
.get_modes = tda998x_encoder_slave_get_modes,
|
||||
.create_resources = tda998x_encoder_slave_create_resources,
|
||||
.set_property = tda998x_encoder_set_property,
|
||||
};
|
||||
|
||||
/* I2C driver functions */
|
||||
|
||||
static int tda998x_create(struct i2c_client *client, struct tda998x_priv *priv)
|
||||
@ -1413,31 +1328,6 @@ fail:
|
||||
return -ENXIO;
|
||||
}
|
||||
|
||||
static int tda998x_encoder_init(struct i2c_client *client,
|
||||
struct drm_device *dev,
|
||||
struct drm_encoder_slave *encoder_slave)
|
||||
{
|
||||
struct tda998x_priv *priv;
|
||||
int ret;
|
||||
|
||||
priv = kzalloc(sizeof(*priv), GFP_KERNEL);
|
||||
if (!priv)
|
||||
return -ENOMEM;
|
||||
|
||||
priv->encoder = &encoder_slave->base;
|
||||
|
||||
ret = tda998x_create(client, priv);
|
||||
if (ret) {
|
||||
kfree(priv);
|
||||
return ret;
|
||||
}
|
||||
|
||||
encoder_slave->slave_priv = priv;
|
||||
encoder_slave->slave_funcs = &tda998x_encoder_slave_funcs;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct tda998x_priv2 {
|
||||
struct tda998x_priv base;
|
||||
struct drm_encoder encoder;
|
||||
@ -1659,38 +1549,18 @@ static struct i2c_device_id tda998x_ids[] = {
|
||||
};
|
||||
MODULE_DEVICE_TABLE(i2c, tda998x_ids);
|
||||
|
||||
static struct drm_i2c_encoder_driver tda998x_driver = {
|
||||
.i2c_driver = {
|
||||
.probe = tda998x_probe,
|
||||
.remove = tda998x_remove,
|
||||
.driver = {
|
||||
.name = "tda998x",
|
||||
.of_match_table = of_match_ptr(tda998x_dt_ids),
|
||||
},
|
||||
.id_table = tda998x_ids,
|
||||
static struct i2c_driver tda998x_driver = {
|
||||
.probe = tda998x_probe,
|
||||
.remove = tda998x_remove,
|
||||
.driver = {
|
||||
.name = "tda998x",
|
||||
.of_match_table = of_match_ptr(tda998x_dt_ids),
|
||||
},
|
||||
.encoder_init = tda998x_encoder_init,
|
||||
.id_table = tda998x_ids,
|
||||
};
|
||||
|
||||
/* Module initialization */
|
||||
|
||||
static int __init
|
||||
tda998x_init(void)
|
||||
{
|
||||
DBG("");
|
||||
return drm_i2c_encoder_register(THIS_MODULE, &tda998x_driver);
|
||||
}
|
||||
|
||||
static void __exit
|
||||
tda998x_exit(void)
|
||||
{
|
||||
DBG("");
|
||||
drm_i2c_encoder_unregister(&tda998x_driver);
|
||||
}
|
||||
module_i2c_driver(tda998x_driver);
|
||||
|
||||
MODULE_AUTHOR("Rob Clark <robdclark@gmail.com");
|
||||
MODULE_DESCRIPTION("NXP Semiconductors TDA998X HDMI Encoder");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
module_init(tda998x_init);
|
||||
module_exit(tda998x_exit);
|
||||
|
Loading…
Reference in New Issue
Block a user