From: Albert H. <he...@us...> - 2009-10-25 18:45:45
|
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; |