Received: by 10.192.165.156 with SMTP id m28csp1829111imm; Thu, 12 Apr 2018 04:21:16 -0700 (PDT) X-Google-Smtp-Source: AIpwx4+grBopwANfuoCAUoaI7pAzT4eGzW3TYrEBv2bX/62xU5b95XBLnxTDXGq5UGpwixRaJWb5 X-Received: by 10.101.66.70 with SMTP id d6mr395060pgq.234.1523532076575; Thu, 12 Apr 2018 04:21:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1523532076; cv=none; d=google.com; s=arc-20160816; b=eb2JrGgv1msPDSNDgkWT1dgPziK+f0WrhM26gc31ykj5/PlijJ37KsLzWgawqhsUlV ksb6rSPrq11CYje89LkNiMm7FJEl/6bcjFZkpz+/pbHhSqYNjq7rSx5wjFly8WAae/0U 8jflQ6s9W2zXNYKypBustvXgZRX2CwZg7P78RUK7EQqzx4nCgvybV1/PVnz2lfsxQnOu VJ4MVcm8mzQYFUZAdw5i5fSRXkvM1vq2Fu22tnWwzxe4f86ImvzSYh/tQhKk+9POehRC 1uv2v4UgyQpbjcroYYFSqqToucUure4KfJM4pIX93Pa32O8PdmcW7FUqMKNNyYr4UWow iYSA== 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:dkim-signature:arc-authentication-results; bh=1DBONOHXXjX8Kaigqhj/3cmJ8OlitzG5zYoiAvHZb/g=; b=nzDNS7TuOP+Yc1000Mz22PIRkeIzNcNI8LmCVaD96YqWDc+LQwwqiWi4nHffYZuw4s UjGe0GCFLoRV+CZd1fGgrXixWM338zWf8s5GlVEgPLAqaCpw5n+X4gA2W8WOmvw056qA ySLEmLDuEqa9m41F3U2Wc/Xn3O+s5sMRHbU/9csNIYLZTK94sePwoxRavgAn0y3sS5G0 W0Opb3U+1pwKo1q0Z+/z9hSiHWf2E8BsJS9P2/LPZPa0pFXlHnJ1MczUbxm3oNGd1xQG QLwjWxxxaeEyFueclEJMqIh9E5vi1KW2e38jDP/CQyZucxOU+trEUbJ5DhK6pq3kWa1t APjg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=U/r3NZCa; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b123si830245pgc.14.2018.04.12.04.20.39; Thu, 12 Apr 2018 04:21:16 -0700 (PDT) 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; dkim=pass header.i=@linaro.org header.s=google header.b=U/r3NZCa; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753265AbeDLLPR (ORCPT + 99 others); Thu, 12 Apr 2018 07:15:17 -0400 Received: from mail-lf0-f65.google.com ([209.85.215.65]:36290 "EHLO mail-lf0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753217AbeDLLPL (ORCPT ); Thu, 12 Apr 2018 07:15:11 -0400 Received: by mail-lf0-f65.google.com with SMTP id d20-v6so7114890lfe.3 for ; Thu, 12 Apr 2018 04:15:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=1DBONOHXXjX8Kaigqhj/3cmJ8OlitzG5zYoiAvHZb/g=; b=U/r3NZCa8C12Vf+V2Y2qSJLRsq0st4u+0Qx0lsIRU8x8Vm1luctSw+eJ3gPaGTcLSd TOTI29yOiI/e3UxFMTk/1QrydsLBBglFduaENCpCVgn1SIlU0APEY65uskvtbuHIOLFx g4yxfbdPrRO8ykq3EYCUGFS8g2EHhdxeTtvd4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=1DBONOHXXjX8Kaigqhj/3cmJ8OlitzG5zYoiAvHZb/g=; b=rxrXQQLy/vlvjAGoDaLHLaOp/+uexlqB9kK2LFUANdubHz4bN1VXZhb114lkAht6lE 71pa4nTsqf0UtBDJjPKlH3U+9vgo0DUzTaqTHqyOiqX7dgK6rwuF51eu+Q0XGbIzIyjk ZOugTK5H4YVdA0khNg9QaARd9ape8Mq6Ik9N+KX7GGIN5/0mavvIChsOXVAElCW/gh7P izVrcJ8ERpo/ALKExrgOGXzfF490bVrSWbhKkkbK4bH77uSuuc1ZvMSHZ3uIVvoicfjI F17XSznsEi9HdTiw0AwOS+B+x6GoobF+b56ejUA0SKK+Ei0GCRG8r5LrSMd/artTJVt7 Jknw== X-Gm-Message-State: ALQs6tAo2pFW+hLb9XdDJg3tlmjk5lSrFs34SrBZ7YaD62F6Jd3oo+YL W9WortDHCM93psWP+AhF2j1hbQ== X-Received: by 10.46.131.86 with SMTP id l22mr387680ljh.82.1523531710097; Thu, 12 Apr 2018 04:15:10 -0700 (PDT) Received: from localhost.localdomain (h-158-174-22-210.NA.cust.bahnhof.se. [158.174.22.210]) by smtp.gmail.com with ESMTPSA id r29sm543187lje.72.2018.04.12.04.15.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 12 Apr 2018 04:15:09 -0700 (PDT) From: Ulf Hansson To: "Rafael J . Wysocki" , Sudeep Holla , Lorenzo Pieralisi , Mark Rutland , linux-pm@vger.kernel.org Cc: Kevin Hilman , Lina Iyer , Lina Iyer , Ulf Hansson , Rob Herring , Daniel Lezcano , Thomas Gleixner , Vincent Guittot , Stephen Boyd , Juri Lelli , Geert Uytterhoeven , linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v7 18/26] drivers: firmware: psci: Announce support for OS initiated suspend mode Date: Thu, 12 Apr 2018 13:14:23 +0200 Message-Id: <1523531671-27491-19-git-send-email-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1523531671-27491-1-git-send-email-ulf.hansson@linaro.org> References: <1523531671-27491-1-git-send-email-ulf.hansson@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org PSCI firmware v1.0+, supports two different modes for CPU_SUSPEND. The Platform Coordinated mode, which is the default and mandatory mode, while support for the OS initiated mode is optional. This change introduces initial support for the OS initiated mode, in way that it adds the related PSCI bits from the spec and prints a message in the log to inform whether the mode is supported by the PSCI FW. Cc: Lina Iyer Co-developed-by: Lina Iyer Signed-off-by: Ulf Hansson --- drivers/firmware/psci/psci.c | 21 ++++++++++++++++++++- include/uapi/linux/psci.h | 5 +++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/drivers/firmware/psci/psci.c b/drivers/firmware/psci/psci.c index 3888100..e8f4f84 100644 --- a/drivers/firmware/psci/psci.c +++ b/drivers/firmware/psci/psci.c @@ -95,6 +95,11 @@ static inline bool psci_has_ext_power_state(void) PSCI_1_0_FEATURES_CPU_SUSPEND_PF_MASK; } +static inline bool psci_has_osi_support(void) +{ + return psci_cpu_suspend_feature & PSCI_1_0_OS_INITIATED; +} + static inline bool psci_power_state_loses_context(u32 state) { const u32 mask = psci_has_ext_power_state() ? @@ -658,10 +663,24 @@ static int __init psci_0_1_init(struct device_node *np) return 0; } +static int __init psci_1_0_init(struct device_node *np) +{ + int err; + + err = psci_0_2_init(np); + if (err) + return err; + + if (psci_has_osi_support()) + pr_info("OSI mode supported.\n"); + + return 0; +} + static const struct of_device_id psci_of_match[] __initconst = { { .compatible = "arm,psci", .data = psci_0_1_init}, { .compatible = "arm,psci-0.2", .data = psci_0_2_init}, - { .compatible = "arm,psci-1.0", .data = psci_0_2_init}, + { .compatible = "arm,psci-1.0", .data = psci_1_0_init}, {}, }; diff --git a/include/uapi/linux/psci.h b/include/uapi/linux/psci.h index b3bcabe..581f720 100644 --- a/include/uapi/linux/psci.h +++ b/include/uapi/linux/psci.h @@ -49,6 +49,7 @@ #define PSCI_1_0_FN_PSCI_FEATURES PSCI_0_2_FN(10) #define PSCI_1_0_FN_SYSTEM_SUSPEND PSCI_0_2_FN(14) +#define PSCI_1_0_FN_SET_SUSPEND_MODE PSCI_0_2_FN(15) #define PSCI_1_0_FN64_SYSTEM_SUSPEND PSCI_0_2_FN64(14) @@ -97,6 +98,10 @@ #define PSCI_1_0_FEATURES_CPU_SUSPEND_PF_MASK \ (0x1 << PSCI_1_0_FEATURES_CPU_SUSPEND_PF_SHIFT) +#define PSCI_1_0_OS_INITIATED BIT(0) +#define PSCI_1_0_SUSPEND_MODE_PC 0 +#define PSCI_1_0_SUSPEND_MODE_OSI 1 + /* PSCI return values (inclusive of all PSCI versions) */ #define PSCI_RET_SUCCESS 0 #define PSCI_RET_NOT_SUPPORTED -1 -- 2.7.4