net: wwan: Add WWAN port type attribute

The port type is by default part of the WWAN port device name.
However device name can not be considered as a 'stable' API and
may be subject to change in the future. This change adds a proper
device attribute that can be used to determine the WWAN protocol/
type.

Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Loic Poulain 2021-05-17 11:53:34 +02:00 committed by David S. Miller
parent 885e4056d5
commit b3e22e10fd
1 changed files with 25 additions and 9 deletions

View File

@ -169,6 +169,30 @@ static void wwan_remove_dev(struct wwan_device *wwandev)
/* ------- WWAN port management ------- */
/* Keep aligned with wwan_port_type enum */
static const char * const wwan_port_type_str[] = {
"AT",
"MBIM",
"QMI",
"QCDM",
"FIREHOSE"
};
static ssize_t type_show(struct device *dev, struct device_attribute *attr,
char *buf)
{
struct wwan_port *port = to_wwan_port(dev);
return sprintf(buf, "%s\n", wwan_port_type_str[port->type]);
}
static DEVICE_ATTR_RO(type);
static struct attribute *wwan_port_attrs[] = {
&dev_attr_type.attr,
NULL,
};
ATTRIBUTE_GROUPS(wwan_port);
static void wwan_port_destroy(struct device *dev)
{
struct wwan_port *port = to_wwan_port(dev);
@ -182,6 +206,7 @@ static void wwan_port_destroy(struct device *dev)
static const struct device_type wwan_port_dev_type = {
.name = "wwan_port",
.release = wwan_port_destroy,
.groups = wwan_port_groups,
};
static int wwan_port_minor_match(struct device *dev, const void *minor)
@ -201,15 +226,6 @@ static struct wwan_port *wwan_port_get_by_minor(unsigned int minor)
return to_wwan_port(dev);
}
/* Keep aligned with wwan_port_type enum */
static const char * const wwan_port_type_str[] = {
"AT",
"MBIM",
"QMI",
"QCDM",
"FIREHOSE"
};
struct wwan_port *wwan_create_port(struct device *parent,
enum wwan_port_type type,
const struct wwan_port_ops *ops,