mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
To: Markus Schneider-Pargmann <msp@baylibre.com>
Cc: Rob Herring <robh@kernel.org>, Nishanth Menon <nm@ti.com>,
	Vignesh Raghavendra <vigneshr@ti.com>,
	Tero Kristo <kristo@kernel.org>,
	Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Srinivas Kandagatla <srinivas.kandagatla@linaro.org>,
	Santosh Shilimkar <ssantosh@kernel.org>,
	Andrew Davis <afd@ti.com>,
	linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/4] dt-bindings: hwinfo: ti,k3-socinfo: Add nvmem-cells
Date: Tue, 5 Mar 2024 15:11:36 +0100	[thread overview]
Message-ID: <620a2dca-1901-43d4-8b2b-7ae823705a6e@linaro.org> (raw)
In-Reply-To: <sowpixx2u4d5alj4udzr3qt47zevylukhpwkw3pfwnogqjse5w@xrxcozzvog6v>

On 05/03/2024 12:17, Markus Schneider-Pargmann wrote:
> Hi Krzysztof,
> 
> On Tue, Mar 05, 2024 at 08:43:03AM +0100, Krzysztof Kozlowski wrote:
>> On 04/03/2024 11:36, Markus Schneider-Pargmann wrote:
>>> Hi,
>>>
>>> On Sat, Feb 17, 2024 at 03:25:30PM +0100, Krzysztof Kozlowski wrote:
>>>> On 14/02/2024 10:31, Markus Schneider-Pargmann wrote:
>>>>> Hi Rob,
>>>>>
>>>>> On Tue, Feb 06, 2024 at 06:43:05PM +0000, Rob Herring wrote:
>>>>>> On Tue, Feb 06, 2024 at 03:37:09PM +0100, Markus Schneider-Pargmann wrote:
>>>>>>> The information k3-socinfo requires is stored in an efuse area. This
>>>>>>> area is required by other devices/drivers as well, so using nvmem-cells
>>>>>>> can be a cleaner way to describe which information are used.
>>>>>>>
>>>>>>> If nvmem-cells are supplied, the address range is not required.
>>>>>>> Cells chipvariant, chippartno and chipmanufacturer are introduced to
>>>>>>> cover all required information.
>>>>>>>
>>>>>>> Signed-off-by: Markus Schneider-Pargmann <msp@baylibre.com>
>>>>>>> Reviewed-by: Andrew Davis <afd@ti.com>
>>>>>>> ---
>>>>>>>  .../bindings/hwinfo/ti,k3-socinfo.yaml        | 23 ++++++++++++++++++-
>>>>>>>  1 file changed, 22 insertions(+), 1 deletion(-)
>>>>>>>
>>>>>>> diff --git a/Documentation/devicetree/bindings/hwinfo/ti,k3-socinfo.yaml b/Documentation/devicetree/bindings/hwinfo/ti,k3-socinfo.yaml
>>>>>>> index dada28b47ea0..f085b7275b7d 100644
>>>>>>> --- a/Documentation/devicetree/bindings/hwinfo/ti,k3-socinfo.yaml
>>>>>>> +++ b/Documentation/devicetree/bindings/hwinfo/ti,k3-socinfo.yaml
>>>>>>> @@ -26,9 +26,24 @@ properties:
>>>>>>>    reg:
>>>>>>>      maxItems: 1
>>>>>>>  
>>>>>>> +  nvmem-cells:
>>>>>>> +    $ref: /schemas/types.yaml#/definitions/phandle-array
>>>>>>> +
>>>>>>> +  nvmem-cell-names:
>>>>>>> +    items:
>>>>>>> +      - const: chipvariant
>>>>>>> +      - const: chippartno
>>>>>>> +      - const: chipmanufacturer
>>>>>>> +
>>>>>>>  required:
>>>>>>>    - compatible
>>>>>>> -  - reg
>>>>>>> +
>>>>>>> +oneOf:
>>>>>>> +  - required:
>>>>>>> +      - reg
>>>>>>> +  - required:
>>>>>>> +      - nvmem-cells
>>>>>>> +      - nvmem-cell-names
>>>>>>>  
>>>>>>>  additionalProperties: false
>>>>>>>  
>>>>>>> @@ -38,3 +53,9 @@ examples:
>>>>>>>          compatible = "ti,am654-chipid";
>>>>>>>          reg = <0x43000014 0x4>;
>>>>>>>      };
>>>>>>> +  - |
>>>>>>> +    chipid: chipid@14 {
>>>>>>> +        compatible = "ti,am654-chipid";
>>>>>>
>>>>>> This isn't compatible if you have a completely different way to access 
>>>>>> it. 
>>>>>
>>>>> Thanks, it is not entirely clear to me how I could go forward with this?
>>>>> Are you suggesting to use a different compatible? Or is it something
>>>>> else I could do to proceed with this conversion?
>>>>
>>>> What you claim now, is that you have one device with entirely different
>>>> interfaces and programming model. So either this is not the same device
>>>> or you just wrote bindings to whatever you have in driver.
>>>>
>>>> Nothing in commit msg explains this.
>>>>
>>>> What you should do? Depends. If you just write bindings for driver, then
>>>> stop. It's a NAK. Instead write bindings for hardware.
>>>>
>>>> If the first choice, just the hardware is somehow like this, then
>>>> explain in commit msg and device description, how this device can be
>>>> connected over other bus, not MMIO. You can draw some schematics in
>>>> commit msg explaining architecture etc.
>>>
>>> Sorry the information provided in the commit message is not very clear.
>>>
>>> The basic access to the registes is still MMIO. nvmem is used to have a
>>> better abstraction and cleaner description of the hardware.
>>>
>>> Currently most of the data is exported using the parent syscon device.
>>> The relevant data is read-only and contained in a single register with
>>> offset 0x14:
>>>   - Chip variant
>>>   - Chip part number
>>>   - Chip manufacturer
>>>
>>> There are more read-only registers in this section of address space.
>>> These are relevant to other components as they define the operating
>>> points for example. For the OPP table relevant are chip variant and chip
>>> speed (which is in a different register).
>>>
>>> Instead of devices refering to this whole register range of 0x20000 in
>>
>> Whaaaaat?
>>
>>> size, I would like to introduce this nvmem abstraction in between that
>>> describes the information and can directly be referenced by the devices
>>> that depend on it. In this case the above mentioned register with offset
>>> 0x14 is instead described as nvmem-layout like this:
>>>
>>> 	nvmem-layout {
>>> 		compatible = "fixed-layout";
>>> 		#address-cells = <1>;
>>> 		#size-cells = <1>;
>>>
>>> 		chip_manufacturer: jtagidmfg@14 {
>>> 			reg = <0x14 0x2>;
>>> 			bits = <1 11>;
>>> 		};
>>>
>>> 		chip_partno: jtagidpartno@15 {
>>> 			reg = <0x15 0x3>;
>>> 			bits = <4 16>;
>>> 		};
>>>
>>> 		chip_variant: jtagidvariant@17 {
>>> 			reg = <0x17 0x1>;
>>> 			bits = <4 4>;
>>> 		};
>>>
>>> 		chip_speed: jtaguseridspeed@18 {
>>> 			reg = <0x18 0x4>;
>>> 			bits = <6 5>;
>>> 		};
>>>
>>> The underlying registers are still the same but they are not hidden
>>> by the syscon phandles anymore.
>>>
>>> The device that consumes this data would now use
>>>
>>> 	nvmem-cells = <&chip_variant>, <&chip_speed>;
>>> 	nvmem-cell-names = "chipvariant", "chipspeed";
>>>
>>> instead of
>>>
>>> 	syscon = <&wkup_conf>;
>>
>> syscon allows you this as well - via phandle arguments.
>>
>> nvmem is for non-volatile memory, like OCOTP and eFUSE. This is not for
>> accessing regular MMIO registers of system-controller, regardless
>> whether they are read-only or not (regmap handles this nicely, BTW).
>> Although probably Apple efuses and few others can confuse here. It still
>> looks like you convert regular system-controller block into nvmem,
>> because you prefer that Linux driver abstraction...
> 
> The above mentioned data is set in the factory. There is other
> non-volatile data, like device feature registers, in the same address
> region, as well as OTP data like MAC and USB IDs. But it is not a pure
> non-volatile memory region. The data is copied into these registers by
> the ROM at boot.

Still entire block is MMIO IP in your SoC, not a efuse/OTP hardware.
nvmem is not for regular MMIO registers which are sometimes R, sometimes RW.

Best regards,
Krzysztof


  reply	other threads:[~2024-03-05 14:11 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-06 14:37 [PATCH 0/4] soc: ti: k3-socinfo: Add support for nvmem cells Markus Schneider-Pargmann
2024-02-06 14:37 ` [PATCH 1/4] nvmem: core: Read into buffers larger than data Markus Schneider-Pargmann
2024-02-06 22:07   ` Srinivas Kandagatla
2024-02-06 14:37 ` [PATCH 2/4] dt-bindings: hwinfo: ti,k3-socinfo: Add nvmem-cells Markus Schneider-Pargmann
2024-02-06 18:23   ` Rob Herring
2024-02-06 18:43   ` Rob Herring
2024-02-14  9:31     ` Markus Schneider-Pargmann
2024-02-17 14:25       ` Krzysztof Kozlowski
2024-03-04 10:36         ` Markus Schneider-Pargmann
2024-03-05  7:43           ` Krzysztof Kozlowski
2024-03-05 11:17             ` Markus Schneider-Pargmann
2024-03-05 14:11               ` Krzysztof Kozlowski [this message]
2024-03-05 14:42                 ` Andrew Davis
2024-03-05 17:01                   ` Krzysztof Kozlowski
2024-03-05 17:41                     ` Andrew Davis
2024-03-18 16:10                       ` Markus Schneider-Pargmann
2024-02-07  7:58   ` Krzysztof Kozlowski
2024-02-06 14:37 ` [PATCH 3/4] soc: ti: k3-socinfo: Add support for nvmem cells Markus Schneider-Pargmann
2024-02-06 14:37 ` [PATCH 4/4] arm64: dts: ti: k3-am62-wakeup: Add chip efuse nodes Markus Schneider-Pargmann
2024-02-06 17:48   ` Andrew Davis

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=620a2dca-1901-43d4-8b2b-7ae823705a6e@linaro.org \
    --to=krzysztof.kozlowski@linaro.org \
    --cc=afd@ti.com \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=kristo@kernel.org \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=msp@baylibre.com \
    --cc=nm@ti.com \
    --cc=robh@kernel.org \
    --cc=srinivas.kandagatla@linaro.org \
    --cc=ssantosh@kernel.org \
    --cc=vigneshr@ti.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®