platform/mellanox: mlxreg-hotplug: Add environmental data to uevent
Send "udev" event with environmental data in order to allow handling "ENV{}" variables in "udev" rules. Signed-off-by: Vadim Pasternak <vadimp@mellanox.com> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
This commit is contained in:
parent
0a43f7be57
commit
92d020f979
|
@ -16,6 +16,7 @@
|
|||
#include <linux/platform_data/mlxreg.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/string_helpers.h>
|
||||
#include <linux/regmap.h>
|
||||
#include <linux/workqueue.h>
|
||||
|
||||
|
@ -71,6 +72,23 @@ struct mlxreg_hotplug_priv_data {
|
|||
u8 not_asserted;
|
||||
};
|
||||
|
||||
/* Environment variables array for udev. */
|
||||
static char *mlxreg_hotplug_udev_envp[] = { NULL, NULL };
|
||||
|
||||
static int
|
||||
mlxreg_hotplug_udev_event_send(struct kobject *kobj,
|
||||
struct mlxreg_core_data *data, bool action)
|
||||
{
|
||||
char event_str[MLXREG_CORE_LABEL_MAX_SIZE + 2];
|
||||
char label[MLXREG_CORE_LABEL_MAX_SIZE] = { 0 };
|
||||
|
||||
mlxreg_hotplug_udev_envp[0] = event_str;
|
||||
string_upper(label, data->label);
|
||||
snprintf(event_str, MLXREG_CORE_LABEL_MAX_SIZE, "%s=%d", label, !!action);
|
||||
|
||||
return kobject_uevent_env(kobj, KOBJ_CHANGE, mlxreg_hotplug_udev_envp);
|
||||
}
|
||||
|
||||
static int mlxreg_hotplug_device_create(struct mlxreg_hotplug_priv_data *priv,
|
||||
struct mlxreg_core_data *data)
|
||||
{
|
||||
|
@ -78,7 +96,7 @@ static int mlxreg_hotplug_device_create(struct mlxreg_hotplug_priv_data *priv,
|
|||
struct i2c_client *client;
|
||||
|
||||
/* Notify user by sending hwmon uevent. */
|
||||
kobject_uevent(&priv->hwmon->kobj, KOBJ_CHANGE);
|
||||
mlxreg_hotplug_udev_event_send(&priv->hwmon->kobj, data, true);
|
||||
|
||||
/*
|
||||
* Return if adapter number is negative. It could be in case hotplug
|
||||
|
@ -118,7 +136,7 @@ mlxreg_hotplug_device_destroy(struct mlxreg_hotplug_priv_data *priv,
|
|||
struct mlxreg_core_data *data)
|
||||
{
|
||||
/* Notify user by sending hwmon uevent. */
|
||||
kobject_uevent(&priv->hwmon->kobj, KOBJ_CHANGE);
|
||||
mlxreg_hotplug_udev_event_send(&priv->hwmon->kobj, data, false);
|
||||
|
||||
if (data->hpdev.client) {
|
||||
i2c_unregister_device(data->hpdev.client);
|
||||
|
|
Loading…
Reference in New Issue