[PATCH v3 03/46] media: sun6i-csi: Grab bus clock instead of passing it to regmap

Paul Kocialkowski paul.kocialkowski at bootlin.com
Fri Mar 18 01:49:04 PDT 2022


Hi Jernej,

On Tue 15 Mar 22, 20:22, Jernej Škrabec wrote:
> Hi Paul!
> 
> Dne petek, 11. marec 2022 ob 15:34:49 CET je Paul Kocialkowski napisal(a):
> > Since the bus clock alone is not enough to get access to the registers,
> > don't pass it to regmap and manage it instead just like the other
> > clocks.
> > 
> 
> Let me ask it in another way, is bus clock needed only for register access? If 
> yes, it makes sense to keep it enabled only during register access.

Ah right, I lost sight that what regmap will do is to enable/disable the
clock around register access. I understand there might be an advantage
in terms of power consumption here.

I haven't checked specifically, but since it was used like that before
it's probably fine.

Out of curiosity: is there any noticeable latency added by the process?

Cheers,

Paul

> Best regards,
> Jernej
> 
> > Signed-off-by: Paul Kocialkowski <paul.kocialkowski at bootlin.com>
> > ---
> >  drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c | 10 ++++++++--
> >  drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.h |  1 +
> >  2 files changed, 9 insertions(+), 2 deletions(-)
> > 
> > diff --git a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c b/drivers/
> media/platform/sunxi/sun6i-csi/sun6i_csi.c
> > index 5fbaa1e99412..dc79f3c14336 100644
> > --- a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c
> > +++ b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c
> > @@ -827,13 +827,19 @@ static int sun6i_csi_resource_request(struct 
> sun6i_csi_device *csi_dev,
> >  	if (IS_ERR(io_base))
> >  		return PTR_ERR(io_base);
> >  
> > -	csi_dev->regmap = devm_regmap_init_mmio_clk(&pdev->dev, "bus", 
> io_base,
> > -						    
> &sun6i_csi_regmap_config);
> > +	csi_dev->regmap = devm_regmap_init_mmio(&pdev->dev, io_base,
> > +						
> &sun6i_csi_regmap_config);
> >  	if (IS_ERR(csi_dev->regmap)) {
> >  		dev_err(&pdev->dev, "Failed to init register map\n");
> >  		return PTR_ERR(csi_dev->regmap);
> >  	}
> >  
> > +	csi_dev->clk_bus = devm_clk_get(&pdev->dev, "bus");
> > +	if (IS_ERR(csi_dev->clk_bus)) {
> > +		dev_err(&pdev->dev, "Unable to acquire bus clock\n");
> > +		return PTR_ERR(csi_dev->clk_bus);
> > +	}
> > +
> >  	csi_dev->clk_mod = devm_clk_get(&pdev->dev, "mod");
> >  	if (IS_ERR(csi_dev->clk_mod)) {
> >  		dev_err(&pdev->dev, "Unable to acquire csi clock\n");
> > diff --git a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.h b/drivers/
> media/platform/sunxi/sun6i-csi/sun6i_csi.h
> > index e4e7ac6c869f..356661b413f8 100644
> > --- a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.h
> > +++ b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.h
> > @@ -51,6 +51,7 @@ struct sun6i_csi_device {
> >  	struct sun6i_video		video;
> >  
> >  	struct regmap			*regmap;
> > +	struct clk			*clk_bus;
> >  	struct clk			*clk_mod;
> >  	struct clk			*clk_ram;
> >  	struct reset_control		*reset;
> > -- 
> > 2.35.1
> > 
> > 
> 
> 

-- 
Paul Kocialkowski, Bootlin
Embedded Linux and kernel engineering
https://bootlin.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20220318/44f09ad7/attachment.sig>


More information about the linux-arm-kernel mailing list