Lines Matching refs:bank

800 static void rockchip_get_recalced_mux(struct rockchip_pin_bank *bank, int pin,  in rockchip_get_recalced_mux()  argument
803 struct rockchip_pinctrl *info = bank->drvdata; in rockchip_get_recalced_mux()
810 if (data->num == bank->bank_num && in rockchip_get_recalced_mux()
1038 static bool rockchip_get_mux_route(struct rockchip_pin_bank *bank, int pin, in rockchip_get_mux_route() argument
1041 struct rockchip_pinctrl *info = bank->drvdata; in rockchip_get_mux_route()
1048 if ((data->bank_num == bank->bank_num) && in rockchip_get_mux_route()
1063 static int rockchip_get_mux(struct rockchip_pin_bank *bank, int pin) in rockchip_get_mux() argument
1065 struct rockchip_pinctrl *info = bank->drvdata; in rockchip_get_mux()
1076 if (bank->iomux[iomux_num].type & IOMUX_UNROUTED) { in rockchip_get_mux()
1081 if (bank->iomux[iomux_num].type & IOMUX_GPIO_ONLY) in rockchip_get_mux()
1084 if (bank->iomux[iomux_num].type & IOMUX_SOURCE_PMU) in rockchip_get_mux()
1086 else if (bank->iomux[iomux_num].type & IOMUX_L_SOURCE_PMU) in rockchip_get_mux()
1092 mux_type = bank->iomux[iomux_num].type; in rockchip_get_mux()
1093 reg = bank->iomux[iomux_num].offset; in rockchip_get_mux()
1109 if (bank->recalced_mask & BIT(pin)) in rockchip_get_mux()
1110 rockchip_get_recalced_mux(bank, pin, &reg, &bit, &mask); in rockchip_get_mux()
1113 if (bank->bank_num == 0) { in rockchip_get_mux()
1128 } else if (bank->bank_num > 0) { in rockchip_get_mux()
1140 static int rockchip_verify_mux(struct rockchip_pin_bank *bank, in rockchip_verify_mux() argument
1143 struct rockchip_pinctrl *info = bank->drvdata; in rockchip_verify_mux()
1150 if (bank->iomux[iomux_num].type & IOMUX_UNROUTED) { in rockchip_verify_mux()
1155 if (bank->iomux[iomux_num].type & IOMUX_GPIO_ONLY) { in rockchip_verify_mux()
1178 static int rockchip_set_mux(struct rockchip_pin_bank *bank, int pin, int mux) in rockchip_set_mux() argument
1180 struct rockchip_pinctrl *info = bank->drvdata; in rockchip_set_mux()
1189 ret = rockchip_verify_mux(bank, pin, mux); in rockchip_set_mux()
1193 if (bank->iomux[iomux_num].type & IOMUX_GPIO_ONLY) in rockchip_set_mux()
1196 dev_dbg(dev, "setting mux of GPIO%d-%d to %d\n", bank->bank_num, pin, mux); in rockchip_set_mux()
1198 if (bank->iomux[iomux_num].type & IOMUX_SOURCE_PMU) in rockchip_set_mux()
1200 else if (bank->iomux[iomux_num].type & IOMUX_L_SOURCE_PMU) in rockchip_set_mux()
1206 mux_type = bank->iomux[iomux_num].type; in rockchip_set_mux()
1207 reg = bank->iomux[iomux_num].offset; in rockchip_set_mux()
1223 if (bank->recalced_mask & BIT(pin)) in rockchip_set_mux()
1224 rockchip_get_recalced_mux(bank, pin, &reg, &bit, &mask); in rockchip_set_mux()
1228 if (bank->bank_num == 1) { in rockchip_set_mux()
1240 if (bank->bank_num == 0) { in rockchip_set_mux()
1279 } else if (bank->bank_num > 0) { in rockchip_set_mux()
1287 if (bank->route_mask & BIT(pin)) { in rockchip_set_mux()
1288 if (rockchip_get_mux_route(bank, pin, mux, &route_location, in rockchip_set_mux()
1332 static int px30_calc_pull_reg_and_bit(struct rockchip_pin_bank *bank, in px30_calc_pull_reg_and_bit() argument
1336 struct rockchip_pinctrl *info = bank->drvdata; in px30_calc_pull_reg_and_bit()
1339 if (bank->bank_num == 0) { in px30_calc_pull_reg_and_bit()
1348 *reg += bank->bank_num * PX30_PULL_BANK_STRIDE; in px30_calc_pull_reg_and_bit()
1364 static int px30_calc_drv_reg_and_bit(struct rockchip_pin_bank *bank, in px30_calc_drv_reg_and_bit() argument
1368 struct rockchip_pinctrl *info = bank->drvdata; in px30_calc_drv_reg_and_bit()
1371 if (bank->bank_num == 0) { in px30_calc_drv_reg_and_bit()
1380 *reg += bank->bank_num * PX30_DRV_BANK_STRIDE; in px30_calc_drv_reg_and_bit()
1396 static int px30_calc_schmitt_reg_and_bit(struct rockchip_pin_bank *bank, in px30_calc_schmitt_reg_and_bit() argument
1401 struct rockchip_pinctrl *info = bank->drvdata; in px30_calc_schmitt_reg_and_bit()
1404 if (bank->bank_num == 0) { in px30_calc_schmitt_reg_and_bit()
1412 *reg += (bank->bank_num - 1) * PX30_SCHMITT_BANK_STRIDE; in px30_calc_schmitt_reg_and_bit()
1429 static int rv1106_calc_drv_reg_and_bit(struct rockchip_pin_bank *bank, in rv1106_calc_drv_reg_and_bit() argument
1433 struct rockchip_pinctrl *info = bank->drvdata; in rv1106_calc_drv_reg_and_bit()
1436 switch (bank->bank_num) { in rv1106_calc_drv_reg_and_bit()
1463 dev_err(info->dev, "unsupported bank_num %d\n", bank->bank_num); in rv1106_calc_drv_reg_and_bit()
1482 static int rv1106_calc_pull_reg_and_bit(struct rockchip_pin_bank *bank, in rv1106_calc_pull_reg_and_bit() argument
1486 struct rockchip_pinctrl *info = bank->drvdata; in rv1106_calc_pull_reg_and_bit()
1489 switch (bank->bank_num) { in rv1106_calc_pull_reg_and_bit()
1516 dev_err(info->dev, "unsupported bank_num %d\n", bank->bank_num); in rv1106_calc_pull_reg_and_bit()
1535 static int rv1106_calc_schmitt_reg_and_bit(struct rockchip_pin_bank *bank, in rv1106_calc_schmitt_reg_and_bit() argument
1540 struct rockchip_pinctrl *info = bank->drvdata; in rv1106_calc_schmitt_reg_and_bit()
1543 switch (bank->bank_num) { in rv1106_calc_schmitt_reg_and_bit()
1570 dev_err(info->dev, "unsupported bank_num %d\n", bank->bank_num); in rv1106_calc_schmitt_reg_and_bit()
1587 static int rv1108_calc_pull_reg_and_bit(struct rockchip_pin_bank *bank, in rv1108_calc_pull_reg_and_bit() argument
1591 struct rockchip_pinctrl *info = bank->drvdata; in rv1108_calc_pull_reg_and_bit()
1594 if (bank->bank_num == 0) { in rv1108_calc_pull_reg_and_bit()
1602 *reg += bank->bank_num * RV1108_PULL_BANK_STRIDE; in rv1108_calc_pull_reg_and_bit()
1618 static int rv1108_calc_drv_reg_and_bit(struct rockchip_pin_bank *bank, in rv1108_calc_drv_reg_and_bit() argument
1622 struct rockchip_pinctrl *info = bank->drvdata; in rv1108_calc_drv_reg_and_bit()
1625 if (bank->bank_num == 0) { in rv1108_calc_drv_reg_and_bit()
1634 *reg += bank->bank_num * RV1108_DRV_BANK_STRIDE; in rv1108_calc_drv_reg_and_bit()
1650 static int rv1108_calc_schmitt_reg_and_bit(struct rockchip_pin_bank *bank, in rv1108_calc_schmitt_reg_and_bit() argument
1655 struct rockchip_pinctrl *info = bank->drvdata; in rv1108_calc_schmitt_reg_and_bit()
1658 if (bank->bank_num == 0) { in rv1108_calc_schmitt_reg_and_bit()
1666 *reg += (bank->bank_num - 1) * RV1108_SCHMITT_BANK_STRIDE; in rv1108_calc_schmitt_reg_and_bit()
1681 static int rv1126_calc_pull_reg_and_bit(struct rockchip_pin_bank *bank, in rv1126_calc_pull_reg_and_bit() argument
1685 struct rockchip_pinctrl *info = bank->drvdata; in rv1126_calc_pull_reg_and_bit()
1688 if (bank->bank_num == 0) { in rv1126_calc_pull_reg_and_bit()
1702 *reg += (bank->bank_num - 1) * RV1126_PULL_BANK_STRIDE; in rv1126_calc_pull_reg_and_bit()
1718 static int rv1126_calc_drv_reg_and_bit(struct rockchip_pin_bank *bank, in rv1126_calc_drv_reg_and_bit() argument
1722 struct rockchip_pinctrl *info = bank->drvdata; in rv1126_calc_drv_reg_and_bit()
1725 if (bank->bank_num == 0) { in rv1126_calc_drv_reg_and_bit()
1740 *reg += (bank->bank_num - 1) * RV1126_DRV_BANK_STRIDE; in rv1126_calc_drv_reg_and_bit()
1756 static int rv1126_calc_schmitt_reg_and_bit(struct rockchip_pin_bank *bank, in rv1126_calc_schmitt_reg_and_bit() argument
1761 struct rockchip_pinctrl *info = bank->drvdata; in rv1126_calc_schmitt_reg_and_bit()
1764 if (bank->bank_num == 0) { in rv1126_calc_schmitt_reg_and_bit()
1779 *reg += (bank->bank_num - 1) * RV1126_SCHMITT_BANK_STRIDE; in rv1126_calc_schmitt_reg_and_bit()
1791 static int rk3308_calc_schmitt_reg_and_bit(struct rockchip_pin_bank *bank, in rk3308_calc_schmitt_reg_and_bit() argument
1795 struct rockchip_pinctrl *info = bank->drvdata; in rk3308_calc_schmitt_reg_and_bit()
1800 *reg += bank->bank_num * RK3308_SCHMITT_BANK_STRIDE; in rk3308_calc_schmitt_reg_and_bit()
1813 static int rk1808_calc_pull_reg_and_bit(struct rockchip_pin_bank *bank, in rk1808_calc_pull_reg_and_bit() argument
1817 struct rockchip_pinctrl *info = bank->drvdata; in rk1808_calc_pull_reg_and_bit()
1819 if (bank->bank_num == 0) { in rk1808_calc_pull_reg_and_bit()
1825 *reg += (bank->bank_num - 1) * RK1808_PULL_BANK_STRIDE; in rk1808_calc_pull_reg_and_bit()
1841 static int rk1808_calc_drv_reg_and_bit(struct rockchip_pin_bank *bank, in rk1808_calc_drv_reg_and_bit() argument
1846 struct rockchip_pinctrl *info = bank->drvdata; in rk1808_calc_drv_reg_and_bit()
1848 if (bank->bank_num == 0) { in rk1808_calc_drv_reg_and_bit()
1854 *reg += (bank->bank_num - 1) * RK1808_DRV_BANK_STRIDE; in rk1808_calc_drv_reg_and_bit()
1869 static int rk1808_calc_slew_rate_reg_and_bit(struct rockchip_pin_bank *bank, in rk1808_calc_slew_rate_reg_and_bit() argument
1874 struct rockchip_pinctrl *info = bank->drvdata; in rk1808_calc_slew_rate_reg_and_bit()
1876 if (bank->bank_num == 0) { in rk1808_calc_slew_rate_reg_and_bit()
1882 *reg += (bank->bank_num - 1) * RK1808_SR_BANK_STRIDE; in rk1808_calc_slew_rate_reg_and_bit()
1895 static int rk1808_calc_schmitt_reg_and_bit(struct rockchip_pin_bank *bank, in rk1808_calc_schmitt_reg_and_bit() argument
1900 struct rockchip_pinctrl *info = bank->drvdata; in rk1808_calc_schmitt_reg_and_bit()
1902 if (bank->bank_num == 0) { in rk1808_calc_schmitt_reg_and_bit()
1908 *reg += (bank->bank_num - 1) * RK1808_SCHMITT_BANK_STRIDE; in rk1808_calc_schmitt_reg_and_bit()
1920 static int rk2928_calc_pull_reg_and_bit(struct rockchip_pin_bank *bank, in rk2928_calc_pull_reg_and_bit() argument
1924 struct rockchip_pinctrl *info = bank->drvdata; in rk2928_calc_pull_reg_and_bit()
1928 *reg += bank->bank_num * RK2928_PULL_BANK_STRIDE; in rk2928_calc_pull_reg_and_bit()
1938 static int rk3128_calc_pull_reg_and_bit(struct rockchip_pin_bank *bank, in rk3128_calc_pull_reg_and_bit() argument
1942 struct rockchip_pinctrl *info = bank->drvdata; in rk3128_calc_pull_reg_and_bit()
1946 *reg += bank->bank_num * RK2928_PULL_BANK_STRIDE; in rk3128_calc_pull_reg_and_bit()
1960 static int rk3188_calc_pull_reg_and_bit(struct rockchip_pin_bank *bank, in rk3188_calc_pull_reg_and_bit() argument
1964 struct rockchip_pinctrl *info = bank->drvdata; in rk3188_calc_pull_reg_and_bit()
1967 if (bank->bank_num == 0 && pin_num < 12) { in rk3188_calc_pull_reg_and_bit()
1969 : bank->regmap_pull; in rk3188_calc_pull_reg_and_bit()
1981 *reg += bank->bank_num * RK3188_PULL_BANK_STRIDE; in rk3188_calc_pull_reg_and_bit()
1997 static int rk3288_calc_pull_reg_and_bit(struct rockchip_pin_bank *bank, in rk3288_calc_pull_reg_and_bit() argument
2001 struct rockchip_pinctrl *info = bank->drvdata; in rk3288_calc_pull_reg_and_bit()
2004 if (bank->bank_num == 0) { in rk3288_calc_pull_reg_and_bit()
2017 *reg += bank->bank_num * RK3188_PULL_BANK_STRIDE; in rk3288_calc_pull_reg_and_bit()
2033 static int rk3288_calc_drv_reg_and_bit(struct rockchip_pin_bank *bank, in rk3288_calc_drv_reg_and_bit() argument
2037 struct rockchip_pinctrl *info = bank->drvdata; in rk3288_calc_drv_reg_and_bit()
2040 if (bank->bank_num == 0) { in rk3288_calc_drv_reg_and_bit()
2053 *reg += bank->bank_num * RK3288_DRV_BANK_STRIDE; in rk3288_calc_drv_reg_and_bit()
2065 static int rk3228_calc_pull_reg_and_bit(struct rockchip_pin_bank *bank, in rk3228_calc_pull_reg_and_bit() argument
2069 struct rockchip_pinctrl *info = bank->drvdata; in rk3228_calc_pull_reg_and_bit()
2073 *reg += bank->bank_num * RK3188_PULL_BANK_STRIDE; in rk3228_calc_pull_reg_and_bit()
2084 static int rk3228_calc_drv_reg_and_bit(struct rockchip_pin_bank *bank, in rk3228_calc_drv_reg_and_bit() argument
2088 struct rockchip_pinctrl *info = bank->drvdata; in rk3228_calc_drv_reg_and_bit()
2092 *reg += bank->bank_num * RK3288_DRV_BANK_STRIDE; in rk3228_calc_drv_reg_and_bit()
2103 static int rk3308_calc_pull_reg_and_bit(struct rockchip_pin_bank *bank, in rk3308_calc_pull_reg_and_bit() argument
2107 struct rockchip_pinctrl *info = bank->drvdata; in rk3308_calc_pull_reg_and_bit()
2111 *reg += bank->bank_num * RK3188_PULL_BANK_STRIDE; in rk3308_calc_pull_reg_and_bit()
2122 static int rk3308_calc_drv_reg_and_bit(struct rockchip_pin_bank *bank, in rk3308_calc_drv_reg_and_bit() argument
2126 struct rockchip_pinctrl *info = bank->drvdata; in rk3308_calc_drv_reg_and_bit()
2130 *reg += bank->bank_num * RK3288_DRV_BANK_STRIDE; in rk3308_calc_drv_reg_and_bit()
2143 static int rk3308_calc_slew_rate_reg_and_bit(struct rockchip_pin_bank *bank, in rk3308_calc_slew_rate_reg_and_bit() argument
2148 struct rockchip_pinctrl *info = bank->drvdata; in rk3308_calc_slew_rate_reg_and_bit()
2153 *reg += (bank->bank_num) * RK3308_SLEW_RATE_BANK_STRIDE; in rk3308_calc_slew_rate_reg_and_bit()
2165 static int rk3368_calc_pull_reg_and_bit(struct rockchip_pin_bank *bank, in rk3368_calc_pull_reg_and_bit() argument
2169 struct rockchip_pinctrl *info = bank->drvdata; in rk3368_calc_pull_reg_and_bit()
2172 if (bank->bank_num == 0) { in rk3368_calc_pull_reg_and_bit()
2185 *reg += bank->bank_num * RK3188_PULL_BANK_STRIDE; in rk3368_calc_pull_reg_and_bit()
2198 static int rk3368_calc_drv_reg_and_bit(struct rockchip_pin_bank *bank, in rk3368_calc_drv_reg_and_bit() argument
2202 struct rockchip_pinctrl *info = bank->drvdata; in rk3368_calc_drv_reg_and_bit()
2205 if (bank->bank_num == 0) { in rk3368_calc_drv_reg_and_bit()
2218 *reg += bank->bank_num * RK3288_DRV_BANK_STRIDE; in rk3368_calc_drv_reg_and_bit()
2232 static int rk3399_calc_pull_reg_and_bit(struct rockchip_pin_bank *bank, in rk3399_calc_pull_reg_and_bit() argument
2236 struct rockchip_pinctrl *info = bank->drvdata; in rk3399_calc_pull_reg_and_bit()
2239 if ((bank->bank_num == 0) || (bank->bank_num == 1)) { in rk3399_calc_pull_reg_and_bit()
2243 *reg += bank->bank_num * RK3188_PULL_BANK_STRIDE; in rk3399_calc_pull_reg_and_bit()
2254 *reg += bank->bank_num * RK3188_PULL_BANK_STRIDE; in rk3399_calc_pull_reg_and_bit()
2264 static int rk3399_calc_drv_reg_and_bit(struct rockchip_pin_bank *bank, in rk3399_calc_drv_reg_and_bit() argument
2268 struct rockchip_pinctrl *info = bank->drvdata; in rk3399_calc_drv_reg_and_bit()
2272 if ((bank->bank_num == 0) || (bank->bank_num == 1)) in rk3399_calc_drv_reg_and_bit()
2277 *reg = bank->drv[drv_num].offset; in rk3399_calc_drv_reg_and_bit()
2278 if ((bank->drv[drv_num].drv_type == DRV_TYPE_IO_1V8_3V0_AUTO) || in rk3399_calc_drv_reg_and_bit()
2279 (bank->drv[drv_num].drv_type == DRV_TYPE_IO_3V3_ONLY)) in rk3399_calc_drv_reg_and_bit()
2295 static int rk3528_calc_drv_reg_and_bit(struct rockchip_pin_bank *bank, in rk3528_calc_drv_reg_and_bit() argument
2299 struct rockchip_pinctrl *info = bank->drvdata; in rk3528_calc_drv_reg_and_bit()
2302 switch (bank->bank_num) { in rk3528_calc_drv_reg_and_bit()
2324 dev_err(info->dev, "unsupported bank_num %d\n", bank->bank_num); in rk3528_calc_drv_reg_and_bit()
2343 static int rk3528_calc_pull_reg_and_bit(struct rockchip_pin_bank *bank, in rk3528_calc_pull_reg_and_bit() argument
2347 struct rockchip_pinctrl *info = bank->drvdata; in rk3528_calc_pull_reg_and_bit()
2350 switch (bank->bank_num) { in rk3528_calc_pull_reg_and_bit()
2372 dev_err(info->dev, "unsupported bank_num %d\n", bank->bank_num); in rk3528_calc_pull_reg_and_bit()
2391 static int rk3528_calc_schmitt_reg_and_bit(struct rockchip_pin_bank *bank, in rk3528_calc_schmitt_reg_and_bit() argument
2396 struct rockchip_pinctrl *info = bank->drvdata; in rk3528_calc_schmitt_reg_and_bit()
2399 switch (bank->bank_num) { in rk3528_calc_schmitt_reg_and_bit()
2421 dev_err(info->dev, "unsupported bank_num %d\n", bank->bank_num); in rk3528_calc_schmitt_reg_and_bit()
2439 static int rk3562_calc_drv_reg_and_bit(struct rockchip_pin_bank *bank, in rk3562_calc_drv_reg_and_bit() argument
2443 struct rockchip_pinctrl *info = bank->drvdata; in rk3562_calc_drv_reg_and_bit()
2446 switch (bank->bank_num) { in rk3562_calc_drv_reg_and_bit()
2468 dev_err(info->dev, "unsupported bank_num %d\n", bank->bank_num); in rk3562_calc_drv_reg_and_bit()
2487 static int rk3562_calc_pull_reg_and_bit(struct rockchip_pin_bank *bank, in rk3562_calc_pull_reg_and_bit() argument
2491 struct rockchip_pinctrl *info = bank->drvdata; in rk3562_calc_pull_reg_and_bit()
2494 switch (bank->bank_num) { in rk3562_calc_pull_reg_and_bit()
2516 dev_err(info->dev, "unsupported bank_num %d\n", bank->bank_num); in rk3562_calc_pull_reg_and_bit()
2535 static int rk3562_calc_schmitt_reg_and_bit(struct rockchip_pin_bank *bank, in rk3562_calc_schmitt_reg_and_bit() argument
2540 struct rockchip_pinctrl *info = bank->drvdata; in rk3562_calc_schmitt_reg_and_bit()
2543 switch (bank->bank_num) { in rk3562_calc_schmitt_reg_and_bit()
2565 dev_err(info->dev, "unsupported bank_num %d\n", bank->bank_num); in rk3562_calc_schmitt_reg_and_bit()
2582 static int rk3568_calc_slew_rate_reg_and_bit(struct rockchip_pin_bank *bank, in rk3568_calc_slew_rate_reg_and_bit() argument
2587 struct rockchip_pinctrl *info = bank->drvdata; in rk3568_calc_slew_rate_reg_and_bit()
2589 if (bank->bank_num == 0) { in rk3568_calc_slew_rate_reg_and_bit()
2595 *reg += (bank->bank_num - 1) * RK3568_SR_BANK_STRIDE; in rk3568_calc_slew_rate_reg_and_bit()
2610 static int rk3568_calc_pull_reg_and_bit(struct rockchip_pin_bank *bank, in rk3568_calc_pull_reg_and_bit() argument
2614 struct rockchip_pinctrl *info = bank->drvdata; in rk3568_calc_pull_reg_and_bit()
2616 if (bank->bank_num == 0) { in rk3568_calc_pull_reg_and_bit()
2619 *reg += bank->bank_num * RK3568_PULL_BANK_STRIDE; in rk3568_calc_pull_reg_and_bit()
2627 *reg += (bank->bank_num - 1) * RK3568_PULL_BANK_STRIDE; in rk3568_calc_pull_reg_and_bit()
2643 static int rk3568_calc_drv_reg_and_bit(struct rockchip_pin_bank *bank, in rk3568_calc_drv_reg_and_bit() argument
2647 struct rockchip_pinctrl *info = bank->drvdata; in rk3568_calc_drv_reg_and_bit()
2650 if (bank->bank_num == 0) { in rk3568_calc_drv_reg_and_bit()
2660 *reg += (bank->bank_num - 1) * RK3568_DRV_BANK_STRIDE; in rk3568_calc_drv_reg_and_bit()
2668 if ((bank->bank_num == 1 && (pin_num == 15 || pin_num == 23 || pin_num == 31)) || in rk3568_calc_drv_reg_and_bit()
2669 ((bank->bank_num == 2 || bank->bank_num == 3 || bank->bank_num == 4) && in rk3568_calc_drv_reg_and_bit()
2783 static int rk3588_calc_pull_reg_and_bit(struct rockchip_pin_bank *bank, in rk3588_calc_pull_reg_and_bit() argument
2787 struct rockchip_pinctrl *info = bank->drvdata; in rk3588_calc_pull_reg_and_bit()
2788 u8 bank_num = bank->bank_num; in rk3588_calc_pull_reg_and_bit()
2811 static int rk3588_calc_drv_reg_and_bit(struct rockchip_pin_bank *bank, in rk3588_calc_drv_reg_and_bit() argument
2815 struct rockchip_pinctrl *info = bank->drvdata; in rk3588_calc_drv_reg_and_bit()
2816 u8 bank_num = bank->bank_num; in rk3588_calc_drv_reg_and_bit()
2839 static int rk3588_calc_schmitt_reg_and_bit(struct rockchip_pin_bank *bank, in rk3588_calc_schmitt_reg_and_bit() argument
2844 struct rockchip_pinctrl *info = bank->drvdata; in rk3588_calc_schmitt_reg_and_bit()
2845 u8 bank_num = bank->bank_num; in rk3588_calc_schmitt_reg_and_bit()
2874 static int rockchip_get_drive_perpin(struct rockchip_pin_bank *bank, in rockchip_get_drive_perpin() argument
2877 struct rockchip_pinctrl *info = bank->drvdata; in rockchip_get_drive_perpin()
2884 int drv_type = bank->drv[pin_num / 8].drv_type; in rockchip_get_drive_perpin()
2886 ret = ctrl->drv_calc_reg(bank, pin_num, &regmap, &reg, &bit); in rockchip_get_drive_perpin()
2954 ctrl->slew_rate_calc_reg(bank, pin_num, &regmap, &reg, &bit); in rockchip_get_drive_perpin()
2968 static int rockchip_set_drive_perpin(struct rockchip_pin_bank *bank, in rockchip_set_drive_perpin() argument
2971 struct rockchip_pinctrl *info = bank->drvdata; in rockchip_set_drive_perpin()
2978 int drv_type = bank->drv[pin_num / 8].drv_type; in rockchip_set_drive_perpin()
2981 bank->bank_num, pin_num, strength); in rockchip_set_drive_perpin()
2983 ret = ctrl->drv_calc_reg(bank, pin_num, &regmap, &reg, &bit); in rockchip_set_drive_perpin()
3078 if (bank->bank_num == 1 && pin_num == 21) in rockchip_set_drive_perpin()
3080 else if (bank->bank_num == 2 && pin_num == 2) in rockchip_set_drive_perpin()
3082 else if (bank->bank_num == 2 && pin_num == 8) in rockchip_set_drive_perpin()
3084 else if (bank->bank_num == 3 && pin_num == 0) in rockchip_set_drive_perpin()
3086 else if (bank->bank_num == 3 && pin_num == 6) in rockchip_set_drive_perpin()
3088 else if (bank->bank_num == 4 && pin_num == 0) in rockchip_set_drive_perpin()
3103 ctrl->slew_rate_calc_reg(bank, pin_num, &regmap, &reg, &bit); in rockchip_set_drive_perpin()
3128 static int rockchip_get_pull(struct rockchip_pin_bank *bank, int pin_num) in rockchip_get_pull() argument
3130 struct rockchip_pinctrl *info = bank->drvdata; in rockchip_get_pull()
3142 ret = ctrl->pull_calc_reg(bank, pin_num, &regmap, &reg, &bit); in rockchip_get_pull()
3170 pull_type = bank->pull_type[pin_num / 8]; in rockchip_get_pull()
3181 static int rockchip_set_pull(struct rockchip_pin_bank *bank, in rockchip_set_pull() argument
3184 struct rockchip_pinctrl *info = bank->drvdata; in rockchip_set_pull()
3192 dev_dbg(dev, "setting pull of GPIO%d-%d to %d\n", bank->bank_num, pin_num, pull); in rockchip_set_pull()
3198 ret = ctrl->pull_calc_reg(bank, pin_num, &regmap, &reg, &bit); in rockchip_set_pull()
3224 pull_type = bank->pull_type[pin_num / 8]; in rockchip_set_pull()
3237 if (ctrl->type == RK3568 && bank->bank_num == 0 && pin_num >= 27 && pin_num <= 30) { in rockchip_set_pull()
3267 static int rk3328_calc_schmitt_reg_and_bit(struct rockchip_pin_bank *bank, in rk3328_calc_schmitt_reg_and_bit() argument
3272 struct rockchip_pinctrl *info = bank->drvdata; in rk3328_calc_schmitt_reg_and_bit()
3277 *reg += bank->bank_num * RK3328_SCHMITT_BANK_STRIDE; in rk3328_calc_schmitt_reg_and_bit()
3290 static int rk3568_calc_schmitt_reg_and_bit(struct rockchip_pin_bank *bank, in rk3568_calc_schmitt_reg_and_bit() argument
3295 struct rockchip_pinctrl *info = bank->drvdata; in rk3568_calc_schmitt_reg_and_bit()
3297 if (bank->bank_num == 0) { in rk3568_calc_schmitt_reg_and_bit()
3303 *reg += (bank->bank_num - 1) * RK3568_SCHMITT_BANK_STRIDE; in rk3568_calc_schmitt_reg_and_bit()
3313 static int rockchip_get_schmitt(struct rockchip_pin_bank *bank, int pin_num) in rockchip_get_schmitt() argument
3315 struct rockchip_pinctrl *info = bank->drvdata; in rockchip_get_schmitt()
3322 ret = ctrl->schmitt_calc_reg(bank, pin_num, &regmap, &reg, &bit); in rockchip_get_schmitt()
3342 static int rockchip_set_schmitt(struct rockchip_pin_bank *bank, in rockchip_set_schmitt() argument
3345 struct rockchip_pinctrl *info = bank->drvdata; in rockchip_set_schmitt()
3354 bank->bank_num, pin_num, enable); in rockchip_set_schmitt()
3356 ret = ctrl->schmitt_calc_reg(bank, pin_num, &regmap, &reg, &bit); in rockchip_set_schmitt()
3383 static int px30_calc_slew_rate_reg_and_bit(struct rockchip_pin_bank *bank, in px30_calc_slew_rate_reg_and_bit() argument
3388 struct rockchip_pinctrl *info = bank->drvdata; in px30_calc_slew_rate_reg_and_bit()
3391 if (bank->bank_num == 0) { in px30_calc_slew_rate_reg_and_bit()
3399 *reg += (bank->bank_num - 1) * PX30_SLEW_RATE_BANK_STRIDE; in px30_calc_slew_rate_reg_and_bit()
3407 static int rockchip_get_slew_rate(struct rockchip_pin_bank *bank, int pin_num) in rockchip_get_slew_rate() argument
3409 struct rockchip_pinctrl *info = bank->drvdata; in rockchip_get_slew_rate()
3415 int drv_type = bank->drv[pin_num / 8].drv_type; in rockchip_get_slew_rate()
3420 ret = ctrl->slew_rate_calc_reg(bank, pin_num, &regmap, &reg, &bit); in rockchip_get_slew_rate()
3432 static int rockchip_set_slew_rate(struct rockchip_pin_bank *bank, in rockchip_set_slew_rate() argument
3435 struct rockchip_pinctrl *info = bank->drvdata; in rockchip_set_slew_rate()
3441 int drv_type = bank->drv[pin_num / 8].drv_type; in rockchip_set_slew_rate()
3447 bank->bank_num, pin_num, speed); in rockchip_set_slew_rate()
3449 ret = ctrl->slew_rate_calc_reg(bank, pin_num, &regmap, &reg, &bit); in rockchip_set_slew_rate()
3498 struct rockchip_pin_bank *bank; in rockchip_pmx_set() local
3509 bank = pin_to_bank(info, pins[cnt]); in rockchip_pmx_set()
3510 ret = rockchip_set_mux(bank, pins[cnt] - bank->pin_base, in rockchip_pmx_set()
3519 rockchip_set_mux(bank, pins[cnt] - bank->pin_base, 0); in rockchip_pmx_set()
3568 static int rockchip_pinconf_defer_pin(struct rockchip_pin_bank *bank, in rockchip_pinconf_defer_pin() argument
3581 list_add_tail(&cfg->head, &bank->deferred_pins); in rockchip_pinconf_defer_pin()
3591 struct rockchip_pin_bank *bank = pin_to_bank(info, pin); in rockchip_pinconf_set() local
3592 struct gpio_chip *gpio = &bank->gpio_chip; in rockchip_pinconf_set()
3608 mutex_lock(&bank->deferred_lock); in rockchip_pinconf_set()
3610 rc = rockchip_pinconf_defer_pin(bank, pin - bank->pin_base, param, in rockchip_pinconf_set()
3612 mutex_unlock(&bank->deferred_lock); in rockchip_pinconf_set()
3618 mutex_unlock(&bank->deferred_lock); in rockchip_pinconf_set()
3623 rc = rockchip_set_pull(bank, pin - bank->pin_base, in rockchip_pinconf_set()
3638 rc = rockchip_set_pull(bank, pin - bank->pin_base, in rockchip_pinconf_set()
3644 rc = rockchip_set_mux(bank, pin - bank->pin_base, in rockchip_pinconf_set()
3649 rc = gpio->direction_output(gpio, pin - bank->pin_base, in rockchip_pinconf_set()
3655 rc = rockchip_set_mux(bank, pin - bank->pin_base, in rockchip_pinconf_set()
3660 rc = gpio->direction_input(gpio, pin - bank->pin_base); in rockchip_pinconf_set()
3669 rc = rockchip_set_drive_perpin(bank, in rockchip_pinconf_set()
3670 pin - bank->pin_base, arg); in rockchip_pinconf_set()
3678 rc = rockchip_set_schmitt(bank, in rockchip_pinconf_set()
3679 pin - bank->pin_base, arg); in rockchip_pinconf_set()
3687 rc = rockchip_set_slew_rate(bank, in rockchip_pinconf_set()
3688 pin - bank->pin_base, arg); in rockchip_pinconf_set()
3705 struct rockchip_pin_bank *bank = pin_to_bank(info, pin); in rockchip_pinconf_get() local
3706 struct gpio_chip *gpio = &bank->gpio_chip; in rockchip_pinconf_get()
3713 if (rockchip_get_pull(bank, pin - bank->pin_base) != param) in rockchip_pinconf_get()
3725 if (rockchip_get_pull(bank, pin - bank->pin_base) != param) in rockchip_pinconf_get()
3731 rc = rockchip_get_mux(bank, pin - bank->pin_base); in rockchip_pinconf_get()
3740 rc = gpio->get(gpio, pin - bank->pin_base); in rockchip_pinconf_get()
3751 rc = rockchip_get_drive_perpin(bank, pin - bank->pin_base); in rockchip_pinconf_get()
3761 rc = rockchip_get_schmitt(bank, pin - bank->pin_base); in rockchip_pinconf_get()
3771 rc = rockchip_get_slew_rate(bank, pin - bank->pin_base); in rockchip_pinconf_get()
3818 struct rockchip_pin_bank *bank; in rockchip_pinctrl_parse_groups() local
3852 bank = bank_num_to_bank(info, num); in rockchip_pinctrl_parse_groups()
3853 if (IS_ERR(bank)) in rockchip_pinctrl_parse_groups()
3854 return PTR_ERR(bank); in rockchip_pinctrl_parse_groups()
3856 grp->pins[j] = bank->pin_base + be32_to_cpu(*list++); in rockchip_pinctrl_parse_groups()
3958 int pin, bank, ret; in rockchip_pinctrl_register() local
3975 for (bank = 0, k = 0; bank < info->ctrl->nr_banks; bank++) { in rockchip_pinctrl_register()
3976 pin_bank = &info->ctrl->pin_banks[bank]; in rockchip_pinctrl_register()
4012 struct rockchip_pin_bank *bank; in rockchip_pinctrl_get_soc_data() local
4026 bank = ctrl->pin_banks; in rockchip_pinctrl_get_soc_data()
4027 for (i = 0; i < ctrl->nr_banks; ++i, ++bank) { in rockchip_pinctrl_get_soc_data()
4030 raw_spin_lock_init(&bank->slock); in rockchip_pinctrl_get_soc_data()
4031 bank->drvdata = d; in rockchip_pinctrl_get_soc_data()
4032 bank->pin_base = ctrl->nr_pins; in rockchip_pinctrl_get_soc_data()
4033 ctrl->nr_pins += bank->nr_pins; in rockchip_pinctrl_get_soc_data()
4037 struct rockchip_iomux *iom = &bank->iomux[j]; in rockchip_pinctrl_get_soc_data()
4038 struct rockchip_drv *drv = &bank->drv[j]; in rockchip_pinctrl_get_soc_data()
4041 if (bank_pins >= bank->nr_pins) in rockchip_pinctrl_get_soc_data()
4104 if (ctrl->iomux_recalced[j].num == bank->bank_num) { in rockchip_pinctrl_get_soc_data()
4106 bank->recalced_mask |= BIT(pin); in rockchip_pinctrl_get_soc_data()
4114 if (ctrl->iomux_routes[j].bank_num == bank->bank_num) { in rockchip_pinctrl_get_soc_data()
4116 bank->route_mask |= BIT(pin); in rockchip_pinctrl_get_soc_data()
4302 struct rockchip_pin_bank *bank; in rockchip_pinctrl_remove() local
4310 bank = &info->ctrl->pin_banks[i]; in rockchip_pinctrl_remove()
4312 mutex_lock(&bank->deferred_lock); in rockchip_pinctrl_remove()
4313 while (!list_empty(&bank->deferred_pins)) { in rockchip_pinctrl_remove()
4314 cfg = list_first_entry(&bank->deferred_pins, in rockchip_pinctrl_remove()
4319 mutex_unlock(&bank->deferred_lock); in rockchip_pinctrl_remove()
5114 int rk_iomux_set(int bank, int pin, int mux) in rk_iomux_set() argument
5127 if (bank >= info->ctrl->nr_banks) in rk_iomux_set()
5133 gpio = &info->ctrl->pin_banks[bank]; in rk_iomux_set()
5148 dev_err(info->dev, "mux GPIO%d-%d %d fail\n", bank, pin, mux); in rk_iomux_set()
5171 int rk_iomux_get(int bank, int pin, int *mux) in rk_iomux_get() argument
5184 if (bank >= info->ctrl->nr_banks) in rk_iomux_get()
5190 gpio = &info->ctrl->pin_banks[bank]; in rk_iomux_get()