mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 20:51:44 +00:00
41173abc57
Based on 1 normalized pattern(s): this program is free software you can distribute it and or modify it under the terms of the gnu general public license version 2 as published by the free software foundation this program is distributed in the hope it will be useful but without any warranty without even the implied warranty of merchantability or fitness for a particular purpose see the gnu general public license for more details you should have received a copy of the gnu general public license along with this program if not write to the free software foundation inc 59 temple place suite 330 boston ma 02111 1307 usa extracted by the scancode license scanner the SPDX license identifier GPL-2.0-only has been chosen to replace the boilerplate/reference in 32 file(s). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Allison Randal <allison@lohutok.net> Reviewed-by: Richard Fontana <rfontana@redhat.com> Reviewed-by: Steve Winslow <swinslow@gmail.com> Reviewed-by: Alexios Zavras <alexios.zavras@intel.com> Cc: linux-spdx@vger.kernel.org Link: https://lkml.kernel.org/r/20190528170026.531157061@linutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
93 lines
2.0 KiB
C
93 lines
2.0 KiB
C
// SPDX-License-Identifier: GPL-2.0-only
|
|
/*
|
|
* Carsten Langgaard, carstenl@mips.com
|
|
* Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved.
|
|
*/
|
|
#include <linux/init.h>
|
|
#include <linux/ioport.h>
|
|
#include <linux/pm.h>
|
|
#include <linux/time.h>
|
|
|
|
#include <asm/reboot.h>
|
|
#include <asm/mach-ar7/ar7.h>
|
|
#include <asm/mach-ar7/prom.h>
|
|
|
|
static void ar7_machine_restart(char *command)
|
|
{
|
|
u32 *softres_reg = ioremap(AR7_REGS_RESET + AR7_RESET_SOFTWARE, 1);
|
|
|
|
writel(1, softres_reg);
|
|
}
|
|
|
|
static void ar7_machine_halt(void)
|
|
{
|
|
while (1)
|
|
;
|
|
}
|
|
|
|
static void ar7_machine_power_off(void)
|
|
{
|
|
u32 *power_reg = (u32 *)ioremap(AR7_REGS_POWER, 1);
|
|
u32 power_state = readl(power_reg) | (3 << 30);
|
|
|
|
writel(power_state, power_reg);
|
|
ar7_machine_halt();
|
|
}
|
|
|
|
const char *get_system_type(void)
|
|
{
|
|
u16 chip_id = ar7_chip_id();
|
|
u16 titan_variant_id = titan_chip_id();
|
|
|
|
switch (chip_id) {
|
|
case AR7_CHIP_7100:
|
|
return "TI AR7 (TNETD7100)";
|
|
case AR7_CHIP_7200:
|
|
return "TI AR7 (TNETD7200)";
|
|
case AR7_CHIP_7300:
|
|
return "TI AR7 (TNETD7300)";
|
|
case AR7_CHIP_TITAN:
|
|
switch (titan_variant_id) {
|
|
case TITAN_CHIP_1050:
|
|
return "TI AR7 (TNETV1050)";
|
|
case TITAN_CHIP_1055:
|
|
return "TI AR7 (TNETV1055)";
|
|
case TITAN_CHIP_1056:
|
|
return "TI AR7 (TNETV1056)";
|
|
case TITAN_CHIP_1060:
|
|
return "TI AR7 (TNETV1060)";
|
|
}
|
|
default:
|
|
return "TI AR7 (unknown)";
|
|
}
|
|
}
|
|
|
|
static int __init ar7_init_console(void)
|
|
{
|
|
return 0;
|
|
}
|
|
console_initcall(ar7_init_console);
|
|
|
|
/*
|
|
* Initializes basic routines and structures pointers, memory size (as
|
|
* given by the bios and saves the command line.
|
|
*/
|
|
void __init plat_mem_setup(void)
|
|
{
|
|
unsigned long io_base;
|
|
|
|
_machine_restart = ar7_machine_restart;
|
|
_machine_halt = ar7_machine_halt;
|
|
pm_power_off = ar7_machine_power_off;
|
|
|
|
io_base = (unsigned long)ioremap(AR7_REGS_BASE, 0x10000);
|
|
if (!io_base)
|
|
panic("Can't remap IO base!");
|
|
set_io_port_base(io_base);
|
|
|
|
prom_meminit();
|
|
|
|
printk(KERN_INFO "%s, ID: 0x%04x, Revision: 0x%02x\n",
|
|
get_system_type(), ar7_chip_id(), ar7_chip_rev());
|
|
}
|