blob: 1e89e0ca5fcddf1ff14365e36c4fe89ba5dca02b [file] [log] [blame]
--- ../alsa-kernel/ppc/beep.c 2008-02-05 11:23:24.000000000 +0200
+++ beep.c 2008-04-17 15:26:15.732223056 +0300
@@ -1,3 +1,13 @@
+#define __NO_VERSION__
+#include "adriver.h"
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
+#include "beep_old.c"
+#else /* 2.6 kernels */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 16)
+#define input_get_drvdata(dev) (dev->private)
+#endif
+
/*
* Beep using pcm
*
@@ -226,7 +236,11 @@
return -ENOMEM;
dmabuf = dma_alloc_coherent(&chip->pdev->dev, BEEP_BUFLEN * 4,
&beep->addr, GFP_KERNEL);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 15)
input_dev = input_allocate_device();
+#else
+ input_dev = kzalloc(sizeof(*input_dev), GFP_KERNEL);
+#endif
if (! dmabuf || ! input_dev)
goto fail1;
@@ -241,8 +255,15 @@
input_dev->evbit[0] = BIT_MASK(EV_SND);
input_dev->sndbit[0] = BIT_MASK(SND_BELL) | BIT_MASK(SND_TONE);
input_dev->event = snd_pmac_beep_event;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 22)
input_dev->dev.parent = &chip->pdev->dev;
input_set_drvdata(input_dev, chip);
+#else
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 15)
+ input_dev->cdev.dev = &chip->pdev->dev;
+#endif
+ input_dev->private = chip;
+#endif /* 2.6.22 */
beep->dev = input_dev;
beep->buf = dmabuf;
@@ -256,14 +277,23 @@
chip->beep = beep;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 15)
err = input_register_device(beep->dev);
if (err)
goto fail2;
+#else
+ input_register_device(beep->dev);
+#endif
return 0;
fail2: snd_ctl_remove(chip->card, beep_ctl);
- fail1: input_free_device(input_dev);
+ fail1:
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 15)
+ input_free_device(input_dev);
+#else
+ kfree(input_dev);
+#endif
if (dmabuf)
dma_free_coherent(&chip->pdev->dev, BEEP_BUFLEN * 4,
dmabuf, beep->addr);
@@ -275,9 +305,16 @@
{
if (chip->beep) {
input_unregister_device(chip->beep->dev);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 15)
+ kfree(chip->beep->dev);
+#else
+ input_free_device(chip->beep->dev);
+#endif
dma_free_coherent(&chip->pdev->dev, BEEP_BUFLEN * 4,
chip->beep->buf, chip->beep->addr);
kfree(chip->beep);
chip->beep = NULL;
}
}
+
+#endif