]> git.baikalelectronics.ru Git - kernel.git/commit
gpio: aspeed: Add debounce support
authorAndrew Jeffery <andrew@aj.id.au>
Fri, 7 Apr 2017 12:59:01 +0000 (22:29 +0930)
committerLinus Walleij <linus.walleij@linaro.org>
Mon, 24 Apr 2017 12:49:53 +0000 (14:49 +0200)
commitb5620a3e21fd86c0c24dc658f2b1624c6ffc509c
treedb147b3a31d25174bc443168db106511b9a4b5ab
parent17a658d8082e3132897d335dc7a9c6df476a5200
gpio: aspeed: Add debounce support

Each GPIO in the Aspeed GPIO controller can choose one of four input
debounce states: to disable debouncing for an input, or select from one
of three programmable debounce timer values. Each GPIO in a
four-bank-set is assigned one bit in each of two debounce configuration
registers dedicated to the set, and selects a debounce state by
configuring the two bits to select one of the four options.

The limitation on debounce timer values is managed by mapping offsets
onto a configured timer value and keeping count of the number of users
a timer has. Timer values are configured on a first-come-first-served
basis.

A small twist in the hardware design is that the debounce configuration
register numbering is reversed with respect to the binary representation
of the debounce timer of interest (i.e. debounce register 1 represents
bit 1, and debounce register 2 represents bit 0 of the timer numbering).

Tested on an AST2500EVB with additional inspection under QEMU's
romulus-bmc machine.

Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpio-aspeed.c