View | Details | Raw Unified | Return to bug 10409 | Differences between
and this patch

Collapse All | Expand All

(-)a/arch/x86/kernel/hpet.c (-1 / +23 lines)
Lines 6-11 Link Here
6
#include <linux/init.h>
6
#include <linux/init.h>
7
#include <linux/sysdev.h>
7
#include <linux/sysdev.h>
8
#include <linux/pm.h>
8
#include <linux/pm.h>
9
#include <linux/dmi.h>
9
10
10
#include <asm/fixmap.h>
11
#include <asm/fixmap.h>
11
#include <asm/hpet.h>
12
#include <asm/hpet.h>
Lines 371-376 static int hpet_clocksource_register(void) Link Here
371
	return 0;
372
	return 0;
372
}
373
}
373
374
375
static int __initdata hpet_clockevent_disabled;
376
static int __init hpet_clockevent_disable(const struct dmi_system_id *d)
377
{
378
	printk(KERN_WARNING "%s with broken HPET interrupt detected.\n", d->ident);
379
	hpet_clockevent_disabled = 1;
380
	return 0;
381
}
382
383
static struct dmi_system_id __initdata hpet_dmi_table[] = {
384
	{
385
	 .callback = hpet_clockevent_disable,
386
	 .ident = "Haier H53",
387
	 .matches = {DMI_MATCH(DMI_BOARD_NAME, "H53"),
388
		     DMI_MATCH(DMI_BOARD_VENDOR, "Haier"),
389
		},
390
	 },
391
	{},
392
};
393
374
/**
394
/**
375
 * hpet_enable - Try to setup the HPET timer. Returns 1 on success.
395
 * hpet_enable - Try to setup the HPET timer. Returns 1 on success.
376
 */
396
 */
Lines 381-386 int __init hpet_enable(void) Link Here
381
	if (!is_hpet_capable())
401
	if (!is_hpet_capable())
382
		return 0;
402
		return 0;
383
403
404
	dmi_check_system(hpet_dmi_table);
405
384
	hpet_set_mapping();
406
	hpet_set_mapping();
385
407
386
	/*
408
	/*
Lines 408-414 int __init hpet_enable(void) Link Here
408
	if (hpet_clocksource_register())
430
	if (hpet_clocksource_register())
409
		goto out_nohpet;
431
		goto out_nohpet;
410
432
411
	if (id & HPET_ID_LEGSUP) {
433
	if ((id & HPET_ID_LEGSUP) && !hpet_clockevent_disabled) {
412
		hpet_legacy_clockevent_register();
434
		hpet_legacy_clockevent_register();
413
		return 1;
435
		return 1;
414
	}
436
	}

Return to bug 10409