summaryrefslogtreecommitdiffstats
path: root/sys/dev/adb
Commit message (Collapse)AuthorAgeFilesLines
* Temporarily revert the new-bus locking for 8.0 release. It will bejhb2009-08-201-2/+0
| | | | | | reintroduced after HEAD is reopened for commits by re@. Approved by: re (kib), attilio
* Make the newbus subsystem Giant free by adding the new newbus sxlock.attilio2009-08-021-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The newbus lock is responsible for protecting newbus internIal structures, device states and devclass flags. It is necessary to hold it when all such datas are accessed. For the other operations, softc locking should ensure enough protection to avoid races. Newbus lock is automatically held when virtual operations on the device and bus are invoked when loading the driver or when the suspend/resume take place. For other 'spourious' operations trying to access/modify the newbus topology, newbus lock needs to be automatically acquired and dropped. For the moment Giant is also acquired in some key point (modules subsystem) in order to avoid problems before the 8.0 release as module handlers could make assumptions about it. This Giant locking should go just after the release happens. Please keep in mind that the public interface can be expanded in order to provide more support, if there are really necessities at some point and also some bugs could arise as long as the patch needs a bit of further testing. Bump __FreeBSD_version in order to reflect the newbus lock introduction. Reviewed by: ed, hps, jhb, imp, mav, scottl No answer by: ariff, thompsa, yongari Tested by: pho, G. Trematerra <giovanni dot trematerra at gmail dot com>, Brandon Gooch <jamesbrandongooch at gmail dot com> Sponsored by: Yahoo! Incorporated Approved by: re (ksmith)
* Use si_drv1 to hold the softc for the adb_mouse character device instead ofjhb2009-01-291-1/+2
| | | | | | using devclass_get_softc(). Tested by: nwhitehorn
* Make adb_mouse use dev2unit() instead of minor().ed2009-01-291-1/+1
| | | | | A real fix would be to migrate it to si_drv0 to store the softc directly, but this is the quickest way to fix it right now.
* Improve the AT keyboard emulation of the ADB keyboard driver, by supportingnwhitehorn2009-01-081-15/+144
| | | | | | | an AT-like K_RAW mode instead of just K_CODE. This has the effect of making the arrow keys on ADB keyboards work in X11. Copied from: sunkbd(4)
* Fix some nasty race conditions in the VIA-CUDA driver that ended up preventingnwhitehorn2008-12-065-51/+39
| | | | | | my right mouse button and keyboard LEDs from working due to mangled configuration packets. Fixed several other races and associated problems in the main ADB stack that were exposed while fixing this.
* Probe ADB miscellaneous devices (ID 7) instead of stopping at ID 6. Thisnwhitehorn2008-11-121-1/+1
| | | | | allows us to probe the brightness and volume control buttons on PPC Apple laptops, though there is not yet a driver to do anything useful with them.
* Make the touch pad on my PowerBook G4 12" a little more usable.ed2008-11-021-7/+18
| | | | | | | | | | | | | | | | | | | | | | For an unknown reason the touch pad of my PowerBook generates button 5 events when you operate it. This causes the adb_mouse code to convert them to button 2 events, which is not what we want. Add a new flag, AMS_TOUCHPAD, which is used to distinguish the touch pad. When set, don't convert button events of unknown buttons to the last button. There are still three problems left with respect to user input: - The mouse button events are not properly processed when the touch pad isn't touched. - The arrow keys on the keyboard don't work inside X11. - The power button isn't handled by the kernel, similar to the ACPI power button on i386/amd64. Approved by: nwhitehorn
* Allow a read() on /dev/ams[0-9] to be interrupted.ed2008-11-011-1/+6
| | | | | | | | | | Right now ams_read() uses cv_wait() to wait for new data to arrive on the mouse device. This means that when you run `cat /dev/ams0', it cannot be interrupted directly. After you press ^C, you first need to move the mouse before cat will quit. Make this function use cv_wait_sig(), which allows it to be interrupted directly. Reviewed by: nwhitehorn
* Fix some possible infinite loops in the ADB code, and remove some hacksnwhitehorn2008-10-302-7/+33
| | | | | that were inserted in desperation during bring-up. In addition, move ADB bus enumeration and child attachment to when interrupts are available.
* Add ADB support. This provides support for the external ADB bus on the PowerMacnwhitehorn2008-10-267-0/+1856
G3 as well as the internal ADB keyboard and mice in PowerBooks and iBooks. This also brings in Mac GPIO support, for which we should eventually have a better interface. Obtained from: NetBSD (CUDA and PMU drivers)
OpenPOWER on IntegriCloud