From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
To: Greg KH <gregkh@linuxfoundation.org>
Cc: alsa-devel@alsa-project.org, tiwai@suse.de,
linux-kernel@vger.kernel.org,
Ranjani Sridharan <ranjani.sridharan@linux.intel.com>,
vkoul@kernel.org, broonie@kernel.org,
srinivas.kandagatla@linaro.org, jank@cadence.com,
slawomir.blauciak@intel.com,
Sanyog Kale <sanyog.r.kale@intel.com>,
Bard liao <yung-chuan.liao@linux.intel.com>,
Rander Wang <rander.wang@linux.intel.com>
Subject: Re: [alsa-devel] [PATCH v4 08/15] soundwire: add initial definitions for sdw_master_device
Date: Fri, 13 Dec 2019 09:49:57 -0600 [thread overview]
Message-ID: <7431d8cf-4a09-42af-14f5-01ab3b15b47b@linux.intel.com> (raw)
In-Reply-To: <20191213072844.GF1750354@kroah.com>
On 12/13/19 1:28 AM, Greg KH wrote:
> On Thu, Dec 12, 2019 at 11:04:02PM -0600, Pierre-Louis Bossart wrote:
>> Since we want an explicit support for the SoundWire Master device, add
>> the definitions, following the Grey Bus example.
>
> "Greybus" All one word please.
Ack, will fix.
>> @@ -59,9 +59,12 @@ int sdw_uevent(struct device *dev, struct kobj_uevent_env *env)
>>
>> if (add_uevent_var(env, "MODALIAS=%s", modalias))
>> return -ENOMEM;
>> + } else if (is_sdw_md(dev)) {
>
> Ok, "is_sdw_md()" is a horrid function name. Spell it out please, this
> ends up in the global namespace.
ok, will use is_sdw_master_device.
>
> Actually, why are you not using module namespaces here for this new
> code? That would help you out a lot.
I must admit I don't understand the question. This is literally modeled
after is_gb_host_device(), did I miss something in the Greybus
implementation?
>
>> + /* this should not happen but throw an error */
>> + dev_warn(dev, "uevent for Master device, unsupported\n");
>
> Um, what? This is supported as it will happen when you create such a
> device. It's an issue of "I didn't write the code yet", not that it is
> not "supported".
I will remove, it cannot happen.
>> diff --git a/drivers/soundwire/master.c b/drivers/soundwire/master.c
>> new file mode 100644
>> index 000000000000..6210098c892b
>> --- /dev/null
>> +++ b/drivers/soundwire/master.c
>> @@ -0,0 +1,62 @@
>> +// SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
>
> Still with the crazy dual license? I thought we went over this all
> before.
>
> You can not do this for code that touches driver core stuff, like this.
> Please stop and just make all of this GPLv2 like we discussed months
> ago.
I don't recall this was the guidance but fine.
>
>> +// Copyright(c) 2019 Intel Corporation.
>> +
>> +#include <linux/device.h>
>> +#include <linux/acpi.h>
>> +#include <linux/soundwire/sdw.h>
>> +#include <linux/soundwire/sdw_type.h>
>> +#include "bus.h"
>> +
>> +static void sdw_md_release(struct device *dev)
>> +{
>> + struct sdw_master_device *md = to_sdw_master_device(dev);
>> +
>> + kfree(md);
>> +}
>> +
>> +struct device_type sdw_md_type = {
>> + .name = "soundwire_master",
>> + .release = sdw_md_release,
>> +};
>> +
>> +struct sdw_master_device *sdw_md_add(struct sdw_md_driver *driver,
>
> Bad function names, please spell things out, you have plenty of
> characters to go around.
This was modeled after gb_hd_create ;-)
sdw_master_device_add starts to be on the long side, no?
>> + struct device *parent,
>> + struct fwnode_handle *fwnode,
>> + int link_id)
>> +{
>> + struct sdw_master_device *md;
>> + int ret;
>> +
>> + if (!driver->probe) {
>> + dev_err(parent, "mandatory probe callback missing\n");
>
> The callback is missing for the driver you passed in, not for the
> parent, right?
yes, this function is called as part of the parent probe.
>> + ret = device_register(&md->dev);
>> + if (ret) {
>> + dev_err(parent, "Failed to add master: ret %d\n", ret);
>> + /*
>> + * On err, don't free but drop ref as this will be freed
>> + * when release method is invoked.
>> + */
>> + put_device(&md->dev);
>
> But you still return a valid pointer? Why????
Ah, yes, this is clearly wrong, thanks for pointing this out.
What's the recommended error code for this? Greybus uses:
return ERR_PTR(-ENOMEM);
>> +EXPORT_SYMBOL(sdw_md_add);
>
> EXPORT_SYMBOL_GPL()?
yes, will fix
>
>
>> diff --git a/include/linux/soundwire/sdw.h b/include/linux/soundwire/sdw.h
>> index 5b1180f1e6b5..af0a72e7afdf 100644
>> --- a/include/linux/soundwire/sdw.h
>> +++ b/include/linux/soundwire/sdw.h
>> @@ -585,6 +585,16 @@ struct sdw_slave {
>> #define to_sdw_slave_device(d) \
>> container_of(d, struct sdw_slave, dev)
>>
>> +struct sdw_master_device {
>> + struct device dev;
>> + int link_id;
>> + struct sdw_md_driver *driver;
>> + void *pdata; /* core does not touch */
>
> Core of what?
SoundWire bus driver. This is a copy/paste from the SOF code I am
afraid, will fix.
>
>> +};
>> +
>> +#define to_sdw_master_device(d) \
>> + container_of(d, struct sdw_master_device, dev)
>> +
>> struct sdw_driver {
>> const char *name;
>>
>> @@ -599,6 +609,26 @@ struct sdw_driver {
>> struct device_driver driver;
>> };
>>
>> +struct sdw_md_driver {
>> + /* initializations and allocations */
>> + int (*probe)(struct sdw_master_device *md, void *link_ctx);
>> + /* hardware enablement, all clock/power dependencies are available */
>> + int (*startup)(struct sdw_master_device *md);
>> + /* hardware disabled */
>> + int (*shutdown)(struct sdw_master_device *md);
>> + /* free all resources */
>> + int (*remove)(struct sdw_master_device *md);
>> + /*
>> + * enable/disable driver control while in clock-stop mode,
>> + * typically in always-on/D0ix modes. When the driver yields
>> + * control, another entity in the system (typically firmware
>> + * running on an always-on microprocessor) is responsible to
>> + * tracking Slave-initiated wakes
>> + */
>> + int (*autonomous_clock_stop_enable)(struct sdw_master_device *md,
>> + bool state);
>> +};
>
> Use kerneldoc comments for this to make it easier to understand and for
> others to read?
yes, I used kerneldoc everywhere except here, will fix.
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
https://mailman.alsa-project.org/mailman/listinfo/alsa-devel
next prev parent reply other threads:[~2019-12-13 21:21 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-13 5:03 [alsa-devel] [PATCH v4 00/15] soundwire: intel: implement new ASoC interfaces Pierre-Louis Bossart
2019-12-13 5:03 ` [alsa-devel] [PATCH v4 01/15] soundwire: renames to prepare support for master drivers/devices Pierre-Louis Bossart
2019-12-13 5:03 ` [alsa-devel] [PATCH v4 02/15] soundwire: rename dev_to_sdw_dev macro Pierre-Louis Bossart
2019-12-13 5:03 ` [alsa-devel] [PATCH v4 03/15] soundwire: rename drv_to_sdw_slave_driver macro Pierre-Louis Bossart
2019-12-13 5:03 ` [alsa-devel] [PATCH v4 04/15] soundwire: bus_type: rename sdw_drv_ to sdw_slave_drv Pierre-Louis Bossart
2019-12-13 5:03 ` [alsa-devel] [PATCH v4 05/15] soundwire: intel: rename res field as link_res Pierre-Louis Bossart
2019-12-13 5:04 ` [alsa-devel] [PATCH v4 06/15] soundwire: add support for sdw_slave_type Pierre-Louis Bossart
2019-12-13 7:21 ` Greg KH
2019-12-13 15:05 ` Pierre-Louis Bossart
2019-12-13 16:12 ` Greg KH
2019-12-13 22:14 ` Pierre-Louis Bossart
2019-12-13 5:04 ` [alsa-devel] [PATCH v4 07/15] soundwire: slave: move uevent handling to slave Pierre-Louis Bossart
2019-12-13 7:22 ` Greg KH
2019-12-13 15:11 ` Pierre-Louis Bossart
2019-12-13 16:11 ` Greg KH
2019-12-13 22:15 ` Pierre-Louis Bossart
2019-12-13 5:04 ` [alsa-devel] [PATCH v4 08/15] soundwire: add initial definitions for sdw_master_device Pierre-Louis Bossart
2019-12-13 7:28 ` Greg KH
2019-12-13 15:49 ` Pierre-Louis Bossart [this message]
2019-12-13 16:10 ` Greg KH
2019-12-13 22:15 ` Pierre-Louis Bossart
2019-12-16 22:34 ` Pierre-Louis Bossart
2019-12-13 23:25 ` Pierre-Louis Bossart
2019-12-14 8:27 ` Greg KH
2019-12-16 15:02 ` Pierre-Louis Bossart
2019-12-16 16:25 ` Greg KH
2019-12-16 17:07 ` Pierre-Louis Bossart
2019-12-13 5:04 ` [alsa-devel] [PATCH v4 09/15] soundwire: intel: remove platform devices and provide new interface Pierre-Louis Bossart
2019-12-13 5:04 ` [alsa-devel] [PATCH v4 10/15] soundwire: register master device driver Pierre-Louis Bossart
2019-12-13 5:04 ` [alsa-devel] [PATCH v4 11/15] soundwire: intel: add prepare support in sdw dai driver Pierre-Louis Bossart
2019-12-13 5:04 ` [alsa-devel] [PATCH v4 12/15] soundwire: intel: add trigger " Pierre-Louis Bossart
2019-12-13 5:04 ` [alsa-devel] [PATCH v4 13/15] soundwire: intel: add sdw_stream_setup helper for .startup callback Pierre-Louis Bossart
2019-12-13 5:04 ` [alsa-devel] [PATCH v4 14/15] soundwire: intel: free all resources on hw_free() Pierre-Louis Bossart
2019-12-13 5:04 ` [alsa-devel] [PATCH v4 15/15] soundwire: intel_init: add implementation of sdw_intel_enable_irq() Pierre-Louis Bossart
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=7431d8cf-4a09-42af-14f5-01ab3b15b47b@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=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;
as well as URLs for NNTP newsgroup(s).