Commit 165b81c4 authored by Lucas Tanure's avatar Lucas Tanure Committed by Takashi Iwai

ALSA: hda/cs8409: Support i2c bulk read/write functions

This allows mutex locks to be moved into i2c functions, as
the bulk read/write functions can lock/unlock themselves to
prevent interruption of sequence reads/writes.
Signed-off-by: default avatarLucas Tanure <tanureal@opensource.cirrus.com>
Signed-off-by: default avatarVitaly Rodionov <vitalyr@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20210811185654.6837-17-vitalyr@opensource.cirrus.comSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 8de4e5a6
...@@ -146,7 +146,7 @@ const struct hda_pintbl cs8409_cs42l42_pincfgs[] = { ...@@ -146,7 +146,7 @@ const struct hda_pintbl cs8409_cs42l42_pincfgs[] = {
}; };
/* Vendor specific HW configuration for CS42L42 */ /* Vendor specific HW configuration for CS42L42 */
const struct cs8409_i2c_param cs42l42_init_reg_seq[] = { const struct cs8409_i2c_param cs42l42_init_reg_seq[CS42L42_INIT_REG_SEQ_SIZE] = {
{ 0x1010, 0xB0 }, { 0x1010, 0xB0 },
{ 0x1D01, 0x00 }, { 0x1D01, 0x00 },
{ 0x1D02, 0x06 }, { 0x1D02, 0x06 },
...@@ -206,7 +206,6 @@ const struct cs8409_i2c_param cs42l42_init_reg_seq[] = { ...@@ -206,7 +206,6 @@ const struct cs8409_i2c_param cs42l42_init_reg_seq[] = {
{ 0x1320, 0xff }, { 0x1320, 0xff },
{ 0x1b79, 0xff }, { 0x1b79, 0xff },
{ 0x1b7a, 0xff }, { 0x1b7a, 0xff },
{} /* Terminator */
}; };
/* Vendor specific hw configuration for CS8409 */ /* Vendor specific hw configuration for CS8409 */
......
This diff is collapsed.
...@@ -243,6 +243,8 @@ enum cs8409_coefficient_index_registers { ...@@ -243,6 +243,8 @@ enum cs8409_coefficient_index_registers {
#define CS8409_CS42L42_DMIC_PIN_NID CS8409_PIN_DMIC1_IN #define CS8409_CS42L42_DMIC_PIN_NID CS8409_PIN_DMIC1_IN
#define CS8409_CS42L42_DMIC_ADC_PIN_NID CS8409_PIN_DMIC1 #define CS8409_CS42L42_DMIC_ADC_PIN_NID CS8409_PIN_DMIC1
#define CS42L42_INIT_REG_SEQ_SIZE 59
enum { enum {
CS8409_BULLSEYE, CS8409_BULLSEYE,
CS8409_WARLOCK, CS8409_WARLOCK,
...@@ -257,7 +259,7 @@ enum { ...@@ -257,7 +259,7 @@ enum {
struct cs8409_i2c_param { struct cs8409_i2c_param {
unsigned int addr; unsigned int addr;
unsigned int reg; unsigned int value;
}; };
struct cs8409_cir_param { struct cs8409_cir_param {
...@@ -279,7 +281,7 @@ struct cs8409_spec { ...@@ -279,7 +281,7 @@ struct cs8409_spec {
unsigned int cs42l42_suspended:1; unsigned int cs42l42_suspended:1;
s8 vol[CS42L42_VOLUMES]; s8 vol[CS42L42_VOLUMES];
struct mutex cs8409_i2c_mux; struct mutex i2c_mux;
unsigned int i2c_clck_enabled; unsigned int i2c_clck_enabled;
unsigned int dev_addr; unsigned int dev_addr;
struct delayed_work i2c_clk_work; struct delayed_work i2c_clk_work;
...@@ -303,7 +305,7 @@ extern const struct hda_model_fixup cs8409_models[]; ...@@ -303,7 +305,7 @@ extern const struct hda_model_fixup cs8409_models[];
extern const struct hda_fixup cs8409_fixups[]; extern const struct hda_fixup cs8409_fixups[];
extern const struct hda_verb cs8409_cs42l42_init_verbs[]; extern const struct hda_verb cs8409_cs42l42_init_verbs[];
extern const struct hda_pintbl cs8409_cs42l42_pincfgs[]; extern const struct hda_pintbl cs8409_cs42l42_pincfgs[];
extern const struct cs8409_i2c_param cs42l42_init_reg_seq[]; extern const struct cs8409_i2c_param cs42l42_init_reg_seq[CS42L42_INIT_REG_SEQ_SIZE];
extern const struct cs8409_cir_param cs8409_cs42l42_hw_cfg[]; extern const struct cs8409_cir_param cs8409_cs42l42_hw_cfg[];
extern const struct cs8409_cir_param cs8409_cs42l42_bullseye_atn[]; extern const struct cs8409_cir_param cs8409_cs42l42_bullseye_atn[];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment