mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 12:21:22 -05:00
net: wan: framer: Add version sysfs attribute for the Lantiq PEF2256 framer
Lantiq PEF2256 framer has some little differences in behaviour depending on its version. Add a sysfs attribute to allow user applications to know the version. Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Link: https://patch.msgid.link/77a27941d6924b1009df0162ed9f0fa07ed6e431.1758726302.git.christophe.leroy@csgroup.eu Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
231889d9b6
commit
0e41b0af47
8
Documentation/ABI/testing/sysfs-driver-framer-pef2256
Normal file
8
Documentation/ABI/testing/sysfs-driver-framer-pef2256
Normal file
@@ -0,0 +1,8 @@
|
||||
What: /sys/bus/platform/devices/xxx/version
|
||||
Date: Sep 2025
|
||||
Contact: netdev@vger.kernel.org
|
||||
Description: Reports the version of the PEF2256 framer
|
||||
|
||||
Access: Read
|
||||
|
||||
Valid values: Represented as string
|
||||
@@ -37,6 +37,7 @@ struct pef2256 {
|
||||
struct device *dev;
|
||||
struct regmap *regmap;
|
||||
enum pef2256_version version;
|
||||
const char *version_txt;
|
||||
struct clk *mclk;
|
||||
struct clk *sclkr;
|
||||
struct clk *sclkx;
|
||||
@@ -114,6 +115,16 @@ enum pef2256_version pef2256_get_version(struct pef2256 *pef2256)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pef2256_get_version);
|
||||
|
||||
static ssize_t version_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct pef2256 *pef2256 = dev_get_drvdata(dev);
|
||||
|
||||
return sysfs_emit(buf, "%s\n", pef2256->version_txt);
|
||||
}
|
||||
|
||||
static DEVICE_ATTR_RO(version);
|
||||
|
||||
enum pef2256_gcm_config_item {
|
||||
PEF2256_GCM_CONFIG_1544000 = 0,
|
||||
PEF2256_GCM_CONFIG_2048000,
|
||||
@@ -697,7 +708,6 @@ static int pef2256_probe(struct platform_device *pdev)
|
||||
unsigned long sclkr_rate, sclkx_rate;
|
||||
struct framer_provider *framer_provider;
|
||||
struct pef2256 *pef2256;
|
||||
const char *version_txt;
|
||||
void __iomem *iomem;
|
||||
int ret;
|
||||
int irq;
|
||||
@@ -763,18 +773,18 @@ static int pef2256_probe(struct platform_device *pdev)
|
||||
pef2256->version = pef2256_get_version(pef2256);
|
||||
switch (pef2256->version) {
|
||||
case PEF2256_VERSION_1_2:
|
||||
version_txt = "1.2";
|
||||
pef2256->version_txt = "1.2";
|
||||
break;
|
||||
case PEF2256_VERSION_2_1:
|
||||
version_txt = "2.1";
|
||||
pef2256->version_txt = "2.1";
|
||||
break;
|
||||
case PEF2256_VERSION_2_2:
|
||||
version_txt = "2.2";
|
||||
pef2256->version_txt = "2.2";
|
||||
break;
|
||||
default:
|
||||
return -ENODEV;
|
||||
}
|
||||
dev_info(pef2256->dev, "Version %s detected\n", version_txt);
|
||||
dev_info(pef2256->dev, "Version %s detected\n", pef2256->version_txt);
|
||||
|
||||
ret = pef2556_of_parse(pef2256, np);
|
||||
if (ret)
|
||||
@@ -835,6 +845,8 @@ static int pef2256_probe(struct platform_device *pdev)
|
||||
return ret;
|
||||
}
|
||||
|
||||
device_create_file(pef2256->dev, &dev_attr_version);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -849,6 +861,8 @@ static void pef2256_remove(struct platform_device *pdev)
|
||||
pef2256_write8(pef2256, PEF2256_IMR3, 0xff);
|
||||
pef2256_write8(pef2256, PEF2256_IMR4, 0xff);
|
||||
pef2256_write8(pef2256, PEF2256_IMR5, 0xff);
|
||||
|
||||
device_remove_file(pef2256->dev, &dev_attr_version);
|
||||
}
|
||||
|
||||
static const struct of_device_id pef2256_id_table[] = {
|
||||
|
||||
Reference in New Issue
Block a user