From: Sebastian Reichel <sre@kernel.org>
To: "Sebastian Reichel" <sre@kernel.org>,
"Tony Lindgren" <tony@atomide.com>,
"Benoît Cousson" <bcousson@baylibre.com>,
"Aaro Koskinen" <aaro.koskinen@iki.fi>
Cc: "Pali Rohár" <pali.rohar@gmail.com>,
"Pavel Machek" <pavel@ucw.cz>,
linux-omap@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH 3/5] HSI: ssi-protocol: export modem info via sysfs
Date: Sun, 31 Jan 2016 02:19:45 +0100 [thread overview]
Message-ID: <1454203187-688-4-git-send-email-sre@kernel.org> (raw)
In-Reply-To: <1454203187-688-1-git-send-email-sre@kernel.org>
Currently userspace knows about the rapuyama version by
checking, which gpios have been exported. This does no
longer work with kernel based power management, so export
a sysfs file, which provides the rapuyama generation. Also
export a link to the nokia-modem, so that userspace can
easily check if kernel based PM is used.
Signed-off-by: Sebastian Reichel <sre@kernel.org>
---
drivers/hsi/clients/nokia-modem.c | 10 ++++------
drivers/hsi/clients/ssi_protocol.c | 33 ++++++++++++++++++++++++++++++++-
include/linux/hsi/ssi_protocol.h | 11 +++++++++++
3 files changed, 47 insertions(+), 7 deletions(-)
diff --git a/drivers/hsi/clients/nokia-modem.c b/drivers/hsi/clients/nokia-modem.c
index 6485f4c61092..1b4a250cf113 100644
--- a/drivers/hsi/clients/nokia-modem.c
+++ b/drivers/hsi/clients/nokia-modem.c
@@ -35,11 +35,6 @@ module_param(pm, int, 0400);
MODULE_PARM_DESC(pm,
"Enable power management (0=disabled, 1=userland based [default], 2=kernel based)");
-enum nokia_modem_type {
- RAPUYAMA_V1,
- RAPUYAMA_V2,
-};
-
struct nokia_modem_device {
struct tasklet_struct nokia_modem_rst_ind_tasklet;
int nokia_modem_rst_ind_irq;
@@ -285,6 +280,7 @@ static int nokia_modem_probe(struct device *dev)
struct hsi_port *port = hsi_get_port(cl);
int irq, pflags, err;
struct hsi_board_info ssip;
+ struct ssi_protocol_platform_data ssip_pdata;
struct hsi_board_info cmtspeech;
np = dev->of_node;
@@ -340,7 +336,9 @@ static int nokia_modem_probe(struct device *dev)
ssip.name = "ssi-protocol";
ssip.tx_cfg = cl->tx_cfg;
ssip.rx_cfg = cl->rx_cfg;
- ssip.platform_data = NULL;
+ ssip_pdata.type = modem->type;
+ ssip_pdata.nokia_modem_dev = dev;
+ ssip.platform_data = &ssip_pdata;
ssip.archdata = NULL;
modem->ssi_protocol = hsi_new_client(port, &ssip);
diff --git a/drivers/hsi/clients/ssi_protocol.c b/drivers/hsi/clients/ssi_protocol.c
index cee33cab889e..3fb5b98b2c63 100644
--- a/drivers/hsi/clients/ssi_protocol.c
+++ b/drivers/hsi/clients/ssi_protocol.c
@@ -154,6 +154,7 @@ struct ssi_protocol {
int channel_id_cmd;
int channel_id_data;
struct blocking_notifier_head modem_state_notifier;
+ enum nokia_modem_type modem_type;
};
/* List of ssi protocol instances */
@@ -1080,10 +1081,20 @@ static void ssip_pn_setup(struct net_device *dev)
dev->header_ops = &phonet_header_ops;
}
+static ssize_t show_rapuyama_version(struct device *dev, struct device_attribute *attr, char *buf)
+{
+ struct hsi_client *cl = to_hsi_client(dev);
+ struct ssi_protocol *ssi = hsi_client_drvdata(cl);
+
+ return sprintf(buf, "%d", ssi->modem_type);
+}
+static DEVICE_ATTR(rapuyama_version, S_IRUGO, show_rapuyama_version, 0);
+
static int ssi_protocol_probe(struct device *dev)
{
static const char ifname[] = "phonet%d";
struct hsi_client *cl = to_hsi_client(dev);
+ struct ssi_protocol_platform_data *pdata = dev_get_platdata(dev);
struct ssi_protocol *ssi;
int err;
@@ -1093,6 +1104,8 @@ static int ssi_protocol_probe(struct device *dev)
return -ENOMEM;
}
+ ssi->modem_type = pdata->type;
+
spin_lock_init(&ssi->lock);
init_timer_deferrable(&ssi->rx_wd);
init_timer_deferrable(&ssi->tx_wd);
@@ -1137,12 +1150,24 @@ static int ssi_protocol_probe(struct device *dev)
goto out1;
}
+ err = device_create_file(dev, &dev_attr_rapuyama_version);
+ if (err < 0) {
+ dev_err(dev, "Could not create sysfs file for rapuyama version");
+ goto out2;
+ }
+
+ err = sysfs_create_link(&dev->kobj, &pdata->nokia_modem_dev->kobj, "nokia-modem");
+ if (err < 0) {
+ dev_err(dev, "Could not create sysfs symlink to nokia-modem");
+ goto out3;
+ }
+
SET_NETDEV_DEV(ssi->netdev, dev);
netif_carrier_off(ssi->netdev);
err = register_netdev(ssi->netdev);
if (err < 0) {
dev_err(dev, "Register netdev failed (%d)\n", err);
- goto out2;
+ goto out4;
}
list_add(&ssi->link, &ssip_list);
@@ -1151,6 +1176,10 @@ static int ssi_protocol_probe(struct device *dev)
ssi->channel_id_cmd, ssi->channel_id_data);
return 0;
+out4:
+ sysfs_remove_link(&dev->kobj, "nokia-modem");
+out3:
+ device_remove_file(dev, &dev_attr_rapuyama_version);
out2:
free_netdev(ssi->netdev);
out1:
@@ -1167,6 +1196,8 @@ static int ssi_protocol_remove(struct device *dev)
struct ssi_protocol *ssi = hsi_client_drvdata(cl);
list_del(&ssi->link);
+ sysfs_remove_link(&dev->kobj, "nokia-modem");
+ device_remove_file(dev, &dev_attr_rapuyama_version);
unregister_netdev(ssi->netdev);
ssip_free_cmds(ssi);
hsi_client_set_drvdata(cl, NULL);
diff --git a/include/linux/hsi/ssi_protocol.h b/include/linux/hsi/ssi_protocol.h
index 6b742e9368a7..ba069812341b 100644
--- a/include/linux/hsi/ssi_protocol.h
+++ b/include/linux/hsi/ssi_protocol.h
@@ -33,6 +33,17 @@ enum nokia_modem_state {
STATE_OFF,
};
+enum nokia_modem_type {
+ UNKNOWN = 0,
+ RAPUYAMA_V1,
+ RAPUYAMA_V2,
+};
+
+struct ssi_protocol_platform_data {
+ enum nokia_modem_type type;
+ struct device *nokia_modem_dev;
+};
+
static inline void ssip_slave_put_master(struct hsi_client *master)
{
}
--
2.7.0.rc3
next prev parent reply other threads:[~2016-01-31 1:19 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-31 1:19 [PATCH 0/5] nokia-modem: kernel based PM Sebastian Reichel
2016-01-31 1:19 ` [PATCH 1/5] HSI: nokia-modem: simplify kernel access to gpios Sebastian Reichel
2016-01-31 1:19 ` [PATCH 2/5] HSI: nokia-modem: kernel based PM Sebastian Reichel
2016-01-31 17:29 ` Pavel Machek
2016-01-31 18:00 ` Sebastian Reichel
2016-02-07 21:39 ` Pavel Machek
2016-01-31 1:19 ` Sebastian Reichel [this message]
2016-01-31 17:36 ` [PATCH 3/5] HSI: ssi-protocol: export modem info via sysfs Pavel Machek
2016-01-31 18:34 ` Sebastian Reichel
2016-01-31 1:19 ` [PATCH 4/5] HSI: nokia-modem: drop support for disabled pm Sebastian Reichel
2016-01-31 11:24 ` Pali Rohár
2016-01-31 16:10 ` Sebastian Reichel
2016-02-08 8:50 ` Pali Rohár
2016-01-31 1:19 ` [PATCH 5/5] HSI: ssi-protocol: clear carrier flag on open Sebastian Reichel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1454203187-688-4-git-send-email-sre@kernel.org \
--to=sre@kernel.org \
--cc=aaro.koskinen@iki.fi \
--cc=bcousson@baylibre.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=pali.rohar@gmail.com \
--cc=pavel@ucw.cz \
--cc=tony@atomide.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.