Re: [alsa-devel] [PATCH v4 07/15] soundwire: slave: move uevent handling to slave

From: Pierre-Louis Bossart
Date: Fri Dec 13 2019 - 10:54:22 EST


On 12/13/19 1:22 AM, Greg KH wrote:
On Thu, Dec 12, 2019 at 11:04:01PM -0600, Pierre-Louis Bossart wrote:
Currently the code deals with uevents at the bus level, but we only care
for Slave events

What does this mean? I can't understand it, can you please provide more
information on what you are doing here?

In the earlier versions of the patch, the code looks like this and there was an open on what to do with a master-specific event.

static int sdw_uevent(struct device *dev, struct kobj_uevent_env *env)
{
+ struct sdw_master_device *md;
struct sdw_slave *slave;
char modalias[32];

- if (is_sdw_slave(dev)) {
+ if (is_sdw_md(dev)) {
+ md = to_sdw_master_device(dev);
+ /* TODO: do we need to call add_uevent_var() ? */
+ } else if (is_sdw_slave(dev)) {
slave = to_sdw_slave_device(dev);
+
+ sdw_slave_modalias(slave, modalias, sizeof(modalias));
+
+ if (add_uevent_var(env, "MODALIAS=%s", modalias))
+ return -ENOMEM;
} else {
dev_warn(dev, "uevent for unknown Soundwire type\n");
return -EINVAL;
}

Vinod suggested this was not needed and suggested the code for uevents be moved to be slave-specific, which is what this patch does.
diff --git a/drivers/soundwire/slave.c b/drivers/soundwire/slave.c
index c87267f12a3b..014c3ece1f17 100644
--- a/drivers/soundwire/slave.c
+++ b/drivers/soundwire/slave.c
@@ -17,6 +17,7 @@ static void sdw_slave_release(struct device *dev)
struct device_type sdw_slave_type = {
.name = "sdw_slave",
.release = sdw_slave_release,
+ .uevent = sdw_uevent,

Align this with the other ones?

does this cause any different functionality?

As mentioned above, this move was suggested by Vinod. I don't have a specific need for uevents for the master and there's no functionality limitation, that said this is way beyond my comfort zone so I will follow recommendations, if any.