From patchwork Sun May 20 13:28:57 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 10413409 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id A94966032C for ; Sun, 20 May 2018 13:29:24 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 99E28286FE for ; Sun, 20 May 2018 13:29:24 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8E60228723; Sun, 20 May 2018 13:29:24 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00, MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2FBC4286FE for ; Sun, 20 May 2018 13:29:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751778AbeETN3W (ORCPT ); Sun, 20 May 2018 09:29:22 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:46788 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751749AbeETN3T (ORCPT ); Sun, 20 May 2018 09:29:19 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id DCE3240122A0; Sun, 20 May 2018 13:29:18 +0000 (UTC) Received: from shalem.localdomain.com (ovpn-116-92.ams2.redhat.com [10.36.116.92]) by smtp.corp.redhat.com (Postfix) with ESMTP id 52102215CDA7; Sun, 20 May 2018 13:29:17 +0000 (UTC) From: Hans de Goede To: "Rafael J . Wysocki" , Len Brown , Andy Shevchenko , Mika Westerberg , Wolfram Sang , Jonathan Cameron Cc: Hans de Goede , linux-acpi@vger.kernel.org, linux-i2c@vger.kernel.org, Hartmut Knaack , Lars-Peter Clausen , linux-iio@vger.kernel.org Subject: [PATCH 9/9] iio: magnetometer: bmc150: Add support for BSG1160 ACPI HID Date: Sun, 20 May 2018 15:28:57 +0200 Message-Id: <20180520132857.8103-10-hdegoede@redhat.com> In-Reply-To: <20180520132857.8103-1-hdegoede@redhat.com> References: <20180520132857.8103-1-hdegoede@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.5]); Sun, 20 May 2018 13:29:18 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.5]); Sun, 20 May 2018 13:29:18 +0000 (UTC) for IP:'10.11.54.6' DOMAIN:'int-mx06.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'hdegoede@redhat.com' RCPT:'' Sender: linux-iio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP The BSG1160 ACPI HID is a HID describing a sensor complex consisting of 3 sensors: Accel: BMC150A at addr 0x11 Gyro: BMG160 at addr 0x68 Magneto: BMC150B at addr 0x13 A previous patch on this series has added the BSG1160 HID to the i2c_acpi_multiple_devices_ids list, so that one i2c_client gets instantiated per sensor. This commit not only adds the BSG1160 HID to the bmc150 code, but it also makes the i2c probe function check the client address for devices with a BSG1160 HID and only bind to the one at address 0x13. Signed-off-by: Hans de Goede --- drivers/iio/magnetometer/bmc150_magn_i2c.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/iio/magnetometer/bmc150_magn_i2c.c b/drivers/iio/magnetometer/bmc150_magn_i2c.c index 57e40dd1222e..c8a1e4178462 100644 --- a/drivers/iio/magnetometer/bmc150_magn_i2c.c +++ b/drivers/iio/magnetometer/bmc150_magn_i2c.c @@ -27,9 +27,17 @@ static int bmc150_magn_i2c_probe(struct i2c_client *client, const struct i2c_device_id *id) { + const struct acpi_device_id *acpi_id; struct regmap *regmap; + struct device *dev = &client->dev; const char *name = NULL; + /* The BSG1160 ACPI id describes multiple sensors, only bind to ours */ + acpi_id = acpi_match_device(dev->driver->acpi_match_table, dev); + if (acpi_id && acpi_id->driver_data && + client->addr != acpi_id->driver_data) + return -ENODEV; + regmap = devm_regmap_init_i2c(client, &bmc150_magn_regmap_config); if (IS_ERR(regmap)) { dev_err(&client->dev, "Failed to initialize i2c regmap\n"); @@ -51,6 +59,7 @@ static const struct acpi_device_id bmc150_magn_acpi_match[] = { {"BMC150B", 0}, {"BMC156B", 0}, {"BMM150B", 0}, + {"BSG1160", 0x13}, {}, }; MODULE_DEVICE_TABLE(acpi, bmc150_magn_acpi_match);