[Intel-gfx] [PATCH v6 4/4] drm/i915/intel_dsi_vbt: Add support for PMIC MIPI sequences

Hans de Goede hdegoede at redhat.com
Wed Jan 9 09:40:44 UTC 2019


Hi,

On 07-01-19 16:31, Ville Syrjälä wrote:
> On Mon, Jan 07, 2019 at 12:15:56PM +0100, Hans de Goede wrote:
>> Add support for PMIC MIPI sequences using the new
>> intel_soc_pmic_exec_mipi_pmic_seq_element function.
>>
>> This fixes the DSI LCD panel not lighting up when not initialized by the
>> GOP (because an external monitor was connected) on GPD win and GPD pocket
>> devices.
>>
>> Specifically the LCD panel seems to need GPIO pin 9 on the PMIC to be
>> driven high, which is done through a PMIC MIPI sequence. Before this commit
>> if the sequence was not executed by the GOP the pin would stay low causing
>> the LCD panel to not work. Having the MIPI sequences properly control this
>> GPIO should also help save some power when the panel is off.
>>
>> Changes in v2, v3:
>> -Only changes to other patches in this patch-set
>>
>> Changes in v4:
>> -Move decoding of the raw 15 bytes PMIC MIPI sequence element into
>>   i2c-address, register-address, value and mask into the mipi_exec_pmic()
>>   function instead of passing the raw data to
>>   intel_soc_pmic_exec_mipi_pmic_seq_element()
>>
>> Signed-off-by: Hans de Goede <hdegoede at redhat.com>
> 
> Reviewed-by: Ville Syrjälä <ville.syrjala at linux.intel.com>

Thank you.

I've pushed this series to drm-intel-next-queued now.

Regards,

Hans



> 
>> ---
>>   drivers/gpu/drm/i915/intel_dsi_vbt.c | 22 +++++++++++++++++++++-
>>   1 file changed, 21 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/i915/intel_dsi_vbt.c b/drivers/gpu/drm/i915/intel_dsi_vbt.c
>> index 3d1fa1a03a66..240664ef294c 100644
>> --- a/drivers/gpu/drm/i915/intel_dsi_vbt.c
>> +++ b/drivers/gpu/drm/i915/intel_dsi_vbt.c
>> @@ -29,9 +29,11 @@
>>   #include <drm/drm_edid.h>
>>   #include <drm/i915_drm.h>
>>   #include <linux/gpio/consumer.h>
>> +#include <linux/mfd/intel_soc_pmic.h>
>>   #include <linux/slab.h>
>>   #include <video/mipi_display.h>
>>   #include <asm/intel-mid.h>
>> +#include <asm/unaligned.h>
>>   #include "i915_drv.h"
>>   #include "intel_drv.h"
>>   #include "intel_dsi.h"
>> @@ -392,7 +394,25 @@ static const u8 *mipi_exec_spi(struct intel_dsi *intel_dsi, const u8 *data)
>>   
>>   static const u8 *mipi_exec_pmic(struct intel_dsi *intel_dsi, const u8 *data)
>>   {
>> -	DRM_DEBUG_KMS("Skipping PMIC element execution\n");
>> +#ifdef CONFIG_PMIC_OPREGION
>> +	u32 value, mask, reg_address;
>> +	u16 i2c_address;
>> +	int ret;
>> +
>> +	/* byte 0 aka PMIC Flag is reserved */
>> +	i2c_address	= get_unaligned_le16(data + 1);
>> +	reg_address	= get_unaligned_le32(data + 3);
>> +	value		= get_unaligned_le32(data + 7);
>> +	mask		= get_unaligned_le32(data + 11);
>> +
>> +	ret = intel_soc_pmic_exec_mipi_pmic_seq_element(i2c_address,
>> +							reg_address,
>> +							value, mask);
>> +	if (ret)
>> +		DRM_ERROR("%s failed, error: %d\n", __func__, ret);
>> +#else
>> +	DRM_ERROR("Your hardware requires CONFIG_PMIC_OPREGION and it is not set\n");
>> +#endif
>>   
>>   	return data + 15;
>>   }
>> -- 
>> 2.20.1
>>
>> _______________________________________________
>> Intel-gfx mailing list
>> Intel-gfx at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
> 


More information about the Intel-gfx mailing list