From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
To: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>,
alsa-devel@alsa-project.org
Cc: linux-kernel@vger.kernel.org, tiwai@suse.de, broonie@kernel.org,
vkoul@kernel.org, gregkh@linuxfoundation.org, jank@cadence.com,
slawomir.blauciak@intel.com,
Bard liao <yung-chuan.liao@linux.intel.com>,
Rander Wang <rander.wang@linux.intel.com>,
Ranjani Sridharan <ranjani.sridharan@linux.intel.com>,
Hui Wang <hui.wang@canonical.com>,
Sanyog Kale <sanyog.r.kale@intel.com>
Subject: Re: [PATCH 1/5] soundwire: bus_type: add master_device/driver support
Date: Fri, 20 Mar 2020 13:17:37 -0500 [thread overview]
Message-ID: <626a074b-06a9-01a0-334f-3aaed1f7ed76@linux.intel.com> (raw)
In-Reply-To: <5d78f0f8-7418-e50e-6f0b-dd6988224744@linaro.org>
Thanks for the quick review Srinivas,
> This patch in general is missing device tree support for both matching
> and uevent so this will not clearly work for Qualcomm controller unless
> we do via platform bus, which does not sound right!
see other email, the platform bus is handled by a platform
device/driver. There was no intention to change that, it's by design
rather than an omission/error.
>> +
>> +/**
>> + * sdw_master_device_startup() - startup hardware
>> + * @md: Linux Soundwire master device
>> + *
>> + * This use of this function is optional. It is only needed if the
>> + * hardware cannot be started during a driver probe, e.g. due to power
>> + * rail dependencies. The implementation is platform-specific but the
>> + * bus will typically go through a hardware-reset sequence and devices
>> + * will be enumerated once they report as ATTACHED.
>> + */
>> +int sdw_master_device_startup(struct sdw_master_device *md)
>> +{
>> + struct sdw_master_driver *mdrv;
>> + struct device *dev;
>> + int ret = 0;
>> +
>> + if (IS_ERR_OR_NULL(md))
>> + return -EINVAL;
>> +
>> + dev = &md->dev;
>> + mdrv = drv_to_sdw_master_driver(dev->driver);
>> +
>> + if (mdrv && mdrv->startup)
>> + ret = mdrv->startup(md);
>> +
>> + return ret;
>> +}
>> +EXPORT_SYMBOL_GPL(sdw_master_device_startup);
>
> Who would call this function? and How would it get hold of master device
> instance ?
sdw_master_device_add() returns a struct_master_device *md, so the
parent has a handle to that device. See the device creation here:
https://github.com/thesofproject/linux/blob/9c7487b33072040ab755d32ca173b75151c0160c/drivers/soundwire/intel_init.c#L238
This startup() would be called by the parent when all
requirements/dependencies are met. Put differently, it allows the probe
to run much earlier and check for platform firmware information (which
links are enabled, what devices are exposed by platform firmware), while
the startup is really when the bus clk/data lines will start toggling.
https://github.com/thesofproject/linux/blob/9c7487b33072040ab755d32ca173b75151c0160c/drivers/soundwire/intel_init.c#L341
and the call from the SOF layer is here:
https://github.com/thesofproject/linux/blob/9c7487b33072040ab755d32ca173b75151c0160c/sound/soc/sof/intel/hda-loader.c#L418
Again, if everything is ready at probe time there's no need to delay the
actual bus startup. This is not needed for Qualcomm platforms where the
Master device is part of a codec. It's actually irrelevant since there
is no driver, so the startup callback does not even exist :-)
> How would soundwire core also ensure that we do not actively use this
> master if it is not ready. Similar comment for shutdown callback.
That's a fair point, we could add a state variable and a check that the
probe happened before.
In practice the two cases of device creation and startup are different
phases so it'd more of a paranoia check.
Thanks,
-Pierre
next prev parent reply other threads:[~2020-03-20 18:18 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-20 16:29 [PATCH 0/5] soundwire: add sdw_master_device support on Qualcomm platforms Pierre-Louis Bossart
2020-03-20 16:29 ` [PATCH 1/5] soundwire: bus_type: add master_device/driver support Pierre-Louis Bossart
2020-03-20 17:51 ` Srinivas Kandagatla
2020-03-20 18:17 ` Pierre-Louis Bossart [this message]
2020-03-23 11:06 ` Srinivas Kandagatla
2020-03-23 12:54 ` Vinod Koul
2020-03-20 16:29 ` [PATCH 2/5] soundwire: bus_type: protect cases where no driver name is provided Pierre-Louis Bossart
2020-03-20 16:29 ` [PATCH 3/5] soundwire: master: use device node pointer from master device Pierre-Louis Bossart
2020-03-20 16:29 ` [PATCH 4/5] soundwire: qcom: fix error handling in probe Pierre-Louis Bossart
2020-03-20 16:29 ` [PATCH 5/5] soundwire: qcom: add sdw_master_device support Pierre-Louis Bossart
2020-03-20 17:01 ` Srinivas Kandagatla
2020-03-20 17:57 ` Pierre-Louis Bossart
2020-03-23 12:52 ` Vinod Koul
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=626a074b-06a9-01a0-334f-3aaed1f7ed76@linux.intel.com \
--to=pierre-louis.bossart@linux.intel.com \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=hui.wang@canonical.com \
--cc=jank@cadence.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rander.wang@linux.intel.com \
--cc=ranjani.sridharan@linux.intel.com \
--cc=sanyog.r.kale@intel.com \
--cc=slawomir.blauciak@intel.com \
--cc=srinivas.kandagatla@linaro.org \
--cc=tiwai@suse.de \
--cc=vkoul@kernel.org \
--cc=yung-chuan.liao@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome