[lkml]   [2006]   [Apr]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    Subject[RFC] make PC Speaker driver work on x86-64
    I have a pair of Athlon64 machines that dual-boot 32-bit and
    64-bit kernels. One annoying difference between the kernels
    is that the PC Speaker driver (CONFIG_INPUT_PCSPKR=y) only
    works in the 32-bit kernels. In the 64-bit kernels it remains
    inactive and doesn't even generate any boot-time initialisation
    or error messages.

    Today I debugged that issue, and found that the PC Speaker
    driver's ->probe() routine doesn't even get called in the
    64-bit kernels. The reason for that is that the arch code
    apparently has to explictly add a "pcspkr" platform device
    in order for the driver core to call the ->probe() routine.
    arch/i386/kernel/setup.c unconditionally adds a "pcspkr"
    device, but the x86_64 kernel has no code at all related to
    the PC Speaker.

    The patch below copies the relevant code from i386 to x86_64,
    which makes the PC Speaker work for me on x86_64.

    Is there a better way to do this? ACPI?


    diff -rupN linux-2.6.17-rc3/arch/x86_64/kernel/setup.c linux-2.6.17-rc3.x86_64-pcspkr/arch/x86_64/kernel/setup.c
    --- linux-2.6.17-rc3/arch/x86_64/kernel/setup.c 2006-04-28 20:54:10.000000000 +0200
    +++ linux-2.6.17-rc3.x86_64-pcspkr/arch/x86_64/kernel/setup.c 2006-04-29 18:42:08.000000000 +0200
    @@ -1426,3 +1426,22 @@ struct seq_operations cpuinfo_op = {
    .show = show_cpuinfo,

    +#include <linux/platform_device.h>
    +static __init int add_pcspkr(void)
    + struct platform_device *pd;
    + int ret;
    + pd = platform_device_alloc("pcspkr", -1);
    + if (!pd)
    + return -ENOMEM;
    + ret = platform_device_add(pd);
    + if (ret)
    + platform_device_put(pd);
    + return ret;
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at
     \ /
      Last update: 2006-04-29 20:32    [W:0.018 / U:55.988 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site