Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp604316imm; Wed, 6 Jun 2018 03:02:17 -0700 (PDT) X-Google-Smtp-Source: ADUXVKKQiuGoPM6bEjzPMGSjc+DrXLp7nwxDmWu2Cba5J/Zp02gq0lcXWlImO4w2Y16GpQ9gKo2T X-Received: by 2002:a65:528c:: with SMTP id y12-v6mr2038206pgp.157.1528279337091; Wed, 06 Jun 2018 03:02:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528279337; cv=none; d=google.com; s=arc-20160816; b=drCj2MBfgYUFkt2numKzFsGPgOXhX4yK1B5EtclVoIJVyfeFD/bX8CJxjeXrupE8KX XBH6Mi+YCb3ekeQr34GQBThXWL9M3oMP0GNyo9RmAUM/ueODYgwGe5U/aFHkEHHKIAo4 x3cjvvcA2vzoIwU9fRR54oUtjaTWiJHTi29wu5kOm+cEMRv0KhNwsTdr1IdOQQRsZYWa H5Gv6mLvkiEuiS655zwvmv37LsMwHWKNqC/v36kab6xKXC0M0Iix9kLUpZs5/CUDFXaD eyEtvU0MeKSUIhGFu0fFuser3AgoaggYJ7te4NyQ7QP8kWxdIpi+L/ZBCZ8S0j5ZPo+U RIAA== 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=n9ZxPJH0cMi6SnGkp77L0CIhwuyYLxQFIUCM2mFBdew=; b=o5En3Ki94ydHPzVlhaZZ/IMNZzRvqnimSFL3PLAzO32d6kyKTi7+jFfeA+8cunJNbD 7Tr6aUb9b05S5KGX9q9JyohK+HFGEF4ZK90tUSpZhJ11T7M1oen21HKVSmZoD88PSETL mK+WtJdJSYYT31vrlCpcaLVqqMnASc+ErI2LWChyrFXRnxFoB1KCsNPGXFEC+3lrZcRg Iuf+KWdV98AelVOdVeYr+mz1pUy81rhQjLORDZqtkV7jtA6g1s6lokyU3aXgvPyxH/4B qEfNKBk+CSkFdybLdVqlfaulGrjDlq6JbX8QiFMEiaEALbqcnIhvyCz/zlW/sGY1umn4 GXpw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=j3CKDaSi; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c2-v6si51240477plb.77.2018.06.06.03.02.02; Wed, 06 Jun 2018 03:02:17 -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=@gmail.com header.s=20161025 header.b=j3CKDaSi; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752422AbeFFKAg (ORCPT + 99 others); Wed, 6 Jun 2018 06:00:36 -0400 Received: from mail-wr0-f193.google.com ([209.85.128.193]:44981 "EHLO mail-wr0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932601AbeFFKAd (ORCPT ); Wed, 6 Jun 2018 06:00:33 -0400 Received: by mail-wr0-f193.google.com with SMTP id y15-v6so5564345wrg.11; Wed, 06 Jun 2018 03:00:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=n9ZxPJH0cMi6SnGkp77L0CIhwuyYLxQFIUCM2mFBdew=; b=j3CKDaSiHChoLWuxMTNKpWgZFWaPq//61hIdaMxV1SgHlNapagY1rKPGbbPKKsE2jC 4kTAk5bZhpSbKGKfaF44DUM5JjNZItyr5Rlk+VYGeOcK8Qk2kBuri955zFp2X9AqlcfN eXOrYCPo5pTlDXtXyCSWPGc+w4VqODMloL2ATSnjICLdxLRw0PVCW+sK6f9CNEFo9ovp jzsUIN9O1S5uV+IjgyoAHHQbwsq1XS6JGJu2L6PJyKXjl5AQDsowvQBIIt7mShNZ7OIm O16nx+ocTVCeDteK4ITExTOq2eU1Tf3cOSCEJDb8PVoafpK80XqNMjGupoViFJ1JeYak Cdhg== 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=n9ZxPJH0cMi6SnGkp77L0CIhwuyYLxQFIUCM2mFBdew=; b=f54R5I8rJ3XqIdDXPPCID4x6TW4KmNVurcGLY04xK3CnOtuFcde2YYRqMBFL4z7/GU 56yB8iaZyswFaLSPq9dDpRtj6EGbbBN8muQOTrsRyGtoVSALzvXpw5wdrmw3+7sXtZsY tZri2Wau97V63LJNO35DyAg6xhax726WZ2g0qPbGuLkHTY/HEx5fTFbxI1pYhj8Inh5W DKXPpoBDOGrCt6EYMcx5mNlQzAq39mGF86uaUWrlsRza57IndkLjagO6JwgvsL3jDyjn 9Jh4dQF8BSyZRgh9t6x138nHHbFxNcTEbCrZYe20IZnG/5CRet+RmkNfehr6Cwy5JPQl QzzQ== X-Gm-Message-State: APt69E18mq+Ed2gwbiUJpKSvlBviplDpAjMCTL4S+VW2AJtrDQmQrSiU PC/15mI6qwX8F6ufjDXWYLrSsfQq X-Received: by 2002:adf:e311:: with SMTP id b17-v6mr1890033wrj.158.1528279231743; Wed, 06 Jun 2018 03:00:31 -0700 (PDT) Received: from kurokawa.lan (ip-86-49-107-50.net.upcbroadband.cz. [86.49.107.50]) by smtp.gmail.com with ESMTPSA id t124-v6sm1127003wmt.29.2018.06.06.03.00.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Jun 2018 03:00:30 -0700 (PDT) From: Marek Vasut X-Google-Original-From: Marek Vasut To: linux-kernel@vger.kernel.org Cc: Marek Vasut , Geert Uytterhoeven , Lee Jones , Mark Brown , Steve Twiss , Wolfram Sang , linux-renesas-soc@vger.kernel.org Subject: [PATCH v5 10/14] mfd: da9063: Add custom regmap for DA9063L Date: Wed, 6 Jun 2018 11:59:59 +0200 Message-Id: <20180606100003.17067-10-marek.vasut+renesas@gmail.com> X-Mailer: git-send-email 2.16.2 In-Reply-To: <20180606100003.17067-1-marek.vasut+renesas@gmail.com> References: <20180606100003.17067-1-marek.vasut+renesas@gmail.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The DA9063L does not have an RTC. Add custom regmap for DA9063L to prevent access into that register block. Signed-off-by: Marek Vasut Cc: Geert Uytterhoeven Cc: Lee Jones Cc: Mark Brown Cc: Steve Twiss Cc: Wolfram Sang Cc: linux-renesas-soc@vger.kernel.org Acked-for-MFD-by: Lee Jones --- V3: New patch V4: Drop mention of buggy datasheet in the commit message V5: Use regmap_reg_range macro --- drivers/mfd/da9063-i2c.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/drivers/mfd/da9063-i2c.c b/drivers/mfd/da9063-i2c.c index 6fe9c3464b41..a449a9263dd7 100644 --- a/drivers/mfd/da9063-i2c.c +++ b/drivers/mfd/da9063-i2c.c @@ -118,6 +118,50 @@ static const struct regmap_access_table da9063_bb_volatile_table = { .n_yes_ranges = ARRAY_SIZE(da9063_bb_volatile_ranges), }; +static const struct regmap_range da9063l_bb_readable_ranges[] = { + regmap_reg_range(DA9063_REG_PAGE_CON, DA9063_REG_MON_A10_RES), + regmap_reg_range(DA9063_REG_SEQ, DA9063_REG_ID_32_31), + regmap_reg_range(DA9063_REG_SEQ_A, DA9063_REG_AUTO3_LOW), + regmap_reg_range(DA9063_REG_T_OFFSET, DA9063_BB_REG_GP_ID_19), + regmap_reg_range(DA9063_REG_CHIP_ID, DA9063_REG_CHIP_VARIANT), +}; + +static const struct regmap_range da9063l_bb_writeable_ranges[] = { + regmap_reg_range(DA9063_REG_PAGE_CON, DA9063_REG_PAGE_CON), + regmap_reg_range(DA9063_REG_FAULT_LOG, DA9063_REG_VSYS_MON), + regmap_reg_range(DA9063_REG_SEQ, DA9063_REG_ID_32_31), + regmap_reg_range(DA9063_REG_SEQ_A, DA9063_REG_AUTO3_LOW), + regmap_reg_range(DA9063_REG_CONFIG_I, DA9063_BB_REG_MON_REG_4), + regmap_reg_range(DA9063_BB_REG_GP_ID_0, DA9063_BB_REG_GP_ID_19), +}; + +static const struct regmap_range da9063l_bb_volatile_ranges[] = { + regmap_reg_range(DA9063_REG_PAGE_CON, DA9063_REG_EVENT_D), + regmap_reg_range(DA9063_REG_CONTROL_A, DA9063_REG_CONTROL_B), + regmap_reg_range(DA9063_REG_CONTROL_E, DA9063_REG_CONTROL_F), + regmap_reg_range(DA9063_REG_BCORE2_CONT, DA9063_REG_LDO11_CONT), + regmap_reg_range(DA9063_REG_DVC_1, DA9063_REG_ADC_MAN), + regmap_reg_range(DA9063_REG_ADC_RES_L, DA9063_REG_MON_A10_RES), + regmap_reg_range(DA9063_REG_SEQ, DA9063_REG_SEQ), + regmap_reg_range(DA9063_REG_EN_32K, DA9063_REG_EN_32K), + regmap_reg_range(DA9063_BB_REG_MON_REG_5, DA9063_BB_REG_MON_REG_6), +}; + +static const struct regmap_access_table da9063l_bb_readable_table = { + .yes_ranges = da9063l_bb_readable_ranges, + .n_yes_ranges = ARRAY_SIZE(da9063l_bb_readable_ranges), +}; + +static const struct regmap_access_table da9063l_bb_writeable_table = { + .yes_ranges = da9063l_bb_writeable_ranges, + .n_yes_ranges = ARRAY_SIZE(da9063l_bb_writeable_ranges), +}; + +static const struct regmap_access_table da9063l_bb_volatile_table = { + .yes_ranges = da9063l_bb_volatile_ranges, + .n_yes_ranges = ARRAY_SIZE(da9063l_bb_volatile_ranges), +}; + static const struct regmap_range_cfg da9063_range_cfg[] = { { .range_min = DA9063_REG_PAGE_CON, @@ -164,6 +208,10 @@ static int da9063_i2c_probe(struct i2c_client *i2c, da9063_regmap_config.rd_table = &da9063_ad_readable_table; da9063_regmap_config.wr_table = &da9063_ad_writeable_table; da9063_regmap_config.volatile_table = &da9063_ad_volatile_table; + } else if (da9063->type == PMIC_TYPE_DA9063L) { + da9063_regmap_config.rd_table = &da9063l_bb_readable_table; + da9063_regmap_config.wr_table = &da9063l_bb_writeable_table; + da9063_regmap_config.volatile_table = &da9063l_bb_volatile_table; } else { da9063_regmap_config.rd_table = &da9063_bb_readable_table; da9063_regmap_config.wr_table = &da9063_bb_writeable_table; -- 2.16.2