Skip to content

Commit 43fbb2c

Browse files
committed
ASoC: loongson: Simplify code formatting
Merge series from Binbin Zhou <zhoubinbin@loongson.cn>: This patchset attempts to improve code readability by simplifying code formatting. No functional changes.
2 parents 130af75 + 4c22b04 commit 43fbb2c

5 files changed

Lines changed: 157 additions & 159 deletions

File tree

sound/soc/loongson/loongson_card.c

Lines changed: 62 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -24,27 +24,27 @@ static int loongson_card_hw_params(struct snd_pcm_substream *substream,
2424
struct snd_pcm_hw_params *params)
2525
{
2626
struct snd_soc_pcm_runtime *rtd = snd_soc_substream_to_rtd(substream);
27-
struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(rtd, 0);
28-
struct snd_soc_dai *codec_dai = snd_soc_rtd_to_codec(rtd, 0);
2927
struct loongson_card_data *ls_card = snd_soc_card_get_drvdata(rtd->card);
28+
struct snd_soc_dai *codec_dai = snd_soc_rtd_to_codec(rtd, 0);
29+
struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(rtd, 0);
3030
int ret, mclk;
3131

32-
if (ls_card->mclk_fs) {
33-
mclk = ls_card->mclk_fs * params_rate(params);
34-
ret = snd_soc_dai_set_sysclk(cpu_dai, 0, mclk,
35-
SND_SOC_CLOCK_OUT);
36-
if (ret < 0) {
37-
dev_err(codec_dai->dev, "cpu_dai clock not set\n");
38-
return ret;
39-
}
32+
if (!ls_card->mclk_fs)
33+
return 0;
4034

41-
ret = snd_soc_dai_set_sysclk(codec_dai, 0, mclk,
42-
SND_SOC_CLOCK_IN);
43-
if (ret < 0) {
44-
dev_err(codec_dai->dev, "codec_dai clock not set\n");
45-
return ret;
46-
}
35+
mclk = ls_card->mclk_fs * params_rate(params);
36+
ret = snd_soc_dai_set_sysclk(cpu_dai, 0, mclk, SND_SOC_CLOCK_OUT);
37+
if (ret < 0) {
38+
dev_err(codec_dai->dev, "cpu_dai clock not set\n");
39+
return ret;
40+
}
41+
42+
ret = snd_soc_dai_set_sysclk(codec_dai, 0, mclk, SND_SOC_CLOCK_IN);
43+
if (ret < 0) {
44+
dev_err(codec_dai->dev, "codec_dai clock not set\n");
45+
return ret;
4746
}
47+
4848
return 0;
4949
}
5050

@@ -68,46 +68,53 @@ static struct snd_soc_dai_link loongson_dai_links[] = {
6868
},
6969
};
7070

