Re: [PATCH net-next v12 09/14] dpll: zl3073x: Register DPLL devices and pins

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

 



Wed, Jul 02, 2025 at 02:16:53PM +0200, ivecera@xxxxxxxxxx wrote:
>
>
>On 02. 07. 25 2:02 odp., Jiri Pirko wrote:
>> Wed, Jul 02, 2025 at 01:49:22PM +0200, ivecera@xxxxxxxxxx wrote:
>> > 
>> > 
>> > On 02. 07. 25 12:57 odp., Jiri Pirko wrote:
>> > > Sun, Jun 29, 2025 at 09:10:44PM +0200, ivecera@xxxxxxxxxx wrote:
>> > > 
>> > > [...]
>> > > 
>> > > > +/**
>> > > > + * zl3073x_dpll_device_register - register DPLL device
>> > > > + * @zldpll: pointer to zl3073x_dpll structure
>> > > > + *
>> > > > + * Registers given DPLL device into DPLL sub-system.
>> > > > + *
>> > > > + * Return: 0 on success, <0 on error
>> > > > + */
>> > > > +static int
>> > > > +zl3073x_dpll_device_register(struct zl3073x_dpll *zldpll)
>> > > > +{
>> > > > +	struct zl3073x_dev *zldev = zldpll->dev;
>> > > > +	u8 dpll_mode_refsel;
>> > > > +	int rc;
>> > > > +
>> > > > +	/* Read DPLL mode and forcibly selected reference */
>> > > > +	rc = zl3073x_read_u8(zldev, ZL_REG_DPLL_MODE_REFSEL(zldpll->id),
>> > > > +			     &dpll_mode_refsel);
>> > > > +	if (rc)
>> > > > +		return rc;
>> > > > +
>> > > > +	/* Extract mode and selected input reference */
>> > > > +	zldpll->refsel_mode = FIELD_GET(ZL_DPLL_MODE_REFSEL_MODE,
>> > > > +					dpll_mode_refsel);
>> > > 
>> > > Who sets this?
>> > 
>> > WDYM? refsel_mode register? If so this register is populated from
>> > configuration stored in flash inside the chip. And the configuration
>> > is prepared by vendor/OEM.
>> 
>> Okay. Any plan to implement on-fly change of this?
>
>Do you mean switching between automatic and manual mode?
>If so? Yes, later, need to extend DPLL API to allow this.

That is why I ask. Looking forward to it.

>
>Ivan
>
>> > 
>> > > > +	zldpll->forced_ref = FIELD_GET(ZL_DPLL_MODE_REFSEL_REF,
>> > > > +				       dpll_mode_refsel);
>> > > > +
>> > > > +	zldpll->dpll_dev = dpll_device_get(zldev->clock_id, zldpll->id,
>> > > > +					   THIS_MODULE);
>> > > > +	if (IS_ERR(zldpll->dpll_dev)) {
>> > > > +		rc = PTR_ERR(zldpll->dpll_dev);
>> > > > +		zldpll->dpll_dev = NULL;
>> > > > +
>> > > > +		return rc;
>> > > > +	}
>> > > > +
>> > > > +	rc = dpll_device_register(zldpll->dpll_dev,
>> > > > +				  zl3073x_prop_dpll_type_get(zldev, zldpll->id),
>> > > > +				  &zl3073x_dpll_device_ops, zldpll);
>> > > > +	if (rc) {
>> > > > +		dpll_device_put(zldpll->dpll_dev);
>> > > > +		zldpll->dpll_dev = NULL;
>> > > > +	}
>> > > > +
>> > > > +	return rc;
>> > > > +}
>> > > 
>> > > [...]
>> > > 
>> > 
>> 
>




[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux