参照元

説明

引数

返り値

参考

実装

/*
 * Simplify DAI link configuration by removing ".-1" from device names
 * and sanitizing names.
 */
static char *fmt_single_name(struct device *dev, int *id)
{
        char *found, name[NAME_SIZE];
        int id1, id2;

        if (dev_name(dev) == NULL)
                return NULL;
        strlcpy(name, dev_name(dev), NAME_SIZE);
        /* are we a "%s.%d" name (platform and SPI components) */
        found = strstr(name, dev->driver->name);
        if (found) {
                /* get ID */
                if (sscanf(&found[strlen(dev->driver->name)], ".%d", id) == 1) {

                        /* discard ID from name if ID == -1 */
                        if (*id == -1)
                                found[strlen(dev->driver->name)] = '\0';
                }
        } else {
                /* I2C component devices are named "bus-addr"  */
                if (sscanf(name, "%x-%x", &id1, &id2) == 2) {
                        char tmp[NAME_SIZE];

                        /* create unique ID number from I2C addr and bus */
                        *id = ((id1 & 0xffff) << 16) + id2;

                        /* sanitize component name for DAI link creation */
                        snprintf(tmp, NAME_SIZE, "%s.%s", dev->driver->name, name);
                        strlcpy(name, tmp, NAME_SIZE);
                } else
                        *id = 0;
        }

        return kstrdup(name, GFP_KERNEL);
}

コメント


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS