From patchwork Wed Jul 18 12:37:10 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Tony Prisk X-Patchwork-Id: 1210861 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) by patchwork1.kernel.org (Postfix) with ESMTP id 52AA23FCFC for ; Wed, 18 Jul 2012 12:42:18 +0000 (UTC) Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.76 #1 (Red Hat Linux)) id 1SrTVN-0001Re-7X; Wed, 18 Jul 2012 12:37:25 +0000 Received: from nm12.bullet.mail.bf1.yahoo.com ([98.139.212.171]) by merlin.infradead.org with smtp (Exim 4.76 #1 (Red Hat Linux)) id 1SrTVA-0001RP-1F for linux-arm-kernel@lists.infradead.org; Wed, 18 Jul 2012 12:37:16 +0000 Received: from [98.139.212.152] by nm12.bullet.mail.bf1.yahoo.com with NNFMP; 18 Jul 2012 12:37:10 -0000 Received: from [98.139.215.228] by tm9.bullet.mail.bf1.yahoo.com with NNFMP; 18 Jul 2012 12:37:10 -0000 Received: from [127.0.0.1] by omp1068.mail.bf1.yahoo.com with NNFMP; 18 Jul 2012 12:37:10 -0000 X-Yahoo-Newman-Property: ymail-3 X-Yahoo-Newman-Id: 308928.23260.bm@omp1068.mail.bf1.yahoo.com Received: (qmail 5207 invoked by uid 60001); 18 Jul 2012 12:37:10 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.co.nz; s=s1024; t=1342615030; bh=t3mEO39MxGD7NjAXQ3LdMtyKHIsFM1qB3ycCZpcn1ys=; h=X-YMail-OSG:Received:X-Mailer:Message-ID:Date:From:Reply-To:Subject:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding; b=fcPqkrptlBulmLhj/tQFBNKthbt26eITfLYsq39K8K6c4iBi+Tj4S7iCUkWgUOs8wvEqyckoAiSySO1cXC4ja5O2149xeU/s2hhk7q3ZxLzibHKGkGomCoo7yF0TKlkqiVm0uvIcWNconHyyR2LsDesjLUDVqiXAYCd2rb7q0cw= DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.co.nz; h=X-YMail-OSG:Received:X-Mailer:Message-ID:Date:From:Reply-To:Subject:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding; b=kO5alUuZVcQKogZDZO/8BH6q1eNrM7ewZkvum6zG+88fcowmrKaqTRwXTfUbEjXNtzkXE/s6XBSdN9lq8XvyKEjdW4tRzZHHne1Qj9mKZqpe6kqD4Fi747CqHBrb7Fl09bhY+TF1O+CfMQjwsFu7MTBpKHIcGXGZ7Uwlpuv/3l8=; X-YMail-OSG: zH6cW0gVM1loJ9gWAvAK3hIhtrX1yLq5NogK9aa9MTrgS1y sKka0TUUQmtgIpnstiCFIftDXtDXUbbpzTFWfEbsOZEUi6R3nsmO3NmkjDwD lzc8O.kdu6fmLmisxNP2cY.a4sXwU9hIcrkLsr.gDFSE6yJsmtvOJEr1rDOP VvhS6puT0rW9c2wvFoJ8jTfPIjxhWDxEQB28n4HZ89zPc6o6cm5hgP5RLMru EqbaNOOEv02cmVrA7mftKD9nLv8hGNw.cduOkRA2SI7ZR7L67tNozcfl73wv PBJPpDM8VR4l2z_LAIbrJFhnnTZvJsxggO4gPoPn7pwYBPKY_woOvZBonmsp A.SI8p.QJzems4t3n5Gi4kHUzdHI0Vt4mvBXEoGPOWGtvGJJ1nug_zxiAouI Mkt9tXQFmmdSM8RDpME5ySoFneOxotb_U1emFhZA.hUNof_OnB8vql.UaqpE w1uVOIhXIIsZZHa4GMTuoxg-- Received: from [210.54.1.168] by web140804.mail.bf1.yahoo.com via HTTP; Wed, 18 Jul 2012 05:37:10 PDT X-Mailer: YahooMailWebService/0.8.120.356233 Message-ID: <1342615030.5079.YahooMailNeo@web140804.mail.bf1.yahoo.com> Date: Wed, 18 Jul 2012 05:37:10 -0700 (PDT) From: Tony Prisk Subject: [PATCHv2 1/1] ARM:vt8500: Convert to use .restart and remove arch_reset() To: "linux-arm-kernel@lists.infradead.org" MIME-Version: 1.0 X-Spam-Note: CRM114 invocation failed X-Spam-Score: -2.0 (--) X-Spam-Report: SpamAssassin version 3.3.2 on merlin.infradead.org summary: Content analysis details: (-2.0 points) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (sentientnz[at]yahoo.co.nz) -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [98.139.212.171 listed in list.dnswl.org] -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.0 FSL_FREEMAIL_2 FSL_FREEMAIL_2 0.0 FSL_FREEMAIL_1 FSL_FREEMAIL_1 Cc: VT8500-Group , "arnd@arndb.de" X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: Tony Prisk List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-arm-kernel-bounces@lists.infradead.org Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org Changed the existing board files to use .restart in there machine descriptions. Removed system.h as it only contained an inline for arch_reset() Added device tree support for the restart controller. Device tree support for vt8500 is still a work-in-progress. Signed-off-by: Tony Prisk ---  arch/arm/mach-vt8500/Makefile               |    2 +-  arch/arm/mach-vt8500/bv07.c                 |    3 +  arch/arm/mach-vt8500/include/mach/restart.h |   17 +++++++  arch/arm/mach-vt8500/include/mach/system.h  |   13 -----  arch/arm/mach-vt8500/restart.c              |   64 +++++++++++++++++++++++++++  arch/arm/mach-vt8500/wm8505_7in.c           |    4 +-  6 files changed, 88 insertions(+), 15 deletions(-)  create mode 100644 arch/arm/mach-vt8500/include/mach/restart.h  delete mode 100644 arch/arm/mach-vt8500/include/mach/system.h  create mode 100644 arch/arm/mach-vt8500/restart.c diff --git a/arch/arm/mach-vt8500/Makefile b/arch/arm/mach-vt8500/Makefile index 81aedb7..54e6997 100644 --- a/arch/arm/mach-vt8500/Makefile +++ b/arch/arm/mach-vt8500/Makefile @@ -1,4 +1,4 @@ -obj-y += devices.o gpio.o irq.o timer.o +obj-y += devices.o gpio.o irq.o timer.o restart.o    obj-$(CONFIG_VTWM_VERSION_VT8500) += devices-vt8500.o  obj-$(CONFIG_VTWM_VERSION_WM8505) += devices-wm8505.o diff --git a/arch/arm/mach-vt8500/bv07.c b/arch/arm/mach-vt8500/bv07.c index a464c75..f9fbeb2 100644 --- a/arch/arm/mach-vt8500/bv07.c +++ b/arch/arm/mach-vt8500/bv07.c @@ -23,6 +23,7 @@    #include  #include +#include    #include "devices.h"   @@ -62,6 +63,7 @@ void __init bv07_init(void)      else          printk(KERN_ERR "PMC Hibernation register could not be remapped, not enabling power off!\n");   +    wmt_setup_restart();      vt8500_set_resources();      platform_add_devices(devices, ARRAY_SIZE(devices));      vt8500_gpio_init(); @@ -69,6 +71,7 @@ void __init bv07_init(void)    MACHINE_START(BV07, "Benign BV07 Mini Netbook")      .atag_offset    = 0x100, +    .restart    = wmt_restart,      .reserve    = vt8500_reserve_mem,      .map_io        = vt8500_map_io,      .init_irq    = vt8500_init_irq, diff --git a/arch/arm/mach-vt8500/include/mach/restart.h b/arch/arm/mach-vt8500/include/mach/restart.h new file mode 100644 index 0000000..89f9b78 --- /dev/null +++ b/arch/arm/mach-vt8500/include/mach/restart.h @@ -0,0 +1,17 @@ +/* linux/arch/arm/mach-vt8500/restart.h + * + * Copyright (C) 2012 Tony Prisk + * + * This software is licensed under the terms of the GNU General Public + * License version 2, as published by the Free Software Foundation, and + * may be copied, distributed, and modified under those terms. + * + * This program is distributed in the hope that 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. + * + */ + +void wmt_setup_restart(void); +void wmt_restart(char mode, const char *cmd); diff --git a/arch/arm/mach-vt8500/include/mach/system.h b/arch/arm/mach-vt8500/include/mach/system.h deleted file mode 100644 index 58fa801..0000000 --- a/arch/arm/mach-vt8500/include/mach/system.h +++ /dev/null @@ -1,13 +0,0 @@ -/* - * arch/arm/mach-vt8500/include/mach/system.h - * - */ -#include - -/* PM Software Reset request register */ -#define VT8500_PMSR_VIRT    0xf8130060 - -static inline void arch_reset(char mode, const char *cmd) -{ -    writel(1, VT8500_PMSR_VIRT); -} diff --git a/arch/arm/mach-vt8500/restart.c b/arch/arm/mach-vt8500/restart.c new file mode 100644 index 0000000..9134aea --- /dev/null +++ b/arch/arm/mach-vt8500/restart.c @@ -0,0 +1,64 @@ +/* linux/arch/arm/mach-vt8500/restart.c + * + * Copyright (C) 2012 Tony Prisk + * + * This software is licensed under the terms of the GNU General Public + * License version 2, as published by the Free Software Foundation, and + * may be copied, distributed, and modified under those terms. + * + * This program is distributed in the hope that 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. + * + */ +#include +#include +#include +#include + +/* PM Software Reset request register */ +#define LEGACY_PMSR_REG        0xD8130060 +#define WMT_PRIZM_PMSR_REG    0x60 + +static void __iomem *wmt_restart_reg; + +void wmt_setup_restart(void) +{ +    struct device_node *np; +    void __iomem *pmc_base; + +    /* +     * Check if Power Mgmt Controller node is present in device tree. If no +     * device tree node, use the legacy PMSR value (valid for all current +     * SoCs). +     */ +    np = of_find_compatible_node(NULL, NULL, "wmt,prizm-pmc"); +    if (np) { +        pmc_base = of_iomap(np, 0); + +        if (!pmc_base) +            pr_err("%s:of_iomap(pmc) failed\n", __func__); + +        of_node_put(np); + +        wmt_restart_reg = (void *)((u32)(pmc_base) + WMT_PRIZM_PMSR_REG); +    } else { +        if (!request_mem_region(LEGACY_PMSR_REG, 4, NULL)) { +            pr_err("%s:request_mem_region(rst) failed\n", __func__); +            return; +        } + +        wmt_restart_reg = ioremap(LEGACY_PMSR_REG, 4); +        if (!wmt_restart_reg) { +            pr_err("%s:ioremap(rstc) failed\n", __func__); +            return; +        } +    } +} + +void wmt_restart(char mode, const char *cmd) +{ +    if (wmt_restart_reg) +        writel(1, wmt_restart_reg); +} diff --git a/arch/arm/mach-vt8500/wm8505_7in.c b/arch/arm/mach-vt8500/wm8505_7in.c index cf910a9..db19886 100644 --- a/arch/arm/mach-vt8500/wm8505_7in.c +++ b/arch/arm/mach-vt8500/wm8505_7in.c @@ -23,6 +23,7 @@    #include  #include +#include    #include "devices.h"   @@ -61,7 +62,7 @@ void __init wm8505_7in_init(void)          pm_power_off = &vt8500_power_off;      else          printk(KERN_ERR "PMC Hibernation register could not be remapped, not enabling power off!\n"); - +    wmt_setup_restart();      wm8505_set_resources();      platform_add_devices(devices, ARRAY_SIZE(devices));      vt8500_gpio_init(); @@ -69,6 +70,7 @@ void __init wm8505_7in_init(void)    MACHINE_START(WM8505_7IN_NETBOOK, "WM8505 7-inch generic netbook")      .atag_offset    = 0x100, +    .restart    = wmt_restart,      .reserve    = wm8505_reserve_mem,      .map_io        = wm8505_map_io,      .init_irq    = wm8505_init_irq,