forked from luck/tmp_suning_uos_patched
832f5dacfa
Currently CONFIG_ARCH_HAVE_CUSTOM_GPIO_H is defined for all MIPS machines, and each machine type provides its own gpio.h. However only a handful really implement the GPIO API, most just forward everythings to gpiolib. The Alchemy machine is notable as it provides a system to allow implementing the GPIO API at the board level. But it is not used by any board currently supported, so it can also be removed. For most machine types we can just remove the custom gpio.h, as well as the custom wrappers if some exists. Some of the code found in the wrappers must be moved to the respective GPIO driver. A few more fixes are need in some drivers as they rely on linux/gpio.h to provides some machine specific definitions, or used asm/gpio.h instead of linux/gpio.h for the gpio API. Signed-off-by: Alban Bedel <albeu@free.fr> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Cc: linux-mips@linux-mips.org Cc: Hauke Mehrtens <hauke@hauke-m.de> Cc: Rafał Miłecki <zajec5@gmail.com> Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> Cc: Tejun Heo <tj@kernel.org> Cc: Alexandre Courbot <gnurou@gmail.com> Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com> Cc: Florian Fainelli <florian@openwrt.org> Cc: Manuel Lauss <manuel.lauss@gmail.com> Cc: Joe Perches <joe@perches.com> Cc: Daniel Walter <dwalter@google.com> Cc: Sergey Ryazanov <ryazanov.s.a@gmail.com> Cc: Huacai Chen <chenhc@lemote.com> Cc: James Hartley <james.hartley@imgtec.com> Cc: Andrew Bresticker <abrestic@chromium.org> Cc: Paul Burton <paul.burton@imgtec.com> Cc: Jiri Kosina <jkosina@suse.cz> Cc: Bjorn Helgaas <bhelgaas@google.com> Cc: Wolfram Sang <wsa@the-dreams.de> Cc: Randy Dunlap <rdunlap@infradead.org> Cc: Varka Bhadram <varkabhadram@gmail.com> Cc: Masanari Iida <standby24x7@gmail.com> Cc: Tomi Valkeinen <tomi.valkeinen@ti.com> Cc: Michael Buesch <m@bues.ch> Cc: abdoulaye berthe <berthe.ab@gmail.com> Cc: linux-kernel@vger.kernel.org Cc: linux-ide@vger.kernel.org Cc: linux-gpio@vger.kernel.org Cc: linux-input@vger.kernel.org Cc: netdev@vger.kernel.org Patchwork: https://patchwork.linux-mips.org/patch/10828/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
105 lines
2.6 KiB
C
105 lines
2.6 KiB
C
/*
|
|
* Carsten Langgaard, carstenl@mips.com
|
|
* Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved.
|
|
*
|
|
* 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.
|
|
*/
|
|
#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());
|
|
}
|