Lines Matching +full:3 +full:- +full:tuples

1 // SPDX-License-Identifier: GPL-2.0-or-later
38 /* Find all null-terminated (including zero length) strings in in cistpl_vers_1()
41 size -= 2; in cistpl_vers_1()
57 return -ENOMEM; in cistpl_vers_1()
69 func->major_rev = major_rev; in cistpl_vers_1()
70 func->minor_rev = minor_rev; in cistpl_vers_1()
71 func->num_info = nr_strings; in cistpl_vers_1()
72 func->info = (const char**)buffer; in cistpl_vers_1()
74 card->major_rev = major_rev; in cistpl_vers_1()
75 card->minor_rev = minor_rev; in cistpl_vers_1()
76 card->num_info = nr_strings; in cistpl_vers_1()
77 card->info = (const char**)buffer; in cistpl_vers_1()
92 device = buf[2] | (buf[3] << 8); in cistpl_manfid()
95 func->vendor = vendor; in cistpl_manfid()
96 func->device = device; in cistpl_manfid()
98 card->cis.vendor = vendor; in cistpl_manfid()
99 card->cis.device = device; in cistpl_manfid()
130 if (tpl->code == code) in cis_tpl_parse()
134 if (size >= tpl->min_size) { in cis_tpl_parse()
135 if (tpl->parse) in cis_tpl_parse()
136 ret = tpl->parse(card, func, buf, size); in cis_tpl_parse()
138 ret = -EILSEQ; /* known tuple, not parsed */ in cis_tpl_parse()
141 ret = -EINVAL; in cis_tpl_parse()
143 if (ret && ret != -EILSEQ && ret != -ENOENT) { in cis_tpl_parse()
145 mmc_hostname(card->host), tpl_descr, code, size); in cis_tpl_parse()
149 ret = -ENOENT; in cis_tpl_parse()
160 return -EINVAL; in cistpl_funce_common()
163 card->cis.blksize = buf[1] | (buf[2] << 8); in cistpl_funce_common()
166 card->cis.max_dtr = speed_val[(buf[3] >> 3) & 15] * in cistpl_funce_common()
167 speed_unit[buf[3] & 7]; in cistpl_funce_common()
178 /* Only valid for the individual function's CIS (1-7) */ in cistpl_funce_func()
180 return -EINVAL; in cistpl_funce_func()
186 vsn = func->card->cccr.sdio_vsn; in cistpl_funce_func()
191 mmc_hostname(card->host)); in cistpl_funce_func()
194 return -EINVAL; in cistpl_funce_func()
198 func->max_blksize = buf[12] | (buf[13] << 8); in cistpl_funce_func()
202 func->enable_timeout = (buf[28] | (buf[29] << 8)) * 10; in cistpl_funce_func()
204 func->enable_timeout = jiffies_to_msecs(HZ); in cistpl_funce_func()
210 * Known TPLFE_TYPEs table for CISTPL_FUNCE tuples.
212 * Note that, unlike PCMCIA, CISTPL_FUNCE tuples are not parsed depending
226 return -EINVAL; in cistpl_funce()
234 /* Known TPL_CODEs table for CIS tuples */
236 { 0x15, 3, cistpl_vers_1 },
254 for (i = 0; i < 3; i++) { in sdio_read_cis()
258 fn = func->num; in sdio_read_cis()
270 prev = &func->tuples; in sdio_read_cis()
272 prev = &card->tuples; in sdio_read_cis()
275 return -EINVAL; in sdio_read_cis()
304 return -ENOMEM; in sdio_read_cis()
308 ptr + i, 0, &this->data[i]); in sdio_read_cis()
320 tpl_code, this->data, tpl_link); in sdio_read_cis()
321 if (ret == -EILSEQ || ret == -ENOENT) { in sdio_read_cis()
326 this->next = NULL; in sdio_read_cis()
327 this->code = tpl_code; in sdio_read_cis()
328 this->size = tpl_link; in sdio_read_cis()
330 prev = &this->next; in sdio_read_cis()
332 if (ret == -ENOENT) { in sdio_read_cis()
339 * Tuples in this range are reserved for in sdio_read_cis()
344 mmc_hostname(card->host), in sdio_read_cis()
345 tpl_code, tpl_link, this->data, in sdio_read_cis()
349 mmc_hostname(card->host), in sdio_read_cis()
350 tpl_code, tpl_link, this->data, in sdio_read_cis()
354 /* keep on analyzing tuples */ in sdio_read_cis()
369 * Link in all unknown tuples found in the common CIS so that in sdio_read_cis()
373 *prev = card->tuples; in sdio_read_cis()
387 tuple = card->tuples; in sdio_free_common_cis()
391 tuple = tuple->next; in sdio_free_common_cis()
395 card->tuples = NULL; in sdio_free_common_cis()
402 ret = sdio_read_cis(func->card, func); in sdio_read_func_cis()
410 if (func->vendor == 0) { in sdio_read_func_cis()
411 func->vendor = func->card->cis.vendor; in sdio_read_func_cis()
412 func->device = func->card->cis.device; in sdio_read_func_cis()
422 tuple = func->tuples; in sdio_free_func_cis()
424 while (tuple && tuple != func->card->tuples) { in sdio_free_func_cis()
426 tuple = tuple->next; in sdio_free_func_cis()
430 func->tuples = NULL; in sdio_free_func_cis()