[U-Boot] [PATCH 25/33] sound: Add a driver for the i8254 beep
Bin Meng
bmeng.cn at gmail.com
Wed Feb 13 09:39:32 UTC 2019
Hi Simon,
On Tue, Jan 22, 2019 at 9:14 AM Simon Glass <sjg at chromium.org> wrote:
>
> Add a sound driver which can output simple beeps using this legacy timer.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
> drivers/sound/Kconfig | 12 ++++++++++++
> drivers/sound/Makefile | 1 +
> drivers/sound/i8254_beep.c | 38 ++++++++++++++++++++++++++++++++++++++
> 3 files changed, 51 insertions(+)
> create mode 100644 drivers/sound/i8254_beep.c
>
> diff --git a/drivers/sound/Kconfig b/drivers/sound/Kconfig
> index a414e8e712..36b329d016 100644
> --- a/drivers/sound/Kconfig
> +++ b/drivers/sound/Kconfig
> @@ -31,6 +31,18 @@ config I2S_SAMSUNG
> option provides an implementation for sound_init() and
> sound_play().
>
> +config SOUND_I8254
> + bool "Intel i8254 timer / beeper"
> + depends on SOUND
> + help
> + This enables support for a beeper that uses the i8254 timer chip.
> + This can emit beeps at a fixed frequency. It is possible to control
> + the length of the beeps, by turning a beep on, waiting for a period
> + of time, then turning it off.
> +
> + This is quite an old feature, called PIT (Programmable Interval
> + Timer), but is nonetheless still available on modern x86 machines.
> +
> config SOUND_INTEL_HDA
> bool "Intel HDA audio codec"
> depends on SOUND
> diff --git a/drivers/sound/Makefile b/drivers/sound/Makefile
> index 23893947be..f01fb2f739 100644
> --- a/drivers/sound/Makefile
> +++ b/drivers/sound/Makefile
> @@ -15,4 +15,5 @@ obj-$(CONFIG_SOUND_MAX98088) += max98088.o maxim_codec.o
> obj-$(CONFIG_SOUND_MAX98090) += max98090.o maxim_codec.o
> obj-$(CONFIG_SOUND_MAX98095) += max98095.o maxim_codec.o
> obj-$(CONFIG_SOUND_INTEL_HDA) += hda_codec.o
> +obj-$(CONFIG_SOUND_I8254) += i8254_beep.o
> obj-$(CONFIG_SOUND_IVYBRIDGE) += ivybridge_sound.o
> diff --git a/drivers/sound/i8254_beep.c b/drivers/sound/i8254_beep.c
> new file mode 100644
> index 0000000000..c65ed268cf
> --- /dev/null
> +++ b/drivers/sound/i8254_beep.c
> @@ -0,0 +1,38 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * Copyright 2018 Google LLC
> + */
> +
> +#include <common.h>
> +#include <dm.h>
> +#include <sound.h>
> +#include <asm/i8254.h>
> +
> +int i8254_start_beep(struct udevice *dev, int frequency_hz)
> +{
> + return i8254_enable_beep(frequency_hz);
> +}
> +
> +int i8254_stop_beep(struct udevice *dev)
> +{
> + i8254_disable_beep();
> +
> + return 0;
> +}
> +
> +static const struct sound_ops i8254_ops = {
> + .start_beep = i8254_start_beep,
> + .stop_beep = i8254_stop_beep,
> +};
> +
> +static const struct udevice_id i8254_ids[] = {
> + { .compatible = "i8254,beeper" },
> + { }
> +};
> +
> +U_BOOT_DRIVER(i8254_drv) = {
> + .name = "bd82x6x",
Looks a wrong name to me.
> + .id = UCLASS_SOUND,
> + .of_match = i8254_ids,
> + .ops = &i8254_ops,
> +};
> --
Regards,
Bin
More information about the U-Boot
mailing list