From patchwork Tue Apr 26 20:07:42 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Drew Fustini X-Patchwork-Id: 12827893 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 895C5C433FE for ; Tue, 26 Apr 2022 20:08:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=JUzIsZxlRT38LF9IuZDW0dkm28iUU+Tw2atWAUDjH60=; b=17r3BUb36SXVgu JLGzqYv8+NJvhLFmrmeT8+IAU7yHSOclnk7fvbj0XMGCqatZQ0urMFT+bmrB9g1Amr1QtGrbXlDyd 7SFsbkmP4pMhUo3/ysx5eoLcKF9J7HlmPFIKffydjQaWJ7d9TCuhKNS+3UHStDvotCsfL8aJto5wW 3cr/Jm7BvG2euJhFXKLv4WcaiHyLpAQ/gYALAZIFuSrof1ZcFdFIrERCQApIGsob1ZWHynIwPyF1m TqmrCJGG0G12FwgD7aW7ke4F0BZ14ixrf7RbS60WDuZYTGGGfdExSLWKDu72EfcFcV2KWbPi9eBn6 GCvrtsGeNiF9E+zLU1cg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1njRTb-00G2WZ-Ka; Tue, 26 Apr 2022 20:07:59 +0000 Received: from mail-pj1-x102b.google.com ([2607:f8b0:4864:20::102b]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1njRTX-00G2TU-Ny for linux-arm-kernel@lists.infradead.org; Tue, 26 Apr 2022 20:07:57 +0000 Received: by mail-pj1-x102b.google.com with SMTP id e24so2556768pjt.2 for ; Tue, 26 Apr 2022 13:07:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=SW1r9xunGXg3yysfsoaj8Bnq3ZsDVEmEB9V/7mp80tU=; b=7foukoKrNys4GHY3j9yVIeTLC11mNsmvO+E3VubNfVzYpMrBO9+k1a/ihtJxR3yqUq 1cj12lZdpqoUHhANmWi9mQ284vUoriuKdbMei9dT8Jr1nyi3aS7Ardpp2ac8V4U41dOK LzMHk23dHQhAJ0CLjQgmi5anszhTn/rmr321XgE772L2JLQ/jAZ7bYFeJhIz7UonBQa0 GZ133toLbgaGfFrvviTMRTHM6lyleti47cuBlY2Hfl8y57DgVbrScBIBghlHdFiQToxM HXOeqZrxihZ4RWmgKR+yBWkrET4T+wT+xEtikLo2yeLRpr4g1khZz8hsQLBdwkADw1TI nOFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=SW1r9xunGXg3yysfsoaj8Bnq3ZsDVEmEB9V/7mp80tU=; b=MJdMD8MyZHgxA9iMkkoKYXQpjPXRL1wZr09akuWrnfPiN+/a1GwCVMDDv7PeOlAjpa zhBgqw/u1ApxA1iPOFXHsfiCvDKx2m0uuwuztukkL2+S3vADz05AsxUwjg4vutlymCSY 19ySdRc7rGg9N46U+UGX3TYiT+0xecWKWXf3ljUtY7xG/GrxK/HA28M67WxB8bXmitdq yOgrJdhQZubuqafrS5oXlOUFjniR/8vgJUA6ppaEi/W3pBHaZ5NBa51NuA8BM/27zQdI Uio6CfMWfpxwFVO9q/R1j34LVn8BNg0+MbEZBj0GyXJrsRREZVcl4JoX2mXGu7wHCG2l xhXw== X-Gm-Message-State: AOAM532KVTPfUEHYiLEMKe77GmYTdGWNOolHtt+gAOaTBHjn6TfUHJOK iiDeAUY8HybVNXjREzuJN6I20lmL1/+Jfg== X-Google-Smtp-Source: ABdhPJzr32AprvOhjotUxBt1JDzT7nBTFeQBBS3sRqmMoxfYRupnoD0lnK7Y5rRAjQ3m31/sT/HE7g== X-Received: by 2002:a17:902:e542:b0:15d:1ba:78d9 with SMTP id n2-20020a170902e54200b0015d01ba78d9mr14341049plf.107.1651003671259; Tue, 26 Apr 2022 13:07:51 -0700 (PDT) Received: from x1.hsd1.or.comcast.net ([2601:1c2:1001:7090:9bcd:e060:b370:70d8]) by smtp.gmail.com with ESMTPSA id o5-20020a62f905000000b0050b5b5efa47sm16203839pfh.191.2022.04.26.13.07.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Apr 2022 13:07:50 -0700 (PDT) From: Drew Fustini To: Rob Herring , Krzysztof Kozlowski , Nishanth Menon , Santosh Shilimkar , Dave Gerlach , Tony Lindgren Cc: devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Drew Fustini , Keerthy Subject: [PATCH v3 1/2] dt-bindings: wkup-m3-ipc: Add firmware-name property Date: Tue, 26 Apr 2022 13:07:42 -0700 Message-Id: <20220426200741.712842-2-dfustini@baylibre.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220426200741.712842-1-dfustini@baylibre.com> References: <20220426200741.712842-1-dfustini@baylibre.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220426_130755_830118_005109A4 X-CRM114-Status: GOOD ( 17.84 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Dave Gerlach Document that the firmware-name property can be used to indicate a file contains I2C sequences for PMIC voltage scaling during deep sleep. Based on previous work by Russ Dill. Signed-off-by: Dave Gerlach Signed-off-by: Keerthy [dfustini: split from driver patch and convert to json-schema] Signed-off-by: Drew Fustini --- Changes from v2: - fix the property name in this commit message Changes from v1: - change 'ti,scale-data-fw' to 'firmware-name' - add 'firmware-name' property to the examples .../devicetree/bindings/soc/ti/wkup-m3-ipc.yaml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Documentation/devicetree/bindings/soc/ti/wkup-m3-ipc.yaml b/Documentation/devicetree/bindings/soc/ti/wkup-m3-ipc.yaml index 88d690de050c..0df41c4f60c1 100644 --- a/Documentation/devicetree/bindings/soc/ti/wkup-m3-ipc.yaml +++ b/Documentation/devicetree/bindings/soc/ti/wkup-m3-ipc.yaml @@ -40,6 +40,12 @@ description: |+ override the pin's existing bias (pull-up/pull-down) and value (high/low) when IO isolation is active. + Support for I2C PMIC Voltage Scaling + ==================================== + It is possible to pass the name of a binary file to load into the CM3 memory. + The binary data is the I2C sequences for the CM3 to send out to the PMIC + during low power mode entry. + properties: compatible: enum: @@ -67,6 +73,10 @@ properties: mbox_wkupm3 child node. maxItems: 1 + firmware-name: + description: + Name of binary file with I2C sequences for PMIC voltage scaling + ti,vtt-gpio-pin: $ref: /schemas/types.yaml#/definitions/uint32 description: GPIO pin connected to enable pin on VTT regulator @@ -117,6 +127,7 @@ examples: ti,rproc = <&wkup_m3>; mboxes = <&am335x_mailbox &mbox_wkupm3>; ti,vtt-gpio-pin = <7>; + firmware-name = "am335x-evm-scale-data.bin"; }; }; @@ -157,6 +168,7 @@ examples: ti,rproc = <&wkup_m3>; mboxes = <&am437x_mailbox &mbox_wkupm3>; ti,set-io-isolation; + firmware-name = "am43x-evm-scale-data.bin"; }; }; From patchwork Tue Apr 26 20:07:44 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Drew Fustini X-Patchwork-Id: 12827894 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A6741C433F5 for ; Tue, 26 Apr 2022 20:10:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=4an+nLadPoBUcdpcQoY7EXnH64pMGAShLikve6Zxg68=; b=zoIRtUrYxrUnup McPglXBPwKVJuNnZxSuWOO6LYprsILN27PxlYqsSt9v5oy6IIac/HS12VepInCZHExh5gpBFj+9UC MMOMiShH5t61J6syKAX3z/FGGPuGQdvGkQKtchUjEPx3HcbCgNE0PWMcZ4jBnjVSFW693twn+mkS9 47ecy5me6sxnzT3S1OABQ0wa2IX1OqUHnIY8zdZMKijTR0j0DtDX0zhjxl0puI9ivJiqnxDCmAqW3 NZ0NYOsUqOh4y5r66ZpoE3Vq1I5rC369FjtCJkikRJsihFzMC7lyEmNBYq04cmHv2eDWLHh3GW2tc Q1NioZlbMt6ojWh2IQpQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1njRUc-00G2o1-Ke; Tue, 26 Apr 2022 20:09:02 +0000 Received: from mail-pj1-x102e.google.com ([2607:f8b0:4864:20::102e]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1njRUY-00G2mB-TF for linux-arm-kernel@lists.infradead.org; Tue, 26 Apr 2022 20:09:00 +0000 Received: by mail-pj1-x102e.google.com with SMTP id gj17-20020a17090b109100b001d8b390f77bso3140728pjb.1 for ; Tue, 26 Apr 2022 13:08:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=t6QIcs+xFWuzyKmT6GkfiHptzHoBTbTRx8qrcCtwFnc=; b=DZtwSDR59d9/nLK1HZwTBNQzX9gSTqZg2xBQrCVREkKHrmPP4sBEZ8HolRQxXAYmFP UeAjsisGKJCkOmuVMSD/G+XjDMqkPk3cLw5Gnn3sNIszlqKTpLb9vzuh62xfCQrRKyAL 7iRqGq3IZY8ZyMH3UyRIdHRAPRcZHYkQtVksDDWqa/+x4G60z0xJb8X1SeXsgBjFiM2X Y/BMeF6YfdnAkrgSfMa5RD/DUuAnFuZl8w+a4jxnv9H+mtgiL1w804Y8T3728sPC9I3v gPJB8sSEr6HGG6raBwM2IdQ1yEJPl9QATWKPC/1uPA9afIpOfXsdzQ7HIlhSV4VfGq6V VZEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=t6QIcs+xFWuzyKmT6GkfiHptzHoBTbTRx8qrcCtwFnc=; b=3TLuiswOl5Jx+BanKZ1BY7CTijb4w3jb2WWcL9y3LgNilpS0NfO1ayB1ApMgny249x vUrL/FCcpW0TI5aEdA3BL5Q8sDb6ByD9jeGZ4aMXfOjtG0VKauDLdWTb9ScvqimOjz7Q KUADObsoh5isjj75KwmRDODAIIoU/U8xzN2lilf620pbuLpw5jI1IoOKTNfX3pHtw+N6 5FDJsXpgdt3zlY/LXhEuMyhyiiSzlNZjLVyFkftWIkJxhb/8FywurAia143GSveO9Rew 8qp643hKDKHKhA4Vc8p27ZsHWwtuXl6KrlGq1U1K8RgpKCJlOaHTWc00IdedPFWCAP4G YOeQ== X-Gm-Message-State: AOAM532+THom1mKCkDY93D6VTY09HYtwBIiaXN5pMgAQklpgw2pD8Fqr P9Z0WIlYlCFaVEln+HBI5f4wdA== X-Google-Smtp-Source: ABdhPJwHI8FI0L27+NnbqfEx0gDcABPcjvCE8f8g/FApGB/+/BmsZI5dOFL2TRsiqQXkGghV5QpSxA== X-Received: by 2002:a17:90b:38cb:b0:1d2:6c52:5be0 with SMTP id nn11-20020a17090b38cb00b001d26c525be0mr28861358pjb.32.1651003736611; Tue, 26 Apr 2022 13:08:56 -0700 (PDT) Received: from x1.hsd1.or.comcast.net ([2601:1c2:1001:7090:9bcd:e060:b370:70d8]) by smtp.gmail.com with ESMTPSA id o5-20020a62f905000000b0050b5b5efa47sm16203839pfh.191.2022.04.26.13.08.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Apr 2022 13:08:56 -0700 (PDT) From: Drew Fustini To: Rob Herring , Krzysztof Kozlowski , Nishanth Menon , Santosh Shilimkar , Dave Gerlach , Tony Lindgren Cc: devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Drew Fustini , Keerthy Subject: [PATCH v3 2/2] soc: ti: wkup_m3_ipc: Add support for i2c voltage scaling Date: Tue, 26 Apr 2022 13:07:44 -0700 Message-Id: <20220426200741.712842-3-dfustini@baylibre.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220426200741.712842-1-dfustini@baylibre.com> References: <20220426200741.712842-1-dfustini@baylibre.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220426_130858_989145_73D203E8 X-CRM114-Status: GOOD ( 28.28 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Dave Gerlach Allow loading of a binary containing i2c scaling sequences to be provided to the wkup_m3 firmware in order to properly scale voltage rails on the PMIC during low power modes like DeepSleep0. Proper binary format is determined by the FW in use. Code expects firmware to have 0x0C57 present as the first two bytes followed by one byte defining offset to sleep sequence followed by one byte defining offset to wake sequence and then lastly both sequences. Each sequence is a series of I2C transfers in the form: u8 length | u8 chip address | u8 byte0/reg address | u8 byte1 | u8 byteN .. The length indicates the number of bytes to transfer, including the register address. The length of each transfer is limited by the I2C buffer size of 32 bytes. Based on previous work by Russ Dill. Signed-off-by: Dave Gerlach Signed-off-by: Keerthy [dfustini: add NULL argument to rproc_da_to_va() call] [dfustini: replace FW_ACTION_HOTPLUG with FW_ACTION_UEVENT] Signed-off-by: Drew Fustini --- Changes from v2: - None Changes from v1: - change 'ti,scale-data-fw' to 'firmware-name' drivers/soc/ti/wkup_m3_ipc.c | 93 +++++++++++++++++++++++++++++++++++- include/linux/wkup_m3_ipc.h | 9 ++++ 2 files changed, 101 insertions(+), 1 deletion(-) diff --git a/drivers/soc/ti/wkup_m3_ipc.c b/drivers/soc/ti/wkup_m3_ipc.c index 988162dd153a..c35eaecf4ab4 100644 --- a/drivers/soc/ti/wkup_m3_ipc.c +++ b/drivers/soc/ti/wkup_m3_ipc.c @@ -8,6 +8,7 @@ */ #include +#include #include #include #include @@ -55,6 +56,12 @@ #define M3_STATE_MSG_FOR_LP 3 #define M3_STATE_MSG_FOR_RESET 4 +#define WKUP_M3_SD_FW_MAGIC 0x570C + +#define WKUP_M3_DMEM_START 0x80000 +#define WKUP_M3_AUXDATA_OFFSET 0x1000 +#define WKUP_M3_AUXDATA_SIZE 0xFF + static struct wkup_m3_ipc *m3_ipc_state; static const struct wkup_m3_wakeup_src wakeups[] = { @@ -75,6 +82,81 @@ static const struct wkup_m3_wakeup_src wakeups[] = { {.irq_nr = 0, .src = "Unknown"}, }; +/** + * wkup_m3_copy_aux_data - Copy auxiliary data to special region of m3 dmem + * @data - pointer to data + * @sz - size of data to copy (limit 256 bytes) + * + * Copies any additional blob of data to the wkup_m3 dmem to be used by the + * firmware + */ +static unsigned long wkup_m3_copy_aux_data(struct wkup_m3_ipc *m3_ipc, + const void *data, int sz) +{ + unsigned long aux_data_dev_addr; + void *aux_data_addr; + + aux_data_dev_addr = WKUP_M3_DMEM_START + WKUP_M3_AUXDATA_OFFSET; + aux_data_addr = rproc_da_to_va(m3_ipc->rproc, + aux_data_dev_addr, + WKUP_M3_AUXDATA_SIZE, + NULL); + memcpy(aux_data_addr, data, sz); + + return WKUP_M3_AUXDATA_OFFSET; +} + +static void wkup_m3_scale_data_fw_cb(const struct firmware *fw, void *context) +{ + unsigned long val, aux_base; + struct wkup_m3_scale_data_header hdr; + struct wkup_m3_ipc *m3_ipc = context; + struct device *dev = m3_ipc->dev; + + if (!fw) { + dev_err(dev, "Voltage scale fw name given but file missing.\n"); + return; + } + + memcpy(&hdr, fw->data, sizeof(hdr)); + + if (hdr.magic != WKUP_M3_SD_FW_MAGIC) { + dev_err(dev, "PM: Voltage Scale Data binary does not appear valid.\n"); + goto release_sd_fw; + } + + aux_base = wkup_m3_copy_aux_data(m3_ipc, fw->data + sizeof(hdr), + fw->size - sizeof(hdr)); + + val = (aux_base + hdr.sleep_offset); + val |= ((aux_base + hdr.wake_offset) << 16); + + m3_ipc->volt_scale_offsets = val; + +release_sd_fw: + release_firmware(fw); +}; + +static int wkup_m3_init_scale_data(struct wkup_m3_ipc *m3_ipc, + struct device *dev) +{ + int ret = 0; + + /* + * If no name is provided, user has already been warned, pm will + * still work so return 0 + */ + + if (!m3_ipc->sd_fw_name) + return ret; + + ret = request_firmware_nowait(THIS_MODULE, FW_ACTION_UEVENT, + m3_ipc->sd_fw_name, dev, GFP_ATOMIC, + m3_ipc, wkup_m3_scale_data_fw_cb); + + return ret; +} + static void am33xx_txev_eoi(struct wkup_m3_ipc *m3_ipc) { writel(AM33XX_M3_TXEV_ACK, @@ -139,6 +221,7 @@ static irqreturn_t wkup_m3_txev_handler(int irq, void *ipc_data) } m3_ipc->state = M3_STATE_INITED; + wkup_m3_init_scale_data(m3_ipc, dev); complete(&m3_ipc->sync_complete); break; case M3_STATE_MSG_FOR_RESET: @@ -300,12 +383,15 @@ static int wkup_m3_prepare_low_power(struct wkup_m3_ipc *m3_ipc, int state) switch (state) { case WKUP_M3_DEEPSLEEP: m3_power_state = IPC_CMD_DS0; + wkup_m3_ctrl_ipc_write(m3_ipc, m3_ipc->volt_scale_offsets, 5); break; case WKUP_M3_STANDBY: m3_power_state = IPC_CMD_STANDBY; + wkup_m3_ctrl_ipc_write(m3_ipc, DS_IPC_DEFAULT, 5); break; case WKUP_M3_IDLE: m3_power_state = IPC_CMD_IDLE; + wkup_m3_ctrl_ipc_write(m3_ipc, DS_IPC_DEFAULT, 5); break; default: return 1; @@ -319,7 +405,6 @@ static int wkup_m3_prepare_low_power(struct wkup_m3_ipc *m3_ipc, int state) m3_ipc->isolation_conf, 4); wkup_m3_ctrl_ipc_write(m3_ipc, DS_IPC_DEFAULT, 2); wkup_m3_ctrl_ipc_write(m3_ipc, DS_IPC_DEFAULT, 3); - wkup_m3_ctrl_ipc_write(m3_ipc, DS_IPC_DEFAULT, 5); wkup_m3_ctrl_ipc_write(m3_ipc, DS_IPC_DEFAULT, 6); wkup_m3_ctrl_ipc_write(m3_ipc, DS_IPC_DEFAULT, 7); @@ -528,6 +613,12 @@ static int wkup_m3_ipc_probe(struct platform_device *pdev) if (of_find_property(np, "ti,set-io-isolation", NULL)) wkup_m3_set_io_isolation(m3_ipc); + ret = of_property_read_string(np, "firmware-name", + &m3_ipc->sd_fw_name); + if (ret) { + dev_dbg(dev, "Voltage scaling data blob not provided from DT.\n"); + }; + /* * Wait for firmware loading completion in a thread so we * can boot the wkup_m3 as soon as it's ready without holding diff --git a/include/linux/wkup_m3_ipc.h b/include/linux/wkup_m3_ipc.h index b706eac58f92..fef0fac60f8c 100644 --- a/include/linux/wkup_m3_ipc.h +++ b/include/linux/wkup_m3_ipc.h @@ -37,6 +37,9 @@ struct wkup_m3_ipc { int isolation_conf; int state; + unsigned long volt_scale_offsets; + const char *sd_fw_name; + struct completion sync_complete; struct mbox_client mbox_client; struct mbox_chan *mbox; @@ -50,6 +53,12 @@ struct wkup_m3_wakeup_src { char src[10]; }; +struct wkup_m3_scale_data_header { + u16 magic; + u8 sleep_offset; + u8 wake_offset; +} __packed; + struct wkup_m3_ipc_ops { void (*set_mem_type)(struct wkup_m3_ipc *m3_ipc, int mem_type); void (*set_resume_address)(struct wkup_m3_ipc *m3_ipc, void *addr);