From patchwork Fri Nov 22 14:32:24 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Wunderlich X-Patchwork-Id: 1199504 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=public-files.de Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 47KJn13swNz9sPj for ; Sat, 23 Nov 2019 01:32:53 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id DE37CC220CB; Fri, 22 Nov 2019 14:32:44 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 9EAF9C21C4A; Fri, 22 Nov 2019 14:32:42 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 5456AC21C4A; Fri, 22 Nov 2019 14:32:41 +0000 (UTC) Received: from mxwww.masterlogin.de (mxwww.masterlogin.de [95.129.51.220]) by lists.denx.de (Postfix) with ESMTPS id EA4DAC21C38 for ; Fri, 22 Nov 2019 14:32:40 +0000 (UTC) Received: from mxout1.routing.net (unknown [192.168.10.81]) by new.mxwww.masterlogin.de (Postfix) with ESMTPS id 2D79F96752; Fri, 22 Nov 2019 14:32:40 +0000 (UTC) Received: from mxbox4.masterlogin.de (unknown [192.168.10.79]) by mxout1.routing.net (Postfix) with ESMTP id 8E07043C58; Fri, 22 Nov 2019 14:32:40 +0000 (UTC) Received: from localhost.localdomain (fttx-pool-80.208.211.50.bambit.de [80.208.211.50]) by mxbox4.masterlogin.de (Postfix) with ESMTPSA id 08637804D2; Fri, 22 Nov 2019 14:32:40 +0000 (UTC) From: Frank Wunderlich To: u-boot@lists.denx.de, Jaehoon Chung Date: Fri, 22 Nov 2019 15:32:24 +0100 Message-Id: <20191122143224.20077-1-frank-w@public-files.de> X-Mailer: git-send-email 2.17.1 Subject: [U-Boot] [PATCH] poweroff: add poweroff for mt6323 pmic X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" this adds poweroff to bananapi r2 / mt7623 / mt6323 pmic Signed-off-by: Frank Wunderlich --- drivers/power/Kconfig | 7 +++++++ drivers/power/Makefile | 1 + drivers/power/mt6323.c | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 drivers/power/mt6323.c diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig index 9495dca33b..0ac906e86d 100644 --- a/drivers/power/Kconfig +++ b/drivers/power/Kconfig @@ -364,4 +364,11 @@ config TWL4030_POWER The TWL4030 in a combination audio CODEC/power management with GPIO and it is commonly used with the OMAP3 family of processors +config POWER_MT6323 + bool "Poweroff driver for mediatek mt6323" + select CMD_POWEROFF + help + This adds poweroff driver for mt6323 + this pmic is used on mt7623 / Bananapi R2 + endmenu diff --git a/drivers/power/Makefile b/drivers/power/Makefile index dd5bc0dc44..2dcc7bb99d 100644 --- a/drivers/power/Makefile +++ b/drivers/power/Makefile @@ -20,3 +20,4 @@ obj-$(CONFIG_DIALOG_POWER) += power_dialog.o obj-$(CONFIG_POWER_FSL) += power_fsl.o obj-$(CONFIG_POWER_I2C) += power_i2c.o obj-$(CONFIG_POWER_SPI) += power_spi.o +obj-$(CONFIG_POWER_MT6323) += mt6323.o diff --git a/drivers/power/mt6323.c b/drivers/power/mt6323.c new file mode 100644 index 0000000000..566be5f39e --- /dev/null +++ b/drivers/power/mt6323.c @@ -0,0 +1,37 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2019 Frank Wunderlich + */ + +#include +#include +#include + +#define PWRAP_BASE 0x1000d000 +#define PWRAP_WACS2_CMD 0x9c + +#define PWRAP_CALC(adr, wdata) ((1 << 31) | (((adr) >> 1) << 16) | (wdata)) + +#define MT6323_PWRC_BASE 0x8000 +#define RTC_BBPU 0x0000 +#define RTC_BBPU_KEY (0x43 << 8) +#define RTC_WRTGR 0x003c + +int do_poweroff(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +{ + u32 addr, val; + + addr = PWRAP_BASE + PWRAP_WACS2_CMD; + val = PWRAP_CALC(MT6323_PWRC_BASE + RTC_BBPU, RTC_BBPU_KEY); + writel(val, addr); + + mdelay(10); + + val = PWRAP_CALC(MT6323_PWRC_BASE + RTC_WRTGR, 1); + writel(val, addr); + + // wait some time and then print error + mdelay(10000); + printf("Failed to power off!!!\n"); + return 1; +}