Update of /cvsroot/gc-linux/linux/drivers/gpio
In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv29988/drivers/gpio
Modified Files:
gpiolib.c
Log Message:
Forward to v.2.6.30.
Index: gpiolib.c
===================================================================
RCS file: /cvsroot/gc-linux/linux/drivers/gpio/gpiolib.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** gpiolib.c 25 Oct 2009 18:33:47 -0000 1.3
--- gpiolib.c 25 Oct 2009 18:45:35 -0000 1.4
***************
*** 70,80 ****
* message should motivate switching to explicit requests... so should
* the weaker cleanup after faults, compared to gpio_request().
*/
static int gpio_ensure_requested(struct gpio_desc *desc, unsigned offset)
{
! if (test_and_set_bit(FLAG_REQUESTED, &desc->flags) == 0) {
! struct gpio_chip *chip = desc->chip;
! int gpio = chip->base + offset;
if (!try_module_get(chip->owner)) {
pr_err("GPIO-%d: module can't be gotten \n", gpio);
--- 70,85 ----
* message should motivate switching to explicit requests... so should
* the weaker cleanup after faults, compared to gpio_request().
+ *
+ * NOTE: the autorequest mechanism is going away; at this point it's
+ * only "legal" in the sense that (old) code using it won't break yet,
+ * but instead only triggers a WARN() stack dump.
*/
static int gpio_ensure_requested(struct gpio_desc *desc, unsigned offset)
{
! const struct gpio_chip *chip = desc->chip;
! const int gpio = chip->base + offset;
+ if (WARN(test_and_set_bit(FLAG_REQUESTED, &desc->flags) == 0,
+ "autorequest GPIO-%d\n", gpio)) {
if (!try_module_get(chip->owner)) {
pr_err("GPIO-%d: module can't be gotten \n", gpio);
***************
*** 83,87 ****
return -EIO;
}
- pr_warning("GPIO-%d autorequested\n", gpio);
desc_set_label(desc, "[auto]");
/* caller must chip->request() w/o spinlock */
--- 88,91 ----
***************
*** 439,442 ****
--- 443,447 ----
struct gpio_desc *desc;
int status = -EINVAL;
+ char *ioname = NULL;
/* can't export until sysfs is available ... */
***************
*** 462,470 ****
spin_unlock_irqrestore(&gpio_lock, flags);
if (status == 0) {
struct device *dev;
dev = device_create(&gpio_class, desc->chip->dev, MKDEV(0, 0),
! desc, "gpio%d", gpio);
if (dev) {
if (direction_may_change)
--- 467,478 ----
spin_unlock_irqrestore(&gpio_lock, flags);
+ if (desc->chip->names && desc->chip->names[gpio - desc->chip->base])
+ ioname = desc->chip->names[gpio - desc->chip->base];
+
if (status == 0) {
struct device *dev;
dev = device_create(&gpio_class, desc->chip->dev, MKDEV(0, 0),
! desc, ioname ? ioname : "gpio%d", gpio);
if (dev) {
if (direction_may_change)
***************
*** 514,517 ****
--- 522,526 ----
desc = &gpio_desc[gpio];
+
if (test_bit(FLAG_EXPORT, &desc->flags)) {
struct device *dev = NULL;
|