71-
static int loongson_card_parse_acpi(struct loongson_card_data *data)
71+
static struct acpi_device *loongson_card_acpi_find_device(struct snd_soc_card *card,
72+
const char *name)
7273
{
73-
struct snd_soc_card *card = &data->snd_card;
7474
struct fwnode_handle *fwnode = card->dev->fwnode;
7575
struct fwnode_reference_args args;
76+
int status;
77+
78+
memset(&args, 0, sizeof(args));
79+
status = acpi_node_get_property_reference(fwnode, name, 0, &args);
80+
if (status || !is_acpi_device_node(args.fwnode)) {
81+
dev_err(card->dev, "No matching phy in ACPI table\n");
82+
return NULL;
83+
}
84+
85+
return to_acpi_device_node(args.fwnode);
86+
}
87+
88+
static int loongson_card_parse_acpi(struct loongson_card_data *data)
89+
{
90+
struct snd_soc_card *card = &data->snd_card;
7691
const char *codec_dai_name;
7792
struct acpi_device *adev;
7893
struct device *phy_dev;
79-
int ret, i;
94+
int i;
8095

8196
/* fixup platform name based on reference node */
82-
memset(&args, 0, sizeof(args));
83-
ret = acpi_node_get_property_reference(fwnode, "cpu", 0, &args);
84-
if (ret || !is_acpi_device_node(args.fwnode)) {
85-
dev_err(card->dev, "No matching phy in ACPI table\n");
86-
return ret ?: -ENOENT;
87-
}
88-
adev = to_acpi_device_node(args.fwnode);
97+
adev = loongson_card_acpi_find_device(card, "cpu");
98+
if (!adev)
99+
return -ENOENT;
100+
89101
phy_dev = acpi_get_first_physical_node(adev);
90102
if (!phy_dev)
91103
return -EPROBE_DEFER;
92-
for (i = 0; i < card->num_links; i++)
93-
loongson_dai_links[i].platforms->name = dev_name(phy_dev);
94104

95105
/* fixup codec name based on reference node */
96-
memset(&args, 0, sizeof(args));
97-
ret = acpi_node_get_property_reference(fwnode, "codec", 0, &args);
98-
if (ret || !is_acpi_device_node(args.fwnode)) {
99-
dev_err(card->dev, "No matching phy in ACPI table\n");
100-
return ret ?: -ENOENT;
101-
}
102-
adev = to_acpi_device_node(args.fwnode);
106+
adev = loongson_card_acpi_find_device(card, "codec");
107+
if (!adev)
108+
return -ENOENT;
103109
snprintf(codec_name, sizeof(codec_name), "i2c-%s", acpi_dev_name(adev));
104-
for (i = 0; i < card->num_links; i++)
105-
loongson_dai_links[i].codecs->name = codec_name;
106110

107-
device_property_read_string(card->dev, "codec-dai-name",
108-
&codec_dai_name);
109-
for (i = 0; i < card->num_links; i++)
111+
device_property_read_string(card->dev, "codec-dai-name", &codec_dai_name);
112+
113+
for (i = 0; i < card->num_links; i++) {
114+
loongson_dai_links[i].platforms->name = dev_name(phy_dev);
115+
loongson_dai_links[i].codecs->name = codec_name;
110116
loongson_dai_links[i].codecs->dai_name = codec_dai_name;
117+
}
111118

112119
return 0;
113120
}
@@ -159,40 +166,36 @@ static int loongson_card_parse_of(struct loongson_card_data *data)
159166
static int loongson_asoc_card_probe(struct platform_device *pdev)
160167
{
161168
struct loongson_card_data *ls_priv;
169+
struct device *dev = &pdev->dev;
162170
struct snd_soc_card *card;
163171
int ret;
164172

165-
ls_priv = devm_kzalloc(&pdev->dev, sizeof(*ls_priv), GFP_KERNEL);
173+
ls_priv = devm_kzalloc(dev, sizeof(*ls_priv), GFP_KERNEL);
166174
if (!ls_priv)
167175
return -ENOMEM;
168176

169177
card = &ls_priv->snd_card;
170178

171-
card->dev = &pdev->dev;
179+
card->dev = dev;
172180
card->owner = THIS_MODULE;
173181
card->dai_link = loongson_dai_links;
174182
card->num_links = ARRAY_SIZE(loongson_dai_links);
175183
snd_soc_card_set_drvdata(card, ls_priv);
176184

177-
ret = device_property_read_string(&pdev->dev, "model", &card->name);
178-
if (ret) {
179-
dev_err(&pdev->dev, "Error parsing card name: %d\n", ret);
180-
return ret;
181-
}
182-
ret = device_property_read_u32(&pdev->dev, "mclk-fs", &ls_priv->mclk_fs);
183-
if (ret) {
184-
dev_err(&pdev->dev, "Error parsing mclk-fs: %d\n", ret);
185-
return ret;
186-
}
185+
ret = device_property_read_string(dev, "model", &card->name);
186+
if (ret)
187+
dev_err_probe(dev, ret, "Error parsing card name\n");
187188

188-
if (has_acpi_companion(&pdev->dev))
189-
ret = loongson_card_parse_acpi(ls_priv);
190-
else
191-
ret = loongson_card_parse_of(ls_priv);
192-
if (ret < 0)
193-
return ret;
189+
ret = device_property_read_u32(dev, "mclk-fs", &ls_priv->mclk_fs);
190+
if (ret)
191+
dev_err_probe(dev, ret, "Error parsing mclk-fs\n");
192+
193+
ret = has_acpi_companion(dev) ? loongson_card_parse_acpi(ls_priv)
194+
: loongson_card_parse_of(ls_priv);
195+
if (ret)
196+
dev_err_probe(dev, ret, "Error parsing acpi/of properties\n");
194197

195-
return devm_snd_soc_register_card(&pdev->dev, card);
198+
return devm_snd_soc_register_card(dev, card);
196199
}
197200

