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: Rakesh Ughreja <rakesh.a.ughreja@intel.com> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Родитель
ce397d215c
Коммит
3787a39852
|
@ -181,48 +181,20 @@ struct hda_dai_map {
|
||||||
u32 maxbps;
|
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 {
|
struct hdac_ext_dma_params {
|
||||||
u32 format;
|
u32 format;
|
||||||
u8 stream_tag;
|
u8 stream_tag;
|
||||||
};
|
};
|
||||||
#define to_ehdac_device(dev) (container_of((dev), \
|
|
||||||
struct hdac_ext_device, hdev))
|
|
||||||
/*
|
/*
|
||||||
* HD-audio codec base driver
|
* HD-audio codec base driver
|
||||||
*/
|
*/
|
||||||
struct hdac_ext_driver {
|
struct hdac_ext_driver {
|
||||||
struct hdac_driver hdac;
|
struct hdac_driver hdac;
|
||||||
|
|
||||||
int (*probe)(struct hdac_ext_device *dev);
|
int (*probe)(struct hdac_device *dev);
|
||||||
int (*remove)(struct hdac_ext_device *dev);
|
int (*remove)(struct hdac_device *dev);
|
||||||
void (*shutdown)(struct hdac_ext_device *dev);
|
void (*shutdown)(struct hdac_device *dev);
|
||||||
};
|
};
|
||||||
|
|
||||||
int snd_hda_ext_driver_register(struct hdac_ext_driver *drv);
|
int snd_hda_ext_driver_register(struct hdac_ext_driver *drv);
|
||||||
|
|
|
@ -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)
|
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_device *hdev = NULL;
|
||||||
struct hdac_bus *bus = ebus_to_hbus(ebus);
|
struct hdac_bus *bus = ebus_to_hbus(ebus);
|
||||||
char name[15];
|
char name[15];
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
edev = kzalloc(sizeof(*edev), GFP_KERNEL);
|
hdev = kzalloc(sizeof(*hdev), GFP_KERNEL);
|
||||||
if (!edev)
|
if (!hdev)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
hdev = &edev->hdev;
|
|
||||||
edev->ebus = ebus;
|
hdev->bus = bus;
|
||||||
|
|
||||||
snprintf(name, sizeof(name), "ehdaudio%dD%d", ebus->idx, addr);
|
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)
|
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);
|
snd_hdac_device_exit(hdev);
|
||||||
kfree(edev);
|
kfree(hdev);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(snd_hdac_ext_bus_device_exit);
|
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;
|
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_device *hdev = dev_to_hdac_dev(dev);
|
||||||
struct hdac_ext_device *edev = to_ehdac_device(hdev);
|
return hdev;
|
||||||
|
|
||||||
return edev;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int hda_ext_drv_probe(struct device *dev)
|
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)
|
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)
|
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));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Загрузка…
Ссылка в новой задаче