From: Brad Larson <blarson@amd.com>
To: <arnd@arndb.de>
Cc: <adrian.hunter@intel.com>, <alcooperx@gmail.com>,
<andy.shevchenko@gmail.com>, <blarson@amd.com>,
<brendan.higgins@linux.dev>, <briannorris@chromium.org>,
<broonie@kernel.org>, <catalin.marinas@arm.com>,
<conor+dt@kernel.org>, <davidgow@google.com>,
<devicetree@vger.kernel.org>, <fancer.lancer@gmail.com>,
<gerg@linux-m68k.org>, <gsomlo@gmail.com>,
<hal.feng@starfivetech.com>, <hasegawa-hitomi@fujitsu.com>,
<j.neuschaefer@gmx.net>, <joel@jms.id.au>, <kernel@esmil.dk>,
<krzk@kernel.org>, <krzysztof.kozlowski+dt@linaro.org>,
<lee.jones@linaro.org>, <lee@kernel.org>,
<linux-arm-kernel@lists.infradead.org>,
<linux-kernel@vger.kernel.org>, <linux-mmc@vger.kernel.org>,
<linux-spi@vger.kernel.org>, <p.zabel@pengutronix.de>,
<rdunlap@infradead.org>, <robh+dt@kernel.org>,
<samuel@sholland.org>, <skhan@linuxfoundation.org>,
<suravee.suthikulpanit@amd.com>, <thomas.lendacky@amd.com>,
<tonyhuang.sunplus@gmail.com>, <ulf.hansson@linaro.org>,
<vaishnav.a@ti.com>, <walker.chen@starfivetech.com>,
<will@kernel.org>, <zhuyinbo@loongson.cn>
Subject: Re: [PATCH v14 8/8] soc: amd: Add support for AMD Pensando SoC Controller
Date: Mon, 7 Aug 2023 15:17:54 -0700 [thread overview]
Message-ID: <20230807221754.51667-1-blarson@amd.com> (raw)
In-Reply-To: <787582a3-51a1-494e-bfd0-b51d1117432e@app.fastmail.com>
Hi Arnd,
> On Wed, May 24, 2023, at 00:11, Brad Larson wrote:
>>> On Mon, May 15, 2023, at 20:16, Brad Larson wrote:
...
>>> Also, can you explain why this needs a low-lever user interface
>>> in the first place, rather than something that can be expressed
>>> using high-level abstractions as you already do with the reset
>>> control?
>>>
>>> All of the above should be part of the changelog text to get a
>>> driver like this merged. I don't think we can get a quick
>>> solution here though, so maybe you can start by removing the
>>> ioctl side and having the rest of the driver in drivers/reset?
Might be best to pull the whole thing for now until an acceptable
solution is reached. The reset function is a recovery mechanisim rarely
used where the byte access to the different IP at the 4 chip-selects
is needed for a system to boot.
>> In the original patchset I added a pensando compatible to spidev and that
>> was nacked in review and reusing some random compatible that made it into
>> spidev was just wrong. Further it was recommended this should be a system
>> specific driver and don't rely on a debug driver like spidev. I changed
>> over to a platform specific driver and at that time I also needed to include
>> a reset controller (emmc reset only). I put these in drivers/mfd and
>> drivers/reset. Review of the device tree for this approach went back and
>> forth to _not_ have four child nodes on the spi device each with the same
>> compatible. Decision was to squash the child nodes into the parent and put
>> the reset-controller there also. One driver and since its pensando
>> specific its currently in drivers/soc/amd.
>>
>> There are five different user processes and some utilities that access the
>> functionality in the cpld/fpga. You're correct, its passing messages that
>> are specific to the IP accessed via chip-select. No Elba system will boot
>> without this driver providing ioctl access.
> Thank you for the detailed summary. Moving away from spidev and
> from mfd seems all reasonable here. I'm still a bit confused by
> why you have multiple chipselects here that are for different
> subdevices but ended with a single user interface for all of them,
> but that's not a big deal.
The goal is to isolate the the kernel from device and platform specific
changes. All the IO to the spi connected CPLD/FPGA (design/cost dependent)
is a byte at a time or up to 16 bytes for internal flash mgmt. Performance
is not an issue and spidev was sufficient.
Maybe this paints the right picture to zero in on a correct approach.
Internal and external IP can be present at CS1/CS2 depending on the design
where the CS0 board controller registers get additions over time in a
backward compatible manner.
Design 1: FPGA
CS0: Board controller registers
CS1: Designware SPI to I2C to board peripherals
CS2: Lattice dual I2C master
CS3: Internal storage
Design 2: CPLD
CS0: Board controller registers
CS1: Not used or some other board specific registers
CS2: Lattice dual I2C master
CS3: Internal storage
> The main bit that sticks out about this high-level design is how
> it relies on user space utilities at all to understand the message
> format. From what I understand about the actual functionality of
> this device, it most closely resembles an embedded controller that
> you might find in a laptop or server machine, and those usually
> have kernel drivers in drivers/platform/ to interact with the
> device.
The dozens of registers at CS0 for board management are defined in
userspace programs or script. Only the regsiter offset/bit for
emmc reset is needed for the reset function in the patches.
> Has anyone tried to do it like that? Maybe it would help
> to see what the full protocol and the user space side looks
> like, in order to move some or all of it into the kernel.
Looking at drivers/platform its pretty sparse. What do you
recommend based on the design 1/2 variations?
Regards,
Brad
WARNING: multiple messages have this Message-ID (diff)
From: Brad Larson <blarson@amd.com>
To: <arnd@arndb.de>
Cc: <adrian.hunter@intel.com>, <alcooperx@gmail.com>,
<andy.shevchenko@gmail.com>, <blarson@amd.com>,
<brendan.higgins@linux.dev>, <briannorris@chromium.org>,
<broonie@kernel.org>, <catalin.marinas@arm.com>,
<conor+dt@kernel.org>, <davidgow@google.com>,
<devicetree@vger.kernel.org>, <fancer.lancer@gmail.com>,
<gerg@linux-m68k.org>, <gsomlo@gmail.com>,
<hal.feng@starfivetech.com>, <hasegawa-hitomi@fujitsu.com>,
<j.neuschaefer@gmx.net>, <joel@jms.id.au>, <kernel@esmil.dk>,
<krzk@kernel.org>, <krzysztof.kozlowski+dt@linaro.org>,
<lee.jones@linaro.org>, <lee@kernel.org>,
<linux-arm-kernel@lists.infradead.org>,
<linux-kernel@vger.kernel.org>, <linux-mmc@vger.kernel.org>,
<linux-spi@vger.kernel.org>, <p.zabel@pengutronix.de>,
<rdunlap@infradead.org>, <robh+dt@kernel.org>,
<samuel@sholland.org>, <skhan@linuxfoundation.org>,
<suravee.suthikulpanit@amd.com>, <thomas.lendacky@amd.com>,
<tonyhuang.sunplus@gmail.com>, <ulf.hansson@linaro.org>,
<vaishnav.a@ti.com>, <walker.chen@starfivetech.com>,
<will@kernel.org>, <zhuyinbo@loongson.cn>
Subject: Re: [PATCH v14 8/8] soc: amd: Add support for AMD Pensando SoC Controller
Date: Mon, 7 Aug 2023 15:17:54 -0700 [thread overview]
Message-ID: <20230807221754.51667-1-blarson@amd.com> (raw)
In-Reply-To: <787582a3-51a1-494e-bfd0-b51d1117432e@app.fastmail.com>
Hi Arnd,
> On Wed, May 24, 2023, at 00:11, Brad Larson wrote:
>>> On Mon, May 15, 2023, at 20:16, Brad Larson wrote:
...
>>> Also, can you explain why this needs a low-lever user interface
>>> in the first place, rather than something that can be expressed
>>> using high-level abstractions as you already do with the reset
>>> control?
>>>
>>> All of the above should be part of the changelog text to get a
>>> driver like this merged. I don't think we can get a quick
>>> solution here though, so maybe you can start by removing the
>>> ioctl side and having the rest of the driver in drivers/reset?
Might be best to pull the whole thing for now until an acceptable
solution is reached. The reset function is a recovery mechanisim rarely
used where the byte access to the different IP at the 4 chip-selects
is needed for a system to boot.
>> In the original patchset I added a pensando compatible to spidev and that
>> was nacked in review and reusing some random compatible that made it into
>> spidev was just wrong. Further it was recommended this should be a system
>> specific driver and don't rely on a debug driver like spidev. I changed
>> over to a platform specific driver and at that time I also needed to include
>> a reset controller (emmc reset only). I put these in drivers/mfd and
>> drivers/reset. Review of the device tree for this approach went back and
>> forth to _not_ have four child nodes on the spi device each with the same
>> compatible. Decision was to squash the child nodes into the parent and put
>> the reset-controller there also. One driver and since its pensando
>> specific its currently in drivers/soc/amd.
>>
>> There are five different user processes and some utilities that access the
>> functionality in the cpld/fpga. You're correct, its passing messages that
>> are specific to the IP accessed via chip-select. No Elba system will boot
>> without this driver providing ioctl access.
> Thank you for the detailed summary. Moving away from spidev and
> from mfd seems all reasonable here. I'm still a bit confused by
> why you have multiple chipselects here that are for different
> subdevices but ended with a single user interface for all of them,
> but that's not a big deal.
The goal is to isolate the the kernel from device and platform specific
changes. All the IO to the spi connected CPLD/FPGA (design/cost dependent)
is a byte at a time or up to 16 bytes for internal flash mgmt. Performance
is not an issue and spidev was sufficient.
Maybe this paints the right picture to zero in on a correct approach.
Internal and external IP can be present at CS1/CS2 depending on the design
where the CS0 board controller registers get additions over time in a
backward compatible manner.
Design 1: FPGA
CS0: Board controller registers
CS1: Designware SPI to I2C to board peripherals
CS2: Lattice dual I2C master
CS3: Internal storage
Design 2: CPLD
CS0: Board controller registers
CS1: Not used or some other board specific registers
CS2: Lattice dual I2C master
CS3: Internal storage
> The main bit that sticks out about this high-level design is how
> it relies on user space utilities at all to understand the message
> format. From what I understand about the actual functionality of
> this device, it most closely resembles an embedded controller that
> you might find in a laptop or server machine, and those usually
> have kernel drivers in drivers/platform/ to interact with the
> device.
The dozens of registers at CS0 for board management are defined in
userspace programs or script. Only the regsiter offset/bit for
emmc reset is needed for the reset function in the patches.
> Has anyone tried to do it like that? Maybe it would help
> to see what the full protocol and the user space side looks
> like, in order to move some or all of it into the kernel.
Looking at drivers/platform its pretty sparse. What do you
recommend based on the design 1/2 variations?
Regards,
Brad
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2023-08-07 22:18 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-15 18:15 [PATCH v14 0/8] Support AMD Pensando Elba SoC Brad Larson
2023-05-15 18:15 ` Brad Larson
2023-05-15 18:15 ` [PATCH v14 1/8] dt-bindings: arm: add AMD Pensando boards Brad Larson
2023-05-15 18:15 ` Brad Larson
2023-05-15 18:16 ` [PATCH v14 2/8] dt-bindings: spi: cdns: Add compatible for AMD Pensando Elba SoC Brad Larson
2023-05-15 18:16 ` Brad Larson
2023-05-16 15:18 ` Mark Brown
2023-05-16 15:18 ` Mark Brown
2023-05-15 18:16 ` [PATCH v14 3/8] dt-bindings: soc: amd: amd,pensando-elba-ctrl: Add Pensando SoC Controller Brad Larson
2023-05-15 18:16 ` Brad Larson
2023-05-15 18:16 ` [PATCH v14 4/8] MAINTAINERS: Add entry for AMD PENSANDO Brad Larson
2023-05-15 18:16 ` Brad Larson
2023-05-15 18:16 ` [PATCH v14 5/8] arm64: Add config for AMD Pensando SoC platforms Brad Larson
2023-05-15 18:16 ` Brad Larson
2023-05-15 18:16 ` [PATCH v14 6/8] arm64: dts: Add AMD Pensando Elba SoC support Brad Larson
2023-05-15 18:16 ` Brad Larson
2023-05-16 7:17 ` Krzysztof Kozlowski
2023-05-16 7:17 ` Krzysztof Kozlowski
2023-05-16 7:54 ` Michal Simek
2023-05-16 7:54 ` Michal Simek
2023-05-23 19:28 ` Brad Larson
2023-05-23 19:28 ` Brad Larson
2023-05-24 11:52 ` Geert Uytterhoeven
2023-05-24 11:52 ` Geert Uytterhoeven
2023-05-30 22:03 ` Brad Larson
2023-05-30 22:03 ` Brad Larson
2023-05-31 13:09 ` Geert Uytterhoeven
2023-05-31 13:09 ` Geert Uytterhoeven
2023-06-05 23:52 ` Brad Larson
2023-06-05 23:52 ` Brad Larson
2023-05-15 18:16 ` [PATCH v14 7/8] spi: cadence-quadspi: Add compatible for AMD Pensando Elba SoC Brad Larson
2023-05-15 18:16 ` Brad Larson
2023-05-15 18:16 ` [PATCH v14 8/8] soc: amd: Add support for AMD Pensando SoC Controller Brad Larson
2023-05-15 18:16 ` Brad Larson
2023-05-15 21:05 ` Andy Shevchenko
2023-05-15 21:05 ` Andy Shevchenko
2023-05-23 2:12 ` Brad Larson
2023-05-23 2:12 ` Brad Larson
2023-05-16 5:19 ` Mahapatra, Amit Kumar
2023-05-16 5:19 ` Mahapatra, Amit Kumar
2023-05-16 7:36 ` Michal Simek
2023-05-16 7:36 ` Michal Simek
2023-05-17 11:14 ` Geert Uytterhoeven
2023-05-17 11:14 ` Geert Uytterhoeven
2023-05-16 8:45 ` kernel test robot
2023-05-16 8:45 ` kernel test robot
2023-05-16 11:03 ` Arnd Bergmann
2023-05-16 11:03 ` Arnd Bergmann
2023-05-23 22:11 ` Brad Larson
2023-05-23 22:11 ` Brad Larson
2023-05-24 12:41 ` Arnd Bergmann
2023-05-24 12:41 ` Arnd Bergmann
2023-08-07 22:17 ` Brad Larson [this message]
2023-08-07 22:17 ` Brad Larson
2023-05-16 7:14 ` [PATCH v14 0/8] Support AMD Pensando Elba SoC Krzysztof Kozlowski
2023-05-16 7:14 ` Krzysztof Kozlowski
2023-05-17 14:43 ` (subset) " Mark Brown
2023-05-17 14:43 ` Mark Brown
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=20230807221754.51667-1-blarson@amd.com \
--to=blarson@amd.com \
--cc=adrian.hunter@intel.com \
--cc=alcooperx@gmail.com \
--cc=andy.shevchenko@gmail.com \
--cc=arnd@arndb.de \
--cc=brendan.higgins@linux.dev \
--cc=briannorris@chromium.org \
--cc=broonie@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=conor+dt@kernel.org \
--cc=davidgow@google.com \
--cc=devicetree@vger.kernel.org \
--cc=fancer.lancer@gmail.com \
--cc=gerg@linux-m68k.org \
--cc=gsomlo@gmail.com \
--cc=hal.feng@starfivetech.com \
--cc=hasegawa-hitomi@fujitsu.com \
--cc=j.neuschaefer@gmx.net \
--cc=joel@jms.id.au \
--cc=kernel@esmil.dk \
--cc=krzk@kernel.org \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=lee.jones@linaro.org \
--cc=lee@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
--cc=linux-spi@vger.kernel.org \
--cc=p.zabel@pengutronix.de \
--cc=rdunlap@infradead.org \
--cc=robh+dt@kernel.org \
--cc=samuel@sholland.org \
--cc=skhan@linuxfoundation.org \
--cc=suravee.suthikulpanit@amd.com \
--cc=thomas.lendacky@amd.com \
--cc=tonyhuang.sunplus@gmail.com \
--cc=ulf.hansson@linaro.org \
--cc=vaishnav.a@ti.com \
--cc=walker.chen@starfivetech.com \
--cc=will@kernel.org \
--cc=zhuyinbo@loongson.cn \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.