198201
static const struct of_device_id loongson_asoc_dt_ids[] = {

sound/soc/loongson/loongson_dma.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@
1717
#include "loongson_i2s.h"
1818

1919
/* DMA dma_order Register */
20-
#define DMA_ORDER_STOP (1 << 4) /* DMA stop */
21-
#define DMA_ORDER_START (1 << 3) /* DMA start */
22-
#define DMA_ORDER_ASK_VALID (1 << 2) /* DMA ask valid flag */
23-
#define DMA_ORDER_AXI_UNCO (1 << 1) /* Uncache access */
24-
#define DMA_ORDER_ADDR_64 (1 << 0) /* 64bits address support */
20+
#define DMA_ORDER_STOP BIT(4) /* DMA stop */
21+
#define DMA_ORDER_START BIT(3) /* DMA start */
22+
#define DMA_ORDER_ASK_VALID BIT(2) /* DMA ask valid flag */
23+
#define DMA_ORDER_AXI_UNCO BIT(1) /* Uncache access */
24+
#define DMA_ORDER_ADDR_64 BIT(0) /* 64bits address support */
2525

2626
#define DMA_ORDER_ASK_MASK (~0x1fUL) /* Ask addr mask */
2727
#define DMA_ORDER_CTRL_MASK (0x0fUL) /* Control mask */

sound/soc/loongson/loongson_i2s.c

Lines changed: 57 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -21,34 +21,33 @@
2121
SNDRV_PCM_FMTBIT_S20_3LE | \
2222
SNDRV_PCM_FMTBIT_S24_LE)
2323

24+
#define LOONGSON_I2S_TX_ENABLE (I2S_CTRL_TX_EN | I2S_CTRL_TX_DMA_EN)
25+
#define LOONGSON_I2S_RX_ENABLE (I2S_CTRL_RX_EN | I2S_CTRL_RX_DMA_EN)
26+
27+
#define LOONGSON_I2S_DEF_DELAY 10
28+
#define LOONGSON_I2S_DEF_TIMEOUT 500000
29+
2430
static int loongson_i2s_trigger(struct snd_pcm_substream *substream, int cmd,
2531
struct snd_soc_dai *dai)
2632
{
2733
struct loongson_i2s *i2s = snd_soc_dai_get_drvdata(dai);
34+
unsigned int mask;
2835
int ret = 0;
2936

3037
switch (cmd) {
3138
case SNDRV_PCM_TRIGGER_START:
3239
case SNDRV_PCM_TRIGGER_RESUME:
3340
case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
34-
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
35-
regmap_update_bits(i2s->regmap, LS_I2S_CTRL,
36-
I2S_CTRL_TX_EN | I2S_CTRL_TX_DMA_EN,
37-
I2S_CTRL_TX_EN | I2S_CTRL_TX_DMA_EN);
38-
else
39-
regmap_update_bits(i2s->regmap, LS_I2S_CTRL,
40-
I2S_CTRL_RX_EN | I2S_CTRL_RX_DMA_EN,
41-
I2S_CTRL_RX_EN | I2S_CTRL_RX_DMA_EN);
41+
mask = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) ?
42+
LOONGSON_I2S_TX_ENABLE : LOONGSON_I2S_RX_ENABLE;
43+
regmap_update_bits(i2s->regmap, LS_I2S_CTRL, mask, mask);
4244
break;
4345
case SNDRV_PCM_TRIGGER_STOP:
4446
case SNDRV_PCM_TRIGGER_SUSPEND:
4547
case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
46-
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
47-
regmap_update_bits(i2s->regmap, LS_I2S_CTRL,
48-
I2S_CTRL_TX_EN | I2S_CTRL_TX_DMA_EN, 0);
49-
else
50-
regmap_update_bits(i2s->regmap, LS_I2S_CTRL,
51-
I2S_CTRL_RX_EN | I2S_CTRL_RX_DMA_EN, 0);
48+
mask = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) ?
49+
LOONGSON_I2S_TX_ENABLE : LOONGSON_I2S_RX_ENABLE;
50+
regmap_update_bits(i2s->regmap, LS_I2S_CTRL, mask, 0);
5251
break;
5352
default:
5453
ret = -EINVAL;
@@ -123,10 +122,40 @@ static int loongson_i2s_set_dai_sysclk(struct snd_soc_dai *dai, int clk_id,
123122
return 0;
124123
}
125124

