Lines Matching refs:desc
33 static int gpio_to_device(unsigned int gpio, struct gpio_desc *desc) in gpio_to_device() argument
45 desc->dev = dev; in gpio_to_device()
46 desc->offset = gpio - uc_priv->gpio_base; in gpio_to_device()
47 desc->flags = 0; in gpio_to_device()
56 int dm_gpio_lookup_name(const char *name, struct gpio_desc *desc) in dm_gpio_lookup_name() argument
89 desc->dev = dev; in dm_gpio_lookup_name()
90 desc->offset = offset; in dm_gpio_lookup_name()
98 struct gpio_desc desc; in gpio_lookup_name() local
103 ret = dm_gpio_lookup_name(name, &desc); in gpio_lookup_name()
108 *devp = desc.dev; in gpio_lookup_name()
110 *offsetp = desc.offset; in gpio_lookup_name()
112 struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(desc.dev); in gpio_lookup_name()
114 *gpiop = uc_priv->gpio_base + desc.offset; in gpio_lookup_name()
120 int gpio_xlate_offs_flags(struct udevice *dev, struct gpio_desc *desc, in gpio_xlate_offs_flags() argument
126 desc->offset = args->args[0]; in gpio_xlate_offs_flags()
132 desc->flags = GPIOD_ACTIVE_LOW; in gpio_xlate_offs_flags()
137 static int gpio_find_and_xlate(struct gpio_desc *desc, in gpio_find_and_xlate() argument
140 struct dm_gpio_ops *ops = gpio_get_ops(desc->dev); in gpio_find_and_xlate()
143 return ops->xlate(desc->dev, desc, args); in gpio_find_and_xlate()
145 return gpio_xlate_offs_flags(desc->dev, desc, args); in gpio_find_and_xlate()
240 int gpio_hog_lookup_name(const char *name, struct gpio_desc **desc) in gpio_hog_lookup_name() argument
244 *desc = NULL; in gpio_hog_lookup_name()
249 *desc = &priv->gpiod; in gpio_hog_lookup_name()
265 int gpio_hog_lookup_name(const char *name, struct gpio_desc **desc) in gpio_hog_lookup_name() argument
271 int dm_gpio_request(struct gpio_desc *desc, const char *label) in dm_gpio_request() argument
273 struct udevice *dev = desc->dev; in dm_gpio_request()
279 if (uc_priv->name[desc->offset]) in dm_gpio_request()
285 ret = gpio_get_ops(dev)->request(dev, desc->offset, label); in dm_gpio_request()
291 uc_priv->name[desc->offset] = str; in dm_gpio_request()
296 static int dm_gpio_requestf(struct gpio_desc *desc, const char *fmt, ...) in dm_gpio_requestf() argument
305 return dm_gpio_request(desc, buf); in dm_gpio_requestf()
307 return dm_gpio_request(desc, fmt); in dm_gpio_requestf()
325 struct gpio_desc desc; in gpio_request() local
328 ret = gpio_to_device(gpio, &desc); in gpio_request()
332 return dm_gpio_request(&desc, label); in gpio_request()
390 struct gpio_desc desc; in gpio_free() local
393 ret = gpio_to_device(gpio, &desc); in gpio_free()
397 return _dm_gpio_free(desc.dev, desc.offset); in gpio_free()
400 static int check_reserved(const struct gpio_desc *desc, const char *func) in check_reserved() argument
404 if (!dm_gpio_is_valid(desc)) in check_reserved()
407 uc_priv = dev_get_uclass_priv(desc->dev); in check_reserved()
408 if (!uc_priv->name[desc->offset]) { in check_reserved()
410 desc->dev->name, func, in check_reserved()
412 desc->offset); in check_reserved()
429 struct gpio_desc desc; in gpio_direction_input() local
432 ret = gpio_to_device(gpio, &desc); in gpio_direction_input()
435 ret = check_reserved(&desc, "dir_input"); in gpio_direction_input()
439 return gpio_get_ops(desc.dev)->direction_input(desc.dev, desc.offset); in gpio_direction_input()
453 struct gpio_desc desc; in gpio_direction_output() local
456 ret = gpio_to_device(gpio, &desc); in gpio_direction_output()
459 ret = check_reserved(&desc, "dir_output"); in gpio_direction_output()
463 return gpio_get_ops(desc.dev)->direction_output(desc.dev, in gpio_direction_output()
464 desc.offset, value); in gpio_direction_output()
467 int dm_gpio_get_value(const struct gpio_desc *desc) in dm_gpio_get_value() argument
472 ret = check_reserved(desc, "get_value"); in dm_gpio_get_value()
476 value = gpio_get_ops(desc->dev)->get_value(desc->dev, desc->offset); in dm_gpio_get_value()
478 return desc->flags & GPIOD_ACTIVE_LOW ? !value : value; in dm_gpio_get_value()
481 int dm_gpio_set_value(const struct gpio_desc *desc, int value) in dm_gpio_set_value() argument
485 ret = check_reserved(desc, "set_value"); in dm_gpio_set_value()
489 if (desc->flags & GPIOD_ACTIVE_LOW) in dm_gpio_set_value()
491 gpio_get_ops(desc->dev)->set_value(desc->dev, desc->offset, value); in dm_gpio_set_value()
495 int dm_gpio_get_open_drain(struct gpio_desc *desc) in dm_gpio_get_open_drain() argument
497 struct dm_gpio_ops *ops = gpio_get_ops(desc->dev); in dm_gpio_get_open_drain()
500 ret = check_reserved(desc, "get_open_drain"); in dm_gpio_get_open_drain()
505 return ops->get_open_drain(desc->dev, desc->offset); in dm_gpio_get_open_drain()
510 int dm_gpio_set_open_drain(struct gpio_desc *desc, int value) in dm_gpio_set_open_drain() argument
512 struct dm_gpio_ops *ops = gpio_get_ops(desc->dev); in dm_gpio_set_open_drain()
515 ret = check_reserved(desc, "set_open_drain"); in dm_gpio_set_open_drain()
520 ret = ops->set_open_drain(desc->dev, desc->offset, value); in dm_gpio_set_open_drain()
527 int dm_gpio_set_dir_flags(struct gpio_desc *desc, ulong flags) in dm_gpio_set_dir_flags() argument
529 struct udevice *dev = desc->dev; in dm_gpio_set_dir_flags()
533 ret = check_reserved(desc, "set_dir"); in dm_gpio_set_dir_flags()
542 ret = ops->direction_output(dev, desc->offset, value); in dm_gpio_set_dir_flags()
544 ret = ops->direction_input(dev, desc->offset); in dm_gpio_set_dir_flags()
552 desc->flags = flags; in dm_gpio_set_dir_flags()
557 int dm_gpio_set_dir(struct gpio_desc *desc) in dm_gpio_set_dir() argument
559 return dm_gpio_set_dir_flags(desc, desc->flags); in dm_gpio_set_dir()
575 struct gpio_desc desc; in gpio_get_value() local
577 ret = gpio_to_device(gpio, &desc); in gpio_get_value()
580 return dm_gpio_get_value(&desc); in gpio_get_value()
594 struct gpio_desc desc; in gpio_set_value() local
597 ret = gpio_to_device(gpio, &desc); in gpio_set_value()
600 return dm_gpio_set_value(&desc, value); in gpio_set_value()
805 struct gpio_desc *desc, int flags, in gpio_request_tail() argument
808 desc->dev = gpio_dev; in gpio_request_tail()
809 desc->offset = 0; in gpio_request_tail()
810 desc->flags = 0; in gpio_request_tail()
814 if (!desc->dev) { in gpio_request_tail()
816 &desc->dev); in gpio_request_tail()
823 ret = gpio_find_and_xlate(desc, args); in gpio_request_tail()
828 ret = dm_gpio_requestf(desc, add_index ? "%s.%s%d" : "%s.%s", in gpio_request_tail()
834 ret = dm_gpio_set_dir_flags(desc, flags | desc->flags); in gpio_request_tail()
848 int index, struct gpio_desc *desc, in _gpio_request_by_name_nodev() argument
858 index, desc, flags, add_index, NULL); in _gpio_request_by_name_nodev()
862 struct gpio_desc *desc, int flags) in gpio_request_by_name_nodev() argument
864 return _gpio_request_by_name_nodev(node, list_name, index, desc, flags, in gpio_request_by_name_nodev()
869 struct gpio_desc *desc, int flags) in gpio_request_by_name() argument
879 index, desc, flags, index > 0, NULL); in gpio_request_by_name()
883 struct gpio_desc *desc, int max_count, in gpio_request_list_by_name_nodev() argument
891 &desc[count], flags, true); in gpio_request_list_by_name_nodev()
902 gpio_free_list_nodev(desc, count - 1); in gpio_request_list_by_name_nodev()
908 struct gpio_desc *desc, int max_count, in gpio_request_list_by_name() argument
916 return gpio_request_list_by_name_nodev(dev_ofnode(dev), list_name, desc, in gpio_request_list_by_name()
935 int dm_gpio_free(struct udevice *dev, struct gpio_desc *desc) in dm_gpio_free() argument
938 return _dm_gpio_free(desc->dev, desc->offset); in dm_gpio_free()
941 int gpio_free_list(struct udevice *dev, struct gpio_desc *desc, int count) in gpio_free_list() argument
947 dm_gpio_free(dev, &desc[i]); in gpio_free_list()
952 int gpio_free_list_nodev(struct gpio_desc *desc, int count) in gpio_free_list_nodev() argument
954 return gpio_free_list(NULL, desc, count); in gpio_free_list_nodev()
983 int gpio_get_number(const struct gpio_desc *desc) in gpio_get_number() argument
985 struct udevice *dev = desc->dev; in gpio_get_number()
992 return uc_priv->gpio_base + desc->offset; in gpio_get_number()
1022 int dtflags, struct gpio_desc *desc) in gpio_dev_request_index() argument
1031 return gpio_request_tail(0, nodename, &args, list_name, index, desc, in gpio_dev_request_index()