···32893289}32903290EXPORT_SYMBOL_GPL(snd_soc_bytes_info_ext);3291329132923292+int snd_soc_bytes_tlv_callback(struct snd_kcontrol *kcontrol, int op_flag,32933293+ unsigned int size, unsigned int __user *tlv)32943294+{32953295+ struct soc_bytes_ext *params = (void *)kcontrol->private_value;32963296+ unsigned int count = size < params->max ? size : params->max;32973297+ int ret = -ENXIO;32983298+32993299+ switch (op_flag) {33003300+ case SNDRV_CTL_TLV_OP_READ:33013301+ if (params->get)33023302+ ret = params->get(tlv, count);33033303+ break;33043304+ case SNDRV_CTL_TLV_OP_WRITE:33053305+ if (params->put)33063306+ ret = params->put(tlv, count);33073307+ break;33083308+ }33093309+ return ret;33103310+}33113311+EXPORT_SYMBOL_GPL(snd_soc_bytes_tlv_callback);33123312+32923313/**32933314 * snd_soc_info_xr_sx - signed multi register info callback32943315 * @kcontrol: mreg control