Re: [PATCH v2] media: vsp1: Add support for the V3U VSPD

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Laurent,

On 22/03/2021 19:08, Laurent Pinchart wrote:
> Hi Kieran,
> 
> Thank you for the patch.
> 
> On Mon, Mar 22, 2021 at 05:39:49PM +0000, Kieran Bingham wrote:
>> The V3U provides two VSPD instances, with a new update to the version
>> register to detect the new SoC.
>>
>> Add the new version and model detection, and detail the features
>> available in this module.
>>
>> Signed-off-by: Kieran Bingham <kieran.bingham+renesas@xxxxxxxxxxxxxxxx>
>> ---
>> This patch adds in the VSPd on the V3U, and successfully probes and can
>> read and write to registers.
>>
>> However, as yet I have not been able to successfully validate the VSPD
>> using the UAPI interface (by forcing .uapi = true)
> 
> Stupid question: while I have set .uapi to true to test VSPD instances
> in Gen3 SoCs, this isn't something we routinely do, so maybe you should
> first check on a Gen3 board if this hack still works ?

I did that already ;-)

Works on the H3 Salvator-XS.


>> The observed symptoms show that the hardware halts at the first display
>> list queued to the device.
>>
>> Notably, however the display list has been processed, and the registers
>> set by the display list are updated accordingly and can be read back,
>> inferring that the display list was processed and the frame commenced.
>>
>> Alas the frame never completes, and no interrupts are generated.
>>
>> Investigating this, I have seen that the CPG MSSR configures the FCPVD
>> and VSPD on the R8A779A0_CLK_S3D1 clock, which appears to be a 266666656
>> clock. This seems low, and I would expect the VSP to share the same
>> clocking as the VIN/VSPX, which is on R8A779A0_CLK_S1D1.
>>
>> However, changing those clocks has no effect on the operation of the
>> VSPD.
>>
>>  drivers/media/platform/vsp1/vsp1_drv.c  | 10 ++++++++++
>>  drivers/media/platform/vsp1/vsp1_regs.h |  3 +++
>>  2 files changed, 13 insertions(+)
>>
>> diff --git a/drivers/media/platform/vsp1/vsp1_drv.c b/drivers/media/platform/vsp1/vsp1_drv.c
>> index aa66e4f5f3f3..0a9812206b3f 100644
>> --- a/drivers/media/platform/vsp1/vsp1_drv.c
>> +++ b/drivers/media/platform/vsp1/vsp1_drv.c
>> @@ -785,6 +785,16 @@ static const struct vsp1_device_info vsp1_device_infos[] = {
>>  		.uif_count = 2,
>>  		.wpf_count = 2,
>>  		.num_bru_inputs = 5,
>> +	}, {
>> +		.version = VI6_IP_VERSION_MODEL_VSPD_V3U,
>> +		.model = "VSP2-D",
>> +		.gen = 3,
>> +		.features = VSP1_HAS_BRU | VSP1_HAS_CLU | VSP1_HAS_EXT_DL,
> 
> Unless I'm mistaken, the V3U VSPD has no CLU. It has a CLUT in RPF2, but
> that's a different feature.
> 
> The BSP code also sets VSP1_HAS_WPF_VFLIP here, but according to the
> documentation, that's not correct, so I'd skip it for now.

Yes, I saw the incorrect VFLIP in the BSP, but I had not realised CLU !=
CLUT ;-)

I thought that was shorthand for it... Ooops. I'll update.



> 
> With this,
> 
> Reviewed-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx>
> 
>> +		.lif_count = 1,
>> +		.rpf_count = 5,
>> +		.uif_count = 2,
>> +		.wpf_count = 1,
>> +		.num_bru_inputs = 5,
>>  	},
>>  };
>>  
>> diff --git a/drivers/media/platform/vsp1/vsp1_regs.h b/drivers/media/platform/vsp1/vsp1_regs.h
>> index fe3130db1fa2..b378ea4451ce 100644
>> --- a/drivers/media/platform/vsp1/vsp1_regs.h
>> +++ b/drivers/media/platform/vsp1/vsp1_regs.h
>> @@ -766,6 +766,8 @@
>>  #define VI6_IP_VERSION_MODEL_VSPD_V3	(0x18 << 8)
>>  #define VI6_IP_VERSION_MODEL_VSPDL_GEN3	(0x19 << 8)
>>  #define VI6_IP_VERSION_MODEL_VSPBS_GEN3	(0x1a << 8)
>> +#define VI6_IP_VERSION_MODEL_VSPD_V3U	(0x1c << 8)
>> +
>>  #define VI6_IP_VERSION_SOC_MASK		(0xff << 0)
>>  #define VI6_IP_VERSION_SOC_H2		(0x01 << 0)
>>  #define VI6_IP_VERSION_SOC_V2H		(0x01 << 0)
>> @@ -777,6 +779,7 @@
>>  #define VI6_IP_VERSION_SOC_D3		(0x04 << 0)
>>  #define VI6_IP_VERSION_SOC_M3N		(0x04 << 0)
>>  #define VI6_IP_VERSION_SOC_E3		(0x04 << 0)
>> +#define VI6_IP_VERSION_SOC_V3U		(0x05 << 0)
>>  
>>  /* -----------------------------------------------------------------------------
>>   * RPF CLUT Registers
> 




[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux