2021-10-13 08:51:57

by Alexander Stein

[permalink] [raw]
Subject: AW: (EXT) Re: [PATCH v2 1/2] dt-bindings: mtd: spi-nor: Add output-driver-strength property

Hello Michael,


Am 2021-10-12 09:48, schrieb Michael Walle:
> Am 2021-10-12 08:17, schrieb Alexander Stein:
> > This property is for optimizing output voltage impedance and is
> > specific to each board. It overwrites the default set by the flash
> > device. Various flash devices support different impedances.
> >
> > Signed-off-by: Alexander Stein <[email protected]>
> > ---
> > Changes in v2:
> > * Updated the property description and the commit message accordingly
> >
> > Documentation/devicetree/bindings/mtd/jedec,spi-nor.yaml | 8 ++++++++
> > 1 file changed, 8 insertions(+)
> >
> > diff --git a/Documentation/devicetree/bindings/mtd/jedec,spi-nor.yaml
> > b/Documentation/devicetree/bindings/mtd/jedec,spi-nor.yaml
> > index ed590d7c6e37..4c3c506a8853 100644
> > --- a/Documentation/devicetree/bindings/mtd/jedec,spi-nor.yaml
> > +++ b/Documentation/devicetree/bindings/mtd/jedec,spi-nor.yaml
> > @@ -72,6 +72,14 @@ properties:
> > be used on such systems, to denote the absence of a reliable
> > reset
> > mechanism.
> >
> > + output-driver-strength:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Output driver strength in ohms which optimizes the impedance at
> > Vcc/2
> > + output voltage. This property overwrites the default set by the
> > flash
> > + device. This is board specific and should be determined by the
> > + manufacturer. Various flash devices support different
> > impedances.
>
> Mh, this seems to be very tailored to this flash chip. Eg. the "Vcc/2",
> is
> this something specific to this flash or is this some kind of common
> usage?

"Vcc/2" is taken from the datasheet description.

> For example, Winbond flashes specifies the output driver strength in
> percent.
> Settings are 25%, 50%, 75%, 100% there.
>
> I'd have to ask a hardware guy, if one could convert between these two
> representations of the driver strength.

Well, 100% must map to some actual value. Which then can be used to create
a discrete value table, which are then supported by the flash driver.
E.g. for Micron not every flash supports the same set of settings for
driver strength.
Macronix uses similar settings (values and bitmask), but in a different
register. But if some vendors have pretty much incompatible settings, it
might be feasible to provide vendor specific settings, e.g.
"micron,drive-strength = <45>" (for 45 Ohm) or "winbond,drive-strength = <100>"
(for 100%).

Best regards,
Alexander


2021-10-13 14:26:56

by Michael Walle

[permalink] [raw]
Subject: Re: AW: (EXT) Re: [PATCH v2 1/2] dt-bindings: mtd: spi-nor: Add output-driver-strength property

Hi,

Am 2021-10-13 10:47, schrieb Alexander Stein:
> Am 2021-10-12 09:48, schrieb Michael Walle:
>> Am 2021-10-12 08:17, schrieb Alexander Stein:
>> > This property is for optimizing output voltage impedance and is
>> > specific to each board. It overwrites the default set by the flash
>> > device. Various flash devices support different impedances.
>> >
>> > Signed-off-by: Alexander Stein <[email protected]>
>> > ---
>> > Changes in v2:
>> > * Updated the property description and the commit message accordingly
>> >
>> > Documentation/devicetree/bindings/mtd/jedec,spi-nor.yaml | 8 ++++++++
>> > 1 file changed, 8 insertions(+)
>> >
>> > diff --git a/Documentation/devicetree/bindings/mtd/jedec,spi-nor.yaml
>> > b/Documentation/devicetree/bindings/mtd/jedec,spi-nor.yaml
>> > index ed590d7c6e37..4c3c506a8853 100644
>> > --- a/Documentation/devicetree/bindings/mtd/jedec,spi-nor.yaml
>> > +++ b/Documentation/devicetree/bindings/mtd/jedec,spi-nor.yaml
>> > @@ -72,6 +72,14 @@ properties:
>> > be used on such systems, to denote the absence of a reliable
>> > reset
>> > mechanism.
>> >
>> > + output-driver-strength:
>> > + $ref: /schemas/types.yaml#/definitions/uint32
>> > + description:
>> > + Output driver strength in ohms which optimizes the impedance at
>> > Vcc/2
>> > + output voltage. This property overwrites the default set by the
>> > flash
>> > + device. This is board specific and should be determined by the
>> > + manufacturer. Various flash devices support different
>> > impedances.
>>
>> Mh, this seems to be very tailored to this flash chip. Eg. the
>> "Vcc/2",
>> is
>> this something specific to this flash or is this some kind of common
>> usage?
>
> "Vcc/2" is taken from the datasheet description.

But this property should be as generic as possible. So at least I'd
drop the "optimizes the imdance at Vcc/2". And as Rob mentioned,
"strength" implies (milli)amps. Shouldn't it be output-driver-impedance
in this case?

>> For example, Winbond flashes specifies the output driver strength in
>> percent.
>> Settings are 25%, 50%, 75%, 100% there.
>>
>> I'd have to ask a hardware guy, if one could convert between these two
>> representations of the driver strength.
>
> Well, 100% must map to some actual value. Which then can be used to
> create
> a discrete value table, which are then supported by the flash driver.

Which unfortunatly isn't possible because there is no refence for this
obscure value. That is, the datasheet doesn't mention what 100% actually
is.

> E.g. for Micron not every flash supports the same set of settings for
> driver strength.
> Macronix uses similar settings (values and bitmask), but in a different
> register. But if some vendors have pretty much incompatible settings,
> it
> might be feasible to provide vendor specific settings, e.g.
> "micron,drive-strength = <45>" (for 45 Ohm) or "winbond,drive-strength
> = <100>"
> (for 100%).

Different registers/values aren't the problem here. The problem is that
different units are used to express the same thing. But lets wait for
Rob's answer to my previous question.

To summarize there are flashes where you can select different impedances
for the output driver and flashes where you can select different
percentages
for the output driver strength and there might also be flashes where you
can specify the output driver strength in (milli)amps. And it might not
always be possible to convert between these values. Therefore, will
these
be three different DT properties?

-michael