Lines Matching +full:bcm63268 +full:- +full:gpio
1 // SPDX-License-Identifier: GPL-2.0+
3 * Driver for BCM63268 GPIO unit (pinctrl + GPIO)
10 #include <linux/gpio/driver.h>
17 #include "../pinctrl-utils.h"
19 #include "pinctrl-bcm63xx.h"
28 #define BCM63268_BASEMODE_NAND BIT(2) /* GPIOs 2-7, 24-31 */
29 #define BCM63268_BASEMODE_GPIO35 BIT(4) /* GPIO 35 */
523 unsigned int basemode = (unsigned long) desc->drv_data; in bcm63268_set_gpio()
527 regmap_update_bits(pc->regs, BCM63268_BASEMODE_REG, basemode, in bcm63268_set_gpio()
531 /* base mode: 0 => gpio, 1 => mux function */ in bcm63268_set_gpio()
532 regmap_update_bits(pc->regs, BCM63268_MODE_REG, mask, 0); in bcm63268_set_gpio()
534 /* pins 0-23 might be muxed to led */ in bcm63268_set_gpio()
536 regmap_update_bits(pc->regs, BCM63268_LED_REG, mask, in bcm63268_set_gpio()
539 /* ctrl reg: 0 => wifi function, 1 => gpio */ in bcm63268_set_gpio()
540 regmap_update_bits(pc->regs, BCM63268_CTRL_REG, mask, mask); in bcm63268_set_gpio()
554 for (i = 0; i < pg->num_pins; i++) in bcm63268_pinctrl_set_mux()
555 bcm63268_set_gpio(pc, pg->pins[i]); in bcm63268_pinctrl_set_mux()
557 switch (f->reg) { in bcm63268_pinctrl_set_mux()
560 mask = BIT(pg->pins[0]); in bcm63268_pinctrl_set_mux()
561 val = BIT(pg->pins[0]); in bcm63268_pinctrl_set_mux()
565 mask = BIT(pg->pins[0]); in bcm63268_pinctrl_set_mux()
566 val = BIT(pg->pins[0]); in bcm63268_pinctrl_set_mux()
570 mask = BIT(pg->pins[0]); in bcm63268_pinctrl_set_mux()
575 mask = f->mask; in bcm63268_pinctrl_set_mux()
576 val = f->mask; in bcm63268_pinctrl_set_mux()
580 return -EINVAL; in bcm63268_pinctrl_set_mux()
583 regmap_update_bits(pc->regs, reg, mask, val); in bcm63268_pinctrl_set_mux()
631 { .compatible = "brcm,bcm63268-pinctrl", },
638 .name = "bcm63268-pinctrl",