Lines Matching refs:bank
19 static int rockchip_verify_config(struct udevice *dev, u32 bank, u32 pin) in rockchip_verify_config() argument
24 if (bank >= ctrl->nr_banks) { in rockchip_verify_config()
25 debug("pin conf bank %d >= nbanks %d\n", bank, ctrl->nr_banks); in rockchip_verify_config()
38 static void rockchip_get_recalced_mux(struct rockchip_pin_bank *bank, int pin, in rockchip_get_recalced_mux() argument
41 struct rockchip_pinctrl_priv *priv = bank->priv; in rockchip_get_recalced_mux()
48 if (data->num == bank->bank_num && in rockchip_get_recalced_mux()
61 static bool rockchip_get_mux_route(struct rockchip_pin_bank *bank, int pin, in rockchip_get_mux_route() argument
64 struct rockchip_pinctrl_priv *priv = bank->priv; in rockchip_get_mux_route()
71 if (data->bank_num == bank->bank_num && in rockchip_get_mux_route()
111 static int rockchip_get_mux(struct rockchip_pin_bank *bank, int pin) in rockchip_get_mux() argument
113 struct rockchip_pinctrl_priv *priv = bank->priv; in rockchip_get_mux()
123 if (bank->iomux[iomux_num].type & IOMUX_UNROUTED) { in rockchip_get_mux()
128 if (bank->iomux[iomux_num].type & IOMUX_GPIO_ONLY) in rockchip_get_mux()
131 regmap = (bank->iomux[iomux_num].type & IOMUX_SOURCE_PMU) in rockchip_get_mux()
135 mux_type = bank->iomux[iomux_num].type; in rockchip_get_mux()
136 reg = bank->iomux[iomux_num].offset; in rockchip_get_mux()
139 if (bank->recalced_mask & BIT(pin)) in rockchip_get_mux()
140 rockchip_get_recalced_mux(bank, pin, ®, &bit, &mask); in rockchip_get_mux()
157 static int rockchip_verify_mux(struct rockchip_pin_bank *bank, in rockchip_verify_mux() argument
165 if (bank->iomux[iomux_num].type & IOMUX_UNROUTED) { in rockchip_verify_mux()
170 if (bank->iomux[iomux_num].type & IOMUX_GPIO_ONLY) { in rockchip_verify_mux()
193 static int rockchip_set_mux(struct rockchip_pin_bank *bank, int pin, int mux) in rockchip_set_mux() argument
195 struct rockchip_pinctrl_priv *priv = bank->priv; in rockchip_set_mux()
202 ret = rockchip_verify_mux(bank, pin, mux); in rockchip_set_mux()
206 if (bank->iomux[iomux_num].type & IOMUX_GPIO_ONLY) in rockchip_set_mux()
209 debug("setting mux of GPIO%d-%d to %d\n", bank->bank_num, pin, mux); in rockchip_set_mux()
211 regmap = (bank->iomux[iomux_num].type & IOMUX_SOURCE_PMU) in rockchip_set_mux()
215 mux_type = bank->iomux[iomux_num].type; in rockchip_set_mux()
216 reg = bank->iomux[iomux_num].offset; in rockchip_set_mux()
219 if (bank->recalced_mask & BIT(pin)) in rockchip_set_mux()
220 rockchip_get_recalced_mux(bank, pin, ®, &bit, &mask); in rockchip_set_mux()
222 if (bank->route_mask & BIT(pin)) { in rockchip_set_mux()
223 if (rockchip_get_mux_route(bank, pin, mux, &route_reg, in rockchip_set_mux()
252 static int rockchip_set_drive_perpin(struct rockchip_pin_bank *bank, in rockchip_set_drive_perpin() argument
255 struct rockchip_pinctrl_priv *priv = bank->priv; in rockchip_set_drive_perpin()
262 int drv_type = bank->drv[pin_num / 8].drv_type & (~DRV_TYPE_IO_MASK); in rockchip_set_drive_perpin()
264 debug("setting drive of GPIO%d-%d to %d\n", bank->bank_num, in rockchip_set_drive_perpin()
267 ctrl->drv_calc_reg(bank, pin_num, ®map, ®, &bit); in rockchip_set_drive_perpin()
334 if (bank->drv[pin_num / 8].drv_type & DRV_TYPE_WRITABLE_32BIT) { in rockchip_set_drive_perpin()
362 static int rockchip_set_pull(struct rockchip_pin_bank *bank, in rockchip_set_pull() argument
365 struct rockchip_pinctrl_priv *priv = bank->priv; in rockchip_set_pull()
372 debug("setting pull of GPIO%d-%d to %d\n", bank->bank_num, in rockchip_set_pull()
375 ctrl->pull_calc_reg(bank, pin_num, ®map, ®, &bit); in rockchip_set_pull()
394 pull_type = bank->pull_type[pin_num / 8] & (~PULL_TYPE_IO_MASK); in rockchip_set_pull()
409 if (bank->pull_type[pin_num / 8] & PULL_TYPE_WRITABLE_32BIT) { in rockchip_set_pull()
428 static int rockchip_set_schmitt(struct rockchip_pin_bank *bank, in rockchip_set_schmitt() argument
431 struct rockchip_pinctrl_priv *priv = bank->priv; in rockchip_set_schmitt()
438 debug("setting input schmitt of GPIO%d-%d to %d\n", bank->bank_num, in rockchip_set_schmitt()
441 ret = ctrl->schmitt_calc_reg(bank, pin_num, ®map, ®, &bit); in rockchip_set_schmitt()
474 static int rockchip_pinconf_set(struct rockchip_pin_bank *bank, in rockchip_pinconf_set() argument
477 struct rockchip_pinctrl_priv *priv = bank->priv; in rockchip_pinconf_set()
483 rc = rockchip_set_pull(bank, pin, param); in rockchip_pinconf_set()
498 rc = rockchip_set_pull(bank, pin, param); in rockchip_pinconf_set()
507 rc = rockchip_set_drive_perpin(bank, pin, arg); in rockchip_pinconf_set()
516 rc = rockchip_set_schmitt(bank, pin, arg); in rockchip_pinconf_set()
566 u32 bank, pin, mux, conf, arg, default_val; local
597 bank = cells[4 * i + 0];
602 ret = rockchip_verify_config(dev, bank, pin);
606 ret = rockchip_set_mux(&ctrl->pin_banks[bank], pin, mux);
637 ret = rockchip_pinconf_set(&ctrl->pin_banks[bank], pin,
661 struct rockchip_pin_bank *bank; local
668 bank = ctrl->pin_banks;
670 for (i = 0; i < ctrl->nr_banks; ++i, ++bank) {
673 bank->priv = priv;
674 bank->pin_base = ctrl->nr_pins;
675 ctrl->nr_pins += bank->nr_pins;
679 struct rockchip_iomux *iom = &bank->iomux[j];
680 struct rockchip_drv *drv = &bank->drv[j];
683 if (bank_pins >= bank->nr_pins)
744 if (ctrl->iomux_recalced[j].num == bank->bank_num) {
746 bank->recalced_mask |= BIT(pin);
754 if (ctrl->iomux_routes[j].bank_num == bank->bank_num) {
756 bank->route_mask |= BIT(pin);