Lines Matching refs:chip
51 static void gpio_get_data_reg(struct sh_pfc_chip *chip, unsigned int offset, in gpio_get_data_reg() argument
55 int idx = sh_pfc_get_pin_index(chip->pfc, offset); in gpio_get_data_reg()
56 struct sh_pfc_gpio_pin *gpio_pin = &chip->pins[idx]; in gpio_get_data_reg()
58 *reg = &chip->regs[gpio_pin->dreg]; in gpio_get_data_reg()
62 static u32 gpio_read_data_reg(struct sh_pfc_chip *chip, in gpio_read_data_reg() argument
66 void __iomem *mem = address - chip->mem->phys + chip->mem->virt; in gpio_read_data_reg()
71 static void gpio_write_data_reg(struct sh_pfc_chip *chip, in gpio_write_data_reg() argument
75 void __iomem *mem = address - chip->mem->phys + chip->mem->virt; in gpio_write_data_reg()
80 static void gpio_setup_data_reg(struct sh_pfc_chip *chip, unsigned idx) in gpio_setup_data_reg() argument
82 struct sh_pfc *pfc = chip->pfc; in gpio_setup_data_reg()
83 struct sh_pfc_gpio_pin *gpio_pin = &chip->pins[idx]; in gpio_setup_data_reg()
102 static int gpio_setup_data_regs(struct sh_pfc_chip *chip) in gpio_setup_data_regs() argument
104 struct sh_pfc *pfc = chip->pfc; in gpio_setup_data_regs()
114 chip->regs = devm_kzalloc(pfc->dev, i * sizeof(*chip->regs), in gpio_setup_data_regs()
116 if (chip->regs == NULL) in gpio_setup_data_regs()
120 chip->regs[i].info = dreg; in gpio_setup_data_regs()
121 chip->regs[i].shadow = gpio_read_data_reg(chip, dreg); in gpio_setup_data_regs()
128 gpio_setup_data_reg(chip, i); in gpio_setup_data_regs()
154 static void gpio_pin_set_value(struct sh_pfc_chip *chip, unsigned offset, in gpio_pin_set_value() argument
161 gpio_get_data_reg(chip, offset, ®, &bit); in gpio_pin_set_value()
170 gpio_write_data_reg(chip, reg->info, reg->shadow); in gpio_pin_set_value()
188 struct sh_pfc_chip *chip = gpio_to_pfc_chip(gc); in gpio_pin_get() local
193 gpio_get_data_reg(chip, offset, ®, &bit); in gpio_pin_get()
197 return (gpio_read_data_reg(chip, reg->info) >> pos) & 1; in gpio_pin_get()
228 static int gpio_pin_setup(struct sh_pfc_chip *chip) in gpio_pin_setup() argument
230 struct sh_pfc *pfc = chip->pfc; in gpio_pin_setup()
231 struct gpio_chip *gc = &chip->gpio_chip; in gpio_pin_setup()
234 chip->pins = devm_kzalloc(pfc->dev, pfc->info->nr_pins * in gpio_pin_setup()
235 sizeof(*chip->pins), GFP_KERNEL); in gpio_pin_setup()
236 if (chip->pins == NULL) in gpio_pin_setup()
239 ret = gpio_setup_data_regs(chip); in gpio_pin_setup()
293 static int gpio_function_setup(struct sh_pfc_chip *chip) in gpio_function_setup() argument
295 struct sh_pfc *pfc = chip->pfc; in gpio_function_setup()
296 struct gpio_chip *gc = &chip->gpio_chip; in gpio_function_setup()
317 struct sh_pfc_chip *chip; in sh_pfc_add_gpiochip() local
320 chip = devm_kzalloc(pfc->dev, sizeof(*chip), GFP_KERNEL); in sh_pfc_add_gpiochip()
321 if (unlikely(!chip)) in sh_pfc_add_gpiochip()
324 chip->mem = mem; in sh_pfc_add_gpiochip()
325 chip->pfc = pfc; in sh_pfc_add_gpiochip()
327 ret = setup(chip); in sh_pfc_add_gpiochip()
331 ret = gpiochip_add(&chip->gpio_chip); in sh_pfc_add_gpiochip()
336 chip->gpio_chip.label, chip->gpio_chip.base, in sh_pfc_add_gpiochip()
337 chip->gpio_chip.base + chip->gpio_chip.ngpio - 1); in sh_pfc_add_gpiochip()
339 return chip; in sh_pfc_add_gpiochip()
344 struct sh_pfc_chip *chip; in sh_pfc_register_gpiochip() local
376 chip = sh_pfc_add_gpiochip(pfc, gpio_pin_setup, &pfc->windows[i]); in sh_pfc_register_gpiochip()
377 if (IS_ERR(chip)) in sh_pfc_register_gpiochip()
378 return PTR_ERR(chip); in sh_pfc_register_gpiochip()
380 pfc->gpio = chip; in sh_pfc_register_gpiochip()
392 ret = gpiochip_add_pin_range(&chip->gpio_chip, in sh_pfc_register_gpiochip()
404 chip = sh_pfc_add_gpiochip(pfc, gpio_function_setup, NULL); in sh_pfc_register_gpiochip()
405 if (IS_ERR(chip)) in sh_pfc_register_gpiochip()
406 return PTR_ERR(chip); in sh_pfc_register_gpiochip()
408 pfc->func = chip; in sh_pfc_register_gpiochip()