Fuloong shutdown support
This commit is contained in:
parent
cfe6539cfe
commit
99388e0cf8
2 changed files with 23 additions and 5 deletions
|
@ -226,10 +226,28 @@ grub_machine_fini (void)
|
||||||
void
|
void
|
||||||
grub_halt (void)
|
grub_halt (void)
|
||||||
{
|
{
|
||||||
grub_outb (grub_inb (GRUB_CPU_LOONGSON_GPIOCFG)
|
switch (grub_arch_machine)
|
||||||
& ~GRUB_CPU_LOONGSON_SHUTDOWN_GPIO, GRUB_CPU_LOONGSON_GPIOCFG);
|
{
|
||||||
|
case GRUB_ARCH_MACHINE_FULOONG:
|
||||||
grub_millisleep (1500);
|
{
|
||||||
|
grub_pci_device_t dev;
|
||||||
|
grub_port_t p;
|
||||||
|
if (grub_cs5536_find (&dev))
|
||||||
|
{
|
||||||
|
p = (grub_cs5536_read_msr (dev, GRUB_CS5536_MSR_GPIO_BAR)
|
||||||
|
& GRUB_CS5536_LBAR_ADDR_MASK) + GRUB_MACHINE_PCI_IO_BASE;
|
||||||
|
grub_outl ((1 << 13), p + 4);
|
||||||
|
grub_outl ((1 << 29), p);
|
||||||
|
grub_millisleep (5000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case GRUB_ARCH_MACHINE_YEELOONG:
|
||||||
|
grub_outb (grub_inb (GRUB_CPU_LOONGSON_GPIOCFG)
|
||||||
|
& ~GRUB_CPU_YEELOONG_SHUTDOWN_GPIO, GRUB_CPU_LOONGSON_GPIOCFG);
|
||||||
|
grub_millisleep (1500);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
grub_printf ("Shutdown failed\n");
|
grub_printf ("Shutdown failed\n");
|
||||||
grub_refresh ();
|
grub_refresh ();
|
||||||
|
|
|
@ -85,6 +85,6 @@
|
||||||
#define GRUB_CPU_LOONGSON_PCI_HIT1_SEL_HI 0xbfe00154
|
#define GRUB_CPU_LOONGSON_PCI_HIT1_SEL_HI 0xbfe00154
|
||||||
|
|
||||||
#define GRUB_CPU_LOONGSON_GPIOCFG 0xbfe00120
|
#define GRUB_CPU_LOONGSON_GPIOCFG 0xbfe00120
|
||||||
#define GRUB_CPU_LOONGSON_SHUTDOWN_GPIO 1
|
#define GRUB_CPU_YEELOONG_SHUTDOWN_GPIO 1
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue