Lines Matching refs:pfc
30 struct sh_pfc *pfc;
41 return chip->pfc;
48 int idx = sh_pfc_get_pin_index(chip->pfc, offset);
75 struct sh_pfc *pfc = chip->pfc;
77 const struct sh_pfc_pin *pin = &pfc->info->pins[idx];
82 for (i = 0, dreg = pfc->info->data_regs; dreg->reg_width; ++i, ++dreg) {
97 struct sh_pfc *pfc = chip->pfc;
104 for (i = 0; pfc->info->data_regs[i].reg_width; ++i)
107 chip->regs = devm_kcalloc(pfc->dev, i, sizeof(*chip->regs),
112 for (i = 0, dreg = pfc->info->data_regs; dreg->reg_width; ++i, ++dreg) {
117 for (i = 0; i < pfc->info->nr_pins; i++) {
118 if (pfc->info->pins[i].enum_id == 0)
133 struct sh_pfc *pfc = gpio_to_pfc(gc);
134 int idx = sh_pfc_get_pin_index(pfc, offset);
136 if (idx < 0 || pfc->info->pins[idx].enum_id == 0)
200 struct sh_pfc *pfc = gpio_to_pfc(gc);
203 for (i = 0; i < pfc->info->gpio_irq_size; i++) {
204 const short *gpios = pfc->info->gpio_irq[i].gpios;
208 return pfc->irqs[i];
217 struct sh_pfc *pfc = chip->pfc;
221 chip->pins = devm_kcalloc(pfc->dev,
222 pfc->info->nr_pins, sizeof(*chip->pins),
239 gc->label = pfc->info->name;
240 gc->parent = pfc->dev;
243 gc->ngpio = pfc->nr_gpio_pins;
255 struct sh_pfc *pfc = gpio_to_pfc(gc);
256 unsigned int mark = pfc->info->func_gpios[offset].enum_id;
260 dev_notice_once(pfc->dev,
266 spin_lock_irqsave(&pfc->lock, flags);
267 ret = sh_pfc_config_mux(pfc, mark, PINMUX_TYPE_FUNCTION);
268 spin_unlock_irqrestore(&pfc->lock, flags);
275 struct sh_pfc *pfc = chip->pfc;
280 gc->label = pfc->info->name;
282 gc->base = pfc->nr_gpio_pins;
283 gc->ngpio = pfc->info->nr_func_gpios;
294 sh_pfc_add_gpiochip(struct sh_pfc *pfc, int(*setup)(struct sh_pfc_chip *),
300 chip = devm_kzalloc(pfc->dev, sizeof(*chip), GFP_KERNEL);
305 chip->pfc = pfc;
311 ret = devm_gpiochip_add_data(pfc->dev, &chip->gpio_chip, chip);
315 dev_info(pfc->dev, "%s handling gpio %u -> %u\n",
322 int sh_pfc_register_gpiochip(struct sh_pfc *pfc)
328 if (pfc->info->data_regs == NULL)
336 address = pfc->info->data_regs[0].reg;
337 for (i = 0; i < pfc->num_windows; ++i) {
338 struct sh_pfc_window *window = &pfc->windows[i];
345 if (i == pfc->num_windows)
349 if (pfc->num_irqs != pfc->info->gpio_irq_size) {
350 dev_err(pfc->dev, "invalid number of IRQ resources\n");
355 chip = sh_pfc_add_gpiochip(pfc, gpio_pin_setup, &pfc->windows[i]);
359 pfc->gpio = chip;
361 if (IS_ENABLED(CONFIG_OF) && pfc->dev->of_node)
371 for (i = 0; i < pfc->nr_ranges; ++i) {
372 const struct sh_pfc_pin_range *range = &pfc->ranges[i];
375 if (range->start >= pfc->nr_gpio_pins)
379 dev_name(pfc->dev), range->start, range->start,
386 if (pfc->info->nr_func_gpios) {
387 chip = sh_pfc_add_gpiochip(pfc, gpio_function_setup, NULL);