static void i2c_mux_gpio_set(const struct gpiomux *mux, unsigned val) { DECLARE_BITMAP(values, BITS_PER_TYPE(val)); values[0] = val; gpiod_set_array_value_cansleep(mux->data.n_gpios, mux->gpios, NULL, values); }
/** * phy_mdm6600_cmd() - send a command request to mdm6600 * @ddata: device driver data * * Configures the three command request GPIOs to the specified value. */ static void phy_mdm6600_cmd(struct phy_mdm6600 *ddata, int val) { int values[PHY_MDM6600_NR_CMD_LINES]; int i; val &= (1 << PHY_MDM6600_NR_CMD_LINES) - 1; for (i = 0; i < PHY_MDM6600_NR_CMD_LINES; i++) values[i] = (val & BIT(i)) >> i; gpiod_set_array_value_cansleep(PHY_MDM6600_NR_CMD_LINES, ddata->cmd_gpios->desc, values); }
static void mmc_pwrseq_simple_set_gpios_value(struct mmc_pwrseq_simple *pwrseq, int value) { int i; struct gpio_descs *reset_gpios = pwrseq->reset_gpios; int values[reset_gpios->ndescs]; for (i = 0; i < reset_gpios->ndescs; i++) values[i] = value; gpiod_set_array_value_cansleep(reset_gpios->ndescs, reset_gpios->desc, values); }
/* * soc_common_pcmcia_config_skt * ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ * * Convert PCMCIA socket state to our socket configure structure. */ static int soc_common_pcmcia_config_skt( struct soc_pcmcia_socket *skt, socket_state_t *state) { int ret; ret = skt->ops->configure_socket(skt, state); if (ret < 0) { pr_err("soc_common_pcmcia: unable to configure socket %d\n", skt->nr); /* restore the previous state */ WARN_ON(skt->ops->configure_socket(skt, &skt->cs_state)); return ret; } if (ret == 0) { struct gpio_desc *descs[2]; int values[2], n = 0; if (skt->gpio_reset) { descs[n] = skt->gpio_reset; values[n++] = !!(state->flags & SS_RESET); } if (skt->gpio_bus_enable) { descs[n] = skt->gpio_bus_enable; values[n++] = !!(state->flags & SS_OUTPUT_ENA); } if (n) gpiod_set_array_value_cansleep(n, descs, values); /* * This really needs a better solution. The IRQ * may or may not be claimed by the driver. */ if (skt->irq_state != 1 && state->io_irq) { skt->irq_state = 1; irq_set_irq_type(skt->socket.pci_irq, IRQ_TYPE_EDGE_FALLING); } else if (skt->irq_state == 1 && state->io_irq == 0) { skt->irq_state = 0; irq_set_irq_type(skt->socket.pci_irq, IRQ_TYPE_NONE); } skt->cs_state = *state; } return ret; }