Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp428048imm; Mon, 9 Jul 2018 04:33:31 -0700 (PDT) X-Google-Smtp-Source: AAOMgpfoPGFO6N7iaa5lgiUotA5xfmfBv/bfImLMcrCrkfMDpNe89KqKyQvQyLnDZz8limVZgnGS X-Received: by 2002:a65:4c02:: with SMTP id u2-v6mr18947449pgq.364.1531136011736; Mon, 09 Jul 2018 04:33:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1531136011; cv=none; d=google.com; s=arc-20160816; b=a/zGtl0Fck1aJRDSm91GPRtPvjSaPL6BWH+2OwRCahdI/b21f6YblMHvsxtjsRFynN b0t8B9vYtclmA7NhLQS9sEe+tgl0lRkW+8bLb3HCtONV7NNg/F6sIzWezn5ZMPlD3NiB TeSfv2FlCKgM3HIOO9hs4EmxbPw2R/NdiL/l9riuk+rWX+y6JRTDBSLAatRk06DxtQYJ gJptX2MvOVJtBSf2vS4zbCHgVOBFWK94iansMqfUcwBVN+2dbV5iJc8rE5hhMduRu6S5 8zWrQ7jDI7vDHwwBR8ROkOoE8CXmp1DanYNj10vHBA/4BO2ZFR7rv+dNMcMg5lpAZjWQ 8t2w== 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:references :in-reply-to:message-id:date:subject:cc:to:from:dkim-signature :arc-authentication-results; bh=6BLPkOT/SgEgQAvO08/wD9B+TzSAkRr3OD36saLthVg=; b=HJF3skBcsMS4n9+gz0I1TRoIxtS720hB87vxCVfryO435qgEDMqohAJz6X7qsi1cFP vhjqYo8PjakinZTOx0yEUwM0na/boZ3fvMFKlIaniEGY/IOnQwYxHEyilrmCkF1VoHUF 8ChBZ5LyQMuYKHt/XmNADDnVYvBL4Vmq1P6zM9+QgkfycRkOSR0lDGQSK1aLnhLVn/ux nSr05PdxGsgyI5r95p+hQOB7DrEedtEH84iwONPa2tffuJJ5vzCuKWb+7mrPd0HRDmdF GsLGKZ+kq+dfxI6bGZ+5QEdXCDRqfTxtNE0Y/S0ofXsfhRZC60FGcumbFMTO6wXvvZl/ prBA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=BVA+oEq9; 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 r133-v6si13216734pgr.17.2018.07.09.04.32.54; Mon, 09 Jul 2018 04:33:31 -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=BVA+oEq9; 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 S932824AbeGIL21 (ORCPT + 99 others); Mon, 9 Jul 2018 07:28:27 -0400 Received: from mail-wr1-f66.google.com ([209.85.221.66]:47035 "EHLO mail-wr1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932742AbeGIL2X (ORCPT ); Mon, 9 Jul 2018 07:28:23 -0400 Received: by mail-wr1-f66.google.com with SMTP id s11-v6so10596826wra.13 for ; Mon, 09 Jul 2018 04:28:22 -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 :in-reply-to:references; bh=6BLPkOT/SgEgQAvO08/wD9B+TzSAkRr3OD36saLthVg=; b=BVA+oEq9ZGqfD1xur9WuH/NrHuyfFoBOGw0JvDuGk4x2gUabrkVbqt30Lv56xs7+ds FOOD0yQEl86/ofRoBTN63d18ZRnUAcVt6X2mIiW5t4kwuVespHwSWpytCibOaoUbd798 8aMTbN1EUYGUgGMozrgBDonFXTaHF7TLwU1Lo= 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:in-reply-to:references; bh=6BLPkOT/SgEgQAvO08/wD9B+TzSAkRr3OD36saLthVg=; b=OTuMm2dKLMW3yVDwxg9T2XTheDAiVUaErT6MTr/jaNiHxNhW4wW0x/JQXmlVP53X6X osu5kyaJ+SbA0aZqOVbXowLtJCXROJETQtBtMvg3pjITWSRhFFDnnchTB/2Ui+7Tnbgp nnb0Oac+OMbarbHCz1OJUIynU8OYRZjPXp6COyHFMMViVssn/K0atwojm8ql4vghVC/o 8mVtGSEbtHc74mOIHqSmHL9EBZhnPbC7/rFtW1+MplOKlTeZ0OUgspVUSGGI6xpijnJt jXxeU0qKNhudB9O/g089v0lZ58s/OBuO9Yb4us3nbLb81uY+GKnKylr4Qq2e4aYEu5V4 tXNw== X-Gm-Message-State: APt69E1MsPCEg+O61Zfn0QFnF72vwvXwpI+60VPXCmk7ROUypBcoQIA2 GEZ1DWrgZI2PcWDjDDIQwxOP+n3BqC8= X-Received: by 2002:adf:e78d:: with SMTP id n13-v6mr14136743wrm.136.1531135701888; Mon, 09 Jul 2018 04:28:21 -0700 (PDT) Received: from localhost ([49.248.189.240]) by smtp.gmail.com with ESMTPSA id s10-v6sm25570377wmb.12.2018.07.09.04.28.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 09 Jul 2018 04:28:21 -0700 (PDT) From: Amit Kucheria To: linux-kernel@vger.kernel.org Cc: rnayak@codeaurora.org, linux-arm-msm@vger.kernel.org, bjorn.andersson@linaro.org, edubezval@gmail.com, smohanad@codeaurora.org, vivek.gautam@codeaurora.org, andy.gross@linaro.org, Zhang Rui , linux-pm@vger.kernel.org Subject: [PATCH v5 2/7] thermal: tsens: Add support to split up register address space into two Date: Mon, 9 Jul 2018 16:57:35 +0530 Message-Id: X-Mailer: git-send-email 2.7.4 In-Reply-To: References: In-Reply-To: References: Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org There are two banks of registers for v2 TSENS IPs: SROT and TM. On older SoCs these were contiguous, leading to DTs mapping them as one register address space of size 0x2000. In newer SoCs, these two banks are not contiguous anymore. Fixing old DTs to split the address space into allows us to have cleaner common code e.g. get_temp() that is shared across new and old platforms. But we need to add logic to init_common() to differentiate between old and new DTs and adjust associated offsets for the TM register bank so that the old DTs will continue to function correctly. Signed-off-by: Amit Kucheria --- drivers/thermal/qcom/tsens-8996.c | 2 +- drivers/thermal/qcom/tsens-common.c | 11 +++++++++++ drivers/thermal/qcom/tsens.h | 1 + 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/thermal/qcom/tsens-8996.c b/drivers/thermal/qcom/tsens-8996.c index e1f7781..60765b1 100644 --- a/drivers/thermal/qcom/tsens-8996.c +++ b/drivers/thermal/qcom/tsens-8996.c @@ -28,7 +28,7 @@ static int get_temp_8996(struct tsens_device *tmdev, int id, int *temp) unsigned int sensor_addr; int last_temp = 0, last_temp2 = 0, last_temp3 = 0, ret; - sensor_addr = STATUS_OFFSET + s->hw_id * 4; + sensor_addr = tmdev->tm_offset + STATUS_OFFSET + s->hw_id * 4; ret = regmap_read(tmdev->map, sensor_addr, &code); if (ret) return ret; diff --git a/drivers/thermal/qcom/tsens-common.c b/drivers/thermal/qcom/tsens-common.c index b1449ad..4a741b0 100644 --- a/drivers/thermal/qcom/tsens-common.c +++ b/drivers/thermal/qcom/tsens-common.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include "tsens.h" @@ -126,11 +127,21 @@ static const struct regmap_config tsens_config = { int __init init_common(struct tsens_device *tmdev) { void __iomem *base; + struct platform_device *op = of_find_device_by_node(tmdev->dev->of_node); + if (!op) + return -EINVAL; base = of_iomap(tmdev->dev->of_node, 0); if (!base) return -EINVAL; + if (op->num_resources > 1) { + tmdev->tm_offset = 0; + } else { + /* old DTs where SROT and TM were in a contiguous 2K block */ + tmdev->tm_offset = 0x1000; + } + tmdev->map = devm_regmap_init_mmio(tmdev->dev, base, &tsens_config); if (IS_ERR(tmdev->map)) { iounmap(base); diff --git a/drivers/thermal/qcom/tsens.h b/drivers/thermal/qcom/tsens.h index dc56e1e..d785b37 100644 --- a/drivers/thermal/qcom/tsens.h +++ b/drivers/thermal/qcom/tsens.h @@ -77,6 +77,7 @@ struct tsens_device { struct device *dev; u32 num_sensors; struct regmap *map; + u32 tm_offset; struct tsens_context ctx; const struct tsens_ops *ops; struct tsens_sensor sensor[0]; -- 2.7.4