Skip to content

Commit 4652f02

Browse files
Srinivas Kandagatlabroonie
authored andcommitted
ASoC: codecs: wcd-common: move WCD_SDW_CH to common
sdw_ch_info and WCD_SDW_CH macro is duplicated across wcd937x, wcd938x, wcd939x soundwire codec drivers. Move this to wcd common driver to remove this code duplication. Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> Link: https://patch.msgid.link/20250909121954.225833-9-srinivas.kandagatla@oss.qualcomm.com Signed-off-by: Mark Brown <broonie@kernel.org>
1 parent 4f16b63 commit 4652f02

10 files changed

Lines changed: 28 additions & 47 deletions

File tree

sound/soc/codecs/wcd-common.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,19 @@ enum sdw_slave_status;
1414

1515
#define WCD_MAX_MICBIAS 4
1616

17+
struct wcd_sdw_ch_info {
18+
int port_num;
19+
unsigned int ch_mask;
20+
unsigned int master_ch_mask;
21+
};
22+
23+
#define WCD_SDW_CH(id, pn, cmask) \
24+
[id] = { \
25+
.port_num = pn, \
26+
.ch_mask = cmask, \
27+
.master_ch_mask = cmask, \
28+
}
29+
1730
struct wcd_common {
1831
struct device *dev;
1932
int max_bias;

sound/soc/codecs/wcd937x-sdw.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
#include <sound/soc.h>
2020
#include "wcd937x.h"
2121

22-
static struct wcd937x_sdw_ch_info wcd937x_sdw_rx_ch_info[] = {
22+
static struct wcd_sdw_ch_info wcd937x_sdw_rx_ch_info[] = {
2323
WCD_SDW_CH(WCD937X_HPH_L, WCD937X_HPH_PORT, BIT(0)),
2424
WCD_SDW_CH(WCD937X_HPH_R, WCD937X_HPH_PORT, BIT(1)),
2525
WCD_SDW_CH(WCD937X_CLSH, WCD937X_CLSH_PORT, BIT(0)),
@@ -30,7 +30,7 @@ static struct wcd937x_sdw_ch_info wcd937x_sdw_rx_ch_info[] = {
3030
WCD_SDW_CH(WCD937X_DSD_R, WCD937X_DSD_PORT, BIT(1)),
3131
};
3232

33-
static struct wcd937x_sdw_ch_info wcd937x_sdw_tx_ch_info[] = {
33+
static struct wcd_sdw_ch_info wcd937x_sdw_tx_ch_info[] = {
3434
WCD_SDW_CH(WCD937X_ADC1, WCD937X_ADC_1_PORT, BIT(0)),
3535
WCD_SDW_CH(WCD937X_ADC2, WCD937X_ADC_2_3_PORT, BIT(0)),
3636
WCD_SDW_CH(WCD937X_ADC3, WCD937X_ADC_2_3_PORT, BIT(0)),

sound/soc/codecs/wcd937x.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1183,7 +1183,7 @@ static int wcd937x_codec_enable_micbias_pullup(struct snd_soc_dapm_widget *w,
11831183
static int wcd937x_connect_port(struct wcd937x_sdw_priv *wcd, u8 port_idx, u8 ch_id, bool enable)
11841184
{
11851185
struct sdw_port_config *port_config = &wcd->port_config[port_idx - 1];
1186-
const struct wcd937x_sdw_ch_info *ch_info = &wcd->ch_info[ch_id];
1186+
const struct wcd_sdw_ch_info *ch_info = &wcd->ch_info[ch_id];
11871187
u8 port_num = ch_info->port_num;
11881188
u8 ch_mask = ch_info->ch_mask;
11891189
u8 mstr_port_num, mstr_ch_mask;

sound/soc/codecs/wcd937x.h

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
#include <linux/soundwire/sdw.h>
99
#include <linux/soundwire/sdw_type.h>
10+
#include "wcd-common.h"
1011

1112
#define WCD937X_BASE_ADDRESS 0x3000
1213
#define WCD937X_ANA_BIAS 0x3001
@@ -507,26 +508,13 @@ enum wcd937x_rx_sdw_ports {
507508
WCD937X_MAX_SWR_PORTS = WCD937X_DSD_PORT,
508509
};
509510

510-
struct wcd937x_sdw_ch_info {
511-
int port_num;
512-
unsigned int ch_mask;
513-
unsigned int master_ch_mask;
514-
};
515-
516-
#define WCD_SDW_CH(id, pn, cmask) \
517-
[id] = { \
518-
.port_num = pn, \
519-
.ch_mask = cmask, \
520-
.master_ch_mask = cmask, \
521-
}
522-
523511
struct wcd937x_priv;
524512
struct wcd937x_sdw_priv {
525513
struct sdw_slave *sdev;
526514
struct sdw_stream_config sconfig;
527515
struct sdw_stream_runtime *sruntime;
528516
struct sdw_port_config port_config[WCD937X_MAX_SWR_PORTS];
529-
struct wcd937x_sdw_ch_info *ch_info;
517+
struct wcd_sdw_ch_info *ch_info;
530518
bool port_enable[WCD937X_MAX_SWR_CH_IDS];
531519
unsigned int master_channel_map[SDW_MAX_PORTS];
532520
int active_ports;

sound/soc/codecs/wcd938x-sdw.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,11 @@
1818
#include <sound/soc.h>
1919
#include <sound/soc-dapm.h>
2020
#include "wcd938x.h"
21+
#include "wcd-common.h"
2122

2223
#define SWRS_SCP_HOST_CLK_DIV2_CTL_BANK(m) (0xE0 + 0x10 * (m))
2324

24-
static const struct wcd938x_sdw_ch_info wcd938x_sdw_rx_ch_info[] = {
25+
static const struct wcd_sdw_ch_info wcd938x_sdw_rx_ch_info[] = {
2526
WCD_SDW_CH(WCD938X_HPH_L, WCD938X_HPH_PORT, BIT(0)),
2627
WCD_SDW_CH(WCD938X_HPH_R, WCD938X_HPH_PORT, BIT(1)),
2728
WCD_SDW_CH(WCD938X_CLSH, WCD938X_CLSH_PORT, BIT(0)),
@@ -32,7 +33,7 @@ static const struct wcd938x_sdw_ch_info wcd938x_sdw_rx_ch_info[] = {
3233
WCD_SDW_CH(WCD938X_DSD_R, WCD938X_DSD_PORT, BIT(1)),
3334
};
3435

35-
static const struct wcd938x_sdw_ch_info wcd938x_sdw_tx_ch_info[] = {
36+
static const struct wcd_sdw_ch_info wcd938x_sdw_tx_ch_info[] = {
3637
WCD_SDW_CH(WCD938X_ADC1, WCD938X_ADC_1_2_PORT, BIT(0)),
3738
WCD_SDW_CH(WCD938X_ADC2, WCD938X_ADC_1_2_PORT, BIT(1)),
3839
WCD_SDW_CH(WCD938X_ADC3, WCD938X_ADC_3_4_PORT, BIT(0)),

sound/soc/codecs/wcd938x.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,7 @@ static int wcd938x_io_init(struct wcd938x_priv *wcd938x)
394394

395395
}
396396

397-
static int wcd938x_sdw_connect_port(const struct wcd938x_sdw_ch_info *ch_info,
397+
static int wcd938x_sdw_connect_port(const struct wcd_sdw_ch_info *ch_info,
398398
struct sdw_port_config *port_config,
399399
u8 enable)
400400
{

sound/soc/codecs/wcd938x.h

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -587,17 +587,6 @@
587587

588588
#define WCD938X_MAX_SWR_CH_IDS 15
589589

590-
struct wcd938x_sdw_ch_info {
591-
int port_num;
592-
unsigned int ch_mask;
593-
};
594-
595-
#define WCD_SDW_CH(id, pn, cmask) \
596-
[id] = { \
597-
.port_num = pn, \
598-
.ch_mask = cmask, \
599-
}
600-
601590
enum wcd938x_tx_sdw_ports {
602591
WCD938X_ADC_1_2_PORT = 1,
603592
WCD938X_ADC_3_4_PORT,
@@ -649,7 +638,7 @@ struct wcd938x_sdw_priv {
649638
struct sdw_stream_config sconfig;
650639
struct sdw_stream_runtime *sruntime;
651640
struct sdw_port_config port_config[WCD938X_MAX_SWR_PORTS];
652-
const struct wcd938x_sdw_ch_info *ch_info;
641+
const struct wcd_sdw_ch_info *ch_info;
653642
bool port_enable[WCD938X_MAX_SWR_CH_IDS];
654643
int active_ports;
655644
bool is_tx;

sound/soc/codecs/wcd939x-sdw.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,11 @@
2020
#include <sound/soc.h>
2121
#include <sound/soc-dapm.h>
2222
#include "wcd939x.h"
23+
#include "wcd-common.h"
2324

2425
#define SWRS_SCP_HOST_CLK_DIV2_CTL_BANK(m) (0xE0 + 0x10 * (m))
2526

26-
static const struct wcd939x_sdw_ch_info wcd939x_sdw_rx_ch_info[] = {
27+
static const struct wcd_sdw_ch_info wcd939x_sdw_rx_ch_info[] = {
2728
WCD_SDW_CH(WCD939X_HPH_L, WCD939X_HPH_PORT, BIT(0)),
2829
WCD_SDW_CH(WCD939X_HPH_R, WCD939X_HPH_PORT, BIT(1)),
2930
WCD_SDW_CH(WCD939X_CLSH, WCD939X_CLSH_PORT, BIT(0)),
@@ -36,7 +37,7 @@ static const struct wcd939x_sdw_ch_info wcd939x_sdw_rx_ch_info[] = {
3637
WCD_SDW_CH(WCD939X_HIFI_PCM_R, WCD939X_HIFI_PCM_PORT, BIT(1)),
3738
};
3839

39-
static const struct wcd939x_sdw_ch_info wcd939x_sdw_tx_ch_info[] = {
40+
static const struct wcd_sdw_ch_info wcd939x_sdw_tx_ch_info[] = {
4041
WCD_SDW_CH(WCD939X_ADC1, WCD939X_ADC_1_4_PORT, BIT(0)),
4142
WCD_SDW_CH(WCD939X_ADC2, WCD939X_ADC_1_4_PORT, BIT(1)),
4243
WCD_SDW_CH(WCD939X_ADC3, WCD939X_ADC_1_4_PORT, BIT(2)),

sound/soc/codecs/wcd939x.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -413,7 +413,7 @@ static int wcd939x_io_init(struct snd_soc_component *component)
413413
return 0;
414414
}
415415

416-
static int wcd939x_sdw_connect_port(const struct wcd939x_sdw_ch_info *ch_info,
416+
static int wcd939x_sdw_connect_port(const struct wcd_sdw_ch_info *ch_info,
417417
struct sdw_port_config *port_config,
418418
u8 enable)
419419
{

sound/soc/codecs/wcd939x.h

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -844,17 +844,6 @@
844844

845845
#define WCD939X_MAX_SWR_CH_IDS (15)
846846

847-
struct wcd939x_sdw_ch_info {
848-
int port_num;
849-
unsigned int ch_mask;
850-
};
851-
852-
#define WCD_SDW_CH(id, pn, cmask) \
853-
[id] = { \
854-
.port_num = pn, \
855-
.ch_mask = cmask, \
856-
}
857-
858847
enum wcd939x_tx_sdw_ports {
859848
WCD939X_ADC_1_4_PORT = 1,
860849
WCD939X_ADC_DMIC_1_2_PORT,
@@ -909,7 +898,7 @@ struct wcd939x_sdw_priv {
909898
struct sdw_stream_config sconfig;
910899
struct sdw_stream_runtime *sruntime;
911900
struct sdw_port_config port_config[WCD939X_MAX_SWR_PORTS];
912-
const struct wcd939x_sdw_ch_info *ch_info;
901+
const struct wcd_sdw_ch_info *ch_info;
913902
bool port_enable[WCD939X_MAX_SWR_CH_IDS];
914903
int active_ports;
915904
bool is_tx;

0 commit comments

Comments
 (0)