Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
b5e806ae
Commit
b5e806ae
authored
Feb 26, 2019
by
Mark Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'asoc-5.0' into asoc-linus
parents
5908e6b7
8af6c521
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
94 additions
and
40 deletions
+94
-40
Documentation/devicetree/bindings/sound/adi,adau1977.txt
Documentation/devicetree/bindings/sound/adi,adau1977.txt
+3
-3
sound/soc/codecs/pcm186x.c
sound/soc/codecs/pcm186x.c
+4
-4
sound/soc/codecs/wm_adsp.c
sound/soc/codecs/wm_adsp.c
+21
-17
sound/soc/fsl/fsl_esai.c
sound/soc/fsl/fsl_esai.c
+4
-3
sound/soc/sh/rcar/gen.c
sound/soc/sh/rcar/gen.c
+24
-0
sound/soc/sh/rcar/rsnd.h
sound/soc/sh/rcar/rsnd.h
+27
-0
sound/soc/sh/rcar/ssiu.c
sound/soc/sh/rcar/ssiu.c
+11
-13
No files found.
Documentation/devicetree/bindings/sound/adi,adau1977.txt
View file @
b5e806ae
...
@@ -17,7 +17,7 @@ Required properties:
...
@@ -17,7 +17,7 @@ Required properties:
Documentation/devicetree/bindings/regulator/regulator.txt
Documentation/devicetree/bindings/regulator/regulator.txt
Optional properties:
Optional properties:
- reset-gpio
:
the reset pin for the chip, for more details consult
- reset-gpio
s:
the reset pin for the chip, for more details consult
Documentation/devicetree/bindings/gpio/gpio.txt
Documentation/devicetree/bindings/gpio/gpio.txt
- DVDD-supply: supply voltage for the digital core, please consult
- DVDD-supply: supply voltage for the digital core, please consult
...
@@ -40,7 +40,7 @@ Examples:
...
@@ -40,7 +40,7 @@ Examples:
AVDD-supply = <®ulator>;
AVDD-supply = <®ulator>;
DVDD-supply = <®ulator_digital>;
DVDD-supply = <®ulator_digital>;
reset
_gpio
= <&gpio 10 GPIO_ACTIVE_LOW>;
reset
-gpios
= <&gpio 10 GPIO_ACTIVE_LOW>;
};
};
adau1977_i2c: adau1977@11 {
adau1977_i2c: adau1977@11 {
...
@@ -50,5 +50,5 @@ Examples:
...
@@ -50,5 +50,5 @@ Examples:
AVDD-supply = <®ulator>;
AVDD-supply = <®ulator>;
DVDD-supply = <®ulator_digital>;
DVDD-supply = <®ulator_digital>;
reset
_gpio
= <&gpio 10 GPIO_ACTIVE_LOW>;
reset
-gpios
= <&gpio 10 GPIO_ACTIVE_LOW>;
};
};
sound/soc/codecs/pcm186x.c
View file @
b5e806ae
...
@@ -42,7 +42,7 @@ struct pcm186x_priv {
...
@@ -42,7 +42,7 @@ struct pcm186x_priv {
bool
is_master_mode
;
bool
is_master_mode
;
};
};
static
const
DECLARE_TLV_DB_SCALE
(
pcm186x_pga_tlv
,
-
1200
,
4000
,
5
0
);
static
const
DECLARE_TLV_DB_SCALE
(
pcm186x_pga_tlv
,
-
1200
,
50
,
0
);
static
const
struct
snd_kcontrol_new
pcm1863_snd_controls
[]
=
{
static
const
struct
snd_kcontrol_new
pcm1863_snd_controls
[]
=
{
SOC_DOUBLE_R_S_TLV
(
"ADC Capture Volume"
,
PCM186X_PGA_VAL_CH1_L
,
SOC_DOUBLE_R_S_TLV
(
"ADC Capture Volume"
,
PCM186X_PGA_VAL_CH1_L
,
...
@@ -158,7 +158,7 @@ static const struct snd_soc_dapm_widget pcm1863_dapm_widgets[] = {
...
@@ -158,7 +158,7 @@ static const struct snd_soc_dapm_widget pcm1863_dapm_widgets[] = {
* Put the codec into SLEEP mode when not in use, allowing the
* Put the codec into SLEEP mode when not in use, allowing the
* Energysense mechanism to operate.
* Energysense mechanism to operate.
*/
*/
SND_SOC_DAPM_ADC
(
"ADC"
,
"HiFi Capture"
,
PCM186X_POWER_CTRL
,
1
,
0
),
SND_SOC_DAPM_ADC
(
"ADC"
,
"HiFi Capture"
,
PCM186X_POWER_CTRL
,
1
,
1
),
};
};
static
const
struct
snd_soc_dapm_widget
pcm1865_dapm_widgets
[]
=
{
static
const
struct
snd_soc_dapm_widget
pcm1865_dapm_widgets
[]
=
{
...
@@ -184,8 +184,8 @@ static const struct snd_soc_dapm_widget pcm1865_dapm_widgets[] = {
...
@@ -184,8 +184,8 @@ static const struct snd_soc_dapm_widget pcm1865_dapm_widgets[] = {
* Put the codec into SLEEP mode when not in use, allowing the
* Put the codec into SLEEP mode when not in use, allowing the
* Energysense mechanism to operate.
* Energysense mechanism to operate.
*/
*/
SND_SOC_DAPM_ADC
(
"ADC1"
,
"HiFi Capture 1"
,
PCM186X_POWER_CTRL
,
1
,
0
),
SND_SOC_DAPM_ADC
(
"ADC1"
,
"HiFi Capture 1"
,
PCM186X_POWER_CTRL
,
1
,
1
),
SND_SOC_DAPM_ADC
(
"ADC2"
,
"HiFi Capture 2"
,
PCM186X_POWER_CTRL
,
1
,
0
),
SND_SOC_DAPM_ADC
(
"ADC2"
,
"HiFi Capture 2"
,
PCM186X_POWER_CTRL
,
1
,
1
),
};
};
static
const
struct
snd_soc_dapm_route
pcm1863_dapm_routes
[]
=
{
static
const
struct
snd_soc_dapm_route
pcm1863_dapm_routes
[]
=
{
...
...
sound/soc/codecs/wm_adsp.c
View file @
b5e806ae
...
@@ -3422,6 +3422,23 @@ static int wm_adsp_buffer_free(struct wm_adsp *dsp)
...
@@ -3422,6 +3422,23 @@ static int wm_adsp_buffer_free(struct wm_adsp *dsp)
return
0
;
return
0
;
}
}
static
int
wm_adsp_buffer_get_error
(
struct
wm_adsp_compr_buf
*
buf
)
{
int
ret
;
ret
=
wm_adsp_buffer_read
(
buf
,
HOST_BUFFER_FIELD
(
error
),
&
buf
->
error
);
if
(
ret
<
0
)
{
adsp_err
(
buf
->
dsp
,
"Failed to check buffer error: %d
\n
"
,
ret
);
return
ret
;
}
if
(
buf
->
error
!=
0
)
{
adsp_err
(
buf
->
dsp
,
"Buffer error occurred: %d
\n
"
,
buf
->
error
);
return
-
EIO
;
}
return
0
;
}
int
wm_adsp_compr_trigger
(
struct
snd_compr_stream
*
stream
,
int
cmd
)
int
wm_adsp_compr_trigger
(
struct
snd_compr_stream
*
stream
,
int
cmd
)
{
{
struct
wm_adsp_compr
*
compr
=
stream
->
runtime
->
private_data
;
struct
wm_adsp_compr
*
compr
=
stream
->
runtime
->
private_data
;
...
@@ -3443,6 +3460,10 @@ int wm_adsp_compr_trigger(struct snd_compr_stream *stream, int cmd)
...
@@ -3443,6 +3460,10 @@ int wm_adsp_compr_trigger(struct snd_compr_stream *stream, int cmd)
}
}
}
}
ret
=
wm_adsp_buffer_get_error
(
compr
->
buf
);
if
(
ret
<
0
)
break
;
wm_adsp_buffer_clear
(
compr
->
buf
);
wm_adsp_buffer_clear
(
compr
->
buf
);
/* Trigger the IRQ at one fragment of data */
/* Trigger the IRQ at one fragment of data */
...
@@ -3518,23 +3539,6 @@ static int wm_adsp_buffer_update_avail(struct wm_adsp_compr_buf *buf)
...
@@ -3518,23 +3539,6 @@ static int wm_adsp_buffer_update_avail(struct wm_adsp_compr_buf *buf)
return
0
;
return
0
;
}
}
static
int
wm_adsp_buffer_get_error
(
struct
wm_adsp_compr_buf
*
buf
)
{
int
ret
;
ret
=
wm_adsp_buffer_read
(
buf
,
HOST_BUFFER_FIELD
(
error
),
&
buf
->
error
);
if
(
ret
<
0
)
{
adsp_err
(
buf
->
dsp
,
"Failed to check buffer error: %d
\n
"
,
ret
);
return
ret
;
}
if
(
buf
->
error
!=
0
)
{
adsp_err
(
buf
->
dsp
,
"Buffer error occurred: %d
\n
"
,
buf
->
error
);
return
-
EIO
;
}
return
0
;
}
int
wm_adsp_compr_handle_irq
(
struct
wm_adsp
*
dsp
)
int
wm_adsp_compr_handle_irq
(
struct
wm_adsp
*
dsp
)
{
{
struct
wm_adsp_compr_buf
*
buf
;
struct
wm_adsp_compr_buf
*
buf
;
...
...
sound/soc/fsl/fsl_esai.c
View file @
b5e806ae
...
@@ -398,7 +398,8 @@ static int fsl_esai_set_dai_fmt(struct snd_soc_dai *dai, unsigned int fmt)
...
@@ -398,7 +398,8 @@ static int fsl_esai_set_dai_fmt(struct snd_soc_dai *dai, unsigned int fmt)
break
;
break
;
case
SND_SOC_DAIFMT_RIGHT_J
:
case
SND_SOC_DAIFMT_RIGHT_J
:
/* Data on rising edge of bclk, frame high, right aligned */
/* Data on rising edge of bclk, frame high, right aligned */
xccr
|=
ESAI_xCCR_xCKP
|
ESAI_xCCR_xHCKP
|
ESAI_xCR_xWA
;
xccr
|=
ESAI_xCCR_xCKP
|
ESAI_xCCR_xHCKP
;
xcr
|=
ESAI_xCR_xWA
;
break
;
break
;
case
SND_SOC_DAIFMT_DSP_A
:
case
SND_SOC_DAIFMT_DSP_A
:
/* Data on rising edge of bclk, frame high, 1clk before data */
/* Data on rising edge of bclk, frame high, 1clk before data */
...
@@ -455,12 +456,12 @@ static int fsl_esai_set_dai_fmt(struct snd_soc_dai *dai, unsigned int fmt)
...
@@ -455,12 +456,12 @@ static int fsl_esai_set_dai_fmt(struct snd_soc_dai *dai, unsigned int fmt)
return
-
EINVAL
;
return
-
EINVAL
;
}
}
mask
=
ESAI_xCR_xFSL
|
ESAI_xCR_xFSR
;
mask
=
ESAI_xCR_xFSL
|
ESAI_xCR_xFSR
|
ESAI_xCR_xWA
;
regmap_update_bits
(
esai_priv
->
regmap
,
REG_ESAI_TCR
,
mask
,
xcr
);
regmap_update_bits
(
esai_priv
->
regmap
,
REG_ESAI_TCR
,
mask
,
xcr
);
regmap_update_bits
(
esai_priv
->
regmap
,
REG_ESAI_RCR
,
mask
,
xcr
);
regmap_update_bits
(
esai_priv
->
regmap
,
REG_ESAI_RCR
,
mask
,
xcr
);
mask
=
ESAI_xCCR_xCKP
|
ESAI_xCCR_xHCKP
|
ESAI_xCCR_xFSP
|
mask
=
ESAI_xCCR_xCKP
|
ESAI_xCCR_xHCKP
|
ESAI_xCCR_xFSP
|
ESAI_xCCR_xFSD
|
ESAI_xCCR_xCKD
|
ESAI_xCR_xWA
;
ESAI_xCCR_xFSD
|
ESAI_xCCR_xCKD
;
regmap_update_bits
(
esai_priv
->
regmap
,
REG_ESAI_TCCR
,
mask
,
xccr
);
regmap_update_bits
(
esai_priv
->
regmap
,
REG_ESAI_TCCR
,
mask
,
xccr
);
regmap_update_bits
(
esai_priv
->
regmap
,
REG_ESAI_RCCR
,
mask
,
xccr
);
regmap_update_bits
(
esai_priv
->
regmap
,
REG_ESAI_RCCR
,
mask
,
xccr
);
...
...
sound/soc/sh/rcar/gen.c
View file @
b5e806ae
...
@@ -255,6 +255,30 @@ static int rsnd_gen2_probe(struct rsnd_priv *priv)
...
@@ -255,6 +255,30 @@ static int rsnd_gen2_probe(struct rsnd_priv *priv)
RSND_GEN_M_REG
(
SSI_MODE
,
0xc
,
0x80
),
RSND_GEN_M_REG
(
SSI_MODE
,
0xc
,
0x80
),
RSND_GEN_M_REG
(
SSI_CTRL
,
0x10
,
0x80
),
RSND_GEN_M_REG
(
SSI_CTRL
,
0x10
,
0x80
),
RSND_GEN_M_REG
(
SSI_INT_ENABLE
,
0x18
,
0x80
),
RSND_GEN_M_REG
(
SSI_INT_ENABLE
,
0x18
,
0x80
),
RSND_GEN_S_REG
(
SSI9_BUSIF0_MODE
,
0x48c
),
RSND_GEN_S_REG
(
SSI9_BUSIF0_ADINR
,
0x484
),
RSND_GEN_S_REG
(
SSI9_BUSIF0_DALIGN
,
0x488
),
RSND_GEN_S_REG
(
SSI9_BUSIF1_MODE
,
0x4a0
),
RSND_GEN_S_REG
(
SSI9_BUSIF1_ADINR
,
0x4a4
),
RSND_GEN_S_REG
(
SSI9_BUSIF1_DALIGN
,
0x4a8
),
RSND_GEN_S_REG
(
SSI9_BUSIF2_MODE
,
0x4c0
),
RSND_GEN_S_REG
(
SSI9_BUSIF2_ADINR
,
0x4c4
),
RSND_GEN_S_REG
(
SSI9_BUSIF2_DALIGN
,
0x4c8
),
RSND_GEN_S_REG
(
SSI9_BUSIF3_MODE
,
0x4e0
),
RSND_GEN_S_REG
(
SSI9_BUSIF3_ADINR
,
0x4e4
),
RSND_GEN_S_REG
(
SSI9_BUSIF3_DALIGN
,
0x4e8
),
RSND_GEN_S_REG
(
SSI9_BUSIF4_MODE
,
0xd80
),
RSND_GEN_S_REG
(
SSI9_BUSIF4_ADINR
,
0xd84
),
RSND_GEN_S_REG
(
SSI9_BUSIF4_DALIGN
,
0xd88
),
RSND_GEN_S_REG
(
SSI9_BUSIF5_MODE
,
0xda0
),
RSND_GEN_S_REG
(
SSI9_BUSIF5_ADINR
,
0xda4
),
RSND_GEN_S_REG
(
SSI9_BUSIF5_DALIGN
,
0xda8
),
RSND_GEN_S_REG
(
SSI9_BUSIF6_MODE
,
0xdc0
),
RSND_GEN_S_REG
(
SSI9_BUSIF6_ADINR
,
0xdc4
),
RSND_GEN_S_REG
(
SSI9_BUSIF6_DALIGN
,
0xdc8
),
RSND_GEN_S_REG
(
SSI9_BUSIF7_MODE
,
0xde0
),
RSND_GEN_S_REG
(
SSI9_BUSIF7_ADINR
,
0xde4
),
RSND_GEN_S_REG
(
SSI9_BUSIF7_DALIGN
,
0xde8
),
};
};
static
const
struct
rsnd_regmap_field_conf
conf_scu
[]
=
{
static
const
struct
rsnd_regmap_field_conf
conf_scu
[]
=
{
...
...
sound/soc/sh/rcar/rsnd.h
View file @
b5e806ae
...
@@ -191,6 +191,30 @@ enum rsnd_reg {
...
@@ -191,6 +191,30 @@ enum rsnd_reg {
SSI_SYS_STATUS7
,
SSI_SYS_STATUS7
,
HDMI0_SEL
,
HDMI0_SEL
,
HDMI1_SEL
,
HDMI1_SEL
,
SSI9_BUSIF0_MODE
,
SSI9_BUSIF1_MODE
,
SSI9_BUSIF2_MODE
,
SSI9_BUSIF3_MODE
,
SSI9_BUSIF4_MODE
,
SSI9_BUSIF5_MODE
,
SSI9_BUSIF6_MODE
,
SSI9_BUSIF7_MODE
,
SSI9_BUSIF0_ADINR
,
SSI9_BUSIF1_ADINR
,
SSI9_BUSIF2_ADINR
,
SSI9_BUSIF3_ADINR
,
SSI9_BUSIF4_ADINR
,
SSI9_BUSIF5_ADINR
,
SSI9_BUSIF6_ADINR
,
SSI9_BUSIF7_ADINR
,
SSI9_BUSIF0_DALIGN
,
SSI9_BUSIF1_DALIGN
,
SSI9_BUSIF2_DALIGN
,
SSI9_BUSIF3_DALIGN
,
SSI9_BUSIF4_DALIGN
,
SSI9_BUSIF5_DALIGN
,
SSI9_BUSIF6_DALIGN
,
SSI9_BUSIF7_DALIGN
,
/* SSI */
/* SSI */
SSICR
,
SSICR
,
...
@@ -209,6 +233,9 @@ enum rsnd_reg {
...
@@ -209,6 +233,9 @@ enum rsnd_reg {
#define SSI_BUSIF_MODE(i) (SSI_BUSIF0_MODE + (i))
#define SSI_BUSIF_MODE(i) (SSI_BUSIF0_MODE + (i))
#define SSI_BUSIF_ADINR(i) (SSI_BUSIF0_ADINR + (i))
#define SSI_BUSIF_ADINR(i) (SSI_BUSIF0_ADINR + (i))
#define SSI_BUSIF_DALIGN(i) (SSI_BUSIF0_DALIGN + (i))
#define SSI_BUSIF_DALIGN(i) (SSI_BUSIF0_DALIGN + (i))
#define SSI9_BUSIF_MODE(i) (SSI9_BUSIF0_MODE + (i))
#define SSI9_BUSIF_ADINR(i) (SSI9_BUSIF0_ADINR + (i))
#define SSI9_BUSIF_DALIGN(i) (SSI9_BUSIF0_DALIGN + (i))
#define SSI_SYS_STATUS(i) (SSI_SYS_STATUS0 + (i))
#define SSI_SYS_STATUS(i) (SSI_SYS_STATUS0 + (i))
...
...
sound/soc/sh/rcar/ssiu.c
View file @
b5e806ae
...
@@ -181,28 +181,26 @@ static int rsnd_ssiu_init_gen2(struct rsnd_mod *mod,
...
@@ -181,28 +181,26 @@ static int rsnd_ssiu_init_gen2(struct rsnd_mod *mod,
if
(
rsnd_ssi_use_busif
(
io
))
{
if
(
rsnd_ssi_use_busif
(
io
))
{
int
id
=
rsnd_mod_id
(
mod
);
int
id
=
rsnd_mod_id
(
mod
);
int
busif
=
rsnd_mod_id_sub
(
mod
);
int
busif
=
rsnd_mod_id_sub
(
mod
);
enum
rsnd_reg
adinr_reg
,
mode_reg
,
dalign_reg
;
/*
* FIXME
*
* We can't support SSI9-4/5/6/7, because its address is
* out of calculation rule
*/
if
((
id
==
9
)
&&
(
busif
>=
4
))
{
if
((
id
==
9
)
&&
(
busif
>=
4
))
{
struct
device
*
dev
=
rsnd_priv_to_dev
(
priv
);
adinr_reg
=
SSI9_BUSIF_ADINR
(
busif
);
mode_reg
=
SSI9_BUSIF_MODE
(
busif
);
dev_err
(
dev
,
"This driver doesn't support SSI%d-%d, so far"
,
dalign_reg
=
SSI9_BUSIF_DALIGN
(
busif
);
id
,
busif
);
}
else
{
adinr_reg
=
SSI_BUSIF_ADINR
(
busif
);
mode_reg
=
SSI_BUSIF_MODE
(
busif
);
dalign_reg
=
SSI_BUSIF_DALIGN
(
busif
);
}
}
rsnd_mod_write
(
mod
,
SSI_BUSIF_ADINR
(
busif
)
,
rsnd_mod_write
(
mod
,
adinr_reg
,
rsnd_get_adinr_bit
(
mod
,
io
)
|
rsnd_get_adinr_bit
(
mod
,
io
)
|
(
rsnd_io_is_play
(
io
)
?
(
rsnd_io_is_play
(
io
)
?
rsnd_runtime_channel_after_ctu
(
io
)
:
rsnd_runtime_channel_after_ctu
(
io
)
:
rsnd_runtime_channel_original
(
io
)));
rsnd_runtime_channel_original
(
io
)));
rsnd_mod_write
(
mod
,
SSI_BUSIF_MODE
(
busif
)
,
rsnd_mod_write
(
mod
,
mode_reg
,
rsnd_get_busif_shift
(
io
,
mod
)
|
1
);
rsnd_get_busif_shift
(
io
,
mod
)
|
1
);
rsnd_mod_write
(
mod
,
SSI_BUSIF_DALIGN
(
busif
)
,
rsnd_mod_write
(
mod
,
dalign_reg
,
rsnd_get_dalign
(
mod
,
io
));
rsnd_get_dalign
(
mod
,
io
));
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment