From: Greg KH <gregkh@linuxfoundation.org>
To: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Cc: Vinod Koul <vkoul@kernel.org>,
alsa-devel@alsa-project.org, tiwai@suse.de,
linux-kernel@vger.kernel.org, liam.r.girdwood@linux.intel.com,
broonie@kernel.org, srinivas.kandagatla@linaro.org,
jank@cadence.com, joe@perches.com,
Sanyog Kale <sanyog.r.kale@intel.com>
Subject: Re: [alsa-devel] [RFC PATCH 1/7] soundwire: Add sysfs support for master(s)
Date: Wed, 8 May 2019 18:59:45 +0200 [thread overview]
Message-ID: <20190508165945.GC6157@kroah.com> (raw)
In-Reply-To: <c0161db3-69d7-0a76-f4bd-d5feb3529128@linux.intel.com>
On Wed, May 08, 2019 at 11:42:15AM -0500, Pierre-Louis Bossart wrote:
>
>
> On 5/8/19 4:16 AM, Greg KH wrote:
> > On Wed, May 08, 2019 at 01:16:06PM +0530, Vinod Koul wrote:
> > > On 07-05-19, 17:49, Pierre-Louis Bossart wrote:
> > > >
> > > > > > The model here is that Master device is PCI or Platform device and then
> > > > > > creates a bus instance which has soundwire slave devices.
> > > > > >
> > > > > > So for any attribute on Master device (which has properties as well and
> > > > > > representation in sysfs), device specfic struct (PCI/platfrom doesn't
> > > > > > help). For slave that is not a problem as sdw_slave structure takes care
> > > > > > if that.
> > > > > >
> > > > > > So, the solution was to create the psedo sdw_master device for the
> > > > > > representation and have device-specific structure.
> > > > >
> > > > > Ok, much like the "USB host controller" type device. That's fine, make
> > > > > such a device, add it to your bus, and set the type correctly. And keep
> > > > > a pointer to that structure in your device-specific structure if you
> > > > > really need to get to anything in it.
> > > >
> > > > humm, you lost me on the last sentence. Did you mean using
> > > > set_drv/platform_data during the init and retrieving the bus information
> > > > with get_drv/platform_data as needed later? Or something else I badly need
> > > > to learn?
> > >
> > > IIUC Greg meant we should represent a soundwire master device type and
> > > use that here. Just like we have soundwire slave device type. Something
> > > like:
> > >
> > > struct sdw_master {
> > > struct device dev;
> > > struct sdw_master_prop *prop;
> > > ...
> > > };
> > >
> > > In show function you get master from dev (container of) and then use
> > > that to access the master properties. So int.sdw.0 can be of this type.
> >
> > Yes, you need to represent the master device type if you are going to be
> > having an internal representation of it.
>
> Humm, confused...In the existing code bus and master are synonyms, see e.g.
> following code excerpts:
>
> * sdw_add_bus_master() - add a bus Master instance
> * @bus: bus instance
> *
> * Initializes the bus instance, read properties and create child
> * devices.
>
> struct sdw_bus {
> struct device *dev; <<< pointer here
That's the pointer to what? The device that the bus is "attached to"
(i.e. parent, like a platform device or a pci device)?
Why isn't this a "real" device in itself?
I thought I asked that a long time ago when first reviewing these
patches...
> unsigned int link_id;
> struct list_head slaves;
> DECLARE_BITMAP(assigned, SDW_MAX_DEVICES);
> struct mutex bus_lock;
> struct mutex msg_lock;
> const struct sdw_master_ops *ops;
> const struct sdw_master_port_ops *port_ops;
> struct sdw_bus_params params;
> struct sdw_master_prop prop;
>
> The existing code creates a platform_device in
> drivers/soundwire/intel_init.c, and it's assigned by the following code:
The core creates a platform device, don't assume you can "take it over"
:)
That platform device lives on the platform bus, you need a "master"
device that lives on your soundbus bus.
Again, look at how USB does this. Or better yet, greybus, as that code
is a lot smaller and simpler.
>
> static int intel_probe(struct platform_device *pdev)
> {
> struct sdw_cdns_stream_config config;
> struct sdw_intel *sdw;
> int ret;
>
> sdw = devm_kzalloc(&pdev->dev, sizeof(*sdw), GFP_KERNEL);
> [snip]
> sdw->cdns.dev = &pdev->dev;
> sdw->cdns.bus.dev = &pdev->dev;
Gotta love the lack of reference counting :(
> I really don't see what you are hinting at, sorry, unless we are talking
> about major surgery in the code.
It sounds like you need a device on your bus that represents the master,
as you have attributes associated with it, and other things. You can't
put attributes on a random pci or platform device, as you do not "own"
that device.
does that help?
greg k-h
next prev parent reply other threads:[~2019-05-08 16:59 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-04 1:00 [RFC PATCH 0/7] soundwire: add sysfs and debugfs support Pierre-Louis Bossart
2019-05-04 1:00 ` [RFC PATCH 1/7] soundwire: Add sysfs support for master(s) Pierre-Louis Bossart
2019-05-04 6:52 ` Greg KH
2019-05-06 16:43 ` [alsa-devel] " Pierre-Louis Bossart
2019-05-07 2:24 ` Pierre-Louis Bossart
2019-05-07 5:27 ` Vinod Koul
2019-05-07 5:54 ` Greg KH
2019-05-07 11:03 ` Vinod Koul
2019-05-07 11:19 ` Greg KH
2019-05-07 22:49 ` Pierre-Louis Bossart
2019-05-08 7:46 ` Vinod Koul
2019-05-08 9:16 ` Greg KH
2019-05-08 16:42 ` Pierre-Louis Bossart
2019-05-08 16:59 ` Greg KH [this message]
2019-05-08 20:57 ` Pierre-Louis Bossart
2019-05-09 4:26 ` [alsa-devel] " Vinod Koul
2019-05-09 18:18 ` Greg KH
2019-05-04 1:00 ` [RFC PATCH 2/7] soundwire: add Slave sysfs support Pierre-Louis Bossart
2019-05-04 6:54 ` Greg KH
2019-05-06 14:42 ` Pierre-Louis Bossart
2019-05-06 14:42 ` [alsa-devel] " Pierre-Louis Bossart
2019-05-06 15:19 ` Greg KH
2019-05-06 16:22 ` Vinod Koul
2019-05-06 16:46 ` Pierre-Louis Bossart
2019-05-07 5:19 ` Vinod Koul
2019-05-07 13:54 ` Pierre-Louis Bossart
2019-05-08 7:40 ` Vinod Koul
2019-05-08 16:51 ` Pierre-Louis Bossart
2019-05-04 1:00 ` [RFC PATCH 3/7] ABI: testing: Add description of soundwire master sysfs files Pierre-Louis Bossart
2019-05-04 6:53 ` Greg KH
2019-05-06 16:24 ` Vinod Koul
2019-05-04 1:00 ` [RFC PATCH 4/7] ABI: testing: Add description of soundwire slave " Pierre-Louis Bossart
2019-05-04 1:00 ` [RFC PATCH 5/7] soundwire: add debugfs support Pierre-Louis Bossart
2019-05-04 7:03 ` Greg KH
2019-05-06 14:48 ` Pierre-Louis Bossart
2019-05-06 14:48 ` [alsa-devel] " Pierre-Louis Bossart
2019-05-06 16:38 ` Vinod Koul
2019-05-06 16:54 ` Pierre-Louis Bossart
2019-05-07 5:56 ` Greg KH
2019-05-04 1:00 ` [RFC PATCH 6/7] soundwire: cadence_master: add debugfs register dump Pierre-Louis Bossart
2019-05-04 7:03 ` Greg KH
2019-05-06 14:50 ` [alsa-devel] " Pierre-Louis Bossart
2019-05-04 7:04 ` Greg KH
2019-05-04 1:00 ` [RFC PATCH 7/7] soundwire: intel: " Pierre-Louis Bossart
2019-05-04 7:04 ` Greg KH
2019-05-06 14:51 ` [alsa-devel] " 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=20190508165945.GC6157@kroah.com \
--to=gregkh@linuxfoundation.org \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@kernel.org \
--cc=jank@cadence.com \
--cc=joe@perches.com \
--cc=liam.r.girdwood@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=pierre-louis.bossart@linux.intel.com \
--cc=sanyog.r.kale@intel.com \
--cc=srinivas.kandagatla@linaro.org \
--cc=tiwai@suse.de \
--cc=vkoul@kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.