[Intel-gfx] [PATCH v2 2/9] drm/i915/dsi: add support for DSI sequence block v2 gpio element

Jani Nikula jani.nikula at intel.com
Tue Apr 5 07:33:49 UTC 2016


On Mon, 04 Apr 2016, Ville Syrjälä <ville.syrjala at linux.intel.com> wrote:
> On Fri, Mar 18, 2016 at 01:11:10PM +0200, Jani Nikula wrote:
>> In sequence block v2, and only in v2, the gpio source (i.e. IOSF port)
>> is specified separately.
>> 
>> v2: initialize gpio_source to 0 and handle v1 and v2 in the same branch
>> 
>> Signed-off-by: Jani Nikula <jani.nikula at intel.com>
>
> Reviewed-by: Ville Syrjälä <ville.syrjala at linux.intel.com>

Pushed to drm-intel-next-queued, thanks for the review.

BR,
Jani.


>
>> ---
>>  drivers/gpu/drm/i915/intel_dsi_panel_vbt.c | 22 ++++++++++++++++++----
>>  1 file changed, 18 insertions(+), 4 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c b/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c
>> index f687b2e9d8ca..af1a47b5224f 100644
>> --- a/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c
>> +++ b/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c
>> @@ -198,7 +198,7 @@ static const u8 *mipi_exec_delay(struct intel_dsi *intel_dsi, const u8 *data)
>>  
>>  static const u8 *mipi_exec_gpio(struct intel_dsi *intel_dsi, const u8 *data)
>>  {
>> -	u8 gpio_index, action;
>> +	u8 gpio_source, gpio_index, action, port;
>>  	u16 function, pad;
>>  	u32 val;
>>  	struct drm_device *dev = intel_dsi->base.base.dev;
>> @@ -209,6 +209,12 @@ static const u8 *mipi_exec_gpio(struct intel_dsi *intel_dsi, const u8 *data)
>>  
>>  	gpio_index = *data++;
>>  
>> +	/* gpio source in sequence v2 only */
>> +	if (dev_priv->vbt.dsi.seq_version == 2)
>> +		gpio_source = (*data >> 1) & 3;
>> +	else
>> +		gpio_source = 0;
>> +
>>  	/* pull up/down */
>>  	action = *data++ & 1;
>>  
>> @@ -225,6 +231,15 @@ static const u8 *mipi_exec_gpio(struct intel_dsi *intel_dsi, const u8 *data)
>>  	if (dev_priv->vbt.dsi.seq_version >= 3) {
>>  		DRM_DEBUG_KMS("GPIO element v3 not supported\n");
>>  		goto out;
>> +	} else {
>> +		if (gpio_source == 0) {
>> +			port = IOSF_PORT_GPIO_NC;
>> +		} else if (gpio_source == 1) {
>> +			port = IOSF_PORT_GPIO_SC;
>> +		} else {
>> +			DRM_DEBUG_KMS("unknown gpio source %u\n", gpio_source);
>> +			goto out;
>> +		}
>>  	}
>>  
>>  	function = gtable[gpio_index].function_reg;
>> @@ -234,15 +249,14 @@ static const u8 *mipi_exec_gpio(struct intel_dsi *intel_dsi, const u8 *data)
>>  	if (!gtable[gpio_index].init) {
>>  		/* program the function */
>>  		/* FIXME: remove constant below */
>> -		vlv_iosf_sb_write(dev_priv, IOSF_PORT_GPIO_NC, function,
>> -				  0x2000CC00);
>> +		vlv_iosf_sb_write(dev_priv, port, function, 0x2000CC00);
>>  		gtable[gpio_index].init = 1;
>>  	}
>>  
>>  	val = 0x4 | action;
>>  
>>  	/* pull up/down */
>> -	vlv_iosf_sb_write(dev_priv, IOSF_PORT_GPIO_NC, pad, val);
>> +	vlv_iosf_sb_write(dev_priv, port, pad, val);
>>  	mutex_unlock(&dev_priv->sb_lock);
>>  
>>  out:
>> -- 
>> 2.1.4

-- 
Jani Nikula, Intel Open Source Technology Center


More information about the Intel-gfx mailing list