Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp1421813imu; Wed, 9 Jan 2019 18:31:40 -0800 (PST) X-Google-Smtp-Source: ALg8bN7CoE6wvfPfwIrcvhMdOsZvsfOyrGAnuTUcvXWgiJr8/z/cTkzXdUItYXoPUbOyE6hSWbih X-Received: by 2002:a62:6408:: with SMTP id y8mr8350552pfb.202.1547087500792; Wed, 09 Jan 2019 18:31:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1547087500; cv=none; d=google.com; s=arc-20160816; b=VGBiMM0FUX3Eo5LHggxtLcQ2/rdubf0XCvysZTrtokju9IwNfgrJnm8yRGzWlTQxkr Ga6ncAzkpqjrIdTcuovqOqXWAcwA8cMcz1fgheCmXKCgBrvZ0VswMF+CYBxXfKfPaBGb rmypLOJaa8hURmcApaqWDCWGEUEQ970WUVXVqW+p/7M76+VOsnlgvj88JnmGkCkI3LxX 7mpkFx+O+xfKjPLjpGLPcARVuHAKiQJH9I44S+BI/3HsNHH1Tyi23nQxcz2kU5d75PYr 3P1mricuPpCXTKeXaq8zb4Q1tw7ur/PDNzyT8MWkxA82NfA6B34PfhRgPHs/mLmU/Wij seSg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=hSqkwabbxZR7NsE+NRgmtEbV8hAgzU96R/FrbmUfZbs=; b=h24UB+EiVZU15rLDAOuofNpVsSj4dzccBu9DSE71wTrLHsn5RXhbsjzhvf+f1f6k84 DwYJxmAgdKTbEqC3+Gd9ber49j3g743Cw/1RstoHfYk7sCEnkHcnT/j5//DsaWAwHvCZ vFUe5ukB1bAIcajDjIGYBGKnL7r+yuSboBPulm5wIqnzFp7QtajAfDwRb3aixRGfK5PA hJ52SFUlknPX91SfyHEmOIQh3KQ97Nx0PJ6v7XrafRSVi9Xvid3cc5/tvnOhXdIpXRCX cKloFzyX0OGjKC/u5Tv7zOjMjbF0TNTuHU+YTgg+19faDBSixw1qAzDwuASJOK6uU9KZ mkZQ== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a6si72415247pfa.227.2019.01.09.18.31.11; Wed, 09 Jan 2019 18:31:40 -0800 (PST) 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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726955AbfAJCSc (ORCPT + 99 others); Wed, 9 Jan 2019 21:18:32 -0500 Received: from mx01.hxt-semitech.com ([223.203.96.7]:44274 "EHLO barracuda.hxt-semitech.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726425AbfAJCSc (ORCPT ); Wed, 9 Jan 2019 21:18:32 -0500 X-ASG-Debug-ID: 1547086708-093b7e40ef08200001-xx1T2L Received: from HXTBJIDCEMVIW02.hxtcorp.net ([10.128.0.15]) by barracuda.hxt-semitech.com with ESMTP id bHrQp20U7sqk4WWf (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NO); Thu, 10 Jan 2019 10:18:28 +0800 (CST) X-Barracuda-Envelope-From: xiaoting.liu@hxt-semitech.com Received: from openbmc001.localdomain (10.5.21.169) by HXTBJIDCEMVIW02.hxtcorp.net (10.128.0.15) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Thu, 10 Jan 2019 10:18:21 +0800 From: Xiaoting Liu To: , , CC: , , , Xiaoting Liu Subject: [PATCH v3 1/4] pmbus: associate PMBUS_SKIP_STATUS_CHECK with Date: Thu, 10 Jan 2019 10:18:20 +0800 X-ASG-Orig-Subj: [PATCH v3 1/4] pmbus: associate PMBUS_SKIP_STATUS_CHECK with Message-ID: <77c9f6f45c85cfb17062fd6a0a608d4903894a4c.1546918172.git.xiaoting.liu@hxt-semitech.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.5.21.169] X-ClientProxiedBy: HXTBJIDCEMVIW01.hxtcorp.net (10.128.0.14) To HXTBJIDCEMVIW02.hxtcorp.net (10.128.0.15) X-Barracuda-Connect: UNKNOWN[10.128.0.15] X-Barracuda-Start-Time: 1547086708 X-Barracuda-Encrypted: ECDHE-RSA-AES256-SHA384 X-Barracuda-URL: https://192.168.50.101:443/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at hxt-semitech.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Bayes: SPAM GLOBAL 0.9940 1.0000 4.2728 X-Barracuda-Spam-Score: 4.27 X-Barracuda-Spam-Status: No, SCORE=4.27 using global scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.65431 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Current code compares device name with name in i2c_device_id to decide whether PMBUS_SKIP_STATUS_CHECK should be set in pmbus_platform_data, which makes adding new devices with PMBUS_SKIP_STATUS_CHECK should also modify code in pmbus_probe(). This patch adds pmbus_device_info to save pages and flags. Its pointer is put in driver_data of i2c_device_id, which makes adding new device more straightforward. Signed-off-by: Shunyong Yang Signed-off-by: Xiaoting Liu --- v3: Remove an empty line. --- v2: Move struct pmbus_device_info definition location from pmbus.h to pmbus.c. Change struct name from default_pmbus_info to pmbus_info_one. Change struct name from pmbus_info to pmbus_info_zero. Replace struct name dps460_pmbus_info and sgd009_pmbus_info with pmbus_info_one_skip. --- drivers/hwmon/pmbus/pmbus.c | 54 +++++++++++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/drivers/hwmon/pmbus/pmbus.c b/drivers/hwmon/pmbus/pmbus.c index 7688dab32f6e..ef845a1310fa 100644 --- a/drivers/hwmon/pmbus/pmbus.c +++ b/drivers/hwmon/pmbus/pmbus.c @@ -28,6 +28,11 @@ #include #include "pmbus.h" +struct pmbus_device_info { + int pages; + u32 flags; +}; + /* * Find sensor groups and status registers on each page. */ @@ -172,13 +177,14 @@ static int pmbus_probe(struct i2c_client *client, struct pmbus_driver_info *info; struct pmbus_platform_data *pdata = NULL; struct device *dev = &client->dev; + struct pmbus_device_info *device_info; info = devm_kzalloc(dev, sizeof(struct pmbus_driver_info), GFP_KERNEL); if (!info) return -ENOMEM; - if (!strcmp(id->name, "dps460") || !strcmp(id->name, "dps800") || - !strcmp(id->name, "sgd009")) { + device_info = (struct pmbus_device_info *)id->driver_data; + if (device_info->flags & PMBUS_SKIP_STATUS_CHECK) { pdata = devm_kzalloc(dev, sizeof(struct pmbus_platform_data), GFP_KERNEL); if (!pdata) @@ -187,36 +193,40 @@ static int pmbus_probe(struct i2c_client *client, pdata->flags = PMBUS_SKIP_STATUS_CHECK; } - info->pages = id->driver_data; + info->pages = device_info->pages; info->identify = pmbus_identify; dev->platform_data = pdata; return pmbus_do_probe(client, id, info); } +static const struct pmbus_device_info pmbus_info_one = {1, 0}; +static const struct pmbus_device_info pmbus_info_zero = {0, 0}; +static const struct pmbus_device_info pmbus_info_one_skip = { + 1, PMBUS_SKIP_STATUS_CHECK}; /* * Use driver_data to set the number of pages supported by the chip. */ static const struct i2c_device_id pmbus_id[] = { - {"adp4000", 1}, - {"bmr453", 1}, - {"bmr454", 1}, - {"dps460", 1}, - {"dps800", 1}, - {"mdt040", 1}, - {"ncp4200", 1}, - {"ncp4208", 1}, - {"pdt003", 1}, - {"pdt006", 1}, - {"pdt012", 1}, - {"pmbus", 0}, - {"sgd009", 1}, - {"tps40400", 1}, - {"tps544b20", 1}, - {"tps544b25", 1}, - {"tps544c20", 1}, - {"tps544c25", 1}, - {"udt020", 1}, + {"adp4000", (kernel_ulong_t)&pmbus_info_one}, + {"bmr453", (kernel_ulong_t)&pmbus_info_one}, + {"bmr454", (kernel_ulong_t)&pmbus_info_one}, + {"dps460", (kernel_ulong_t)&pmbus_info_one_skip}, + {"dps800", (kernel_ulong_t)&pmbus_info_one_skip}, + {"mdt040", (kernel_ulong_t)&pmbus_info_one}, + {"ncp4200", (kernel_ulong_t)&pmbus_info_one}, + {"ncp4208", (kernel_ulong_t)&pmbus_info_one}, + {"pdt003", (kernel_ulong_t)&pmbus_info_one}, + {"pdt006", (kernel_ulong_t)&pmbus_info_one}, + {"pdt012", (kernel_ulong_t)&pmbus_info_one}, + {"pmbus", (kernel_ulong_t)&pmbus_info_zero}, + {"sgd009", (kernel_ulong_t)&pmbus_info_one_skip}, + {"tps40400", (kernel_ulong_t)&pmbus_info_one}, + {"tps544b20", (kernel_ulong_t)&pmbus_info_one}, + {"tps544b25", (kernel_ulong_t)&pmbus_info_one}, + {"tps544c20", (kernel_ulong_t)&pmbus_info_one}, + {"tps544c25", (kernel_ulong_t)&pmbus_info_one}, + {"udt020", (kernel_ulong_t)&pmbus_info_one}, {} }; -- 1.8.3.1