mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-09 15:29:16 +00:00
of: Add function for generating a DT modalias with a newline
The modalias sysfs attr is lacking a newline for DT aliases on platform devices. The macio and ibmebus correctly add the newline, but open code it. Introduce a new function, of_device_modalias(), that fills the buffer with the modalias including the newline and update users of the old of_device_get_modalias function. Signed-off-by: Rob Herring <robh@kernel.org> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Frank Rowand <frowand.list@gmail.com> Cc: linuxppc-dev@lists.ozlabs.org Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
bcf54d5385
commit
0634c29589
@ -410,10 +410,7 @@ static ssize_t name_show(struct device *dev,
|
|||||||
static ssize_t modalias_show(struct device *dev,
|
static ssize_t modalias_show(struct device *dev,
|
||||||
struct device_attribute *attr, char *buf)
|
struct device_attribute *attr, char *buf)
|
||||||
{
|
{
|
||||||
ssize_t len = of_device_get_modalias(dev, buf, PAGE_SIZE - 2);
|
return of_device_modalias(dev, buf, PAGE_SIZE);
|
||||||
buf[len] = '\n';
|
|
||||||
buf[len+1] = 0;
|
|
||||||
return len+1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct device_attribute ibmebus_bus_device_attrs[] = {
|
static struct device_attribute ibmebus_bus_device_attrs[] = {
|
||||||
|
@ -847,7 +847,7 @@ static ssize_t modalias_show(struct device *dev, struct device_attribute *a,
|
|||||||
struct platform_device *pdev = to_platform_device(dev);
|
struct platform_device *pdev = to_platform_device(dev);
|
||||||
int len;
|
int len;
|
||||||
|
|
||||||
len = of_device_get_modalias(dev, buf, PAGE_SIZE -1);
|
len = of_device_modalias(dev, buf, PAGE_SIZE);
|
||||||
if (len != -ENODEV)
|
if (len != -ENODEV)
|
||||||
return len;
|
return len;
|
||||||
|
|
||||||
|
@ -41,12 +41,7 @@ compatible_show (struct device *dev, struct device_attribute *attr, char *buf)
|
|||||||
static ssize_t modalias_show (struct device *dev, struct device_attribute *attr,
|
static ssize_t modalias_show (struct device *dev, struct device_attribute *attr,
|
||||||
char *buf)
|
char *buf)
|
||||||
{
|
{
|
||||||
int len = of_device_get_modalias(dev, buf, PAGE_SIZE - 2);
|
return of_device_modalias(dev, buf, PAGE_SIZE);
|
||||||
|
|
||||||
buf[len] = '\n';
|
|
||||||
buf[len+1] = 0;
|
|
||||||
|
|
||||||
return len+1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t devspec_show(struct device *dev,
|
static ssize_t devspec_show(struct device *dev,
|
||||||
|
@ -176,7 +176,7 @@ const void *of_device_get_match_data(const struct device *dev)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(of_device_get_match_data);
|
EXPORT_SYMBOL(of_device_get_match_data);
|
||||||
|
|
||||||
ssize_t of_device_get_modalias(struct device *dev, char *str, ssize_t len)
|
static ssize_t of_device_get_modalias(struct device *dev, char *str, ssize_t len)
|
||||||
{
|
{
|
||||||
const char *compat;
|
const char *compat;
|
||||||
int cplen, i;
|
int cplen, i;
|
||||||
@ -225,7 +225,6 @@ ssize_t of_device_get_modalias(struct device *dev, char *str, ssize_t len)
|
|||||||
|
|
||||||
return repend;
|
return repend;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(of_device_get_modalias);
|
|
||||||
|
|
||||||
int of_device_request_module(struct device *dev)
|
int of_device_request_module(struct device *dev)
|
||||||
{
|
{
|
||||||
@ -250,6 +249,21 @@ int of_device_request_module(struct device *dev)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(of_device_request_module);
|
EXPORT_SYMBOL_GPL(of_device_request_module);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* of_device_modalias - Fill buffer with newline terminated modalias string
|
||||||
|
*/
|
||||||
|
ssize_t of_device_modalias(struct device *dev, char *str, ssize_t len)
|
||||||
|
{
|
||||||
|
ssize_t sl = of_device_get_modalias(dev, str, len - 2);
|
||||||
|
if (sl < 0)
|
||||||
|
return sl;
|
||||||
|
|
||||||
|
str[sl++] = '\n';
|
||||||
|
str[sl] = 0;
|
||||||
|
return sl;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(of_device_modalias);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* of_device_uevent - Display OF related uevent information
|
* of_device_uevent - Display OF related uevent information
|
||||||
*/
|
*/
|
||||||
|
@ -191,10 +191,7 @@ static int serdev_drv_remove(struct device *dev)
|
|||||||
static ssize_t modalias_show(struct device *dev,
|
static ssize_t modalias_show(struct device *dev,
|
||||||
struct device_attribute *attr, char *buf)
|
struct device_attribute *attr, char *buf)
|
||||||
{
|
{
|
||||||
ssize_t len = of_device_get_modalias(dev, buf, PAGE_SIZE - 2);
|
return of_device_modalias(dev, buf, PAGE_SIZE);
|
||||||
buf[len] = '\n';
|
|
||||||
buf[len+1] = 0;
|
|
||||||
return len+1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct device_attribute serdev_device_attrs[] = {
|
static struct device_attribute serdev_device_attrs[] = {
|
||||||
|
@ -107,7 +107,7 @@ static ssize_t modalias_show(struct device *dev, struct device_attribute *attr,
|
|||||||
int len;
|
int len;
|
||||||
struct ulpi *ulpi = to_ulpi_dev(dev);
|
struct ulpi *ulpi = to_ulpi_dev(dev);
|
||||||
|
|
||||||
len = of_device_get_modalias(dev, buf, PAGE_SIZE - 1);
|
len = of_device_modalias(dev, buf, PAGE_SIZE);
|
||||||
if (len != -ENODEV)
|
if (len != -ENODEV)
|
||||||
return len;
|
return len;
|
||||||
|
|
||||||
|
@ -34,8 +34,7 @@ extern void of_device_unregister(struct platform_device *ofdev);
|
|||||||
|
|
||||||
extern const void *of_device_get_match_data(const struct device *dev);
|
extern const void *of_device_get_match_data(const struct device *dev);
|
||||||
|
|
||||||
extern ssize_t of_device_get_modalias(struct device *dev,
|
extern ssize_t of_device_modalias(struct device *dev, char *str, ssize_t len);
|
||||||
char *str, ssize_t len);
|
|
||||||
extern int of_device_request_module(struct device *dev);
|
extern int of_device_request_module(struct device *dev);
|
||||||
|
|
||||||
extern void of_device_uevent(struct device *dev, struct kobj_uevent_env *env);
|
extern void of_device_uevent(struct device *dev, struct kobj_uevent_env *env);
|
||||||
@ -72,8 +71,8 @@ static inline const void *of_device_get_match_data(const struct device *dev)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int of_device_get_modalias(struct device *dev,
|
static inline int of_device_modalias(struct device *dev,
|
||||||
char *str, ssize_t len)
|
char *str, ssize_t len)
|
||||||
{
|
{
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user