From patchwork Mon Mar 19 16:10:59 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guenter Roeck X-Patchwork-Id: 887804 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-i2c-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=roeck-us.net Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="gFdgCyZS"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 404j9f2jr8z9sX6 for ; Tue, 20 Mar 2018 04:05:10 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S966703AbeCSRB7 (ORCPT ); Mon, 19 Mar 2018 13:01:59 -0400 Received: from mail-pl0-f66.google.com ([209.85.160.66]:42622 "EHLO mail-pl0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S966704AbeCSQLE (ORCPT ); Mon, 19 Mar 2018 12:11:04 -0400 Received: by mail-pl0-f66.google.com with SMTP id w15-v6so10503437plq.9; Mon, 19 Mar 2018 09:11:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=xVJTKwYb6uS4qN1akuQDWk8v/TKYBycZ/dIP9zaZii4=; b=gFdgCyZSazIRQbVwaVBIyUetuJYheEgzE+EPy/B2pSLin9Oj4BJF7YR49my91yD8pU g+A/1HJ5CSEYY7w5Q8YjXKcpA/mX574/6VMPlZcAHM0XBCT7es8dXOVxJxJGQ6QyFPAV NpbsakAMYiXJMmkn1Valorfv6aoVW1uixJ7D0M4Cn/j6LKA4skLXQcEIcanwGTwEQiHC IiIUxmfjX7rc2ZS0zbpa8qZrFwbjonT9vzbQII0pTkNWpQmUCmqUti59P0gvZrfCfx1Z 0QDT5CfMSSKOU++SqYND1BWLn6R/B5cEVIA2cz4Kz/L58Jo/J69J9JxZ4gtPu8et2cvZ RTxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=xVJTKwYb6uS4qN1akuQDWk8v/TKYBycZ/dIP9zaZii4=; b=Vndu0sqS8aloKi2T/CgHppiJs83vFj/9JyudU0R/3rO32rJmsVE2tBpeocAAotLYFz NHesmgVVGjI4QK5ASM+IQhTVl3a81zBiPPrLOQztd83x5Y/Y1CukERkkD9bm4EowMNrI LOrLcgY+lRpgIlX2o+scBLOUlCKfLlSmUKkIqnz8dof0bzkeNn7ik6UedJkfUlB63vdX P5xib/V/IvBuL4w00hAJvf4JuYSM5jKDiOtEaB403y93vh8tgVDYSHdasebT2FjaUa5k d0SOMnJv1XFNKu1KDHYo5FDpLXTQi1DHN14low5tgqpQnYsFM8FstxmlSkotVeBcpisq vHqQ== X-Gm-Message-State: AElRT7G/P8meTfQu185vDGtO5h/12DfngJxp5Si+w1c7pOOwAeE7Fb/h jrh6S7/jGlGS4s18QeTUS5LNrw== X-Google-Smtp-Source: AG47ELvuhnWTajMkxgf9dVVE+wM0NziWKbysmsTWFkmQCgBuHyhIxVQtM0RL9R14J/jJwZxzz7psOw== X-Received: by 2002:a17:902:8214:: with SMTP id x20-v6mr13246633pln.182.1521475863668; Mon, 19 Mar 2018 09:11:03 -0700 (PDT) Received: from localhost (108-223-40-66.lightspeed.sntcca.sbcglobal.net. [108.223.40.66]) by smtp.gmail.com with ESMTPSA id z15sm540946pgr.68.2018.03.19.09.11.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 19 Mar 2018 09:11:03 -0700 (PDT) From: Guenter Roeck To: Peter Rosin Cc: Wolfram Sang , linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, Guenter Roeck Subject: [RFC PATCH 2/2] i2c: mux: pca954x: Use API function to verify device ID Date: Mon, 19 Mar 2018 09:10:59 -0700 Message-Id: <1521475859-16765-2-git-send-email-linux@roeck-us.net> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1521475859-16765-1-git-send-email-linux@roeck-us.net> References: <1521475859-16765-1-git-send-email-linux@roeck-us.net> Sender: linux-i2c-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-i2c@vger.kernel.org Use i2c_verify_device_id() to verify the device ID in the probe function. Cc: Peter Rosin Signed-off-by: Guenter Roeck --- RFC: Compile tested only drivers/i2c/muxes/i2c-mux-pca954x.c | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/drivers/i2c/muxes/i2c-mux-pca954x.c b/drivers/i2c/muxes/i2c-mux-pca954x.c index 09bafd3e68fa..80b7db26b02a 100644 --- a/drivers/i2c/muxes/i2c-mux-pca954x.c +++ b/drivers/i2c/muxes/i2c-mux-pca954x.c @@ -148,6 +148,7 @@ static const struct chip_desc chips[] = { .id = { .manufacturer_id = I2C_DEVICE_ID_NXP_SEMICONDUCTORS, .part_id = 0x10b, + .die_revision = I2C_DEVICE_DIE_REVISION_ANY, }, }, [pca_9847] = { @@ -157,6 +158,7 @@ static const struct chip_desc chips[] = { .id = { .manufacturer_id = I2C_DEVICE_ID_NXP_SEMICONDUCTORS, .part_id = 0x108, + .die_revision = I2C_DEVICE_DIE_REVISION_ANY, }, }, [pca_9848] = { @@ -165,6 +167,7 @@ static const struct chip_desc chips[] = { .id = { .manufacturer_id = I2C_DEVICE_ID_NXP_SEMICONDUCTORS, .part_id = 0x10a, + .die_revision = I2C_DEVICE_DIE_REVISION_ANY, }, }, [pca_9849] = { @@ -174,6 +177,7 @@ static const struct chip_desc chips[] = { .id = { .manufacturer_id = I2C_DEVICE_ID_NXP_SEMICONDUCTORS, .part_id = 0x109, + .die_revision = I2C_DEVICE_DIE_REVISION_ANY, }, }, }; @@ -400,23 +404,9 @@ static int pca954x_probe(struct i2c_client *client, else data->chip = &chips[id->driver_data]; - if (data->chip->id.manufacturer_id != I2C_DEVICE_ID_NONE) { - struct i2c_device_identity id; - - ret = i2c_get_device_id(client, &id); - if (ret && ret != -EOPNOTSUPP) - return ret; - - if (!ret && - (id.manufacturer_id != data->chip->id.manufacturer_id || - id.part_id != data->chip->id.part_id)) { - dev_warn(&client->dev, - "unexpected device id %03x-%03x-%x\n", - id.manufacturer_id, id.part_id, - id.die_revision); - return -ENODEV; - } - } + ret = i2c_verify_device_id(client, &data->chip->id); + if (ret < 0 && ret != -EOPNOTSUPP) + return ret; /* Write the mux register at addr to verify * that the mux is in fact present. This also