Difference between revisions of "Hammer Button Driver"
From eLinux.org
(Add Category Hammer) |
(Change to Category TCT-Hammer) |
||
| Line 59: | Line 59: | ||
[[Image:pb-example.jpg]] | [[Image:pb-example.jpg]] | ||
| − | [[Category:Hammer]] | + | [[Category:TCT-Hammer]] |
Latest revision as of 16:41, 14 May 2011
UserSpace Access
the carrier board push button can be accessed via the sysfs interface as well as a shell script functionality. the sysfs entry for the push button can be found in the directory mark /sys/devices/platform/gpio-keys.0 . the driver also looks for a shell script in /sbin called pb0.sh. this shell script can be used to start user land applications. here is the provided example shell script:
#!/bin/sh
if [ $1 = "down" ] ; then
if [ -x /mnt/flash/scripts/pb0.down ] ; then
/mnt/flash/scripts/pb0.down
else
current=`cat /sys/class/leds/led1/brightness`
if [ "${current}" = 0 ] ; then
echo 1 > /sys/class/leds/led1/brightness
else
echo 0 > /sys/class/leds/led1/brightness
fi
fi
else
if [ -x /mnt/flash/scripts/pb0.up ] ; then
/mnt/flash/scripts/pb0.up
fi
fi#
Adding New PushButtons
the gpio buttons are defined in the linux-2.6.xx/arch/arm/mach-s3c2410/mach-tct_hammer.c file. each button requires that the gpio be defined, a name, and key scan code associated with it. in addition standard platform data and platform device have to be defined.
static struct gpio_keys_button gpio_keys_buttons[] = {
[0] = {
.code = 0x26,
.gpio = S3C2410_GPG3,
.active_low = 0,
.desc = "PB0",
},
};
static struct gpio_keys_platform_data gpio_keys_data = {
.buttons = gpio_keys_buttons,
.nbuttons = ARRAY_SIZE(gpio_keys_buttons),
};
static struct platform_device tct_hammer_buttons = {
.name = "gpio-keys",
.id = 0,
.dev = {
.platform_data = &gpio_keys_data,
},
};
