At Mon, 22 Nov 2010 13:58:12 +0000, Mark Brown wrote:
On Mon, Nov 22, 2010 at 07:09:43PM +0530, ramesh.babu@intel.com wrote:
+/**
- snd_intelhad_dev_free - to free alsa card instance
- @device: pointer to device
- This function is called when the hdmi cable is un plugged
- */
+static int snd_intelhad_dev_free(struct snd_device *device) +{
- struct snd_intelhad *intelhaddata;
- BUG_ON(!device);
- pr_debug("had: snd_intelhad_dev_free called\n");
- intelhaddata = device->device_data;
- return 0;
+}
This function doesn't appear to do anything like what either the description or name would suggest? I'd expect to see some deallocation going on...
Reading through the code, the construct doesn't seem to allocate any private stuff but only standard components, so this callback doesn't have to do anything much, I suppose.
+/**
- had_hot_plug - to create sound card instance for HDMI audio playabck
- This function is called when the hdmi cable is plugged in. This function
- creates and registers the sound card with ALSA
- */
+static int had_hot_plug(void) +{
It would seem more natural for the HDMI device to be created and instatiated via the normal Linux device model - when a HDMI connection is detected the thing doing the detection creates and registers a new device of some kind which the driver core then binds to a separate driver.
Yeah, the driver structure here is somehow wacky, although it's not to hard to trace.
Takashi