Lines Matching refs:desc

33 static int gpio_to_device(unsigned int gpio, struct gpio_desc *desc)  in gpio_to_device()  argument
44 desc->dev = dev; in gpio_to_device()
45 desc->offset = gpio - uc_priv->gpio_base; in gpio_to_device()
46 desc->flags = 0; in gpio_to_device()
55 int dm_gpio_lookup_name(const char *name, struct gpio_desc *desc) in dm_gpio_lookup_name() argument
87 desc->dev = dev; in dm_gpio_lookup_name()
88 desc->offset = offset; in dm_gpio_lookup_name()
96 struct gpio_desc desc; in gpio_lookup_name() local
101 ret = dm_gpio_lookup_name(name, &desc); in gpio_lookup_name()
106 *devp = desc.dev; in gpio_lookup_name()
108 *offsetp = desc.offset; in gpio_lookup_name()
110 struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(desc.dev); in gpio_lookup_name()
112 *gpiop = uc_priv->gpio_base + desc.offset; in gpio_lookup_name()
118 int gpio_xlate_offs_flags(struct udevice *dev, struct gpio_desc *desc, in gpio_xlate_offs_flags() argument
124 desc->offset = args->args[0]; in gpio_xlate_offs_flags()
130 desc->flags = GPIOD_ACTIVE_LOW; in gpio_xlate_offs_flags()
135 static int gpio_find_and_xlate(struct gpio_desc *desc, in gpio_find_and_xlate() argument
138 struct dm_gpio_ops *ops = gpio_get_ops(desc->dev); in gpio_find_and_xlate()
141 return ops->xlate(desc->dev, desc, args); in gpio_find_and_xlate()
143 return gpio_xlate_offs_flags(desc->dev, desc, args); in gpio_find_and_xlate()
238 int gpio_hog_lookup_name(const char *name, struct gpio_desc **desc) in gpio_hog_lookup_name() argument
242 *desc = NULL; in gpio_hog_lookup_name()
247 *desc = &priv->gpiod; in gpio_hog_lookup_name()
263 int gpio_hog_lookup_name(const char *name, struct gpio_desc **desc) in gpio_hog_lookup_name() argument
269 int dm_gpio_request(struct gpio_desc *desc, const char *label) in dm_gpio_request() argument
271 struct udevice *dev = desc->dev; in dm_gpio_request()
277 if (uc_priv->name[desc->offset]) in dm_gpio_request()
283 ret = gpio_get_ops(dev)->request(dev, desc->offset, label); in dm_gpio_request()
289 uc_priv->name[desc->offset] = str; in dm_gpio_request()
294 static int dm_gpio_requestf(struct gpio_desc *desc, const char *fmt, ...) in dm_gpio_requestf() argument
303 return dm_gpio_request(desc, buf); in dm_gpio_requestf()
305 return dm_gpio_request(desc, fmt); in dm_gpio_requestf()
323 struct gpio_desc desc; in gpio_request() local
326 ret = gpio_to_device(gpio, &desc); in gpio_request()
330 return dm_gpio_request(&desc, label); in gpio_request()
388 struct gpio_desc desc; in gpio_free() local
391 ret = gpio_to_device(gpio, &desc); in gpio_free()
395 return _dm_gpio_free(desc.dev, desc.offset); in gpio_free()
398 static int check_reserved(const struct gpio_desc *desc, const char *func) in check_reserved() argument
402 if (!dm_gpio_is_valid(desc)) in check_reserved()
405 uc_priv = dev_get_uclass_priv(desc->dev); in check_reserved()
406 if (!uc_priv->name[desc->offset]) { in check_reserved()
408 desc->dev->name, func, in check_reserved()
410 desc->offset); in check_reserved()
427 struct gpio_desc desc; in gpio_direction_input() local
430 ret = gpio_to_device(gpio, &desc); in gpio_direction_input()
433 ret = check_reserved(&desc, "dir_input"); in gpio_direction_input()
437 return gpio_get_ops(desc.dev)->direction_input(desc.dev, desc.offset); in gpio_direction_input()
451 struct gpio_desc desc; in gpio_direction_output() local
454 ret = gpio_to_device(gpio, &desc); in gpio_direction_output()
457 ret = check_reserved(&desc, "dir_output"); in gpio_direction_output()
461 return gpio_get_ops(desc.dev)->direction_output(desc.dev, in gpio_direction_output()
462 desc.offset, value); in gpio_direction_output()
465 int dm_gpio_get_value(const struct gpio_desc *desc) in dm_gpio_get_value() argument
470 ret = check_reserved(desc, "get_value"); in dm_gpio_get_value()
474 value = gpio_get_ops(desc->dev)->get_value(desc->dev, desc->offset); in dm_gpio_get_value()
476 return desc->flags & GPIOD_ACTIVE_LOW ? !value : value; in dm_gpio_get_value()
479 int dm_gpio_set_value(const struct gpio_desc *desc, int value) in dm_gpio_set_value() argument
483 ret = check_reserved(desc, "set_value"); in dm_gpio_set_value()
487 if (desc->flags & GPIOD_ACTIVE_LOW) in dm_gpio_set_value()
489 gpio_get_ops(desc->dev)->set_value(desc->dev, desc->offset, value); in dm_gpio_set_value()
493 int dm_gpio_get_open_drain(struct gpio_desc *desc) in dm_gpio_get_open_drain() argument
495 struct dm_gpio_ops *ops = gpio_get_ops(desc->dev); in dm_gpio_get_open_drain()
498 ret = check_reserved(desc, "get_open_drain"); in dm_gpio_get_open_drain()
503 return ops->get_open_drain(desc->dev, desc->offset); in dm_gpio_get_open_drain()
508 int dm_gpio_set_open_drain(struct gpio_desc *desc, int value) in dm_gpio_set_open_drain() argument
510 struct dm_gpio_ops *ops = gpio_get_ops(desc->dev); in dm_gpio_set_open_drain()
513 ret = check_reserved(desc, "set_open_drain"); in dm_gpio_set_open_drain()
518 ret = ops->set_open_drain(desc->dev, desc->offset, value); in dm_gpio_set_open_drain()
525 int dm_gpio_set_dir_flags(struct gpio_desc *desc, ulong flags) in dm_gpio_set_dir_flags() argument
527 struct udevice *dev = desc->dev; in dm_gpio_set_dir_flags()
531 ret = check_reserved(desc, "set_dir"); in dm_gpio_set_dir_flags()
540 ret = ops->direction_output(dev, desc->offset, value); in dm_gpio_set_dir_flags()
542 ret = ops->direction_input(dev, desc->offset); in dm_gpio_set_dir_flags()
550 desc->flags = flags; in dm_gpio_set_dir_flags()
555 int dm_gpio_set_dir(struct gpio_desc *desc) in dm_gpio_set_dir() argument
557 return dm_gpio_set_dir_flags(desc, desc->flags); in dm_gpio_set_dir()
573 struct gpio_desc desc; in gpio_get_value() local
575 ret = gpio_to_device(gpio, &desc); in gpio_get_value()
578 return dm_gpio_get_value(&desc); in gpio_get_value()
592 struct gpio_desc desc; in gpio_set_value() local
595 ret = gpio_to_device(gpio, &desc); in gpio_set_value()
598 return dm_gpio_set_value(&desc, value); in gpio_set_value()
803 struct gpio_desc *desc, int flags, in gpio_request_tail() argument
806 desc->dev = gpio_dev; in gpio_request_tail()
807 desc->offset = 0; in gpio_request_tail()
808 desc->flags = 0; in gpio_request_tail()
812 if (!desc->dev) { in gpio_request_tail()
814 &desc->dev); in gpio_request_tail()
821 ret = gpio_find_and_xlate(desc, args); in gpio_request_tail()
826 ret = dm_gpio_requestf(desc, add_index ? "%s.%s%d" : "%s.%s", in gpio_request_tail()
832 ret = dm_gpio_set_dir_flags(desc, flags | desc->flags); in gpio_request_tail()
846 int index, struct gpio_desc *desc, in _gpio_request_by_name_nodev() argument
856 index, desc, flags, add_index, NULL); in _gpio_request_by_name_nodev()
860 struct gpio_desc *desc, int flags) in gpio_request_by_name_nodev() argument
862 return _gpio_request_by_name_nodev(node, list_name, index, desc, flags, in gpio_request_by_name_nodev()
867 struct gpio_desc *desc, int flags) in gpio_request_by_name() argument
877 index, desc, flags, index > 0, NULL); in gpio_request_by_name()
881 struct gpio_desc *desc, int max_count, in gpio_request_list_by_name_nodev() argument
889 &desc[count], flags, true); in gpio_request_list_by_name_nodev()
900 gpio_free_list_nodev(desc, count - 1); in gpio_request_list_by_name_nodev()
906 struct gpio_desc *desc, int max_count, in gpio_request_list_by_name() argument
914 return gpio_request_list_by_name_nodev(dev_ofnode(dev), list_name, desc, in gpio_request_list_by_name()
933 int dm_gpio_free(struct udevice *dev, struct gpio_desc *desc) in dm_gpio_free() argument
936 return _dm_gpio_free(desc->dev, desc->offset); in dm_gpio_free()
939 int gpio_free_list(struct udevice *dev, struct gpio_desc *desc, int count) in gpio_free_list() argument
945 dm_gpio_free(dev, &desc[i]); in gpio_free_list()
950 int gpio_free_list_nodev(struct gpio_desc *desc, int count) in gpio_free_list_nodev() argument
952 return gpio_free_list(NULL, desc, count); in gpio_free_list_nodev()
981 int gpio_get_number(const struct gpio_desc *desc) in gpio_get_number() argument
983 struct udevice *dev = desc->dev; in gpio_get_number()
990 return uc_priv->gpio_base + desc->offset; in gpio_get_number()
1020 int dtflags, struct gpio_desc *desc) in gpio_dev_request_index() argument
1029 return gpio_request_tail(0, nodename, &args, list_name, index, desc, in gpio_dev_request_index()