spmi: Include OF based modalias in device uevent

Message ID 20170628234458.7917-1-bjorn.andersson@linaro.org
State Accepted
Commit d50daa2af2618dab6d21634e65a5fbcf4ae437d6
Headers show

Commit Message

Bjorn Andersson June 28, 2017, 11:44 p.m.
Include the OF-based modalias in the uevent sent when registering SPMI
devices, so that user space has a chance to autoload the kernel module
for the device.

Reported-by: Rob Clark <robdclark@gmail.com>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>

---

Based on the MODULE_ALIAS in the qcom-spmi-pmic it's likely that the original
author expected that the spmi-pmic-arb would create devices by the identifier
"pmic" and the spmi code would include a MODALIAS="spmi:pmic" in the uevent.

 drivers/spmi/spmi.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

-- 
2.12.0

--
To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Rob Clark June 29, 2017, 1:50 a.m. | #1
On Wed, Jun 28, 2017 at 7:44 PM, Bjorn Andersson
<bjorn.andersson@linaro.org> wrote:
> Include the OF-based modalias in the uevent sent when registering SPMI

> devices, so that user space has a chance to autoload the kernel module

> for the device.

>

> Reported-by: Rob Clark <robdclark@gmail.com>

> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>


Tested-by: Rob Clark <robdclark@gmail.com>


> ---

>

> Based on the MODULE_ALIAS in the qcom-spmi-pmic it's likely that the original

> author expected that the spmi-pmic-arb would create devices by the identifier

> "pmic" and the spmi code would include a MODALIAS="spmi:pmic" in the uevent.

>

>  drivers/spmi/spmi.c | 12 ++++++++++++

>  1 file changed, 12 insertions(+)

>

> diff --git a/drivers/spmi/spmi.c b/drivers/spmi/spmi.c

> index 2b9b0941d9eb..6d23226e5f69 100644

> --- a/drivers/spmi/spmi.c

> +++ b/drivers/spmi/spmi.c

> @@ -365,11 +365,23 @@ static int spmi_drv_remove(struct device *dev)

>         return 0;

>  }

>

> +static int spmi_drv_uevent(struct device *dev, struct kobj_uevent_env *env)

> +{

> +       int ret;

> +

> +       ret = of_device_uevent_modalias(dev, env);

> +       if (ret != -ENODEV)

> +               return ret;

> +

> +       return 0;

> +}

> +

>  static struct bus_type spmi_bus_type = {

>         .name           = "spmi",

>         .match          = spmi_device_match,

>         .probe          = spmi_drv_probe,

>         .remove         = spmi_drv_remove,

> +       .uevent         = spmi_drv_uevent,

>  };

>

>  /**

> --

> 2.12.0

>

--
To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Bjorn Andersson June 29, 2017, 9:37 p.m. | #2
On Thu 29 Jun 14:04 PDT 2017, Stephen Boyd wrote:

> On 06/28, Bjorn Andersson wrote:

> > Include the OF-based modalias in the uevent sent when registering SPMI

> > devices, so that user space has a chance to autoload the kernel module

> > for the device.

> > 

> > Reported-by: Rob Clark <robdclark@gmail.com>

> > Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>

> > ---

> 

> Reviewed-by: Stephen Boyd <sboyd@codeaurora.org>

> 

> I suppose we can delete the MODALIAS in the qcom-spmi-pmic file

> too? That doesn't look like it could ever work

> 


Right, it has never worked. Potentially we would like some SPMI based
modalias thing, but I'm not sure we have enough information about the
found device to create a meaningful alias.

Regards,
Bjorn
--
To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/drivers/spmi/spmi.c b/drivers/spmi/spmi.c
index 2b9b0941d9eb..6d23226e5f69 100644
--- a/drivers/spmi/spmi.c
+++ b/drivers/spmi/spmi.c
@@ -365,11 +365,23 @@  static int spmi_drv_remove(struct device *dev)
 	return 0;
 }
 
+static int spmi_drv_uevent(struct device *dev, struct kobj_uevent_env *env)
+{
+	int ret;
+
+	ret = of_device_uevent_modalias(dev, env);
+	if (ret != -ENODEV)
+		return ret;
+
+	return 0;
+}
+
 static struct bus_type spmi_bus_type = {
 	.name		= "spmi",
 	.match		= spmi_device_match,
 	.probe		= spmi_drv_probe,
 	.remove		= spmi_drv_remove,
+	.uevent		= spmi_drv_uevent,
 };
 
 /**