Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Driver for the charging sensor on the N900



Am 14.04.13 20:47, schrieb Pierre Pronchery:
>                       Hi current-users@,
> 
> I am slowly understanding how to write the first batch of drivers for
> the Nokia N900, starting with what's available on the main GPIO pins.
> 
> The driver attached signals whenever the device is connected to a
> charger and reports it to envsys. It requires the following changes to
> function properly:
> 
> in sys/arch/evbarm/conf/N900:
> # GPIO devices
> # Charging sensor
> n900acad0       at gpio0 offset 7 mask 0x1 #intr 103
> 
> in sys/arch/evbarm/conf/files.n900:
> # Charging sensor
> device n900acad: sysmon_envsys
> attach n900acad at gpio with n900acad
> file    arch/evbarm/n900/n900_acad.c            n900acad
> 
> and then the driver code attached goes into arch/evbarm/n900/n900_acad.c.
> 
> Before committing anything, I would like to know if I have done things
> properly there:
> - the GPIO pin is mapped as interrupt 103 (omapgpio0, offset 7)
> - the driver uses intr_establish() to hook it;
> - it also configures and uses that same pin as an input.
> 
> The ugly part is when calling intr_establish(), where I had to hard-code
> omapgpio0's base interrupt (96).

That is ugly indeed.  A very first step would be to #define any magic
numbers (96 in this case), and add a comment what they mean.

As more and more gpios are interrupt capable, that should find it's way
into gpio(4).  I got me some hardware to work on this, the
non-interrupt-capabilities of gpio(4) is a long-standing bug, imo.

> 
> Is there a better way to do this?
> 
> Cheers,
> 



Home | Main Index | Thread Index | Old Index