[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