Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 19 Apr 1999 20:45:02 +0800
From:      Peter Wemm <peter@netplex.com.au>
To:        Doug Rabson <dfr@nlsystems.com>
Cc:        Takanori Watanabe <takawata@shidahara1.planet.sci.kobe-u.ac.jp>, freebsd-current@freebsd.org
Subject:   Re: newbus and modem(s) 
Message-ID:  <19990419124505.62D951F5E@spinner.netplex.com.au>
In-Reply-To: Your message of "Mon, 19 Apr 1999 19:28:48 %2B0800." <19990419112851.17D6F1F5E@spinner.netplex.com.au> 

next in thread | previous in thread | raw e-mail | index | archive | help
Peter Wemm wrote:
> Doug Rabson wrote:
> > On Mon, 19 Apr 1999, Takanori Watanabe wrote:
> > 
> > > In message <Pine.BSF.4.05.9904190929070.85882-100000@herring.nlsystems.co
    m>
>     , Do
> > > ug Rabson wrote:
> > > >On Mon, 19 Apr 1999 takawata@shidahara1.planet.sci.kobe-u.ac.jp wrote:
> > > >> Simple Question.
> > > >> If there were 'Closed'-Host-Controller-Interface with object-only driv
    er
>     ,
> > > >> Can the vendor make the Host controller  recognized without changing 
> > > >> usb.c code?
> > > >> 
> > > >> #That's what frustrated me while writing driver for smbus controller.
> > > >
> > > >It really depends on the nature of the bus. For plug-and-play style buss
    es
> > > >such as USB and PCI, the controller can decide what devices exist withou
    t
> > > >the help of drivers and can then uniquely match them with the right
> > > >driver.  This trivially allows drivers to be added after the system is
> > > >running.
> > > 
> > > I don't mention on upstream driver such as 'ukbd' 
> > > (I think such device can be add truly dynamic),but I mention on 
> > > 'host-controller' like [ou]hci. 
> > > 
> > > What I ask is what shall I do if there is a downstream driver without 
> > > declared DRIVER_MODULE on upstream bus.Are there any way without changing
     
> > > upstream bus code?
> > 
> > I don't think I understand. The DRIVER_MODULE declaration goes in the
> > downstream driver, not the upstream bus. The bus doesn't need any
> > knowledge of what drivers might be attached to it.
> 
> Well, what about the i386 nexus?  It specifically creates connection points
> for apm, npx, eisa, isa, and pci as children.
> 
> However, pci devices don't do this to attach to their parent.  I am
> obviously missing something. :-)

Never mind, I understand now. :-)

For the benefit of the 'cc' list, and to check my understanding, let me run
through it..

The parents pick up the children in one of two ways.  For a 'smart' bus,
like pci, usb, eisa, etc, the bus probes itself and adds an "unidentified"
child (NULL name, -1 unit) with the known ID.  The bus mechanism then uses
this to poll the drivers to see which one(s) want to claim that ID.  It
knows who the children are because of the DECLARE_MODULE() statement.  This
means that a "smart" (or self identifying) bus doesn't need anything more
to manage the relationship.

On the other hand, there's isa, which is quite dumb.  In this case, the bus
looks up it's "hint" list and specifically adds the requested children from
those hints, and using the supplied irq, port, etc values from the hints.
The drivers then use that data to probe for the existance of the device.

The nexus is a little bit different..  It doesn't have things to
specifically look for, so it adds the children manually.  It could have
used the resource database to find the requested things to attach to the
nexus in pretty much the same way as the isa bus does.

And then there's the old isa drivers...  They attach themselves to the isa
parent device class on the fly, there is no DECLARE_MODULE() table for all
the old isa (and perhaps PCI too) drivers.

Doug, is that right so far? :-)

Now what I'm curious about is how to handle the nexus and isa/eisa better
so they don't need to explicitly name the children.  On one hand it could
look at the hints table to see all the 'at nexus?' declarations, but I
think it might be better to go for a hunt to locate all the children it can
find.  One way to do this might be to simply add a heap of "unidentified"
devices and let the bus mechanism find all the devices that are children
and let them probe themselves while ignoring the fake device id's.  Perhaps
this could change the probe order enough so that isa and eisa won't be
attached until after pci has been recursively probed.

Cheers,
-Peter




To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19990419124505.62D951F5E>