From mboxrd@z Thu Jan 1 00:00:00 1970 From: akpm@linux-foundation.org Subject: + add-the-rdc-machine-specific-reboot-fixup.patch added to -mm tree Date: Thu, 25 Oct 2007 14:26:21 -0700 Message-ID: <200710252126.l9PLQLq7024855@imap1.linux-foundation.org> Reply-To: linux-kernel@vger.kernel.org Return-path: Received: from smtp2.linux-foundation.org ([207.189.120.14]:47774 "EHLO smtp2.linux-foundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753056AbXJYV1D (ORCPT ); Thu, 25 Oct 2007 17:27:03 -0400 Sender: mm-commits-owner@vger.kernel.org List-Id: mm-commits@vger.kernel.org To: mm-commits@vger.kernel.org Cc: florian.fainelli@telecomint.eu, david-b@pacbell.net, mingo@elte.hu, tglx@linutronix.de The patch titled x86: add the RDC machine specific reboot fixup has been added to the -mm tree. Its filename is add-the-rdc-machine-specific-reboot-fixup.patch *** Remember to use Documentation/SubmitChecklist when testing your code *** See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this ------------------------------------------------------ Subject: x86: add the RDC machine specific reboot fixup From: Florian Fainelli The RDC R-321x SoC needs a reboot fixup which uses its internal hardware watchdog set to reset the CPU on next tick. Signed-off-by: Florian Fainelli Cc: Thomas Gleixner Cc: Ingo Molnar Cc: David Brownell Signed-off-by: Andrew Morton --- arch/x86/kernel/reboot_fixups_32.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff -puN arch/x86/kernel/reboot_fixups_32.c~add-the-rdc-machine-specific-reboot-fixup arch/x86/kernel/reboot_fixups_32.c --- a/arch/x86/kernel/reboot_fixups_32.c~add-the-rdc-machine-specific-reboot-fixup +++ a/arch/x86/kernel/reboot_fixups_32.c @@ -30,6 +30,19 @@ static void cs5536_warm_reset(struct pci udelay(50); /* shouldn't get here but be safe and spin a while */ } +static void rdc321x_reset(struct pci_dev *dev) +{ + unsigned i; + /* Voluntary reset the watchdog timer */ + outl(0x80003840, 0xCF8); + /* Generate a CPU reset on next tick */ + i = inl(0xCFC); + /* Use the minimum timer resolution */ + i |= 0x1600; + outl(i, 0xCFC); + outb(1, 0x92); +} + struct device_fixup { unsigned int vendor; unsigned int device; @@ -39,6 +52,7 @@ struct device_fixup { static struct device_fixup fixups_table[] = { { PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_5530_LEGACY, cs5530a_warm_reset }, { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CS5536_ISA, cs5536_warm_reset }, +{ PCI_VENDOR_ID_RDC, PCI_DEVICE_ID_RDC_R6030, rdc321x_reset }, }; /* _ Patches currently in -mm which might be from florian.fainelli@telecomint.eu are add-generic-gpio-support-to-x86.patch pci-add-pci-identifiers-for-the-rdc-devices.patch x86-add-support-for-the-rdc-r-321x-soc.patch add-the-rdc-machine-specific-reboot-fixup.patch