Re: [Stratos-dev] [PATCH V3 1/3] gpio: Add virtio-gpio driver

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

 



On Thu, Jun 10, 2021 at 7:03 PM Jean-Philippe Brucker
<jean-philippe@xxxxxxxxxx> wrote:
>
> On Thu, Jun 10, 2021 at 04:00:39PM +0000, Enrico Weigelt, metux IT consult via Stratos-dev wrote:
> > On 10.06.21 15:22, Arnd Bergmann wrote:
> >
> > > Can you give an example of how this would be hooked up to other drivers
> > > using those gpios. Can you give an example of how using the "gpio-keys" or
> > > "gpio-leds" drivers in combination with virtio-gpio looks like in the DT?
> >
> > Connecting between self-probing bus'es and DT is generally tricky. IMHO
> > we don't have any generic mechanism for that.
>
> DT does have a generic description of PCI endpoints, which virtio-iommu
> relies on to express the relation between IOMMU and endpoint nodes [1].
> I think the problem here is similar: the client node needs a phandle to
> the GPIO controller which may use virtio-pci transport?

Right, the code to set dev->of_node is fairly simple, the device probe
just needs to scan for child nodes. Aside from PCI, similar code exists
for USB and MMC/SDIO, which are usually discoverable but sometimes
need additional properties.

> Note that it mostly works if the device is on the root PCI bus. Behind a
> bridge the OS may change the device's bus number as needed, so the BDF
> reference in DT is only valid if the software providing the DT description
> (VMM or firmware) initializes bus numbers accordingly (and I don't
> remember if Linux supports this case well).

I think you can mark the host bridge as "probe-only" to prevent the OS
(at least Linux) from renumbering the buses.

The part I did not find though is assigning dev->of_node in the virtio_device
to a child of the PCI device node.

      Arnd



[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux