Skip to content

Commit 587013d

Browse files
Baihan Lilumag
authored andcommitted
drm/hisilicon/hibmc: refactored struct hibmc_drm_private
Refactored struct hibmc_drm_private to separate VGA module from generic struct. Signed-off-by: Baihan Li <[email protected]> Signed-off-by: Yongbang Shi <[email protected]> Reviewed-by: Dmitry Baryshkov <[email protected]> Reviewed-by: Tian Tao <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected] Signed-off-by: Dmitry Baryshkov <[email protected]>
1 parent 94ee73e commit 587013d

File tree

3 files changed

+38
-39
lines changed

3 files changed

+38
-39
lines changed

drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.h

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,10 @@
2020

2121
#include <drm/drm_framebuffer.h>
2222

23-
struct hibmc_connector {
24-
struct drm_connector base;
25-
23+
struct hibmc_vdac {
24+
struct drm_device *dev;
25+
struct drm_encoder encoder;
26+
struct drm_connector connector;
2627
struct i2c_adapter adapter;
2728
struct i2c_algo_bit_data bit_data;
2829
};
@@ -35,13 +36,12 @@ struct hibmc_drm_private {
3536
struct drm_device dev;
3637
struct drm_plane primary_plane;
3738
struct drm_crtc crtc;
38-
struct drm_encoder encoder;
39-
struct hibmc_connector connector;
39+
struct hibmc_vdac vdac;
4040
};
4141

42-
static inline struct hibmc_connector *to_hibmc_connector(struct drm_connector *connector)
42+
static inline struct hibmc_vdac *to_hibmc_vdac(struct drm_connector *connector)
4343
{
44-
return container_of(connector, struct hibmc_connector, base);
44+
return container_of(connector, struct hibmc_vdac, connector);
4545
}
4646

4747
static inline struct hibmc_drm_private *to_hibmc_drm_private(struct drm_device *dev)
@@ -57,6 +57,6 @@ void hibmc_set_current_gate(struct hibmc_drm_private *priv,
5757
int hibmc_de_init(struct hibmc_drm_private *priv);
5858
int hibmc_vdac_init(struct hibmc_drm_private *priv);
5959

60-
int hibmc_ddc_create(struct drm_device *drm_dev, struct hibmc_connector *connector);
60+
int hibmc_ddc_create(struct drm_device *drm_dev, struct hibmc_vdac *connector);
6161

6262
#endif

drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_i2c.c

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525

2626
static void hibmc_set_i2c_signal(void *data, u32 mask, int value)
2727
{
28-
struct hibmc_connector *hibmc_connector = data;
29-
struct hibmc_drm_private *priv = to_hibmc_drm_private(hibmc_connector->base.dev);
28+
struct hibmc_vdac *vdac = data;
29+
struct hibmc_drm_private *priv = to_hibmc_drm_private(vdac->connector.dev);
3030
u32 tmp_dir = readl(priv->mmio + GPIO_DATA_DIRECTION);
3131

3232
if (value) {
@@ -45,8 +45,8 @@ static void hibmc_set_i2c_signal(void *data, u32 mask, int value)
4545

4646
static int hibmc_get_i2c_signal(void *data, u32 mask)
4747
{
48-
struct hibmc_connector *hibmc_connector = data;
49-
struct hibmc_drm_private *priv = to_hibmc_drm_private(hibmc_connector->base.dev);
48+
struct hibmc_vdac *vdac = data;
49+
struct hibmc_drm_private *priv = to_hibmc_drm_private(vdac->connector.dev);
5050
u32 tmp_dir = readl(priv->mmio + GPIO_DATA_DIRECTION);
5151

5252
if ((tmp_dir & mask) != mask) {
@@ -77,22 +77,21 @@ static int hibmc_ddc_getscl(void *data)
7777
return hibmc_get_i2c_signal(data, I2C_SCL_MASK);
7878
}
7979

80-
int hibmc_ddc_create(struct drm_device *drm_dev,
81-
struct hibmc_connector *connector)
80+
int hibmc_ddc_create(struct drm_device *drm_dev, struct hibmc_vdac *vdac)
8281
{
83-
connector->adapter.owner = THIS_MODULE;
84-
snprintf(connector->adapter.name, I2C_NAME_SIZE, "HIS i2c bit bus");
85-
connector->adapter.dev.parent = drm_dev->dev;
86-
i2c_set_adapdata(&connector->adapter, connector);
87-
connector->adapter.algo_data = &connector->bit_data;
88-
89-
connector->bit_data.udelay = 20;
90-
connector->bit_data.timeout = usecs_to_jiffies(2000);
91-
connector->bit_data.data = connector;
92-
connector->bit_data.setsda = hibmc_ddc_setsda;
93-
connector->bit_data.setscl = hibmc_ddc_setscl;
94-
connector->bit_data.getsda = hibmc_ddc_getsda;
95-
connector->bit_data.getscl = hibmc_ddc_getscl;
96-
97-
return i2c_bit_add_bus(&connector->adapter);
82+
vdac->adapter.owner = THIS_MODULE;
83+
snprintf(vdac->adapter.name, I2C_NAME_SIZE, "HIS i2c bit bus");
84+
vdac->adapter.dev.parent = drm_dev->dev;
85+
i2c_set_adapdata(&vdac->adapter, vdac);
86+
vdac->adapter.algo_data = &vdac->bit_data;
87+
88+
vdac->bit_data.udelay = 20;
89+
vdac->bit_data.timeout = usecs_to_jiffies(2000);
90+
vdac->bit_data.data = vdac;
91+
vdac->bit_data.setsda = hibmc_ddc_setsda;
92+
vdac->bit_data.setscl = hibmc_ddc_setscl;
93+
vdac->bit_data.getsda = hibmc_ddc_getsda;
94+
vdac->bit_data.getscl = hibmc_ddc_getscl;
95+
96+
return i2c_bit_add_bus(&vdac->adapter);
9897
}

drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@
2424

2525
static int hibmc_connector_get_modes(struct drm_connector *connector)
2626
{
27-
struct hibmc_connector *hibmc_connector = to_hibmc_connector(connector);
27+
struct hibmc_vdac *vdac = to_hibmc_vdac(connector);
2828
const struct drm_edid *drm_edid;
2929
int count;
3030

31-
drm_edid = drm_edid_read_ddc(connector, &hibmc_connector->adapter);
31+
drm_edid = drm_edid_read_ddc(connector, &vdac->adapter);
3232

3333
drm_edid_connector_update(connector, drm_edid);
3434

@@ -51,9 +51,9 @@ static int hibmc_connector_get_modes(struct drm_connector *connector)
5151

5252
static void hibmc_connector_destroy(struct drm_connector *connector)
5353
{
54-
struct hibmc_connector *hibmc_connector = to_hibmc_connector(connector);
54+
struct hibmc_vdac *vdac = to_hibmc_vdac(connector);
5555

56-
i2c_del_adapter(&hibmc_connector->adapter);
56+
i2c_del_adapter(&vdac->adapter);
5757
drm_connector_cleanup(connector);
5858
}
5959

@@ -93,20 +93,20 @@ static const struct drm_encoder_helper_funcs hibmc_encoder_helper_funcs = {
9393
int hibmc_vdac_init(struct hibmc_drm_private *priv)
9494
{
9595
struct drm_device *dev = &priv->dev;
96-
struct hibmc_connector *hibmc_connector = &priv->connector;
97-
struct drm_encoder *encoder = &priv->encoder;
96+
struct hibmc_vdac *vdac = &priv->vdac;
97+
struct drm_encoder *encoder = &vdac->encoder;
9898
struct drm_crtc *crtc = &priv->crtc;
99-
struct drm_connector *connector = &hibmc_connector->base;
99+
struct drm_connector *connector = &vdac->connector;
100100
int ret;
101101

102-
ret = hibmc_ddc_create(dev, hibmc_connector);
102+
ret = hibmc_ddc_create(dev, vdac);
103103
if (ret) {
104104
drm_err(dev, "failed to create ddc: %d\n", ret);
105105
return ret;
106106
}
107107

108108
encoder->possible_crtcs = drm_crtc_mask(crtc);
109-
ret = drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_DAC);
109+
ret = drmm_encoder_init(dev, encoder, NULL, DRM_MODE_ENCODER_DAC, NULL);
110110
if (ret) {
111111
drm_err(dev, "failed to init encoder: %d\n", ret);
112112
return ret;
@@ -117,7 +117,7 @@ int hibmc_vdac_init(struct hibmc_drm_private *priv)
117117
ret = drm_connector_init_with_ddc(dev, connector,
118118
&hibmc_connector_funcs,
119119
DRM_MODE_CONNECTOR_VGA,
120-
&hibmc_connector->adapter);
120+
&vdac->adapter);
121121
if (ret) {
122122
drm_err(dev, "failed to init connector: %d\n", ret);
123123
return ret;

0 commit comments

Comments
 (0)