Re: [RFC 1/3] checks: Add infrastructure for setting bus type of nodes

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

 




On Thu, Mar 31, 2016 at 10:17:46AM -0500, Rob Herring wrote:
> On Thu, Mar 31, 2016 at 12:22 AM, David Gibson
> <david@xxxxxxxxxxxxxxxxxxxxx> wrote:
> > On Wed, Mar 23, 2016 at 07:40:19PM -0500, Rob Herring wrote:
> >> In preparation to support bus specific checks, add the necessary
> >> infrastructure to determine the bus type for nodes. Initially, PCI and
> >> simple bus are supported.
> >>
> >> Signed-off-by: Rob Herring <robh@xxxxxxxxxx>
> >> ---
> >> David,
> >
> > Sorry it's taken me a while to look at this.  I've been a mixture of
> > busy and sick :/
> 
> No problem.
> 
> [...]
> 
> >> +static bool is_pci_bridge(struct node *node)
> >> +{
> >> +     struct property *prop;
> >> +
> >> +     if (!node)
> >> +             return false;
> >> +
> >> +     prop = get_property(node, "device_type");
> >> +     if (!prop)
> >> +             return false;
> >> +
> >> +     if (strcmp(prop->val.val, "pci") == 0)
> >> +             return true;
> >> +
> >> +     return false;
> >> +}
> >
> > So, I don't love using device_type here, since that's generally
> > discouraged in modern flat trees, but I don't know of a better way to
> > detect a pci bridge, so I guess it's ok.
> 
> True, but pci, cpu, and memory remain as accepted uses. We'd have to
> define a "pci-bridge" or "pci-bus" compatible to replace it.

Right, that was the conclusion I was coming around to.

> >> +struct bus_type pci_bus_type = {
> >> +        .expected_addr_cells = 3,
> >> +        .expected_size_cells = 2,
> >
> > I'm a bit torn here.  Part of me wants to suggest a 'check_bridge'
> > function which handles this and can also make more subtle checks, but
> > then just the expected cells values will handle nearly all real cases
> > more succinctly.
> 
> I left them as you had them, but I'm not so sure these are all that
> useful. It works for PCI as the sizes are fixed, but then we could
> just check against fixed values. For simple-bus, we need more
> flexibility because the size could be 1 or 2. For other cases like I2C
> or SPI buses, we know the sizes, but we can't really detect those
> buses.

Hm, ok.  Well how about instead of the expected cells values, we have
two callbacks:  check_bridge() and check_device().   The
check_bridge() callback can check the cells parameters along with
anything else that makes sense.

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]
  Powered by Linux