Lines Matching full:p

48 	struct rt2880_priv *p = pinctrl_dev_get_drvdata(pctrldev);  in rt2880_get_group_count()  local
50 return p->group_count; in rt2880_get_group_count()
56 struct rt2880_priv *p = pinctrl_dev_get_drvdata(pctrldev); in rt2880_get_group_name() local
58 return (group >= p->group_count) ? NULL : p->group_names[group]; in rt2880_get_group_name()
66 struct rt2880_priv *p = pinctrl_dev_get_drvdata(pctrldev); in rt2880_get_group_pins() local
68 if (group >= p->group_count) in rt2880_get_group_pins()
71 *pins = p->groups[group].func[0].pins; in rt2880_get_group_pins()
72 *num_pins = p->groups[group].func[0].pin_count; in rt2880_get_group_pins()
87 struct rt2880_priv *p = pinctrl_dev_get_drvdata(pctrldev); in rt2880_pmx_func_count() local
89 return p->func_count; in rt2880_pmx_func_count()
95 struct rt2880_priv *p = pinctrl_dev_get_drvdata(pctrldev); in rt2880_pmx_func_name() local
97 return p->func[func]->name; in rt2880_pmx_func_name()
105 struct rt2880_priv *p = pinctrl_dev_get_drvdata(pctrldev); in rt2880_pmx_group_get_groups() local
107 if (p->func[func]->group_count == 1) in rt2880_pmx_group_get_groups()
108 *groups = &p->group_names[p->func[func]->groups[0]]; in rt2880_pmx_group_get_groups()
110 *groups = p->group_names; in rt2880_pmx_group_get_groups()
112 *num_groups = p->func[func]->group_count; in rt2880_pmx_group_get_groups()
120 struct rt2880_priv *p = pinctrl_dev_get_drvdata(pctrldev); in rt2880_pmx_group_enable() local
127 if (p->groups[group].enabled) { in rt2880_pmx_group_enable()
128 dev_err(p->dev, "%s is already enabled\n", in rt2880_pmx_group_enable()
129 p->groups[group].name); in rt2880_pmx_group_enable()
133 p->groups[group].enabled = 1; in rt2880_pmx_group_enable()
134 p->func[func]->enabled = 1; in rt2880_pmx_group_enable()
136 shift = p->groups[group].shift; in rt2880_pmx_group_enable()
142 mode &= ~(p->groups[group].mask << shift); in rt2880_pmx_group_enable()
145 for (i = 0; i < p->groups[group].func[0].pin_count; i++) in rt2880_pmx_group_enable()
146 p->gpio[p->groups[group].func[0].pins[i]] = 1; in rt2880_pmx_group_enable()
150 mode |= p->groups[group].gpio << shift; in rt2880_pmx_group_enable()
152 for (i = 0; i < p->func[func]->pin_count; i++) in rt2880_pmx_group_enable()
153 p->gpio[p->func[func]->pins[i]] = 0; in rt2880_pmx_group_enable()
154 mode |= p->func[func]->value << shift; in rt2880_pmx_group_enable()
165 struct rt2880_priv *p = pinctrl_dev_get_drvdata(pctrldev); in rt2880_pmx_group_gpio_request_enable() local
167 if (!p->gpio[pin]) { in rt2880_pmx_group_gpio_request_enable()
168 dev_err(p->dev, "pin %d is not set to gpio mux\n", pin); in rt2880_pmx_group_gpio_request_enable()
194 static int rt2880_pinmux_index(struct rt2880_priv *p) in rt2880_pinmux_index() argument
196 struct rt2880_pmx_group *mux = p->groups; in rt2880_pinmux_index()
201 p->group_count++; in rt2880_pinmux_index()
206 p->group_names = devm_kcalloc(p->dev, p->group_count, in rt2880_pinmux_index()
208 if (!p->group_names) in rt2880_pinmux_index()
211 for (i = 0; i < p->group_count; i++) { in rt2880_pinmux_index()
212 p->group_names[i] = p->groups[i].name; in rt2880_pinmux_index()
213 p->func_count += p->groups[i].func_count; in rt2880_pinmux_index()
217 p->func_count++; in rt2880_pinmux_index()
220 p->func = devm_kcalloc(p->dev, p->func_count, in rt2880_pinmux_index()
221 sizeof(*p->func), GFP_KERNEL); in rt2880_pinmux_index()
222 gpio_func.groups = devm_kcalloc(p->dev, p->group_count, sizeof(int), in rt2880_pinmux_index()
224 if (!p->func || !gpio_func.groups) in rt2880_pinmux_index()
228 gpio_func.group_count = p->group_count; in rt2880_pinmux_index()
232 p->func[c] = &gpio_func; in rt2880_pinmux_index()
236 for (i = 0; i < p->group_count; i++) { in rt2880_pinmux_index()
237 for (j = 0; j < p->groups[i].func_count; j++) { in rt2880_pinmux_index()
238 p->func[c] = &p->groups[i].func[j]; in rt2880_pinmux_index()
239 p->func[c]->groups = devm_kzalloc(p->dev, sizeof(int), in rt2880_pinmux_index()
241 if (!p->func[c]->groups) in rt2880_pinmux_index()
243 p->func[c]->groups[0] = i; in rt2880_pinmux_index()
244 p->func[c]->group_count = 1; in rt2880_pinmux_index()
251 static int rt2880_pinmux_pins(struct rt2880_priv *p) in rt2880_pinmux_pins() argument
259 for (i = 0; i < p->func_count; i++) { in rt2880_pinmux_pins()
262 if (!p->func[i]->pin_count) in rt2880_pinmux_pins()
265 p->func[i]->pins = devm_kcalloc(p->dev, in rt2880_pinmux_pins()
266 p->func[i]->pin_count, in rt2880_pinmux_pins()
269 for (j = 0; j < p->func[i]->pin_count; j++) in rt2880_pinmux_pins()
270 p->func[i]->pins[j] = p->func[i]->pin_first + j; in rt2880_pinmux_pins()
272 pin = p->func[i]->pin_first + p->func[i]->pin_count; in rt2880_pinmux_pins()
273 if (pin > p->max_pins) in rt2880_pinmux_pins()
274 p->max_pins = pin; in rt2880_pinmux_pins()
278 p->gpio = devm_kcalloc(p->dev, p->max_pins, sizeof(u8), GFP_KERNEL); in rt2880_pinmux_pins()
280 p->pads = devm_kcalloc(p->dev, p->max_pins, in rt2880_pinmux_pins()
282 if (!p->pads || !p->gpio) in rt2880_pinmux_pins()
285 memset(p->gpio, 1, sizeof(u8) * p->max_pins); in rt2880_pinmux_pins()
286 for (i = 0; i < p->func_count; i++) { in rt2880_pinmux_pins()
287 if (!p->func[i]->pin_count) in rt2880_pinmux_pins()
290 for (j = 0; j < p->func[i]->pin_count; j++) in rt2880_pinmux_pins()
291 p->gpio[p->func[i]->pins[j]] = 0; in rt2880_pinmux_pins()
295 p->gpio[0] = 1; in rt2880_pinmux_pins()
298 for (i = 0; i < p->max_pins; i++) { in rt2880_pinmux_pins()
300 char *name = devm_kzalloc(p->dev, 5, GFP_KERNEL); in rt2880_pinmux_pins()
305 p->pads[i].number = i; in rt2880_pinmux_pins()
306 p->pads[i].name = name; in rt2880_pinmux_pins()
308 p->desc->pins = p->pads; in rt2880_pinmux_pins()
309 p->desc->npins = p->max_pins; in rt2880_pinmux_pins()
317 struct rt2880_priv *p; in rt2880_pinmux_init() local
325 p = devm_kzalloc(&pdev->dev, sizeof(struct rt2880_priv), GFP_KERNEL); in rt2880_pinmux_init()
326 if (!p) in rt2880_pinmux_init()
329 p->dev = &pdev->dev; in rt2880_pinmux_init()
330 p->desc = &rt2880_pctrl_desc; in rt2880_pinmux_init()
331 p->groups = data; in rt2880_pinmux_init()
332 platform_set_drvdata(pdev, p); in rt2880_pinmux_init()
335 err = rt2880_pinmux_index(p); in rt2880_pinmux_init()
341 err = rt2880_pinmux_pins(p); in rt2880_pinmux_init()
346 dev = pinctrl_register(p->desc, &pdev->dev, p); in rt2880_pinmux_init()