Re: [PATCH v11 2/5] media: renesas: vsp1: Add support to deassert/assert reset line

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

 



Hi,

On Mo, 2022-07-18 at 09:46 +0000, Biju Das wrote:
> Hi Philipp and Geert,
> 
> > Subject: Re: [PATCH v11 2/5] media: renesas: vsp1: Add support to
> > deassert/assert reset line
> > 
> > Hi Philipp,
> > 
> > On Wed, Jul 13, 2022 at 12:32 PM Philipp Zabel <p.zabel@xxxxxxxxxxxxxx>
> > wrote:
> > > On Wed, Jul 13, 2022 at 11:27:56AM +0200, Geert Uytterhoeven wrote:
> > > [...]
> > > > Actually I suggested handling this in the VSP driver, as VSP seems
> > > > to be "special".
> > > > 
> > > > > 
> > > > > [1]
> > > 
> > > So reset_control_status never actually returns 1 and the polling loop
> > > is not necessary at all?
> > > 
> > > If it's just the status register read that fixes things for VSP, could
> > > it be that the deasserting register write to the reset controller and
> > > the following register writes to VSP are not ordered somewhere at the
> > > interconnect and the read issued to the reset controller just
> > > guarantees that order?
> > 
> > The udelay() also works.
> > 
> > While the reset may be deasserted immediately (at the reset controller
> > level), the VSP may need some additional time to settle/initialize (at
> > the VSP level).

^ this feels to me like we are blindly applying a workaround for an
unknown problem. Is there any way to find out what actually causes this
delay (or status readback) to be necessary? Is there something
documented, like a certain number of VSP clocks required to internally
propagate the reset?

> > 
> > Reset is known to work on other blocks on the same SoC, so that's why I
> > suggested handling this in the VSP driver instead, like we already do for
> > i2c.
> 
> From the discussion, we agree that the current implementation is good.
> 
> Please correct me if my understanding is wrong.

>From my understanding, not quite. At least the timeout poll is
unnecessary and misleading. It suggests that reset_control_status()
could return 0 at this point, which would be a bug in the reset driver.

If reset_control_status() only ever returns 1 and the polling loop ends
in the first iteration, you can drop the loop and just read status
once. Or use udelay(), at this point I have not enough information to
understand which would be more appropriate.

regards
Philipp



[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