On Wed, Nov 28, 2018 at 9:38 AM Sven Van Asbroeck <thesven73@xxxxxxxxx> wrote: > > Rob, thank you so much for the review ! > > On Mon, Nov 26, 2018 at 5:08 PM Rob Herring <robh@xxxxxxxxxx> wrote: > > > Unit-addresses are based on 'reg'. So this should either be '89' or > > based on a definition for the bus (e.g. PCI uses dev and func). > > > >> + reg = <0x0089>; > > > > Is fieldbus type how one addresses a device on the bus? > > I'm afraid not. Anybus cards don't have an address, because only a single card > can be connected to an anybus at a time. Then you don't need reg as you should only have 1 child node. > Fieldbus type defines the type/functionality of the connected card. Like pci > device ids. Which for PCI can be overridden in DT, but is part of reg. > The current patchset allows devicetree nodes to be provided depending on > the type of card connected to the bus. It identifies the card by type, > not location. > > Is this not desired / allowed ? No, 'reg' is how you address a device. You could use 'type' in the compatible string if type implies some sort of standard class interface. > > I'm still not clear what a bridge vs. host is. Both examples are on WEIM > > bus CS0? > > I agree that the terminology is too confusing. I'm looking to change it. > > Let's compare current anybus with a well-established bus architecture like pci: > > pci anybus > -------------------------------------------------------------------------------- > Common bus code (spec), pci/pci_driver.c fieldbus/anybuss-host.c > calls bus_register() must be parallel bus > subnode > no of compatible has of compatible > -------------------------------------------------------------------------------- > Device on bus, calls > XXX_client_driver_register() hwmon/k8temp.c fieldbus/hms-profinet.c > -------------------------------------------------------------------------------- > Controller, silicon driver pci/pcie-tango.c fieldbus/anybus-bridge.c > platform_driver calls platform_driver does not > pci_host_probe() register with anybus > > I should probably rework this so it conforms more closely to the way it's done > on pci. Would the following look any better? Yes, this looks better. > pci anybus > -------------------------------------------------------------------------------- > Common bus code (spec), pci/pci_driver.c anybus/anybus_driver.c Maybe just anybus/core.c or anybus/bus.c. I'm guessing your implementation will be *much* more simple than PCI. > calls bus_register() no of compatible no of compatible > -------------------------------------------------------------------------------- > Device on bus, calls > XXX_client_driver_register() hwmon/k8temp.c fieldbus/hms-profinet.c > -------------------------------------------------------------------------------- > Controller, silicon driver pci/pcie-tango.c anybus/arcx-controller.c > platform_driver calls platform_driver calls > pci_host_probe() anybus_host_probe() > > Of course, the analogy is not perfect, as there can only be a single card > (device) connected to an anybus at a time. Right, that should simplify the bus code a lot. Rob