.. include:: <isonum.txt>

------------------------
BCM5974 Driver (bcm5974)
------------------------

:Copyright: |copy| 2008-2009	Henrik Rydberg <rydberg@euromail.se>

The USB initialization and package decoding was made by Scott Shawcroft as
part of the touchd user-space driver project:

:Copyright: |copy| 2008	Scott Shawcroft (scott.shawcroft@gmail.com)

The BCM5974 driver is based on the appletouch driver:

:Copyright: |copy| 2001-2004	Greg Kroah-Hartman (greg@kroah.com)
:Copyright: |copy| 2005		Johannes Berg (johannes@sipsolutions.net)
:Copyright: |copy| 2005		Stelian Pop (stelian@popies.net)
:Copyright: |copy| 2005		Frank Arnold (frank@scirocco-5v-turbo.de)
:Copyright: |copy| 2005		Peter Osterlund (petero2@telia.com)
:Copyright: |copy| 2005		Michael Hanselmann (linux-kernel@hansmi.ch)
:Copyright: |copy| 2006		Nicolas Boichat (nicolas@boichat.ch)

This driver adds support for the multi-touch trackpad on the new Apple
Macbook Air and Macbook Pro laptops. It replaces the appletouch driver on
those computers, and integrates well with the synaptics driver of the Xorg
system.

Known to work on Macbook Air, Macbook Pro Penryn and the new unibody
Macbook 5 and Macbook Pro 5.

Usage
-----

The driver loads automatically for the supported usb device ids, and
becomes available both as an event device (/dev/input/event*) and as a
mouse via the mousedev driver (/dev/input/mice).

USB Race
--------

The Apple multi-touch trackpads report both mouse and keyboard events via
different interfaces of the same usb device. This creates a race condition
with the HID driver, which, if not told otherwise, will find the standard
HID mouse and keyboard, and claim the whole device. To remedy, the usb
product id must be listed in the mouse_ignore list of the hid driver.

Debug output
------------

To ease the development for new hardware version, verbose packet output can
be switched on with the debug kernel module parameter. The range [1-9]
yields different levels of verbosity. Example (as root)::

    echo -n 9 > /sys/module/bcm5974/parameters/debug

    tail -f /var/log/debug

    echo -n 0 > /sys/module/bcm5974/parameters/debug

Trivia
------

The driver was developed at the ubuntu forums in June 2008 [#f1]_, and now has
a more permanent home at bitmath.org [#f2]_.

.. Links

.. [#f1] http://ubuntuforums.org/showthread.php?t=840040
.. [#f2] http://bitmath.org/code/