|
@@ -185,20 +185,19 @@ EXPORT_SYMBOL_HDA(snd_hda_get_jack_type);
|
|
|
* Compose a 32bit command word to be sent to the HD-audio controller
|
|
|
*/
|
|
|
static inline unsigned int
|
|
|
-make_codec_cmd(struct hda_codec *codec, hda_nid_t nid, int direct,
|
|
|
+make_codec_cmd(struct hda_codec *codec, hda_nid_t nid, int flags,
|
|
|
unsigned int verb, unsigned int parm)
|
|
|
{
|
|
|
u32 val;
|
|
|
|
|
|
- if ((codec->addr & ~0xf) || (direct & ~1) || (nid & ~0x7f) ||
|
|
|
+ if ((codec->addr & ~0xf) || (nid & ~0x7f) ||
|
|
|
(verb & ~0xfff) || (parm & ~0xffff)) {
|
|
|
- printk(KERN_ERR "hda-codec: out of range cmd %x:%x:%x:%x:%x\n",
|
|
|
- codec->addr, direct, nid, verb, parm);
|
|
|
+ printk(KERN_ERR "hda-codec: out of range cmd %x:%x:%x:%x\n",
|
|
|
+ codec->addr, nid, verb, parm);
|
|
|
return ~0;
|
|
|
}
|
|
|
|
|
|
val = (u32)codec->addr << 28;
|
|
|
- val |= (u32)direct << 27;
|
|
|
val |= (u32)nid << 20;
|
|
|
val |= verb << 8;
|
|
|
val |= parm;
|
|
@@ -209,7 +208,7 @@ make_codec_cmd(struct hda_codec *codec, hda_nid_t nid, int direct,
|
|
|
* Send and receive a verb
|
|
|
*/
|
|
|
static int codec_exec_verb(struct hda_codec *codec, unsigned int cmd,
|
|
|
- unsigned int *res)
|
|
|
+ int flags, unsigned int *res)
|
|
|
{
|
|
|
struct hda_bus *bus = codec->bus;
|
|
|
int err;
|
|
@@ -255,7 +254,7 @@ static int codec_exec_verb(struct hda_codec *codec, unsigned int cmd,
|
|
|
* snd_hda_codec_read - send a command and get the response
|
|
|
* @codec: the HDA codec
|
|
|
* @nid: NID to send the command
|
|
|
- * @direct: direct flag
|
|
|
+ * @flags: optional bit flags
|
|
|
* @verb: the verb to send
|
|
|
* @parm: the parameter for the verb
|
|
|
*
|
|
@@ -264,12 +263,12 @@ static int codec_exec_verb(struct hda_codec *codec, unsigned int cmd,
|
|
|
* Returns the obtained response value, or -1 for an error.
|
|
|
*/
|
|
|
unsigned int snd_hda_codec_read(struct hda_codec *codec, hda_nid_t nid,
|
|
|
- int direct,
|
|
|
+ int flags,
|
|
|
unsigned int verb, unsigned int parm)
|
|
|
{
|
|
|
- unsigned cmd = make_codec_cmd(codec, nid, direct, verb, parm);
|
|
|
+ unsigned cmd = make_codec_cmd(codec, nid, flags, verb, parm);
|
|
|
unsigned int res;
|
|
|
- if (codec_exec_verb(codec, cmd, &res))
|
|
|
+ if (codec_exec_verb(codec, cmd, flags, &res))
|
|
|
return -1;
|
|
|
return res;
|
|
|
}
|
|
@@ -279,7 +278,7 @@ EXPORT_SYMBOL_HDA(snd_hda_codec_read);
|
|
|
* snd_hda_codec_write - send a single command without waiting for response
|
|
|
* @codec: the HDA codec
|
|
|
* @nid: NID to send the command
|
|
|
- * @direct: direct flag
|
|
|
+ * @flags: optional bit flags
|
|
|
* @verb: the verb to send
|
|
|
* @parm: the parameter for the verb
|
|
|
*
|
|
@@ -287,12 +286,12 @@ EXPORT_SYMBOL_HDA(snd_hda_codec_read);
|
|
|
*
|
|
|
* Returns 0 if successful, or a negative error code.
|
|
|
*/
|
|
|
-int snd_hda_codec_write(struct hda_codec *codec, hda_nid_t nid, int direct,
|
|
|
- unsigned int verb, unsigned int parm)
|
|
|
+int snd_hda_codec_write(struct hda_codec *codec, hda_nid_t nid, int flags,
|
|
|
+ unsigned int verb, unsigned int parm)
|
|
|
{
|
|
|
- unsigned int cmd = make_codec_cmd(codec, nid, direct, verb, parm);
|
|
|
+ unsigned int cmd = make_codec_cmd(codec, nid, flags, verb, parm);
|
|
|
unsigned int res;
|
|
|
- return codec_exec_verb(codec, cmd,
|
|
|
+ return codec_exec_verb(codec, cmd, flags,
|
|
|
codec->bus->sync_write ? &res : NULL);
|
|
|
}
|
|
|
EXPORT_SYMBOL_HDA(snd_hda_codec_write);
|
|
@@ -3582,7 +3581,7 @@ EXPORT_SYMBOL_HDA(snd_hda_create_spdif_in_ctls);
|
|
|
* snd_hda_codec_write_cache - send a single command with caching
|
|
|
* @codec: the HDA codec
|
|
|
* @nid: NID to send the command
|
|
|
- * @direct: direct flag
|
|
|
+ * @flags: optional bit flags
|
|
|
* @verb: the verb to send
|
|
|
* @parm: the parameter for the verb
|
|
|
*
|
|
@@ -3591,7 +3590,7 @@ EXPORT_SYMBOL_HDA(snd_hda_create_spdif_in_ctls);
|
|
|
* Returns 0 if successful, or a negative error code.
|
|
|
*/
|
|
|
int snd_hda_codec_write_cache(struct hda_codec *codec, hda_nid_t nid,
|
|
|
- int direct, unsigned int verb, unsigned int parm)
|
|
|
+ int flags, unsigned int verb, unsigned int parm)
|
|
|
{
|
|
|
int err;
|
|
|
struct hda_cache_head *c;
|
|
@@ -3600,7 +3599,7 @@ int snd_hda_codec_write_cache(struct hda_codec *codec, hda_nid_t nid,
|
|
|
|
|
|
cache_only = codec->cached_write;
|
|
|
if (!cache_only) {
|
|
|
- err = snd_hda_codec_write(codec, nid, direct, verb, parm);
|
|
|
+ err = snd_hda_codec_write(codec, nid, flags, verb, parm);
|
|
|
if (err < 0)
|
|
|
return err;
|
|
|
}
|
|
@@ -3624,7 +3623,7 @@ EXPORT_SYMBOL_HDA(snd_hda_codec_write_cache);
|
|
|
* snd_hda_codec_update_cache - check cache and write the cmd only when needed
|
|
|
* @codec: the HDA codec
|
|
|
* @nid: NID to send the command
|
|
|
- * @direct: direct flag
|
|
|
+ * @flags: optional bit flags
|
|
|
* @verb: the verb to send
|
|
|
* @parm: the parameter for the verb
|
|
|
*
|
|
@@ -3635,7 +3634,7 @@ EXPORT_SYMBOL_HDA(snd_hda_codec_write_cache);
|
|
|
* Returns 0 if successful, or a negative error code.
|
|
|
*/
|
|
|
int snd_hda_codec_update_cache(struct hda_codec *codec, hda_nid_t nid,
|
|
|
- int direct, unsigned int verb, unsigned int parm)
|
|
|
+ int flags, unsigned int verb, unsigned int parm)
|
|
|
{
|
|
|
struct hda_cache_head *c;
|
|
|
u32 key;
|
|
@@ -3651,7 +3650,7 @@ int snd_hda_codec_update_cache(struct hda_codec *codec, hda_nid_t nid,
|
|
|
return 0;
|
|
|
}
|
|
|
mutex_unlock(&codec->bus->cmd_mutex);
|
|
|
- return snd_hda_codec_write_cache(codec, nid, direct, verb, parm);
|
|
|
+ return snd_hda_codec_write_cache(codec, nid, flags, verb, parm);
|
|
|
}
|
|
|
EXPORT_SYMBOL_HDA(snd_hda_codec_update_cache);
|
|
|
|