Commit ba1677f7 authored by Patrik Jakobsson's avatar Patrik Jakobsson
Browse files

drm/gma500: Make gma_i2c_chan a subclass of i2c_adapter



This makes it easier to get at the full gma_i2c_chan when having an
i2c_adapter from eg. drm_connector->ddc.

Signed-off-by: default avatarPatrik Jakobsson <patrik.r.jakobsson@gmail.com>
Acked-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Link: https://patchwork.freedesktop.org/patch/msgid/20220601092311.22648-3-patrik.r.jakobsson@gmail.com
parent 04477e5e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -203,7 +203,7 @@ static int cdv_intel_crt_get_modes(struct drm_connector *connector)
{
	struct gma_encoder *gma_encoder = gma_attached_encoder(connector);
	return psb_intel_ddc_get_modes(connector,
				       &gma_encoder->ddc_bus->adapter);
				       &gma_encoder->ddc_bus->base);
}

static int cdv_intel_crt_set_property(struct drm_connector *connector,
+3 −3
Original line number Diff line number Diff line
@@ -130,7 +130,7 @@ static enum drm_connector_status cdv_hdmi_detect(
	struct edid *edid = NULL;
	enum drm_connector_status status = connector_status_disconnected;

	edid = drm_get_edid(connector, &gma_encoder->i2c_bus->adapter);
	edid = drm_get_edid(connector, &gma_encoder->i2c_bus->base);

	hdmi_priv->has_hdmi_sink = false;
	hdmi_priv->has_hdmi_audio = false;
@@ -212,7 +212,7 @@ static int cdv_hdmi_get_modes(struct drm_connector *connector)
	struct edid *edid = NULL;
	int ret = 0;

	edid = drm_get_edid(connector, &gma_encoder->i2c_bus->adapter);
	edid = drm_get_edid(connector, &gma_encoder->i2c_bus->base);
	if (edid) {
		drm_connector_update_edid_property(connector, edid);
		ret = drm_add_edid_modes(connector, edid);
@@ -350,7 +350,7 @@ void cdv_hdmi_init(struct drm_device *dev,
		goto failed_ddc;
	}

	hdmi_priv->hdmi_i2c_adapter = &(gma_encoder->i2c_bus->adapter);
	hdmi_priv->hdmi_i2c_adapter = &gma_encoder->i2c_bus->base;
	hdmi_priv->dev = dev;
	return;

+2 −2
Original line number Diff line number Diff line
@@ -302,7 +302,7 @@ static int cdv_intel_lvds_get_modes(struct drm_connector *connector)
	struct psb_intel_mode_device *mode_dev = &dev_priv->mode_dev;
	int ret;

	ret = psb_intel_ddc_get_modes(connector, &gma_encoder->i2c_bus->adapter);
	ret = psb_intel_ddc_get_modes(connector, &gma_encoder->i2c_bus->base);

	if (ret)
		return ret;
@@ -583,7 +583,7 @@ void cdv_intel_lvds_init(struct drm_device *dev,
	 */
	mutex_lock(&dev->mode_config.mutex);
	psb_intel_ddc_get_modes(connector,
				&gma_encoder->ddc_bus->adapter);
				&gma_encoder->ddc_bus->base);
	list_for_each_entry(scan, &connector->probed_modes, head) {
		if (scan->type & DRM_MODE_TYPE_PREFERRED) {
			mode_dev->panel_fixed_mode =
+7 −7
Original line number Diff line number Diff line
@@ -113,10 +113,10 @@ struct gma_i2c_chan *gma_i2c_create(struct drm_device *dev, const u32 reg,

	chan->drm_dev = dev;
	chan->reg = reg;
	snprintf(chan->adapter.name, I2C_NAME_SIZE, "intel drm %s", name);
	chan->adapter.owner = THIS_MODULE;
	chan->adapter.algo_data = &chan->algo;
	chan->adapter.dev.parent = dev->dev;
	snprintf(chan->base.name, I2C_NAME_SIZE, "intel drm %s", name);
	chan->base.owner = THIS_MODULE;
	chan->base.algo_data = &chan->algo;
	chan->base.dev.parent = dev->dev;
	chan->algo.setsda = set_data;
	chan->algo.setscl = set_clock;
	chan->algo.getsda = get_data;
@@ -125,9 +125,9 @@ struct gma_i2c_chan *gma_i2c_create(struct drm_device *dev, const u32 reg,
	chan->algo.timeout = usecs_to_jiffies(2200);
	chan->algo.data = chan;

	i2c_set_adapdata(&chan->adapter, chan);
	i2c_set_adapdata(&chan->base, chan);

	if (i2c_bit_add_bus(&chan->adapter))
	if (i2c_bit_add_bus(&chan->base))
		goto out_free;

	/* JJJ:  raise SCL and SDA? */
@@ -153,6 +153,6 @@ void gma_i2c_destroy(struct gma_i2c_chan *chan)
	if (!chan)
		return;

	i2c_del_adapter(&chan->adapter);
	i2c_del_adapter(&chan->base);
	kfree(chan);
}
+1 −1
Original line number Diff line number Diff line
@@ -359,7 +359,7 @@ void oaktrail_lvds_init(struct drm_device *dev,
	if (edid == NULL && dev_priv->lpc_gpio_base) {
		oaktrail_lvds_i2c_init(encoder);
		if (gma_encoder->ddc_bus != NULL) {
			i2c_adap = &gma_encoder->ddc_bus->adapter;
			i2c_adap = &gma_encoder->ddc_bus->base;
			edid = drm_get_edid(connector, i2c_adap);
		}
	}
Loading