introducing a FreeBSD driver for the Apple Touchpad; and a few questions..

View: New views
3 Messages — Rating Filter:   Alert me  

introducing a FreeBSD driver for the Apple Touchpad; and a few questions..

by Rohit Grover :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello,

I have developed a driver for the Touchpad device on Apple Macbooks. Mine is
a Macbook 3,1, and I run FreeBSD7.2 on it--so testing has sor far been
limited to this configuration. In its present state, the driver supports
multi-tap, edge detection, and movement smothening. The driver creates a
pseudo device: /dev/atp, which expects to be read from moused. You can setup
moused to work with it by adding the following to /etc/rc.conf:
moused_port="/dev/atp"

and then you would also need to tell your X-server to get mouse data from
/dev/sysmouse.

You may get the driver from
git://github.com/rgrover/freebsd-atp.git.<git://github.com/rgrover/freebsd-atp.git>
The git command is: "git clone git://github.com/rgrover/freebsd-atp.git".
I have been using this driver for a while now. It is stable.
Please help me test this driver for a wider range of hardware.

There is more work to be done in the area of movement smoothening.
I am also going to add support for detecting gestures. For this I need to
track strokes.

For my algorithms, I would like to allocate memory dynamically out of a
small pool of fixed sized structures. I have read a bit about UMA; is UMA a
good alternative for managing a small pool (~20) of buffers (of around 20
bytes in size)?

regards,
_______________________________________________
freebsd-drivers@... mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-drivers
To unsubscribe, send any mail to "freebsd-drivers-unsubscribe@..."

Parent Message unknown Re: introducing a FreeBSD driver for the Apple Touchpad; and a few questions..

by Rohit Grover :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Thu, Aug 20, 2009 at 1:44 AM, Patrick Lamaiziere
<patfbsd@...>wrote:

> Le Wed, 19 Aug 2009 21:16:06 +0800,
> Rohit Grover <rgrover1@...> a écrit :
>
> > I have developed a driver for the Touchpad device on Apple Macbooks.
> > Mine is a Macbook 3,1, and I run FreeBSD7.2
>
> Cool! Shall it work on a MacBookPro 3,1?


Please give it a try. The number of Y sensors on a MacBookPro might be
different. On my MacBook, I've got 20 X sensors and 10 Y sensors; but that
is with a mouse-button at the bottom of the touch-sensitive area. The button
has been replaced with additional touchpad surface in the MacBookPro. So it
will require a bit of experimentation, and even some reverse-engineering.
The key to interpreting data from the device is atp_read_sensors(). That
might have to change to support newer models.

If someone is willing to contribute with testing, I can create a version of
the driver which logs additional detail to help us with the reverse
engineering.


> Do you plan a version to the new usb stack on 8.0?
>

Certainly. I can't yet run 8.0 on my MacBook. ACPI panics the kernel right
at the beginning of boot, and even if I disable ACPI, the kernel is still
unable to mount the root partition. I have tried compiling my driver against
8.0, and I see that I will need to adapt to the new USB stack. I'm very keen
on moving to 8.0 once it can boot on my laptop. I'd be happy to maintain
support for multiple versions of FreeBSD.


>
> > For my algorithms, I would like to allocate memory dynamically out of
> > a small pool of fixed sized structures. I have read a bit about UMA;
> > is UMA a good alternative for managing a small pool (~20) of buffers
> > (of around 20 bytes in size)?
>
> I'm not sure for this, IMHO UMA does not care about the size of the
> buffers, and malloc uses UMA for the allocation.
>

But is UMA a very heavy-weight approach to managing a small pool of fixed
sized buffers whose total footprint is under 512 bytes?


> I've read a bit the source, you should not use spl on 7.x, they are
> no-ops. Instead use some mutexes. And you should not use the giant lock.
>

Thanks for pointing this out. I will research the use of SMP primitives. The
'ums' driver, which is what I am replacing, also uses splx(). Could you tell
me which giant lock I am using in my code? Is there any documentation I can
refer to for SMP synchronization under FreeBSD?

regards,
Rohit.
_______________________________________________
freebsd-drivers@... mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-drivers
To unsubscribe, send any mail to "freebsd-drivers-unsubscribe@..."

Re: introducing a FreeBSD driver for the Apple Touchpad; and a few questions..

by Paul B Mahol :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On 8/19/09, Rohit Grover <rgrover1@...> wrote:

> On Thu, Aug 20, 2009 at 1:44 AM, Patrick Lamaiziere
> <patfbsd@...>wrote:
>
>> Le Wed, 19 Aug 2009 21:16:06 +0800,
>> Rohit Grover <rgrover1@...> a écrit :
>>
>> > I have developed a driver for the Touchpad device on Apple Macbooks.
>> > Mine is a Macbook 3,1, and I run FreeBSD7.2
>>
>> Cool! Shall it work on a MacBookPro 3,1?
>
>
> Please give it a try. The number of Y sensors on a MacBookPro might be
> different. On my MacBook, I've got 20 X sensors and 10 Y sensors; but that
> is with a mouse-button at the bottom of the touch-sensitive area. The button
> has been replaced with additional touchpad surface in the MacBookPro. So it
> will require a bit of experimentation, and even some reverse-engineering.
> The key to interpreting data from the device is atp_read_sensors(). That
> might have to change to support newer models.
>
> If someone is willing to contribute with testing, I can create a version of
> the driver which logs additional detail to help us with the reverse
> engineering.
>
>
>> Do you plan a version to the new usb stack on 8.0?
>>
>
> Certainly. I can't yet run 8.0 on my MacBook. ACPI panics the kernel right
> at the beginning of boot, and even if I disable ACPI, the kernel is still
> unable to mount the root partition. I have tried compiling my driver against
> 8.0, and I see that I will need to adapt to the new USB stack. I'm very keen
> on moving to 8.0 once it can boot on my laptop. I'd be happy to maintain
> support for multiple versions of FreeBSD.
>
>
>>
>> > For my algorithms, I would like to allocate memory dynamically out of
>> > a small pool of fixed sized structures. I have read a bit about UMA;
>> > is UMA a good alternative for managing a small pool (~20) of buffers
>> > (of around 20 bytes in size)?
>>
>> I'm not sure for this, IMHO UMA does not care about the size of the
>> buffers, and malloc uses UMA for the allocation.
>>
>
> But is UMA a very heavy-weight approach to managing a small pool of fixed
> sized buffers whose total footprint is under 512 bytes?
>
>
>> I've read a bit the source, you should not use spl on 7.x, they are
>> no-ops. Instead use some mutexes. And you should not use the giant lock.
>>
>
> Thanks for pointing this out. I will research the use of SMP primitives. The
> 'ums' driver, which is what I am replacing, also uses splx(). Could you tell
> me which giant lock I am using in my code? Is there any documentation I can
> refer to for SMP synchronization under FreeBSD?

mutex(9)

> regards,
> Rohit.
> _______________________________________________
> freebsd-drivers@... mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-drivers
> To unsubscribe, send any mail to "freebsd-drivers-unsubscribe@..."
>


--
Paul
_______________________________________________
freebsd-drivers@... mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-drivers
To unsubscribe, send any mail to "freebsd-drivers-unsubscribe@..."