Re: Kmod driver at iicbus. attach() and config_intrhook(9)
Alexander Mishin <[email protected]>
| Newsgroups | gmane.os.freebsd.devel.arm |
|---|---|
| Message-ID | <[email protected]> |
Ian Lepore писал 2020-08-19 19:39: > On Wed, 2020-08-19 at 00:24 -0700, Oleksandr Tymoshenko wrote: >> Andriy Gapon ([email protected]) wrote: >> > On 18/08/2020 22:05, Alexander Mishin wrote: >> > > Hi >> > > ... >> > > But I see that some other devices (from /usr/src/sys/dev) uses >> > > CONFIG_INTRHOOK(9) >> > > on attach() for initialize themselfs. >> > > I wonder if I need this too? ... >> > >> > This is usually needed when a driver needs to talk to its device >> > while >> > attaching. E.g., to set some initial configuration or to confirm >> > device's >> > identity, etc. >> >> To extend Andriy's explanation a bit: all these operations may >> perform >> I2C transfers and most I2C controllers use interrupts to get notified >> about tranfer status change (finished, error, etc...). There is no >> guarantee that when driver's attach method is called interrupts are >> globally enabled. What would happen in this case is: I2C controller >> is going to initiate I2C operation and wait for an interrupt that's >> never going to be delivered. CONFIG_INTRHOOK is a solution for this >> problem, if your attach method requires interrupts - just split it >> in two parts and postpone running interrupt-dependent part until >> after >> interrupts are globally enabled. >> > > A note about all this: It should never be necessary for an i2c slave > device driver to do this. The reason it's needed is because many i2c > controller drivers attach the iicbus from their attach() routine even > though they can't actually do i2c IO until interrupts are available. > It is these controller drivers that should have the intrhook logic to > not call bus_generic_attach() until interrupts are available if they > can't do IO until interrupts are available. > > It has long been my goal to fix all our i2c controller drivers to > behave correctly, so that i2c slave device drivers don't all need the > intrhook logic. But somehow I never get around to it. > > -- Ian I think, it would be helpful, as it would be possible to return an error on early stage, from attach(), if there is no connection with the configured device. _______________________________________________ [email protected] mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-arm To unsubscribe, send any mail to "[email protected]"