diff options
Diffstat (limited to 'sound/pci/hda/hda_beep.c')
| -rw-r--r-- | sound/pci/hda/hda_beep.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/sound/pci/hda/hda_beep.c b/sound/pci/hda/hda_beep.c index 9b77b3e0fa9..3ecd7e797de 100644 --- a/sound/pci/hda/hda_beep.c +++ b/sound/pci/hda/hda_beep.c | |||
| @@ -37,6 +37,9 @@ static void snd_hda_generate_beep(struct work_struct *work) | |||
| 37 | container_of(work, struct hda_beep, beep_work); | 37 | container_of(work, struct hda_beep, beep_work); |
| 38 | struct hda_codec *codec = beep->codec; | 38 | struct hda_codec *codec = beep->codec; |
| 39 | 39 | ||
| 40 | if (!beep->enabled) | ||
| 41 | return; | ||
| 42 | |||
| 40 | /* generate tone */ | 43 | /* generate tone */ |
| 41 | snd_hda_codec_write_cache(codec, beep->nid, 0, | 44 | snd_hda_codec_write_cache(codec, beep->nid, 0, |
| 42 | AC_VERB_SET_BEEP_CONTROL, beep->tone); | 45 | AC_VERB_SET_BEEP_CONTROL, beep->tone); |
| @@ -85,6 +88,10 @@ int snd_hda_attach_beep_device(struct hda_codec *codec, int nid) | |||
| 85 | snprintf(beep->phys, sizeof(beep->phys), | 88 | snprintf(beep->phys, sizeof(beep->phys), |
| 86 | "card%d/codec#%d/beep0", codec->bus->card->number, codec->addr); | 89 | "card%d/codec#%d/beep0", codec->bus->card->number, codec->addr); |
| 87 | input_dev = input_allocate_device(); | 90 | input_dev = input_allocate_device(); |
| 91 | if (!input_dev) { | ||
| 92 | kfree(beep); | ||
| 93 | return -ENOMEM; | ||
| 94 | } | ||
| 88 | 95 | ||
| 89 | /* setup digital beep device */ | 96 | /* setup digital beep device */ |
| 90 | input_dev->name = "HDA Digital PCBeep"; | 97 | input_dev->name = "HDA Digital PCBeep"; |
| @@ -115,6 +122,7 @@ int snd_hda_attach_beep_device(struct hda_codec *codec, int nid) | |||
| 115 | beep->nid = nid; | 122 | beep->nid = nid; |
| 116 | beep->dev = input_dev; | 123 | beep->dev = input_dev; |
| 117 | beep->codec = codec; | 124 | beep->codec = codec; |
| 125 | beep->enabled = 1; | ||
| 118 | codec->beep = beep; | 126 | codec->beep = beep; |
| 119 | 127 | ||
| 120 | INIT_WORK(&beep->beep_work, &snd_hda_generate_beep); | 128 | INIT_WORK(&beep->beep_work, &snd_hda_generate_beep); |
