Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3787a398 authored by Rakesh Ughreja's avatar Rakesh Ughreja Committed by Takashi Iwai
Browse files

ALSA: hdac: Remove usage of struct hdac_ext_device and use hdac_device instead



This patch removes the hdac_ext_device structure. The legacy and
enhanced HDaudio capabilities can be handled in a backward-compatible
way without separate definitions.

Follow-up patches in this series handle the bus and driver definitions.

Signed-off-by: default avatarRakesh Ughreja <rakesh.a.ughreja@intel.com>
Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent ce397d21
Loading
Loading
Loading
Loading
+4 −32
Original line number Diff line number Diff line
@@ -181,48 +181,20 @@ struct hda_dai_map {
	u32	maxbps;
};

#define HDA_MAX_NIDS 16

/**
 * struct hdac_ext_device - HDAC Ext device
 *
 * @hdac: hdac core device
 * @nid_list - the dai map which matches the dai-name with the nid
 * @map_cur_idx - the idx in use in dai_map
 * @ops - the hda codec ops common to all codec drivers
 * @pvt_data - private data, for asoc contains asoc codec object
 */
struct hdac_ext_device {
	struct hdac_device hdev;
	struct hdac_ext_bus *ebus;

	/* soc-dai to nid map */
	struct hda_dai_map nid_list[HDA_MAX_NIDS];
	unsigned int map_cur_idx;

	/* codec ops */
	struct hdac_ext_codec_ops ops;

	struct snd_card *card;
	void *scodec;
	void *private_data;
};

struct hdac_ext_dma_params {
	u32 format;
	u8 stream_tag;
};
#define to_ehdac_device(dev) (container_of((dev), \
				 struct hdac_ext_device, hdev))

/*
 * HD-audio codec base driver
 */
struct hdac_ext_driver {
	struct hdac_driver hdac;

	int	(*probe)(struct hdac_ext_device *dev);
	int	(*remove)(struct hdac_ext_device *dev);
	void	(*shutdown)(struct hdac_ext_device *dev);
	int	(*probe)(struct hdac_device *dev);
	int	(*remove)(struct hdac_device *dev);
	void	(*shutdown)(struct hdac_device *dev);
};

int snd_hda_ext_driver_register(struct hdac_ext_driver *drv);
+10 −15
Original line number Diff line number Diff line
@@ -137,17 +137,16 @@ static void default_release(struct device *dev)
 */
int snd_hdac_ext_bus_device_init(struct hdac_ext_bus *ebus, int addr)
{
	struct hdac_ext_device *edev;
	struct hdac_device *hdev = NULL;
	struct hdac_bus *bus = ebus_to_hbus(ebus);
	char name[15];
	int ret;

	edev = kzalloc(sizeof(*edev), GFP_KERNEL);
	if (!edev)
	hdev = kzalloc(sizeof(*hdev), GFP_KERNEL);
	if (!hdev)
		return -ENOMEM;
	hdev = &edev->hdev;
	edev->ebus = ebus;

	hdev->bus = bus;

	snprintf(name, sizeof(name), "ehdaudio%dD%d", ebus->idx, addr);

@@ -176,10 +175,8 @@ EXPORT_SYMBOL_GPL(snd_hdac_ext_bus_device_init);
 */
void snd_hdac_ext_bus_device_exit(struct hdac_device *hdev)
{
	struct hdac_ext_device *edev = to_ehdac_device(hdev);

	snd_hdac_device_exit(hdev);
	kfree(edev);
	kfree(hdev);
}
EXPORT_SYMBOL_GPL(snd_hdac_ext_bus_device_exit);

@@ -212,27 +209,25 @@ static inline struct hdac_ext_driver *get_edrv(struct device *dev)
	return edrv;
}

static inline struct hdac_ext_device *get_edev(struct device *dev)
static inline struct hdac_device *get_hdev(struct device *dev)
{
	struct hdac_device *hdev = dev_to_hdac_dev(dev);
	struct hdac_ext_device *edev = to_ehdac_device(hdev);

	return edev;
	return hdev;
}

static int hda_ext_drv_probe(struct device *dev)
{
	return (get_edrv(dev))->probe(get_edev(dev));
	return (get_edrv(dev))->probe(get_hdev(dev));
}

static int hdac_ext_drv_remove(struct device *dev)
{
	return (get_edrv(dev))->remove(get_edev(dev));
	return (get_edrv(dev))->remove(get_hdev(dev));
}

static void hdac_ext_drv_shutdown(struct device *dev)
{
	return (get_edrv(dev))->shutdown(get_edev(dev));
	return (get_edrv(dev))->shutdown(get_hdev(dev));
}

/**
+190 −206

File changed.

Preview size limit exceeded, changes collapsed.