Hi Greg,
On 1/28/2023 5:28 AM, Greg KH wrote:
On Wed, Jan 25, 2023 at 07:14:14PM -0800, Wesley Cheng wrote:
Allow for different platforms to be notified on USB SND connect/disconnect seqeunces. This allows for platform USB SND modules to properly initialize and populate internal structures with references to the USB SND chip device.
Signed-off-by: Wesley Cheng quic_wcheng@quicinc.com
sound/usb/card.c | 28 ++++++++++++++++++++++++++++ sound/usb/card.h | 20 ++++++++++++++++++++ 2 files changed, 48 insertions(+)
diff --git a/sound/usb/card.c b/sound/usb/card.c index 26268ffb8274..803230343c16 100644 --- a/sound/usb/card.c +++ b/sound/usb/card.c @@ -117,6 +117,24 @@ MODULE_PARM_DESC(skip_validation, "Skip unit descriptor validation (default: no) static DEFINE_MUTEX(register_mutex); static struct snd_usb_audio *usb_chip[SNDRV_CARDS]; static struct usb_driver usb_audio_driver; +static struct snd_usb_platform_ops *platform_ops;
You can not have a single "platform_ops" pointer, this HAS to be per-bus.
Agreed.
And what is a "platform operations" anyway? Shouldn't this be a driver type or something like that? "offload_operations"?
The reason for going with platform operations is because every platform may implement the offloading differently. The offload operations term is more direct though in terms of explaining what the ops are going to be used for, so I can see the incentive of moving to that phrase.
+int snd_usb_register_platform_ops(struct snd_usb_platform_ops *ops) +{
- if (platform_ops)
return -EEXIST;
- platform_ops = ops;
- return 0;
No locking? not good.
But again, this has to be per-USB-bus, it can NOT be system wide for obvious reasons.
Sure, will change that when moving to per USB bus.
Thanks Wesley Cheng