lkml.org 
[lkml]   [2011]   [Jul]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 30/34] drivers/watchdog changes for SMBIOS and System Firmware
    Date
    As part of the new SMBIOS and System Firmware code:

    - Replace old dmi* structures and functions with new sysfw* and smbios*
    structures and functions in individual drivers
    - cleanup sysfw_id lookup tables

    Cc: linux-watchdog@vger.kernel.org
    Signed-off-by: Prarit Bhargava <prarit@redhat.com>
    ---
    drivers/watchdog/hpwdt.c | 16 +++++++++-------
    drivers/watchdog/ibmasr.c | 9 +++------
    drivers/watchdog/sbc_fitpc2_wdt.c | 22 +++++++++++++++-------
    3 files changed, 27 insertions(+), 20 deletions(-)

    diff --git a/drivers/watchdog/hpwdt.c b/drivers/watchdog/hpwdt.c
    index 8cb2685..8849eac 100644
    --- a/drivers/watchdog/hpwdt.c
    +++ b/drivers/watchdog/hpwdt.c
    @@ -28,7 +28,7 @@
    #include <linux/uaccess.h>
    #include <linux/watchdog.h>
    #ifdef CONFIG_HPWDT_NMI_DECODING
    -#include <linux/dmi.h>
    +#include <linux/smbios.h>
    #include <linux/spinlock.h>
    #include <linux/nmi.h>
    #include <linux/kdebug.h>
    @@ -374,19 +374,19 @@ asm(".text \n\t"
    ".previous");

    /*
    - * dmi_find_cru
    + * smbios_find_cru
    *
    * Routine Description:
    - * This function checks whether or not a SMBIOS/DMI record is
    + * This function checks whether or not a SMBIOS/SMBIOS record is
    * the 64bit CRU info or not
    */
    -static void __devinit dmi_find_cru(const struct dmi_header *dm, void *dummy)
    +static int __devinit smbios_find_cru(const union smbios_struct *ss, void *dummy)
    {
    struct smbios_cru64_info *smbios_cru64_ptr;
    unsigned long cru_physical_address;

    - if (dm->type == SMBIOS_CRU64_INFORMATION) {
    - smbios_cru64_ptr = (struct smbios_cru64_info *) dm;
    + if (ss->header.type == SMBIOS_CRU64_INFORMATION) {
    + smbios_cru64_ptr = (struct smbios_cru64_info *) &ss;
    if (smbios_cru64_ptr->signature == CRU_BIOS_SIGNATURE_VALUE) {
    cru_physical_address =
    smbios_cru64_ptr->physical_address +
    @@ -395,15 +395,17 @@ static void __devinit dmi_find_cru(const struct dmi_header *dm, void *dummy)
    smbios_cru64_ptr->double_length);
    set_memory_x((unsigned long)cru_rom_addr & PAGE_MASK,
    smbios_cru64_ptr->double_length >> PAGE_SHIFT);
    + return SMBIOS_WALK_STOP;
    }
    }
    + return SMBIOS_WALK_CONTINUE;
    }

    static int __devinit detect_cru_service(void)
    {
    cru_rom_addr = NULL;

    - dmi_walk(dmi_find_cru, NULL);
    + smbios_walk(smbios_find_cru, NULL);

    /* if cru_rom_addr has been set then we found a CRU service */
    return ((cru_rom_addr != NULL) ? 0 : -ENODEV);
    diff --git a/drivers/watchdog/ibmasr.c b/drivers/watchdog/ibmasr.c
    index 195e0f7..b8cc126 100644
    --- a/drivers/watchdog/ibmasr.c
    +++ b/drivers/watchdog/ibmasr.c
    @@ -17,7 +17,7 @@
    #include <linux/timer.h>
    #include <linux/miscdevice.h>
    #include <linux/watchdog.h>
    -#include <linux/dmi.h>
    +#include <linux/smbios.h>
    #include <linux/io.h>
    #include <linux/uaccess.h>

    @@ -376,12 +376,9 @@ static int __init ibmasr_init(void)
    struct ibmasr_id *id;
    int rc;

    - for (id = ibmasr_id_table; id->desc; id++) {
    - if (dmi_find_device(DMI_DEV_TYPE_OTHER, id->desc, NULL)) {
    + for (id = ibmasr_id_table; id->desc; id++)
    + if (smbios_is_onboard_device(id->desc, 0))
    asr_type = id->type;
    - break;
    - }
    - }

    if (!asr_type)
    return -ENODEV;
    diff --git a/drivers/watchdog/sbc_fitpc2_wdt.c b/drivers/watchdog/sbc_fitpc2_wdt.c
    index d5d3994..0419e01 100644
    --- a/drivers/watchdog/sbc_fitpc2_wdt.c
    +++ b/drivers/watchdog/sbc_fitpc2_wdt.c
    @@ -21,7 +21,7 @@
    #include <linux/fs.h>
    #include <linux/init.h>
    #include <linux/moduleparam.h>
    -#include <linux/dmi.h>
    +#include <linux/sysfw.h>
    #include <linux/io.h>
    #include <linux/uaccess.h>

    @@ -198,17 +198,25 @@ static struct miscdevice fitpc2_wdt_miscdev = {
    .fops = &fitpc2_wdt_fops,
    };

    +static struct sysfw_id __initdata fitpc2_device_table[] = {
    + {
    + .ident = "SBC-FITPC2 Watchdog",
    + .matches = {
    + SYSFW_MATCH(SYSFW_BOARD_NAME, "SBC-FITPC2"),
    + },
    + },
    + {}
    +};
    +
    static int __init fitpc2_wdt_init(void)
    {
    int err;
    - const char *brd_name;
    + const struct sysfw_id *id;

    - brd_name = dmi_get_system_info(DMI_BOARD_NAME);
    -
    - if (!brd_name || !strstr(brd_name, "SBC-FITPC2"))
    + id = sysfw_callback(fitpc2_device_table);
    + if (!id)
    return -ENODEV;
    -
    - pr_info("%s found\n", brd_name);
    + pr_info("%s found\n", id->ident);

    if (!request_region(COMMAND_PORT, 1, WATCHDOG_NAME)) {
    pr_err("I/O address 0x%04x already in use\n", COMMAND_PORT);
    --
    1.6.5.2


    \
     
     \ /
      Last update: 2011-07-18 15:17    [W:4.347 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site