mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-08-09 06:14:34 +02:00
Clean up an unnecessary space in a conditional statement and move EXPORT_SYMBOL_GPL(snd_ac97_reset) and EXPORT_SYMBOL(ac97_bus_type) to immediately follow their respective definitions. This complies with the Linux kernel coding style convention which prefers exports to be placed next to the exported symbol for better code locality and readability. Signed-off-by: Lucas Poupeau <lucasp.linux@gmail.com> Link: https://patch.msgid.link/20260504153831.18381-1-lucasp.linux@gmail.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
101 lines
2.6 KiB
C
101 lines
2.6 KiB
C
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
/*
|
|
* Linux driver model AC97 bus interface
|
|
*
|
|
* Author: Nicolas Pitre
|
|
* Created: Jan 14, 2005
|
|
* Copyright: (C) MontaVista Software Inc.
|
|
*/
|
|
|
|
#include <linux/module.h>
|
|
#include <linux/init.h>
|
|
#include <linux/device.h>
|
|
#include <linux/string.h>
|
|
#include <sound/ac97_codec.h>
|
|
|
|
/*
|
|
* snd_ac97_check_id() - Reads and checks the vendor ID of the device
|
|
* @ac97: The AC97 device to check
|
|
* @id: The ID to compare to
|
|
* @id_mask: Mask that is applied to the device ID before comparing to @id
|
|
*
|
|
* If @id is 0 this function returns true if the read device vendor ID is
|
|
* a valid ID. If @id is non 0 this functions returns true if @id
|
|
* matches the read vendor ID. Otherwise the function returns false.
|
|
*/
|
|
static bool snd_ac97_check_id(struct snd_ac97 *ac97, unsigned int id,
|
|
unsigned int id_mask)
|
|
{
|
|
ac97->id = ac97->bus->ops->read(ac97, AC97_VENDOR_ID1) << 16;
|
|
ac97->id |= ac97->bus->ops->read(ac97, AC97_VENDOR_ID2);
|
|
|
|
if (ac97->id == 0x0 || ac97->id == 0xffffffff)
|
|
return false;
|
|
|
|
if (id != 0 && id != (ac97->id & id_mask))
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* snd_ac97_reset() - Reset AC'97 device
|
|
* @ac97: The AC'97 device to reset
|
|
* @try_warm: Try a warm reset first
|
|
* @id: Expected device vendor ID
|
|
* @id_mask: Mask that is applied to the device ID before comparing to @id
|
|
*
|
|
* This function resets the AC'97 device. If @try_warm is true the function
|
|
* first performs a warm reset. If @try_warm is false the function issues
|
|
* cold reset followed by a warm reset. If @id is 0 any valid device ID
|
|
* will be accepted, otherwise only the ID that matches @id and @id_mask
|
|
* is accepted.
|
|
* Returns:
|
|
* * %1 - if warm reset is successful
|
|
* * %0 - if cold reset and warm reset is successful
|
|
* * %-ENODEV - if @id and @id_mask not matching
|
|
*/
|
|
int snd_ac97_reset(struct snd_ac97 *ac97, bool try_warm, unsigned int id,
|
|
unsigned int id_mask)
|
|
{
|
|
const struct snd_ac97_bus_ops *ops = ac97->bus->ops;
|
|
|
|
if (try_warm && ops->warm_reset) {
|
|
ops->warm_reset(ac97);
|
|
if (snd_ac97_check_id(ac97, id, id_mask))
|
|
return 1;
|
|
}
|
|
|
|
if (ops->reset)
|
|
ops->reset(ac97);
|
|
if (ops->warm_reset)
|
|
ops->warm_reset(ac97);
|
|
|
|
if (snd_ac97_check_id(ac97, id, id_mask))
|
|
return 0;
|
|
return -ENODEV;
|
|
}
|
|
EXPORT_SYMBOL_GPL(snd_ac97_reset);
|
|
|
|
const struct bus_type ac97_bus_type = {
|
|
.name = "ac97",
|
|
};
|
|
EXPORT_SYMBOL(ac97_bus_type);
|
|
|
|
static int __init ac97_bus_init(void)
|
|
{
|
|
return bus_register(&ac97_bus_type);
|
|
}
|
|
|
|
subsys_initcall(ac97_bus_init);
|
|
|
|
static void __exit ac97_bus_exit(void)
|
|
{
|
|
bus_unregister(&ac97_bus_type);
|
|
}
|
|
|
|
module_exit(ac97_bus_exit);
|
|
|
|
MODULE_DESCRIPTION("Legacy AC97 bus interface");
|
|
MODULE_LICENSE("GPL");
|