Lines Matching refs:chip
72 static void free_pwms(struct pwm_chip *chip) in free_pwms() argument
76 for (i = 0; i < chip->npwm; i++) { in free_pwms()
77 struct pwm_device *pwm = &chip->pwms[i]; in free_pwms()
81 bitmap_clear(allocated_pwms, chip->base, chip->npwm); in free_pwms()
83 kfree(chip->pwms); in free_pwms()
84 chip->pwms = NULL; in free_pwms()
89 struct pwm_chip *chip; in pwmchip_find_by_name() local
96 list_for_each_entry(chip, &pwm_chips, list) { in pwmchip_find_by_name()
97 const char *chip_name = dev_name(chip->dev); in pwmchip_find_by_name()
101 return chip; in pwmchip_find_by_name()
117 if (!try_module_get(pwm->chip->ops->owner)) in pwm_device_request()
120 if (pwm->chip->ops->request) { in pwm_device_request()
121 err = pwm->chip->ops->request(pwm->chip, pwm); in pwm_device_request()
123 module_put(pwm->chip->ops->owner); in pwm_device_request()
180 static void of_pwmchip_add(struct pwm_chip *chip) in of_pwmchip_add() argument
182 if (!chip->dev || !chip->dev->of_node) in of_pwmchip_add()
185 if (!chip->of_xlate) { in of_pwmchip_add()
186 chip->of_xlate = of_pwm_simple_xlate; in of_pwmchip_add()
187 chip->of_pwm_n_cells = 2; in of_pwmchip_add()
190 of_node_get(chip->dev->of_node); in of_pwmchip_add()
193 static void of_pwmchip_remove(struct pwm_chip *chip) in of_pwmchip_remove() argument
195 if (chip->dev) in of_pwmchip_remove()
196 of_node_put(chip->dev->of_node); in of_pwmchip_remove()
240 int pwmchip_add_with_polarity(struct pwm_chip *chip, in pwmchip_add_with_polarity() argument
247 if (!chip || !chip->dev || !chip->ops || !chip->ops->config || in pwmchip_add_with_polarity()
248 !chip->ops->enable || !chip->ops->disable || !chip->npwm) in pwmchip_add_with_polarity()
253 ret = alloc_pwms(chip->base, chip->npwm); in pwmchip_add_with_polarity()
257 chip->pwms = kzalloc(chip->npwm * sizeof(*pwm), GFP_KERNEL); in pwmchip_add_with_polarity()
258 if (!chip->pwms) { in pwmchip_add_with_polarity()
263 chip->base = ret; in pwmchip_add_with_polarity()
265 for (i = 0; i < chip->npwm; i++) { in pwmchip_add_with_polarity()
266 pwm = &chip->pwms[i]; in pwmchip_add_with_polarity()
268 pwm->chip = chip; in pwmchip_add_with_polarity()
269 pwm->pwm = chip->base + i; in pwmchip_add_with_polarity()
277 bitmap_set(allocated_pwms, chip->base, chip->npwm); in pwmchip_add_with_polarity()
279 INIT_LIST_HEAD(&chip->list); in pwmchip_add_with_polarity()
280 list_add(&chip->list, &pwm_chips); in pwmchip_add_with_polarity()
285 of_pwmchip_add(chip); in pwmchip_add_with_polarity()
287 pwmchip_sysfs_export(chip); in pwmchip_add_with_polarity()
304 int pwmchip_add(struct pwm_chip *chip) in pwmchip_add() argument
306 return pwmchip_add_with_polarity(chip, PWM_POLARITY_NORMAL); in pwmchip_add()
319 int pwmchip_remove(struct pwm_chip *chip) in pwmchip_remove() argument
326 for (i = 0; i < chip->npwm; i++) { in pwmchip_remove()
327 struct pwm_device *pwm = &chip->pwms[i]; in pwmchip_remove()
335 list_del_init(&chip->list); in pwmchip_remove()
338 of_pwmchip_remove(chip); in pwmchip_remove()
340 free_pwms(chip); in pwmchip_remove()
342 pwmchip_sysfs_unexport(chip); in pwmchip_remove()
397 struct pwm_device *pwm_request_from_chip(struct pwm_chip *chip, in pwm_request_from_chip() argument
404 if (!chip || index >= chip->npwm) in pwm_request_from_chip()
408 pwm = &chip->pwms[index]; in pwm_request_from_chip()
446 err = pwm->chip->ops->config(pwm->chip, pwm, duty_ns, period_ns); in pwm_config()
471 if (!pwm || !pwm->chip->ops) in pwm_set_polarity()
474 if (!pwm->chip->ops->set_polarity) in pwm_set_polarity()
484 err = pwm->chip->ops->set_polarity(pwm->chip, pwm, polarity); in pwm_set_polarity()
512 err = pwm->chip->ops->enable(pwm->chip, pwm); in pwm_enable()
530 pwm->chip->ops->disable(pwm->chip, pwm); in pwm_disable()
536 struct pwm_chip *chip; in of_node_to_pwmchip() local
540 list_for_each_entry(chip, &pwm_chips, list) in of_node_to_pwmchip()
541 if (chip->dev && chip->dev->of_node == np) { in of_node_to_pwmchip()
543 return chip; in of_node_to_pwmchip()
683 struct pwm_chip *chip = NULL; in pwm_get() local
746 chip = pwmchip_find_by_name(chosen->provider); in pwm_get()
747 if (!chip) in pwm_get()
750 pwm = pwm_request_from_chip(chip, chosen->index, con_id ?: dev_id); in pwm_get()
779 if (pwm->chip->ops->free) in pwm_put()
780 pwm->chip->ops->free(pwm->chip, pwm); in pwm_put()
784 module_put(pwm->chip->ops->owner); in pwm_put()
892 return pwm->chip->can_sleep; in pwm_can_sleep()
897 static void pwm_dbg_show(struct pwm_chip *chip, struct seq_file *s) in pwm_dbg_show() argument
901 for (i = 0; i < chip->npwm; i++) { in pwm_dbg_show()
902 struct pwm_device *pwm = &chip->pwms[i]; in pwm_dbg_show()
938 struct pwm_chip *chip = list_entry(v, struct pwm_chip, list); in pwm_seq_show() local
941 chip->dev->bus ? chip->dev->bus->name : "no-bus", in pwm_seq_show()
942 dev_name(chip->dev), chip->npwm, in pwm_seq_show()
943 (chip->npwm != 1) ? "s" : ""); in pwm_seq_show()
945 if (chip->ops->dbg_show) in pwm_seq_show()
946 chip->ops->dbg_show(chip, s); in pwm_seq_show()
948 pwm_dbg_show(chip, s); in pwm_seq_show()