Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b13d8e28 authored by Jani Nikula's avatar Jani Nikula
Browse files

drm/i915/dsi: use a temp variable for referencing the gpio table

parent 515d07de
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -75,12 +75,12 @@ static inline struct vbt_panel *to_vbt_panel(struct drm_panel *panel)
#define VLV_GPIO_PCONF0(base_offset)	(base_offset)
#define VLV_GPIO_PAD_VAL(base_offset)	((base_offset) + 8)

struct gpio_table {
struct gpio_map {
	u16 base_offset;
	bool init;
};

static struct gpio_table vlv_gpio_table[] = {
static struct gpio_map vlv_gpio_table[] = {
	{ VLV_GPIO_NC_0_HV_DDI0_HPD },
	{ VLV_GPIO_NC_1_HV_DDI0_DDC_SDA },
	{ VLV_GPIO_NC_2_HV_DDI0_DDC_SCL },
@@ -190,6 +190,7 @@ static const u8 *mipi_exec_delay(struct intel_dsi *intel_dsi, const u8 *data)
static void vlv_exec_gpio(struct drm_i915_private *dev_priv,
			  u8 gpio_source, u8 gpio_index, bool value)
{
	struct gpio_map *map;
	u16 pconf0, padval;
	u32 tmp;
	u8 port;
@@ -199,6 +200,8 @@ static void vlv_exec_gpio(struct drm_i915_private *dev_priv,
		return;
	}

	map = &vlv_gpio_table[gpio_index];

	if (dev_priv->vbt.dsi.seq_version >= 3) {
		DRM_DEBUG_KMS("GPIO element v3 not supported\n");
		return;
@@ -213,14 +216,14 @@ static void vlv_exec_gpio(struct drm_i915_private *dev_priv,
		}
	}

	pconf0 = VLV_GPIO_PCONF0(vlv_gpio_table[gpio_index].base_offset);
	padval = VLV_GPIO_PAD_VAL(vlv_gpio_table[gpio_index].base_offset);
	pconf0 = VLV_GPIO_PCONF0(map->base_offset);
	padval = VLV_GPIO_PAD_VAL(map->base_offset);

	mutex_lock(&dev_priv->sb_lock);
	if (!vlv_gpio_table[gpio_index].init) {
	if (!map->init) {
		/* FIXME: remove constant below */
		vlv_iosf_sb_write(dev_priv, port, pconf0, 0x2000CC00);
		vlv_gpio_table[gpio_index].init = true;
		map->init = true;
	}

	tmp = 0x4 | value;