Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp2461329ybl; Sat, 11 Jan 2020 17:56:28 -0800 (PST) X-Google-Smtp-Source: APXvYqxOa+x3TePFgWa1QUAe65UAxCLgwvnMSxuOIjA0eoT6Kl79KmJGwgJ8dMiu6D0cOVFNJqXi X-Received: by 2002:a05:6808:4c2:: with SMTP id a2mr7628278oie.118.1578794187994; Sat, 11 Jan 2020 17:56:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1578794187; cv=none; d=google.com; s=arc-20160816; b=0OTKrvbgHrgpiYhs8TmQOTcYwIqvYYp6mkADgyZyHEvCmn7iuQjOKdWsQistmNIZv2 fr9PmOMWbLE7UDGh5Coq4Qy6yVdTtHX44PKK8u7Vh990+6Rou1pZ9SBmIf94MXSIoV28 Y1KjdjSuMarlbwmfbN2OFgUinY3jcLEXJZ4CdieQvkkOij3tT8uNLVQi8tY4lV7MVrs1 Zgm2buCb9hVgGS+gQ5CPKYEsJ3B7GMBz3LGup2cI8clBxB/o+vi/6Nk1NT7T9zan/l41 jrYDEx5kMQFq5AAVj9OeHDKLsE8arbg7uOn2mdNrhBPAIxknBzpV2WVJ9N6he3sblsjz ds0w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=jIWtKP93qo9AWC8XpEfHetYZ4w3gmin/CV14R2KUqwk=; b=YRfuvjnuBowR41JKN1JWu8IFHG8tjsyHEk5AjvgEXzulUpO8nfJWFfOMsjJRfHYOKg gZ9+GRV0vU5WBrQpjG447HlTLvzVmW5REIyJYXLXj1uzbhV/Ca8dlgS9Y1ItvYH8oAj5 q0APvdEStFPI7y8OsT7WkRUmh7zSwhaQ2MAVP8A+x/EVsmRk6Zd393cOtX0XmAh4gMlt UwsVIsEbyVyNCIg99lKB4xN9219+iDi4Z3lMnZBO6DeZoj4OfhSvgujjd2ejjdKkzjNP R81MS8pVkiRH4fuJcfNn47W4nkx0r+DgWFgJK5Q85h+NVKDpsdLen19/ZyE7B0e2BAQF B4PQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o17si4535799otk.135.2020.01.11.17.56.17; Sat, 11 Jan 2020 17:56:27 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731949AbgALBzX (ORCPT + 99 others); Sat, 11 Jan 2020 20:55:23 -0500 Received: from foss.arm.com ([217.140.110.172]:57796 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731942AbgALBzV (ORCPT ); Sat, 11 Jan 2020 20:55:21 -0500 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id EFAC611B3; Sat, 11 Jan 2020 17:55:20 -0800 (PST) Received: from DESKTOP-VLO843J.lan (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 18F633F6C4; Sat, 11 Jan 2020 17:55:19 -0800 (PST) From: Robin Murphy To: lee.jones@linaro.org Cc: linux-kernel@vger.kernel.org, heiko@sntech.de, linux-rockchip@lists.infradead.org, smoch@web.de Subject: [PATCH v2 3/5] mfd: rk808: Stop using syscore ops Date: Sun, 12 Jan 2020 01:55:02 +0000 Message-Id: <7fdcdb900c7dc4fba38266e1db637131c3090a67.1578789410.git.robin.murphy@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Setting the SLEEP pin to its shutdown function for appropriate PMICs doesn't need to happen in single-CPU context, so there's really no point involving the syscore machinery. Hook it up to the standard driver model shutdown method instead. This also obviates the issue that the syscore ops weren't being unregistered on probe failure or module removal. Signed-off-by: Robin Murphy --- drivers/mfd/rk808.c | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/drivers/mfd/rk808.c b/drivers/mfd/rk808.c index ac798053c26a..8116ed6cf2e7 100644 --- a/drivers/mfd/rk808.c +++ b/drivers/mfd/rk808.c @@ -19,7 +19,6 @@ #include #include #include -#include struct rk808_reg_data { int addr; @@ -509,28 +508,27 @@ static void rk818_device_shutdown(void) dev_err(&rk808_i2c_client->dev, "Failed to shutdown device!\n"); } -static void rk8xx_syscore_shutdown(void) +static void rk8xx_shutdown(struct i2c_client *client) { - struct rk808 *rk808 = i2c_get_clientdata(rk808_i2c_client); + struct rk808 *rk808 = i2c_get_clientdata(client); int ret; - if (system_state == SYSTEM_POWER_OFF && - (rk808->variant == RK809_ID || rk808->variant == RK817_ID)) { + switch (rk808->variant) { + case RK809_ID: + case RK817_ID: ret = regmap_update_bits(rk808->regmap, RK817_SYS_CFG(3), RK817_SLPPIN_FUNC_MSK, SLPPIN_DN_FUN); - if (ret) { - dev_warn(&rk808_i2c_client->dev, - "Cannot switch to power down function\n"); - } + break; + default: + return; } + if (ret) + dev_warn(&client->dev, + "Cannot switch to power down function\n"); } -static struct syscore_ops rk808_syscore_ops = { - .shutdown = rk8xx_syscore_shutdown, -}; - static const struct of_device_id rk808_of_match[] = { { .compatible = "rockchip,rk805" }, { .compatible = "rockchip,rk808" }, @@ -623,7 +621,6 @@ static int rk808_probe(struct i2c_client *client, nr_pre_init_regs = ARRAY_SIZE(rk817_pre_init_reg); cells = rk817s; nr_cells = ARRAY_SIZE(rk817s); - register_syscore_ops(&rk808_syscore_ops); break; default: dev_err(&client->dev, "Unsupported RK8XX ID %lu\n", @@ -759,6 +756,7 @@ static struct i2c_driver rk808_i2c_driver = { }, .probe = rk808_probe, .remove = rk808_remove, + .shutdown = rk8xx_shutdown, }; module_i2c_driver(rk808_i2c_driver); -- 2.17.1