Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp4413568pxv; Mon, 5 Jul 2021 23:46:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxT3/SP10HaJLtmc5Inp4oo4PFeWRZEfFzhtQ/B+BKsYb3CATd/RQ8TLKw7h7jtRG9TIQeU X-Received: by 2002:a6b:6317:: with SMTP id p23mr6915259iog.10.1625554004139; Mon, 05 Jul 2021 23:46:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1625554004; cv=none; d=google.com; s=arc-20160816; b=sXNOeRKF404xEC/bOgUi9r5OhpDzGzSAazXqVr1ZEaVvn48Xd/zdGw7WLsCX3dKbTw uJS/A12SieuDvARk30rBFLwhUzMepXjhI2oHSzUr1UklqJZSrmYNn+/f9X6qC+RoIuAN 6hMia79t9FbeTNJsOI4HdlmV6scBiLBS7AwkSNBoxSxuvk2nWXuIPfJk0qIkBm5k3pSv 8zb5k6L3cYZPH+/sXGq9nk5GqD9G5+gZIRr4FIUnSsCOBWYacRPgIVnkpBrrETy1X7hM v+2U+d2ctPSatHHopYMNKnJBZ2+pujmFQNPqgA++EZdGI+i3NwZdj7VoZPZenoGlG1ZK vkcg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from :dkim-signature; bh=hlaqQPlGCk3tFWhNY3fwaLeoKxK3RScZN31TpYJkPTg=; b=wOvFGCVlgsY0ecJIIjhRuPA5EzwQRBrkNacyh4IQAYBHFwC0FAvQ3Qckl+WkLasJD+ +0p4/X4JW8R8UAsieQg1+A+ZH7L4xlRC0N5T4H7p/ANZz4JiSxT719mOVaYA5Y10+upc vYxGUOr8HcysIXjLZKFHrD2NIBH9qJuKsxVhpta0rtTNQ96jAHKU2U7RtjMPz9KU7Ht7 0EUny3mIgl2iNSItKuel0QAJzXfRWJqo61HekZq/Kp9iw0jPcT5QfqtEohP+/HawHBde bUWCZc8Wd43FSuT1Ad4CNLCIoDrClb6QWiwg9YuCJcpvChkFycIgneaArfBRX2SZUh/k /vVw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=l9U4onaV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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. [23.128.96.18]) by mx.google.com with ESMTP id j23si16617352iog.79.2021.07.05.23.46.32; Mon, 05 Jul 2021 23:46:44 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=l9U4onaV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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 S230130AbhGFGsZ (ORCPT + 99 others); Tue, 6 Jul 2021 02:48:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39828 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230119AbhGFGsY (ORCPT ); Tue, 6 Jul 2021 02:48:24 -0400 Received: from mail-pl1-x62b.google.com (mail-pl1-x62b.google.com [IPv6:2607:f8b0:4864:20::62b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A50E2C061574 for ; Mon, 5 Jul 2021 23:45:46 -0700 (PDT) Received: by mail-pl1-x62b.google.com with SMTP id o4so8406385plg.1 for ; Mon, 05 Jul 2021 23:45:46 -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; bh=hlaqQPlGCk3tFWhNY3fwaLeoKxK3RScZN31TpYJkPTg=; b=l9U4onaVpYHDipfTOTqfsP4ebXu/2T7L3IXVaCTG7iygsq/4RVvpqPX8V3rr0/L3Hh lRXg2hMr/7jqiRnuHSSVX8Dh1M1kllWrFfanJRYCFwXeHQI6KyN4WoKWJ99kBO2lZMli b3gnjfxXoDXDdYJByDYf0KoLNkjxEJEGgXJROUO/z8WoczAyscO6U7mQxxKjdxDXEvYB G++mDt+dLZPwx9ePA3KAQSrly4y/U6G8m8ygQrvGM5HhJJaETfCav1D5NjYrX1Kwsj+B MBt3PJXWiMaTB6IkXazeEOfCsMTgBrDTGHjfVzBLx/gSUzJzdLC1CfsucjIcVYCZFGRK 06vA== 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; bh=hlaqQPlGCk3tFWhNY3fwaLeoKxK3RScZN31TpYJkPTg=; b=dSsOOelsArXT3oYZw9wO0oUo9UdwoC85FVC2D8a62BG1blHlB5YtTEFeYCWanq9y1e 3iyhiI1Uf+Xmp0n1pPc/G0AglCKgHXHqd2ovlbjwprJKE3HfiuVuOZ/f6KCKlomWzwTv eoOAK3cJzDUEpVWpeanV5+PcILktH43FJDHQZJdgymEaRBektlwFPX2GYRZMHG3T2shH DhYjzesQDAWxgOS90ZfWmUpf409d3bwqrFb7XaRUHglriAXgd2spAOMTZ9CLW/my1Tgv yRQntUkondTB0Z1hNUcG9dFVxtBw8jFYwr0kaAIr18v7oXcAsz9LcjMP5bZGmc9ZOBv/ SEiQ== X-Gm-Message-State: AOAM532pSrErONK6WyXH42t6Z//3wgA2ptod9gaW0FvFIJzMzcA4EdVs z10RXrFodzf1N18ZL1dqnnY= X-Received: by 2002:a17:90a:9282:: with SMTP id n2mr19147444pjo.204.1625553945953; Mon, 05 Jul 2021 23:45:45 -0700 (PDT) Received: from localhost.localdomain (1-171-1-183.dynamic-ip.hinet.net. [1.171.1.183]) by smtp.gmail.com with ESMTPSA id r10sm16987611pga.48.2021.07.05.23.45.43 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 05 Jul 2021 23:45:45 -0700 (PDT) From: cy_huang To: lee.jones@linaro.org, broonie@kernel.org Cc: linux-kernel@vger.kernel.org, lgirdwood@gmail.com, axel.lin@ingics.com, cy_huang@richtek.com Subject: [PATCH v2] regulator: rt5033: Use linear ranges to map all voltage selection Date: Tue, 6 Jul 2021 14:45:39 +0800 Message-Id: <1625553939-9109-1-git-send-email-u0084500@gmail.com> X-Mailer: git-send-email 2.7.4 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: ChiYuan Huang Instead of linear mapping, Use linear range to map all voltage selection. Signed-off-by: ChiYuan Huang --- Since v2 - recover the volt number back in rt5033-private.h - Add the n_voltages from v1 back. Even though commit 6549c46af855 ("regulator: rt5033: Fix n_voltages settings for BUCK and LDO") can fix the linear mapping to the correct min/max voltage But there're still non-step ranges for the reserved value. To use the linear range can fix it for mapping all voltage selection. --- drivers/regulator/rt5033-regulator.c | 21 +++++++++++++++------ include/linux/mfd/rt5033-private.h | 4 ++-- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/drivers/regulator/rt5033-regulator.c b/drivers/regulator/rt5033-regulator.c index 0e73116..da4cf5a 100644 --- a/drivers/regulator/rt5033-regulator.c +++ b/drivers/regulator/rt5033-regulator.c @@ -13,6 +13,16 @@ #include #include +static const struct linear_range rt5033_buck_ranges[] = { + REGULATOR_LINEAR_RANGE(1000000, 0, 20, 100000), + REGULATOR_LINEAR_RANGE(3000000, 21, 31, 0), +}; + +static const struct linear_range rt5033_ldo_ranges[] = { + REGULATOR_LINEAR_RANGE(1200000, 0, 18, 100000), + REGULATOR_LINEAR_RANGE(3000000, 19, 31, 0), +}; + static const struct regulator_ops rt5033_safe_ldo_ops = { .is_enabled = regulator_is_enabled_regmap, .enable = regulator_enable_regmap, @@ -24,8 +34,7 @@ static const struct regulator_ops rt5033_buck_ops = { .is_enabled = regulator_is_enabled_regmap, .enable = regulator_enable_regmap, .disable = regulator_disable_regmap, - .list_voltage = regulator_list_voltage_linear, - .map_voltage = regulator_map_voltage_linear, + .list_voltage = regulator_list_voltage_linear_range, .get_voltage_sel = regulator_get_voltage_sel_regmap, .set_voltage_sel = regulator_set_voltage_sel_regmap, }; @@ -40,8 +49,8 @@ static const struct regulator_desc rt5033_supported_regulators[] = { .type = REGULATOR_VOLTAGE, .owner = THIS_MODULE, .n_voltages = RT5033_REGULATOR_BUCK_VOLTAGE_STEP_NUM, - .min_uV = RT5033_REGULATOR_BUCK_VOLTAGE_MIN, - .uV_step = RT5033_REGULATOR_BUCK_VOLTAGE_STEP, + .linear_ranges = rt5033_buck_ranges, + .n_linear_ranges = ARRAY_SIZE(rt5033_buck_ranges), .enable_reg = RT5033_REG_CTRL, .enable_mask = RT5033_CTRL_EN_BUCK_MASK, .vsel_reg = RT5033_REG_BUCK_CTRL, @@ -56,8 +65,8 @@ static const struct regulator_desc rt5033_supported_regulators[] = { .type = REGULATOR_VOLTAGE, .owner = THIS_MODULE, .n_voltages = RT5033_REGULATOR_LDO_VOLTAGE_STEP_NUM, - .min_uV = RT5033_REGULATOR_LDO_VOLTAGE_MIN, - .uV_step = RT5033_REGULATOR_LDO_VOLTAGE_STEP, + .linear_ranges = rt5033_ldo_ranges, + .n_linear_ranges = ARRAY_SIZE(rt5033_ldo_ranges), .enable_reg = RT5033_REG_CTRL, .enable_mask = RT5033_CTRL_EN_LDO_MASK, .vsel_reg = RT5033_REG_LDO_CTRL, diff --git a/include/linux/mfd/rt5033-private.h b/include/linux/mfd/rt5033-private.h index 40a0c2d..2d1895c 100644 --- a/include/linux/mfd/rt5033-private.h +++ b/include/linux/mfd/rt5033-private.h @@ -200,13 +200,13 @@ enum rt5033_reg { #define RT5033_REGULATOR_BUCK_VOLTAGE_MIN 1000000U #define RT5033_REGULATOR_BUCK_VOLTAGE_MAX 3000000U #define RT5033_REGULATOR_BUCK_VOLTAGE_STEP 100000U -#define RT5033_REGULATOR_BUCK_VOLTAGE_STEP_NUM 21 +#define RT5033_REGULATOR_BUCK_VOLTAGE_STEP_NUM 32 /* RT5033 regulator LDO output voltage uV */ #define RT5033_REGULATOR_LDO_VOLTAGE_MIN 1200000U #define RT5033_REGULATOR_LDO_VOLTAGE_MAX 3000000U #define RT5033_REGULATOR_LDO_VOLTAGE_STEP 100000U -#define RT5033_REGULATOR_LDO_VOLTAGE_STEP_NUM 19 +#define RT5033_REGULATOR_LDO_VOLTAGE_STEP_NUM 32 /* RT5033 regulator SAFE LDO output voltage uV */ #define RT5033_REGULATOR_SAFE_LDO_VOLTAGE 4900000U -- 2.7.4