[<prev] [next>] [day] [month] [year] [list]
Message-ID: <20250712044302.6952-1-suresh.k.chandrappa@gmail.com>
Date: Sat, 12 Jul 2025 10:13:02 +0530
From: Suresh K C <suresh.k.chandrappa@...il.com>
To: vkoul@...nel.org,
yung-chuan.liao@...ux.intel.com,
pierre-louis.bossart@...ux.dev,
sanyog.r.kale@...el.com
Cc: shuah@...nel.org,
linux-sound@...r.kernel.org,
linux-kernel@...r.kernel.org,
Suresh K C <suresh.k.chandrappa@...il.com>
Subject: [PATCH] soundwire: replace scnprintf() with sysfs_emit() for sysfs consistency
From: Suresh K C <suresh.k.chandrappa@...il.com>
Replace scnprintf() with sysfs_emit() or sysfs_emit_at() in SoundWire driver files
to align with the guidelines outlined in Documentation/filesystems/sysfs.rst.
This change improves the safety and correctness of sysfs attribute handling,
ensures consistency across the kernel codebase, and simplifies future maintenance.
Tested by enabling CONFIG_DEBUG_FS and confirming that /sys/kernel/debug/soundwire is correctly populated
Signed-off-by: Suresh K C <suresh.k.chandrappa@...il.com>
---
drivers/soundwire/cadence_master.c | 23 +++++++++++------------
drivers/soundwire/debugfs.c | 22 +++++++++++-----------
drivers/soundwire/intel.c | 17 ++++++++---------
drivers/soundwire/intel_ace2x_debugfs.c | 14 +++++++-------
4 files changed, 37 insertions(+), 39 deletions(-)
diff --git a/drivers/soundwire/cadence_master.c b/drivers/soundwire/cadence_master.c
index 21bb491d026b..668a111c66c8 100644
--- a/drivers/soundwire/cadence_master.c
+++ b/drivers/soundwire/cadence_master.c
@@ -319,8 +319,7 @@ EXPORT_SYMBOL(sdw_cdns_config_update_set_wait);
static ssize_t cdns_sprintf(struct sdw_cdns *cdns,
char *buf, size_t pos, unsigned int reg)
{
- return scnprintf(buf + pos, RD_BUF - pos,
- "%4x\t%8x\n", reg, cdns_readl(cdns, reg));
+ return sysfs_emit_at(buf, pos,"%4x\t%8x\n", reg, cdns_readl(cdns, reg));
}
static int cdns_reg_show(struct seq_file *s, void *data)
@@ -334,42 +333,42 @@ static int cdns_reg_show(struct seq_file *s, void *data)
if (!buf)
return -ENOMEM;
- ret = scnprintf(buf, RD_BUF, "Register Value\n");
- ret += scnprintf(buf + ret, RD_BUF - ret, "\nMCP Registers\n");
+ ret = sysfs_emit(buf, "Register Value\n");
+ ret += sysfs_emit_at(buf, ret,"\nMCP Registers\n");
/* 8 MCP registers */
for (i = CDNS_MCP_CONFIG; i <= CDNS_MCP_PHYCTRL; i += sizeof(u32))
ret += cdns_sprintf(cdns, buf, ret, i);
- ret += scnprintf(buf + ret, RD_BUF - ret,
+ ret += sysfs_emit_at(buf, ret,
"\nStatus & Intr Registers\n");
/* 13 Status & Intr registers (offsets 0x70 and 0x74 not defined) */
for (i = CDNS_MCP_STAT; i <= CDNS_MCP_FIFOSTAT; i += sizeof(u32))
ret += cdns_sprintf(cdns, buf, ret, i);
- ret += scnprintf(buf + ret, RD_BUF - ret,
+ ret += sysfs_emit_at(buf, ret,
"\nSSP & Clk ctrl Registers\n");
ret += cdns_sprintf(cdns, buf, ret, CDNS_MCP_SSP_CTRL0);
ret += cdns_sprintf(cdns, buf, ret, CDNS_MCP_SSP_CTRL1);
ret += cdns_sprintf(cdns, buf, ret, CDNS_MCP_CLK_CTRL0);
ret += cdns_sprintf(cdns, buf, ret, CDNS_MCP_CLK_CTRL1);
- ret += scnprintf(buf + ret, RD_BUF - ret,
+ ret += sysfs_emit_at(buf, ret,
"\nDPn B0 Registers\n");
num_ports = cdns->num_ports;
for (i = 0; i < num_ports; i++) {
- ret += scnprintf(buf + ret, RD_BUF - ret,
+ ret += sysfs_emit_at(buf, ret,
"\nDP-%d\n", i);
for (j = CDNS_DPN_B0_CONFIG(i);
j < CDNS_DPN_B0_ASYNC_CTRL(i); j += sizeof(u32))
ret += cdns_sprintf(cdns, buf, ret, j);
}
- ret += scnprintf(buf + ret, RD_BUF - ret,
+ ret += sysfs_emit_at(buf, ret,
"\nDPn B1 Registers\n");
for (i = 0; i < num_ports; i++) {
- ret += scnprintf(buf + ret, RD_BUF - ret,
+ ret += sysfs_emit_at(buf, ret,
"\nDP-%d\n", i);
for (j = CDNS_DPN_B1_CONFIG(i);
@@ -377,13 +376,13 @@ static int cdns_reg_show(struct seq_file *s, void *data)
ret += cdns_sprintf(cdns, buf, ret, j);
}
- ret += scnprintf(buf + ret, RD_BUF - ret,
+ ret += sysfs_emit_at(buf, ret,
"\nDPn Control Registers\n");
for (i = 0; i < num_ports; i++)
ret += cdns_sprintf(cdns, buf, ret,
CDNS_PORTCTRL + i * CDNS_PORT_OFFSET);
- ret += scnprintf(buf + ret, RD_BUF - ret,
+ ret += sysfs_emit_at(buf, ret,
"\nPDIn Config Registers\n");
/* number of PDI and ports is interchangeable */
diff --git a/drivers/soundwire/debugfs.c b/drivers/soundwire/debugfs.c
index 3099ea074f10..ccc98f449658 100644
--- a/drivers/soundwire/debugfs.c
+++ b/drivers/soundwire/debugfs.c
@@ -42,9 +42,9 @@ static ssize_t sdw_sprintf(struct sdw_slave *slave,
value = sdw_read_no_pm(slave, reg);
if (value < 0)
- return scnprintf(buf + pos, RD_BUF - pos, "%3x\tXX\n", reg);
+ return sysfs_emit_at(buf , pos, "%3x\tXX\n", reg);
else
- return scnprintf(buf + pos, RD_BUF - pos,
+ return sysfs_emit_at(buf , pos,
"%3x\t%2x\n", reg, value);
}
@@ -64,21 +64,21 @@ static int sdw_slave_reg_show(struct seq_file *s_file, void *data)
return ret;
}
- ret = scnprintf(buf, RD_BUF, "Register Value\n");
+ ret = sysfs_emit(buf, "Register Value\n");
/* DP0 non-banked registers */
- ret += scnprintf(buf + ret, RD_BUF - ret, "\nDP0\n");
+ ret += sysfs_emit_at(buf , ret, "\nDP0\n");
for (i = SDW_DP0_INT; i <= SDW_DP0_PREPARECTRL; i++)
ret += sdw_sprintf(slave, buf, ret, i);
/* DP0 Bank 0 registers */
- ret += scnprintf(buf + ret, RD_BUF - ret, "Bank0\n");
+ ret += sysfs_emit_at(buf, ret, "Bank0\n");
ret += sdw_sprintf(slave, buf, ret, SDW_DP0_CHANNELEN);
for (i = SDW_DP0_SAMPLECTRL1; i <= SDW_DP0_LANECTRL; i++)
ret += sdw_sprintf(slave, buf, ret, i);
/* DP0 Bank 1 registers */
- ret += scnprintf(buf + ret, RD_BUF - ret, "Bank1\n");
+ ret += sysfs_emit_at(buf, ret, "Bank1\n");
ret += sdw_sprintf(slave, buf, ret,
SDW_DP0_CHANNELEN + SDW_BANK1_OFFSET);
for (i = SDW_DP0_SAMPLECTRL1 + SDW_BANK1_OFFSET;
@@ -86,7 +86,7 @@ static int sdw_slave_reg_show(struct seq_file *s_file, void *data)
ret += sdw_sprintf(slave, buf, ret, i);
/* SCP registers */
- ret += scnprintf(buf + ret, RD_BUF - ret, "\nSCP\n");
+ ret += sysfs_emit_at(buf, ret, "\nSCP\n");
for (i = SDW_SCP_INT1; i <= SDW_SCP_BUS_CLOCK_BASE; i++)
ret += sdw_sprintf(slave, buf, ret, i);
for (i = SDW_SCP_DEVID_0; i <= SDW_SCP_DEVID_5; i++)
@@ -110,18 +110,18 @@ static int sdw_slave_reg_show(struct seq_file *s_file, void *data)
for (i = 1; SDW_VALID_PORT_RANGE(i); i++) {
/* DPi registers */
- ret += scnprintf(buf + ret, RD_BUF - ret, "\nDP%d\n", i);
+ ret += sysfs_emit_at(buf , ret, "\nDP%d\n", i);
for (j = SDW_DPN_INT(i); j <= SDW_DPN_PREPARECTRL(i); j++)
ret += sdw_sprintf(slave, buf, ret, j);
/* DPi Bank0 registers */
- ret += scnprintf(buf + ret, RD_BUF - ret, "Bank0\n");
+ ret += sysfs_emit_at(buf , ret, "Bank0\n");
for (j = SDW_DPN_CHANNELEN_B0(i);
j <= SDW_DPN_LANECTRL_B0(i); j++)
ret += sdw_sprintf(slave, buf, ret, j);
/* DPi Bank1 registers */
- ret += scnprintf(buf + ret, RD_BUF - ret, "Bank1\n");
+ ret += sysfs_emit_at(buf , ret, "Bank1\n");
for (j = SDW_DPN_CHANNELEN_B1(i);
j <= SDW_DPN_LANECTRL_B1(i); j++)
ret += sdw_sprintf(slave, buf, ret, j);
@@ -317,7 +317,7 @@ static int read_buffer_show(struct seq_file *s_file, void *data)
return -EINVAL;
for (i = 0; i < num_bytes; i++) {
- scnprintf(buf, MAX_LINE_LEN, "address %#x val 0x%02x\n",
+ sysfs_emit(buf, "address %#x val 0x%02x\n",
start_addr + i, read_buffer[i]);
seq_printf(s_file, "%s", buf);
}
diff --git a/drivers/soundwire/intel.c b/drivers/soundwire/intel.c
index 9db78f3d7615..aa7aa7126c47 100644
--- a/drivers/soundwire/intel.c
+++ b/drivers/soundwire/intel.c
@@ -65,8 +65,7 @@ static ssize_t intel_sprintf(void __iomem *mem, bool l,
value = intel_readl(mem, reg);
else
value = intel_readw(mem, reg);
-
- return scnprintf(buf + pos, RD_BUF - pos, "%4x\t%4x\n", reg, value);
+ return sysfs_emit_at(buf, pos, "%4x\t%4x\n", reg, value);;
}
static int intel_reg_show(struct seq_file *s_file, void *data)
@@ -84,8 +83,8 @@ static int intel_reg_show(struct seq_file *s_file, void *data)
links = intel_readl(s, SDW_SHIM_LCAP) & SDW_SHIM_LCAP_LCOUNT_MASK;
- ret = scnprintf(buf, RD_BUF, "Register Value\n");
- ret += scnprintf(buf + ret, RD_BUF - ret, "\nShim\n");
+ ret = sysfs_emit(buf, "Register Value\n");
+ ret += sysfs_emit_at(buf, ret, "\nShim\n");
for (i = 0; i < links; i++) {
reg = SDW_SHIM_LCAP + i * 4;
@@ -93,7 +92,7 @@ static int intel_reg_show(struct seq_file *s_file, void *data)
}
for (i = 0; i < links; i++) {
- ret += scnprintf(buf + ret, RD_BUF - ret, "\nLink%d\n", i);
+ ret += sysfs_emit_at(buf, ret, "\nLink%d\n", i);
ret += intel_sprintf(s, false, buf, ret, SDW_SHIM_CTLSCAP(i));
ret += intel_sprintf(s, false, buf, ret, SDW_SHIM_CTLS0CM(i));
ret += intel_sprintf(s, false, buf, ret, SDW_SHIM_CTLS1CM(i));
@@ -101,7 +100,7 @@ static int intel_reg_show(struct seq_file *s_file, void *data)
ret += intel_sprintf(s, false, buf, ret, SDW_SHIM_CTLS3CM(i));
ret += intel_sprintf(s, false, buf, ret, SDW_SHIM_PCMSCAP(i));
- ret += scnprintf(buf + ret, RD_BUF - ret, "\n PCMSyCH registers\n");
+ ret += sysfs_emit_at(buf, ret, "\n PCMSyCH registers\n");
/*
* the value 10 is the number of PDIs. We will need a
@@ -114,17 +113,17 @@ static int intel_reg_show(struct seq_file *s_file, void *data)
ret += intel_sprintf(s, false, buf, ret,
SDW_SHIM_PCMSYCHC(i, j));
}
- ret += scnprintf(buf + ret, RD_BUF - ret, "\n IOCTL, CTMCTL\n");
+ ret += sysfs_emit_at(buf, ret, "\n IOCTL, CTMCTL\n");
ret += intel_sprintf(s, false, buf, ret, SDW_SHIM_IOCTL(i));
ret += intel_sprintf(s, false, buf, ret, SDW_SHIM_CTMCTL(i));
}
- ret += scnprintf(buf + ret, RD_BUF - ret, "\nWake registers\n");
+ ret += sysfs_emit_at(buf, ret, "\nWake registers\n");
ret += intel_sprintf(s, false, buf, ret, SDW_SHIM_WAKEEN);
ret += intel_sprintf(s, false, buf, ret, SDW_SHIM_WAKESTS);
- ret += scnprintf(buf + ret, RD_BUF - ret, "\nALH STRMzCFG\n");
+ ret += sysfs_emit_at(buf, ret, "\nALH STRMzCFG\n");
for (i = 0; i < SDW_ALH_NUM_STREAMS; i++)
ret += intel_sprintf(a, true, buf, ret, SDW_ALH_STRMZCFG(i));
diff --git a/drivers/soundwire/intel_ace2x_debugfs.c b/drivers/soundwire/intel_ace2x_debugfs.c
index fda8f0daaa96..c733d455af6c 100644
--- a/drivers/soundwire/intel_ace2x_debugfs.c
+++ b/drivers/soundwire/intel_ace2x_debugfs.c
@@ -31,7 +31,7 @@ static ssize_t intel_sprintf(void __iomem *mem, bool l,
else
value = intel_readw(mem, reg);
- return scnprintf(buf + pos, RD_BUF - pos, "%4x\t%4x\n", reg, value);
+ return sysfs_emit_at(buf, pos, "%4x\t%4x\n", reg, value);
}
static int intel_reg_show(struct seq_file *s_file, void *data)
@@ -49,8 +49,8 @@ static int intel_reg_show(struct seq_file *s_file, void *data)
if (!buf)
return -ENOMEM;
- ret = scnprintf(buf, RD_BUF, "Register Value\n");
- ret += scnprintf(buf + ret, RD_BUF - ret, "\nShim\n");
+ ret = sysfs_emit(buf, "Register Value\n");
+ ret += sysfs_emit_at(buf, ret, "\nShim\n");
ret += intel_sprintf(s, true, buf, ret, SDW_SHIM2_LECAP);
ret += intel_sprintf(s, false, buf, ret, SDW_SHIM2_PCMSCAP);
@@ -65,19 +65,19 @@ static int intel_reg_show(struct seq_file *s_file, void *data)
SDW_SHIM2_PCMSYCHC(j));
}
- ret += scnprintf(buf + ret, RD_BUF - ret, "\nVS CLK controls\n");
+ ret += sysfs_emit_at(buf, ret, "\nVS CLK controls\n");
ret += intel_sprintf(vs_s, true, buf, ret, SDW_SHIM2_INTEL_VS_LVSCTL);
- ret += scnprintf(buf + ret, RD_BUF - ret, "\nVS Wake registers\n");
+ ret += sysfs_emit_at(buf, ret, "\nVS Wake registers\n");
ret += intel_sprintf(vs_s, false, buf, ret, SDW_SHIM2_INTEL_VS_WAKEEN);
ret += intel_sprintf(vs_s, false, buf, ret, SDW_SHIM2_INTEL_VS_WAKESTS);
- ret += scnprintf(buf + ret, RD_BUF - ret, "\nVS IOCTL, ACTMCTL\n");
+ ret += sysfs_emit_at(buf, ret, "\nVS IOCTL, ACTMCTL\n");
ret += intel_sprintf(vs_s, false, buf, ret, SDW_SHIM2_INTEL_VS_IOCTL);
ret += intel_sprintf(vs_s, false, buf, ret, SDW_SHIM2_INTEL_VS_ACTMCTL);
if (sdw->link_res->mic_privacy) {
- ret += scnprintf(buf + ret, RD_BUF - ret, "\nVS PVCCS\n");
+ ret += sysfs_emit_at(buf, ret, "\nVS PVCCS\n");
ret += intel_sprintf(vs_s, false, buf, ret,
SDW_SHIM2_INTEL_VS_PVCCS);
}
--
2.43.0
Powered by blists - more mailing lists