125+
static int loongson_i2s_enable_mclk(struct loongson_i2s *i2s)
126+
{
127+
u32 val;
128+
129+
if (i2s->rev_id == 0)
130+
return 0;
131+
132+
regmap_update_bits(i2s->regmap, LS_I2S_CTRL,
133+
I2S_CTRL_MCLK_EN, I2S_CTRL_MCLK_EN);
134+
135+
return regmap_read_poll_timeout_atomic(i2s->regmap,
136+
LS_I2S_CTRL, val,
137+
val & I2S_CTRL_MCLK_READY,
138+
LOONGSON_I2S_DEF_DELAY,
139+
LOONGSON_I2S_DEF_TIMEOUT);
140+
}
141+
142+
static int loongson_i2s_enable_bclk(struct loongson_i2s *i2s)
143+
{
144+
u32 val;
145+
146+
if (i2s->rev_id == 0)
147+
return 0;
148+
149+
return regmap_read_poll_timeout_atomic(i2s->regmap,
150+
LS_I2S_CTRL, val,
151+
val & I2S_CTRL_CLK_READY,
152+
LOONGSON_I2S_DEF_DELAY,
153+
LOONGSON_I2S_DEF_TIMEOUT);
154+
}
155+
126156
static int loongson_i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
127157
{
128158
struct loongson_i2s *i2s = snd_soc_dai_get_drvdata(dai);
129-
u32 val;
130159
int ret;
131160

132161
switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
@@ -148,54 +177,29 @@ static int loongson_i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
148177
/* Enable master mode */
149178
regmap_update_bits(i2s->regmap, LS_I2S_CTRL, I2S_CTRL_MASTER,
150179
I2S_CTRL_MASTER);
151-
if (i2s->rev_id == 1) {
152-
ret = regmap_read_poll_timeout_atomic(i2s->regmap,
153-
LS_I2S_CTRL, val,
154-
val & I2S_CTRL_CLK_READY,
155-
10, 500000);
156-
if (ret < 0)
157-
dev_warn(dai->dev, "wait BCLK ready timeout\n");
158-
}
180+
ret = loongson_i2s_enable_bclk(i2s);
181+
if (ret < 0)
182+
dev_warn(dai->dev, "wait BCLK ready timeout\n");
159183
break;
160184
case SND_SOC_DAIFMT_BC_FP:
161185
/* Enable MCLK */
162-
if (i2s->rev_id == 1) {
163-
regmap_update_bits(i2s->regmap, LS_I2S_CTRL,
164-
I2S_CTRL_MCLK_EN,
165-
I2S_CTRL_MCLK_EN);
166-
ret = regmap_read_poll_timeout_atomic(i2s->regmap,
167-
LS_I2S_CTRL, val,
168-
val & I2S_CTRL_MCLK_READY,
169-
10, 500000);
170-
if (ret < 0)
171-
dev_warn(dai->dev, "wait MCLK ready timeout\n");
172-
}
186+
ret = loongson_i2s_enable_mclk(i2s);
187+
if (ret < 0)
188+
dev_warn(dai->dev, "wait MCLK ready timeout\n");
173189
break;
174190
case SND_SOC_DAIFMT_BP_FP:
175191
/* Enable MCLK */
176-
if (i2s->rev_id == 1) {
177-
regmap_update_bits(i2s->regmap, LS_I2S_CTRL,
178-
I2S_CTRL_MCLK_EN,
179-
I2S_CTRL_MCLK_EN);
180-
ret = regmap_read_poll_timeout_atomic(i2s->regmap,
181-
LS_I2S_CTRL, val,
182-
val & I2S_CTRL_MCLK_READY,
183-
10, 500000);
184-
if (ret < 0)
185-
dev_warn(dai->dev, "wait MCLK ready timeout\n");
186-
}
192+
ret = loongson_i2s_enable_mclk(i2s);
193+
if (ret < 0)
194+
dev_warn(dai->dev, "wait MCLK ready timeout\n");
187195

188196
/* Enable master mode */
189197
regmap_update_bits(i2s->regmap, LS_I2S_CTRL, I2S_CTRL_MASTER,
190198
I2S_CTRL_MASTER);
191-
if (i2s->rev_id == 1) {
192-
ret = regmap_read_poll_timeout_atomic(i2s->regmap,
193-
LS_I2S_CTRL, val,
194-
val & I2S_CTRL_CLK_READY,
195-
10, 500000);
196-
if (ret < 0)
197-
dev_warn(dai->dev, "wait BCLK ready timeout\n");
198-
}
199+
200+
ret = loongson_i2s_enable_bclk(i2s);
201+
if (ret < 0)
202+
dev_warn(dai->dev, "wait BCLK ready timeout\n");
199203
break;
200204
default:
201205
return -EINVAL;

sound/soc/loongson/loongson_i2s.h

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,18 @@
2727
#define LS_I2S_RX_ORDER 0x110 /* RX DMA Order */
2828

2929
/* Loongson I2S Control Register */
30-
#define I2S_CTRL_MCLK_READY (1 << 16) /* MCLK ready */
31-
#define I2S_CTRL_MASTER (1 << 15) /* Master mode */
32-
#define I2S_CTRL_MSB (1 << 14) /* MSB bit order */
33-
#define I2S_CTRL_RX_EN (1 << 13) /* RX enable */
34-
#define I2S_CTRL_TX_EN (1 << 12) /* TX enable */
35-
#define I2S_CTRL_RX_DMA_EN (1 << 11) /* DMA RX enable */
36-
#define I2S_CTRL_CLK_READY (1 << 8) /* BCLK ready */
37-
#define I2S_CTRL_TX_DMA_EN (1 << 7) /* DMA TX enable */
38-
#define I2S_CTRL_RESET (1 << 4) /* Controller soft reset */
39-
#define I2S_CTRL_MCLK_EN (1 << 3) /* Enable MCLK */
40-
#define I2S_CTRL_RX_INT_EN (1 << 1) /* RX interrupt enable */
41-
#define I2S_CTRL_TX_INT_EN (1 << 0) /* TX interrupt enable */
30+
#define I2S_CTRL_MCLK_READY BIT(16) /* MCLK ready */
31+
#define I2S_CTRL_MASTER BIT(15) /* Master mode */
32+
#define I2S_CTRL_MSB BIT(14) /* MSB bit order */
33+
#define I2S_CTRL_RX_EN BIT(13) /* RX enable */
34+
#define I2S_CTRL_TX_EN BIT(12) /* TX enable */
35+
#define I2S_CTRL_RX_DMA_EN BIT(11) /* DMA RX enable */
36+
#define I2S_CTRL_CLK_READY BIT(8) /* BCLK ready */
37+
#define I2S_CTRL_TX_DMA_EN BIT(7) /* DMA TX enable */
38+
#define I2S_CTRL_RESET BIT(4) /* Controller soft reset */
39+
#define I2S_CTRL_MCLK_EN BIT(3) /* Enable MCLK */
40+
#define I2S_CTRL_RX_INT_EN BIT(1) /* RX interrupt enable */
41+
#define I2S_CTRL_TX_INT_EN BIT(0) /* TX interrupt enable */
4242

4343
#define LS_I2S_DRVNAME "loongson-i2s"
4444

0 commit comments

Comments
 (0)