Lines Matching +full:driver +full:- +full:strength +full:- +full:ohm

2  * Copyright (C) 2013-2017 Broadcom
22 #include <linux/pinctrl/pinconf-generic.h>
26 #include "../pinctrl-utils.h"
63 * bcm281xx_pin_type - types of pin register
77 * bcm281xx_pin_function- define pin function
86 * bcm281xx_pinctrl_data - Broadcom-specific pinctrl data
87 * @reg_base - base of pinctrl registers
928 /* Every pin can implement all ALT1-ALT4 functions */
955 if (pin >= pdata->npins) in pin_type_get()
958 return *(enum bcm281xx_pin_type *)(pdata->pins[pin].drv_data); in pin_type_get()
991 return pdata->npins; in bcm281xx_pinctrl_get_groups_count()
999 return pdata->pins[group].name; in bcm281xx_pinctrl_get_group_name()
1009 *pins = &pdata->pins[group].number; in bcm281xx_pinctrl_get_group_pins()
1019 seq_printf(s, " %s", dev_name(pctldev->dev)); in bcm281xx_pinctrl_pin_dbg_show()
1035 return pdata->nfunctions; in bcm281xx_pinctrl_get_fcns_count()
1043 return pdata->functions[function].name; in bcm281xx_pinctrl_get_fcn_name()
1053 *groups = pdata->functions[function].groups; in bcm281xx_pinctrl_get_fcn_groups()
1054 *num_groups = pdata->functions[function].ngroups; in bcm281xx_pinctrl_get_fcn_groups()
1064 const struct bcm281xx_pin_function *f = &pdata->functions[function]; in bcm281xx_pinmux_set()
1065 u32 offset = 4 * pdata->pins[group].number; in bcm281xx_pinmux_set()
1068 dev_dbg(pctldev->dev, in bcm281xx_pinmux_set()
1070 __func__, f->name, function, pdata->pins[group].name, in bcm281xx_pinmux_set()
1071 pdata->pins[group].number, offset); in bcm281xx_pinmux_set()
1073 rc = regmap_update_bits(pdata->regmap, offset, in bcm281xx_pinmux_set()
1077 dev_err(pctldev->dev, in bcm281xx_pinmux_set()
1079 pdata->pins[group].name, pdata->pins[group].number); in bcm281xx_pinmux_set()
1095 return -ENOTSUPP; in bcm281xx_pinctrl_pin_config_get()
1124 * The pin bias can only be one of pull-up, pull-down, or in bcm281xx_std_pin_update()
1126 * property, and the default value from pinconf-generic is in bcm281xx_std_pin_update()
1172 /* Valid range is 2-16 mA, even numbers only */ in bcm281xx_std_pin_update()
1174 dev_err(pctldev->dev, in bcm281xx_std_pin_update()
1175 "Invalid Drive Strength value (%d) for " in bcm281xx_std_pin_update()
1178 arg, pdata->pins[pin].name, pin); in bcm281xx_std_pin_update()
1179 return -EINVAL; in bcm281xx_std_pin_update()
1181 bcm281xx_pin_update(val, mask, (arg/2)-1, in bcm281xx_std_pin_update()
1187 dev_err(pctldev->dev, in bcm281xx_std_pin_update()
1189 param, pdata->pins[pin].name, pin); in bcm281xx_std_pin_update()
1190 return -EINVAL; in bcm281xx_std_pin_update()
1199 * The pull-up strength for an I2C pin is represented by bits 4-6 in the
1201 * 0b000: No pull-up
1202 * 0b001: 1200 Ohm
1203 * 0b010: 1800 Ohm
1204 * 0b011: 720 Ohm
1205 * 0b100: 2700 Ohm
1206 * 0b101: 831 Ohm
1207 * 0b110: 1080 Ohm
1208 * 0b111: 568 Ohm
1209 * This array maps pull-up strength in Ohms to register values (1+index).
1239 dev_err(pctldev->dev, in bcm281xx_i2c_pin_update()
1240 "Invalid pull-up value (%d) for pin %s " in bcm281xx_i2c_pin_update()
1243 arg, pdata->pins[pin].name, pin); in bcm281xx_i2c_pin_update()
1244 return -EINVAL; in bcm281xx_i2c_pin_update()
1274 dev_err(pctldev->dev, in bcm281xx_i2c_pin_update()
1276 param, pdata->pins[pin].name, pin); in bcm281xx_i2c_pin_update()
1277 return -EINVAL; in bcm281xx_i2c_pin_update()
1319 dev_err(pctldev->dev, in bcm281xx_hdmi_pin_update()
1321 param, pdata->pins[pin].name, pin); in bcm281xx_hdmi_pin_update()
1322 return -EINVAL; in bcm281xx_hdmi_pin_update()
1363 dev_err(pctldev->dev, "Unknown pin type for pin %s (%d).\n", in bcm281xx_pinctrl_pin_config_set()
1364 pdata->pins[pin].name, pin); in bcm281xx_pinctrl_pin_config_set()
1365 return -EINVAL; in bcm281xx_pinctrl_pin_config_set()
1372 dev_dbg(pctldev->dev, in bcm281xx_pinctrl_pin_config_set()
1374 __func__, pdata->pins[pin].name, pin, cfg_val, cfg_mask); in bcm281xx_pinctrl_pin_config_set()
1376 rc = regmap_update_bits(pdata->regmap, offset, cfg_mask, cfg_val); in bcm281xx_pinctrl_pin_config_set()
1378 dev_err(pctldev->dev, in bcm281xx_pinctrl_pin_config_set()
1380 pdata->pins[pin].name, pin); in bcm281xx_pinctrl_pin_config_set()
1406 pdata->reg_base = devm_platform_ioremap_resource(pdev, 0); in bcm281xx_pinctrl_probe()
1407 if (IS_ERR(pdata->reg_base)) { in bcm281xx_pinctrl_probe()
1408 dev_err(&pdev->dev, "Failed to ioremap MEM resource\n"); in bcm281xx_pinctrl_probe()
1409 return PTR_ERR(pdata->reg_base); in bcm281xx_pinctrl_probe()
1413 pdata->regmap = devm_regmap_init_mmio(&pdev->dev, pdata->reg_base, in bcm281xx_pinctrl_probe()
1415 if (IS_ERR(pdata->regmap)) { in bcm281xx_pinctrl_probe()
1416 dev_err(&pdev->dev, "Regmap MMIO init failed.\n"); in bcm281xx_pinctrl_probe()
1417 return -ENODEV; in bcm281xx_pinctrl_probe()
1420 bcm281xx_pinctrl_desc.name = dev_name(&pdev->dev); in bcm281xx_pinctrl_probe()
1424 pctl = devm_pinctrl_register(&pdev->dev, &bcm281xx_pinctrl_desc, pdata); in bcm281xx_pinctrl_probe()
1426 dev_err(&pdev->dev, "Failed to register pinctrl\n"); in bcm281xx_pinctrl_probe()
1436 { .compatible = "brcm,bcm11351-pinctrl", },
1441 .driver = {
1442 .name = "bcm281xx-pinctrl",