/* * Based on intlist.c by: * (c) 2009 Arnaldo Carvalho de Melo * * Licensed under the GPLv2. */ #include #include #include #include "intlist.h" static struct rb_node *intlist__node_new(struct rblist *rblist __maybe_unused, const void *entry) { int i = (int)((long)entry); struct rb_node *rc = NULL; struct int_node *node = malloc(sizeof(*node)); if (node != NULL) { node->i = i; node->priv = NULL; rc = &node->rb_node; } return rc; } static void int_node__delete(struct int_node *ilist) { free(ilist); } static void intlist__node_delete(struct rblist *rblist __maybe_unused, struct rb_node *rb_node) { struct int_node *node = container_of(rb_node, struct int_node, rb_node); int_node__delete(node); } static int intlist__node_cmp(struct rb_node *rb_node, const void *entry) { int i = (int)((long)entry); struct int_node *node = container_of(rb_node, struct int_node, rb_node); return node->i - i; } int intlist__add(struct intlist *ilist, int i) { return rblist__add_node(&ilist->rblist, (void *)((long)i)); } void intlist__remove(struct intlist *ilist, struct int_node *node) { rblist__remove_node(&ilist->rblist, &node->rb_node); } static struct int_node *__intlist__findnew(struct intlist *ilist, int i, bool create) { struct int_node *node = NULL; struct rb_node *rb_node; if (ilist == NULL) return NULL; if (create) rb_node = rblist__findnew(&ilist->rblist, (void *)((long)i)); else rb_node = rblist__find(&ilist->rblist, (void *)((long)i)); if (rb_node) node = container_of(rb_node, struct int_node, rb_node); return node; } struct int_node *intlist__find(struct intlist *ilist, int i) { return __intlist__findnew(ilist, i, false); } struct int_node *intlist__findnew(struct intlist *ilist, int i) { return __intlist__findnew(ilist, i, true); } static int intlist__parse_list(struct intlist *ilist, const char *s) { char *sep; int err; do { long value = strtol(s, &sep, 10); err = -EINVAL; if (*sep != ',' && *sep != '\0') break; err = intlist__add(ilist, value); if (err) break; s = sep + 1; } while (*sep != '\0'); return err; } struct intlist *intlist__new(const char *slist) { struct intlist *ilist = malloc(sizeof(*ilist)); if (ilist != NULL) { rblist__init(&ilist->rblist); ilist->rblist.node_cmp = intlist__node_cmp; ilist->rblist.node_new = intlist__node_new; ilist->rblist.node_delete = intlist__node_delete; if (slist && intlist__parse_list(ilist, slist)) goto out_delete; } return ilist; out_delete: intlist__delete(ilist); return NULL; } void intlist__delete(struct intlist *ilist) { if (ilist != NULL) rblist__delete(&ilist->rblist); } struct int_node *intlist__entry(const struct intlist *ilist, unsigned int idx) { struct int_node *node = NULL; struct rb_node *rb_node; rb_node = rblist__entry(&ilist->rblist, idx); if (rb_node) node = container_of(rb_node, struct int_node, rb_node); return node; } /cgit.cgi/linux/net-next.git/commit/sound/soc/codecs?id=81917bad86a66f2bdcb12b4c10ab1bf333ed25ec'>codecs/max98371.c
diff options
context:
space:
mode:
authorRoger Shimizu <rogershimizu@gmail.com>2017-01-30 20:07:29 +0900
committerGregory CLEMENT <gregory.clement@free-electrons.com>2017-01-31 12:19:32 +0100
commit81917bad86a66f2bdcb12b4c10ab1bf333ed25ec (patch)
tree3d56cb771fc5f0a37412e62f99aacc6d21a646c0 /sound/soc/codecs/max98371.c
parent0c744ea4f77d72b3dcebb7a8f2684633ec79be88 (diff)
ARM: dts: orion5x-lschl: Fix model name
Model name should be consistent with legacy device file, so that user can migrate their system from legacy device support to device-tree safely. Legacy device file is currently removed, but it can be found on 4.8 or previous version of linux: arch/arm/mach-orion5x/ls-chl-setup.c Fixes: f94f268979a2 ("ARM: dts: orion5x: convert ls-chl to FDT") Cc: Ashley Hughes <ashley.hughes@blueyonder.co.uk> Signed-off-by: Roger Shimizu <rogershimizu@gmail.com> Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Diffstat (limited to 'sound/soc/codecs/max98371.c')