>> I think I understand what you are trying to say so far. I did not have >> too much >> experience related to gpio. I will set pull_up register in .set_config >> However, I did not understand where its parameters come from. >> set_config(struct gpio_chip *chip, unsigned int offset, >> unsigned long config) >> It might be trivial question, but Where does config come from? > >Others have to answer that one as I don't have that much experience >either. > >> At the end, I should rewrite the code using regmap_gpio, right? So if I >> rewrite >> code using regmap_gpio, how can I replace set_config(...)? > >You'd have to add a .set_config to gpio_regmap_config and then in > >gpio_regmap_register(): > gpio->set_config = config->set_config; > >I don't think it makes sense to have a default implementation in >gpio-regmap, >the variances between "simple" gpio controllers might be too broad. > >-michael Hi, One last question, as ds4520 IC has 9 I/O pins so I need to set registers like below struct gpio_regmap *gpio; config.reg_dir_out_base = IO_CONTROL0; (get_direction and setting direction) config.reg_dat_base = IO_STATUS0; (for .get) config.reg_set_base = IO_STATUS0; (for .set) As I have both directions, I must set both reg_dat_base and reg_set_base. https://elixir.bootlin.com/linux/latest/source/include/linux/gpio/regmap.h#L52 In this case, I am able to use only pull_up register to set output value to high as default. Is that okay? I am asking again and again to minimize number of patch. I want to be sure before sending new patch. Thank you for your contribution. Regards, Okan Sahin