Merge branch 'ib-for-each-requested' into devel
This commit is contained in:
commit
84651e81ee
@ -442,6 +442,7 @@ static void orion_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip)
|
|||||||
|
|
||||||
struct orion_gpio_chip *ochip = gpiochip_get_data(chip);
|
struct orion_gpio_chip *ochip = gpiochip_get_data(chip);
|
||||||
u32 out, io_conf, blink, in_pol, data_in, cause, edg_msk, lvl_msk;
|
u32 out, io_conf, blink, in_pol, data_in, cause, edg_msk, lvl_msk;
|
||||||
|
const char *label;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
out = readl_relaxed(GPIO_OUT(ochip));
|
out = readl_relaxed(GPIO_OUT(ochip));
|
||||||
@ -453,15 +454,10 @@ static void orion_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip)
|
|||||||
edg_msk = readl_relaxed(GPIO_EDGE_MASK(ochip));
|
edg_msk = readl_relaxed(GPIO_EDGE_MASK(ochip));
|
||||||
lvl_msk = readl_relaxed(GPIO_LEVEL_MASK(ochip));
|
lvl_msk = readl_relaxed(GPIO_LEVEL_MASK(ochip));
|
||||||
|
|
||||||
for (i = 0; i < chip->ngpio; i++) {
|
for_each_requested_gpio(chip, i, label) {
|
||||||
const char *label;
|
|
||||||
u32 msk;
|
u32 msk;
|
||||||
bool is_out;
|
bool is_out;
|
||||||
|
|
||||||
label = gpiochip_is_requested(chip, i);
|
|
||||||
if (!label)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
msk = 1 << i;
|
msk = 1 << i;
|
||||||
is_out = !(io_conf & msk);
|
is_out = !(io_conf & msk);
|
||||||
|
|
||||||
|
@ -846,6 +846,7 @@ static void mvebu_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip)
|
|||||||
{
|
{
|
||||||
struct mvebu_gpio_chip *mvchip = gpiochip_get_data(chip);
|
struct mvebu_gpio_chip *mvchip = gpiochip_get_data(chip);
|
||||||
u32 out, io_conf, blink, in_pol, data_in, cause, edg_msk, lvl_msk;
|
u32 out, io_conf, blink, in_pol, data_in, cause, edg_msk, lvl_msk;
|
||||||
|
const char *label;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
regmap_read(mvchip->regs, GPIO_OUT_OFF + mvchip->offset, &out);
|
regmap_read(mvchip->regs, GPIO_OUT_OFF + mvchip->offset, &out);
|
||||||
@ -857,15 +858,10 @@ static void mvebu_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip)
|
|||||||
edg_msk = mvebu_gpio_read_edge_mask(mvchip);
|
edg_msk = mvebu_gpio_read_edge_mask(mvchip);
|
||||||
lvl_msk = mvebu_gpio_read_level_mask(mvchip);
|
lvl_msk = mvebu_gpio_read_level_mask(mvchip);
|
||||||
|
|
||||||
for (i = 0; i < chip->ngpio; i++) {
|
for_each_requested_gpio(chip, i, label) {
|
||||||
const char *label;
|
|
||||||
u32 msk;
|
u32 msk;
|
||||||
bool is_out;
|
bool is_out;
|
||||||
|
|
||||||
label = gpiochip_is_requested(chip, i);
|
|
||||||
if (!label)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
msk = BIT(i);
|
msk = BIT(i);
|
||||||
is_out = !(io_conf & msk);
|
is_out = !(io_conf & msk);
|
||||||
|
|
||||||
|
@ -121,6 +121,7 @@ static void xra1403_dbg_show(struct seq_file *s, struct gpio_chip *chip)
|
|||||||
struct xra1403 *xra = gpiochip_get_data(chip);
|
struct xra1403 *xra = gpiochip_get_data(chip);
|
||||||
int value[XRA_LAST];
|
int value[XRA_LAST];
|
||||||
int i;
|
int i;
|
||||||
|
const char *label;
|
||||||
unsigned int gcr;
|
unsigned int gcr;
|
||||||
unsigned int gsr;
|
unsigned int gsr;
|
||||||
|
|
||||||
@ -136,12 +137,7 @@ static void xra1403_dbg_show(struct seq_file *s, struct gpio_chip *chip)
|
|||||||
|
|
||||||
gcr = value[XRA_GCR + 1] << 8 | value[XRA_GCR];
|
gcr = value[XRA_GCR + 1] << 8 | value[XRA_GCR];
|
||||||
gsr = value[XRA_GSR + 1] << 8 | value[XRA_GSR];
|
gsr = value[XRA_GSR + 1] << 8 | value[XRA_GSR];
|
||||||
for (i = 0; i < chip->ngpio; i++) {
|
for_each_requested_gpio(chip, i, label) {
|
||||||
const char *label = gpiochip_is_requested(chip, i);
|
|
||||||
|
|
||||||
if (!label)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
seq_printf(s, " gpio-%-3d (%-12s) %s %s\n",
|
seq_printf(s, " gpio-%-3d (%-12s) %s %s\n",
|
||||||
chip->base + i, label,
|
chip->base + i, label,
|
||||||
(gcr & BIT(i)) ? "in" : "out",
|
(gcr & BIT(i)) ? "in" : "out",
|
||||||
|
@ -1486,14 +1486,11 @@ static void at91_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip)
|
|||||||
int i;
|
int i;
|
||||||
struct at91_gpio_chip *at91_gpio = gpiochip_get_data(chip);
|
struct at91_gpio_chip *at91_gpio = gpiochip_get_data(chip);
|
||||||
void __iomem *pio = at91_gpio->regbase;
|
void __iomem *pio = at91_gpio->regbase;
|
||||||
|
|
||||||
for (i = 0; i < chip->ngpio; i++) {
|
|
||||||
unsigned mask = pin_to_mask(i);
|
|
||||||
const char *gpio_label;
|
const char *gpio_label;
|
||||||
|
|
||||||
gpio_label = gpiochip_is_requested(chip, i);
|
for_each_requested_gpio(chip, i, gpio_label) {
|
||||||
if (!gpio_label)
|
unsigned mask = pin_to_mask(i);
|
||||||
continue;
|
|
||||||
mode = at91_gpio->ops->get_periph(pio, mask);
|
mode = at91_gpio->ops->get_periph(pio, mask);
|
||||||
seq_printf(s, "[%s] GPIO%s%d: ",
|
seq_printf(s, "[%s] GPIO%s%d: ",
|
||||||
gpio_label, chip->label, i);
|
gpio_label, chip->label, i);
|
||||||
|
@ -474,6 +474,22 @@ struct gpio_chip {
|
|||||||
extern const char *gpiochip_is_requested(struct gpio_chip *gc,
|
extern const char *gpiochip_is_requested(struct gpio_chip *gc,
|
||||||
unsigned int offset);
|
unsigned int offset);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* for_each_requested_gpio_in_range - iterates over requested GPIOs in a given range
|
||||||
|
* @chip: the chip to query
|
||||||
|
* @i: loop variable
|
||||||
|
* @base: first GPIO in the range
|
||||||
|
* @size: amount of GPIOs to check starting from @base
|
||||||
|
* @label: label of current GPIO
|
||||||
|
*/
|
||||||
|
#define for_each_requested_gpio_in_range(chip, i, base, size, label) \
|
||||||
|
for (i = 0; i < size; i++) \
|
||||||
|
if ((label = gpiochip_is_requested(chip, base + i)) == NULL) {} else
|
||||||
|
|
||||||
|
/* Iterates over all requested GPIO of the given @chip */
|
||||||
|
#define for_each_requested_gpio(chip, i, label) \
|
||||||
|
for_each_requested_gpio_in_range(chip, i, 0, chip->ngpio, label)
|
||||||
|
|
||||||
/* add/remove chips */
|
/* add/remove chips */
|
||||||
extern int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data,
|
extern int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data,
|
||||||
struct lock_class_key *lock_key,
|
struct lock_class_key *lock_key,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user