From patchwork Mon Jan 29 12:40:08 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Romain Porte X-Patchwork-Id: 867095 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; dkim=pass (1024-bit key; unprotected) header.d=nokia.onmicrosoft.com header.i=@nokia.onmicrosoft.com header.b="mV4W7j3B"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zVTf64Cknz9ryT for ; Mon, 29 Jan 2018 23:41:34 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751569AbeA2Mlc (ORCPT ); Mon, 29 Jan 2018 07:41:32 -0500 Received: from mail-eopbgr40107.outbound.protection.outlook.com ([40.107.4.107]:45024 "EHLO EUR03-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751298AbeA2Mlb (ORCPT ); Mon, 29 Jan 2018 07:41:31 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nokia.onmicrosoft.com; s=selector1-nokia-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=bpKtSg9cpfnEdfdaUE3QlcGQQJLstMXYUAUP2GfYHMY=; b=mV4W7j3BeLJuJgfNfPiW/wMWy+Yhm+5h1so95beCAaqabz5Z4yPTSTEZz+ny6TeyRTHRTKHsIPOOmq+xdUfBiz+/QIvA4Rkg+DXCOdPQphTBFoKXsCDx7Pbr9UHtRwBTnhRmXeQZQat4a24VwU89zYizemua7D6oCGOkKB2fAQg= Received: from VI1PR07CA0182.eurprd07.prod.outlook.com (2603:10a6:802:3e::30) by AM5PR0701MB2882.eurprd07.prod.outlook.com (2603:10a6:203:46::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.464.6; Mon, 29 Jan 2018 12:41:28 +0000 Received: from DB5EUR03FT008.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e0a::207) by VI1PR07CA0182.outlook.office365.com (2603:10a6:802:3e::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.464.6 via Frontend Transport; Mon, 29 Jan 2018 12:41:28 +0000 Authentication-Results: spf=pass (sender IP is 131.228.2.241) smtp.mailfrom=nokia.com; nokia.com; dkim=none (message not signed) header.d=none; nokia.com; dmarc=pass action=none header.from=nokia.com; Received-SPF: Pass (protection.outlook.com: domain of nokia.com designates 131.228.2.241 as permitted sender) receiver=protection.outlook.com; client-ip=131.228.2.241; helo=mailrelay.int.nokia.com; Received: from mailrelay.int.nokia.com (131.228.2.241) by DB5EUR03FT008.mail.protection.outlook.com (10.152.20.98) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.20.444.13 via Frontend Transport; Mon, 29 Jan 2018 12:41:27 +0000 Received: from fihe3nok0735.emea.nsn-net.net (localhost [127.0.0.1]) by fihe3nok0735.emea.nsn-net.net (8.14.9/8.14.5) with ESMTP id w0TCeldN011011 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 29 Jan 2018 14:40:47 +0200 Received: from localhost.localdomain ([172.27.203.39]) by fihe3nok0735.emea.nsn-net.net (8.14.9/8.14.5) with ESMTP id w0TCedVj010753; Mon, 29 Jan 2018 14:40:47 +0200 X-HPESVCS-Source-Ip: 172.27.203.39 From: Romain Porte To: CC: , , Romain Porte Subject: [PATCH v2 1/3] Add risky_addr option for i2c tools Date: Mon, 29 Jan 2018 13:40:08 +0100 Message-ID: <20180129124010.4044-2-romain.porte@nokia.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180129124010.4044-1-romain.porte@nokia.com> References: <20180105150248.3170-1-romain.porte@nokia.com> <20180129124010.4044-1-romain.porte@nokia.com> X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:131.228.2.241; IPV:CAL; SCL:-1; CTRY:FI; EFV:NLI; SFV:NSPM; SFS:(10019020)(346002)(376002)(396003)(39380400002)(39860400002)(2980300002)(438002)(199004)(189003)(50466002)(59450400001)(48376002)(5660300001)(2906002)(2351001)(575784001)(86362001)(22756006)(316002)(26005)(68736007)(106466001)(107886003)(305945005)(77096007)(336011)(1076002)(54906003)(8676002)(26826003)(6666003)(51416003)(356003)(53936002)(6916009)(81166006)(81156014)(106002)(2950100002)(478600001)(36756003)(8936002)(76176011)(97736004)(16586007)(47776003)(50226002)(49486002)(4326008); DIR:OUT; SFP:1102; SCL:1; SRVR:AM5PR0701MB2882; H:mailrelay.int.nokia.com; FPR:; SPF:Pass; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; DB5EUR03FT008; 1:J9QBiXJEkLLZ5uRIiyE9tYkpKWIgPkxtvyJhKPaqlb/Fzm+AgCZDPJSfmN9eGJj4IvxQhtOwCiCXI9y9YjjDbxKx+Ps7zUpmwUxcZo8u8ekH5KZmiNlBpcrU5lF8kZBH MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f7f6082e-09fb-47b8-6ed9-08d567159dbc X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4604075)(4608076)(2017052603307); SRVR:AM5PR0701MB2882; X-Microsoft-Exchange-Diagnostics: 1; AM5PR0701MB2882; 3:t38empHSZf+2mMvH63JP1Mr5kqvD3ugpdjopDrNrX1SwNFOBhNp6QP3Vu6vJ3wbAdd+UlH76Uu6HgUJyQs0xDEzvozCFtct/uhRKpKq7lfx9UgWzOSMQOMJki775zTtlLXGa0xMDZHhL6syzDn/159+p3fLOrQmtNy8wBMq+hN+E6RkVm4If4Cmga0NrahOcFycH4fZZTtNh5xqKKMFLri0MdCniE3F+AnN3qruas4NaMwJYa/NMZQF/202FFgcOGqnYxIE5SL3kL8c5galWZ6g64k2YP3TD1OeiCgBfN3fpmbi/isjqTktrQeyB2YkyWsdlH+UoqMt6Td0wp0s0EWKOLNi3rIBVu8dtIA+Kezw=; 25:C9RWqbhWu1qb7pvye2/uUdSRswqAdJlAXP9C63x7QwvOYxYUqqJtCoDtZW02lMrr7mWONuYB9/a88HIDz5oXQoFu9dcgO0LpRE8+BSbCMbb//vc1Zfb6NW/Q5jSMcLIAg02KzxZkNWIWnbNeTCRSxFuC9Kx0mCSp+XG7lRvVpLicQEYj7QLc+SoHGEga5luRB5eMkEwGVRv8aa5ZG13S+n27Slr1XclutjW0i0m4MIagPgfz+U0KOR13+cChmS3+9UVqDhW72Ue7D7YMR4sAJYIqr+TN/wYIJhyBNUp49XNtgDCJYwPev2Kl8CRpdUIiNk8eEafIAxEe+LbGIt3PJA== X-MS-TrafficTypeDiagnostic: AM5PR0701MB2882: X-Microsoft-Exchange-Diagnostics: 1; AM5PR0701MB2882; 31:AXxhDi0RVl7bxCZwL+xZgAGLzj6LWuTdrDn8HMY+BLrYNrX6jxmztBvyTDGb3qJTswoGKyVKzhGCDPwV/Ex6cu+QcNQxFHFYysS4TQjozoJO2/x6iH2Ezz7NP16vw4zKw7LhF224hdew7+4WS0H6eI3ej22kpCN++sNaPvQoDCeIgOBgo3ysZw64++2KHKA21RMDAXZpd5chUgeo4tfpv0zcz3D4yAHN0D6QvwC4icc=; 20:c9dh8U/x180/VrJ/AUjx6EgMMnKTqE7Oet0TM+3m2Hln12sfM14qnZ6Q6m1++tzTN7x7skphp+ZYi6eDHwtrWKistVa24CuypOdFQXgvwVdhXYAKpNz/YsrtauwKVELZN5FTnuEnXMnFnxJxRPFvcXO9zzcf7mQBu2yfWe1EXRfXtKOpFjRtUemsQyju0RkgYYFgp3FKf4A+xQeFooWZSI1zPb2Tf7yjJwFaWW7dA7ChhISvaP7yTGccKsOCVi4Rb4ckY1mbT2r8ghT781VCW9s3k4ofna+WyZR8SWdkBBeGiystqCWEqppCNxRIvQygHpd64nUmTwTIcMxlOwWSf6SaFwAMJaUPgoFPUsa6uyps/hdGzkYjE2ERG4XxWEjhpKvoZz7LJd2HyeXlVc2Fw1zMXY+wxGeT+enZtttsOMWWNiexhZWN021/k191BSAxNvr3zwzaLFPXG723+tPSBbLqCKHVxiz6Bk5HcaE5fYPxFAZ4ovV24LaZ3FLle+xS/gEnxu2oMfkW1nH+668/IYxGDpBc5UDkVgX6K33T4sL+x2ZVEc4umCbwrS9RRIKdw7cm6Adf4A71OBNUf/5nwEoD/YkhhRD4NUZtpzpWm0A= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(82608151540597); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(8121501046)(5005006)(93006095)(93004095)(3231101)(11241501184)(806099)(944501161)(10201501046)(3002001)(6055026)(6041288)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123562045)(6072148)(201708071742011); SRVR:AM5PR0701MB2882; BCL:0; PCL:0; RULEID:; SRVR:AM5PR0701MB2882; X-Microsoft-Exchange-Diagnostics: 1; AM5PR0701MB2882; 4:l1blYSyTLsWyB6nMRW1lic/j0iPT1vP1H30EkIc6efbGdReDjhnVHjviHsrs8n+x3PfDbSggsi+MvkBFLrkoeNvCwpxRDyWsstrkVqThCxdbk60hWdSdmyPOzrLBw6C4+i29+ztkT3ELBLCP1Kbn8eDCNn2KDENioYwTOTgay/HWf9hbJB2icyUlI4PebOea9PsZJi4oCQDRpgwh9G9cB+3SpPFJYZxRa871Om+Ge1Y7BIX0UwkI+qZ/AN616VKQjPZ0eIo94DZoZqtAC45b8u/hlrnYUWMxk9BkiZcbfVpDVGe4IYOh5+lEg6xohbsI X-Forefront-PRVS: 0567A15835 X-Microsoft-Exchange-Diagnostics: 1; AM5PR0701MB2882; 23:Nm6LYFPwv0fnEzrBgim0SLj5XNyFstvgZ+BuGBK65/cgC+yqsRfY0UQ3cvaaijwHcOrx+Eig9kb298jauEkineeKOkjHRQsXUpgUUgTFyxwxrWc964bdOti+Xi99pnZtW3IVRciHLF8EwwixZu2n+7e64kdu+RXNcp50sRLYxfQW5BHXeMuCyH1zBB5t52fPc8Y1hatSqjTmP78mhoX35DLs0WyClurQ7mFETSZdDdBRTsBbDzYrfpiR3k7ae+0dVBIzUgnaCspx1Za1xHiM2VJPSD7dOyC57eY6PioP3QNm2JjY4tc4JSLkka6BQhJRK8JaRtnQJqjM4AdIHC2ym9is7fvIwlei1VpbIpGU+BK2cmJkExOr7C7UIuQLU5hXxSYSqB7ryAwEvKhclGGswqrz7qvcgtzcFgSN2nKmMAYiRPfO5rm1glp+egHbRF7udsWGCAIftyWsext9WFL6y5S3m61B5L/dHcYSG044PKUAWz/10x+rLHyXwIlzuuK8igUbdrKA2d5E7d8aOxKG6b3F/O0VTX6qqkphGLySHl2Jcfg4sPbgzOVdfQqW6YssFNPzR1AyWsNtGb4W9QRaZrPFV51fyfT+7erSkOuKLpwGa1WmevRSMPWV+0bjpplJALazD3TL9H0LWcRjwb886BiCa6j3RhShGaGZE/VSnmP+MyxufWAs3JP+5pMaHq0zkVBPB5ej7NKYcNdsW/l7ae5T+fMhLdixS7GM4yjZ5xZxshEbF0loUzIz9JNEJDVwdOu+VK2gXdgkQD0GVirG7QJ+c2TOhnwJEItVzCxKQ9O3+ZyiK/xnC7NGKS3mux4/ljNdKIDo58rUdN6YVzRs1hb8gkl80u8lQg/+AcNaMmfTMKkjoHS1KT3yYh8oimd98CEwhzV6Meom8tGKNwkNK3j2dt8ej77DTwzX4U2Z4TYKAz7fTGRfvIPhkPWRkw9XmLQmZJoe6AfeYv/x8yo07gAd89jZIh87zjiQL3zQaKFJus8wRqjMBLgUB+4HBFcqHQKrA7J9Vg/cS+3lHjYncaoFTmnhpV6x+NKf9r5yXEGc6qFRvCZGJm3UbVdt5Omnb1/0kSo7HK7UDaXtcFXOFizU+ItOYSX9GSNy/4IF/v+jEYQzyY+mjO1/N1ONyAFP X-Microsoft-Antispam-Message-Info: UrymxnV9C5U00aMvlYxR5Ze0bMDs6vkbQlzNk8zcYRv+HL0rov1fbzjcmc10RSumSmuLB2tYvGT3bAIu7ock+Bd1obXRMPsXjWnv68T9IoqoIWfaHLUYBQuP1gbq9LE3 X-Microsoft-Exchange-Diagnostics: 1; AM5PR0701MB2882; 6:RfrZSrfIupZ/ZjM2DcSWUb7O0YvqNwTIZDyH9NAvFjeNHpmzhHezJ9HfgDc0Ao+WNkGlXBbZOXwXj7S9QnwR31pyJaTsDVT4ft3aByvRARx9OQUdiBxgpDOCFSPVyz7Df2Jnz8O7eR0b9h8pafxdEatnKWXjqFBjL06qVp+LnUKA9nbvuLcoYNPbEF6jyPCi8AizvABCSSfz3YTUnk5TKa96DWfwEFKUMq7iE8D0nfj+/LiIhmiPu5kVPfn82kgQAcF5FkdHcAupLW6HDWK0Ed40R4L7w/dXG9yRVs642mh1xHo86ard2fTqcarlxZ8aFSarWZXRtWytJvDwz2hK4mSRn+u0x4yIhWNr2rhxMxENlYYK0zBclPizaBU12e786gCmZO1g9vQzacnnZBcpgw==; 5:rKDfF/oc7+lfkhz9w+jiVdZEvvkSyEAyjlMRdGrjtTQAuBtThUPwDteWVpTaMGYmYRtcdqQVSoRO3HM7CylYh3NgxFQcBBgHK9UZiHToWXVXmFSRc09E+ql366zjkvEYbeKrz6DeeShGFDWSVmVEMYbuKX70X9eZzM+js4LSe7Y=; 24:GoW1OvVY/3hdLpb0iLR1jvwXBedm2yXTLAKD2B2XGfG1V2BU8k1wIX/gZGu8fv1qqp6Mg1EXweU3o2ayT358cpJMISIF4H2c0FY/WVSJuNA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; AM5PR0701MB2882; 7:azAbNJWvJvVGe/hA14X7nWtRDR4R5TwTQhwy0CV5/0xAmnKrwyjFqbPm93uHCF6Teh+4xGFiZtVvtfKSjhOPLjYdd9tQ5T6xpXVLe0KrSvJIMb8mzrnAM+Oylg/+VktK0pv81u7UGVNT/SZHTixmlkO7ugCVQZZeih4umGH/xnJ7sRiDsYjtB+dID3L37tbiOSSS/apXX99wK9mvu3Ek213XezECja5hdunVVOUw8gjVvceQ7HQWpTUW235KfpS/ X-OriginatorOrg: nokia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jan 2018 12:41:27.9264 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f7f6082e-09fb-47b8-6ed9-08d567159dbc X-MS-Exchange-CrossTenant-Id: 5d471751-9675-428d-917b-70f44f9630b0 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5d471751-9675-428d-917b-70f44f9630b0; Ip=[131.228.2.241]; Helo=[mailrelay.int.nokia.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0701MB2882 Sender: linux-i2c-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-i2c@vger.kernel.org If the user is sure that the reserved 0x77 - 0x7f range is not needed by its devices, then he can pass the "-a" option for allowing so called "risky addresses". It is then possible to access devices in this address range. It also allows addresses < 0x03. Signed-off-by: Romain Porte --- tools/i2cbusses.c | 14 +++++++++++--- tools/i2cbusses.h | 2 +- tools/i2cdump.c | 5 +++-- tools/i2cget.c | 5 +++-- tools/i2cset.c | 5 +++-- tools/i2ctransfer.c | 5 +++-- 6 files changed, 24 insertions(+), 12 deletions(-) diff --git a/tools/i2cbusses.c b/tools/i2cbusses.c index 41f5b6b..bdc4791 100644 --- a/tools/i2cbusses.c +++ b/tools/i2cbusses.c @@ -377,19 +377,27 @@ int lookup_i2c_bus(const char *i2cbus_arg) * Parse a CHIP-ADDRESS command line argument and return the corresponding * chip address, or a negative value if the address is invalid. */ -int parse_i2c_address(const char *address_arg) +int parse_i2c_address(const char *address_arg, int risky_addr) { long address; char *end; + long min_addr = 0x03; + long max_addr = 0x77; address = strtol(address_arg, &end, 0); if (*end || !*address_arg) { fprintf(stderr, "Error: Chip address is not a number!\n"); return -1; } - if (address < 0x03 || address > 0x77) { + + if (risky_addr) { + min_addr = 0x00; + max_addr = 0x7f; + } + + if (address < min_addr || address > max_addr) { fprintf(stderr, "Error: Chip address out of range " - "(0x03-0x77)!\n"); + "(0x%02lx-0x%02lx)!\n", min_addr, max_addr); return -2; } diff --git a/tools/i2cbusses.h b/tools/i2cbusses.h index 26143a5..81ff983 100644 --- a/tools/i2cbusses.h +++ b/tools/i2cbusses.h @@ -35,7 +35,7 @@ struct i2c_adap *gather_i2c_busses(void); void free_adapters(struct i2c_adap *adapters); int lookup_i2c_bus(const char *i2cbus_arg); -int parse_i2c_address(const char *address_arg); +int parse_i2c_address(const char *address_arg, int risky_addr); int open_i2c_dev(int i2cbus, char *filename, size_t size, int quiet); int set_slave_addr(int file, int address, int force); diff --git a/tools/i2cdump.c b/tools/i2cdump.c index a7bba72..be0d93f 100644 --- a/tools/i2cdump.c +++ b/tools/i2cdump.c @@ -119,7 +119,7 @@ int main(int argc, char *argv[]) int block[256], s_length = 0; int pec = 0, even = 0; int flags = 0; - int force = 0, yes = 0, version = 0; + int force = 0, yes = 0, version = 0, risky_addr = 0; const char *range = NULL; int first = 0x00, last = 0xff; @@ -130,6 +130,7 @@ int main(int argc, char *argv[]) case 'f': force = 1; break; case 'r': range = argv[1+(++flags)]; break; case 'y': yes = 1; break; + case 'a': risky_addr = 1; break; default: fprintf(stderr, "Error: Unsupported option " "\"%s\"!\n", argv[1+flags]); @@ -160,7 +161,7 @@ int main(int argc, char *argv[]) help(); exit(1); } - address = parse_i2c_address(argv[flags+2]); + address = parse_i2c_address(argv[flags+2], risky_addr); if (address < 0) { help(); exit(1); diff --git a/tools/i2cget.c b/tools/i2cget.c index 2503942..acc5236 100644 --- a/tools/i2cget.c +++ b/tools/i2cget.c @@ -158,7 +158,7 @@ int main(int argc, char *argv[]) char filename[20]; int pec = 0; int flags = 0; - int force = 0, yes = 0, version = 0; + int force = 0, yes = 0, version = 0, risky_addr = 0; /* handle (optional) flags first */ while (1+flags < argc && argv[1+flags][0] == '-') { @@ -166,6 +166,7 @@ int main(int argc, char *argv[]) case 'V': version = 1; break; case 'f': force = 1; break; case 'y': yes = 1; break; + case 'a': risky_addr = 1; break; default: fprintf(stderr, "Error: Unsupported option " "\"%s\"!\n", argv[1+flags]); @@ -187,7 +188,7 @@ int main(int argc, char *argv[]) if (i2cbus < 0) help(); - address = parse_i2c_address(argv[flags+2]); + address = parse_i2c_address(argv[flags+2], risky_addr); if (address < 0) help(); diff --git a/tools/i2cset.c b/tools/i2cset.c index 0ccc1a0..87c8cf3 100644 --- a/tools/i2cset.c +++ b/tools/i2cset.c @@ -163,7 +163,7 @@ int main(int argc, char *argv[]) char filename[20]; int pec = 0; int flags = 0; - int force = 0, yes = 0, version = 0, readback = 0; + int force = 0, yes = 0, version = 0, readback = 0, risky_addr = 0; unsigned char block[I2C_SMBUS_BLOCK_MAX]; int len; @@ -179,6 +179,7 @@ int main(int argc, char *argv[]) flags++; break; case 'r': readback = 1; break; + case 'a': risky_addr = 1; break; default: fprintf(stderr, "Error: Unsupported option " "\"%s\"!\n", argv[1+flags]); @@ -200,7 +201,7 @@ int main(int argc, char *argv[]) if (i2cbus < 0) help(); - address = parse_i2c_address(argv[flags+2]); + address = parse_i2c_address(argv[flags+2], risky_addr); if (address < 0) help(); diff --git a/tools/i2ctransfer.c b/tools/i2ctransfer.c index 38b6b4a..e6e9f0a 100644 --- a/tools/i2ctransfer.c +++ b/tools/i2ctransfer.c @@ -124,7 +124,7 @@ int main(int argc, char *argv[]) { char filename[20]; int i2cbus, address = -1, file, arg_idx = 1, nmsgs = 0, nmsgs_sent, i; - int force = 0, yes = 0, version = 0, verbose = 0; + int force = 0, yes = 0, version = 0, verbose = 0, risky_addr = 0; struct i2c_msg msgs[I2C_RDRW_IOCTL_MAX_MSGS]; enum parse_state state = PARSE_GET_DESC; unsigned buf_idx = 0; @@ -139,6 +139,7 @@ int main(int argc, char *argv[]) case 'v': verbose = 1; break; case 'f': force = 1; break; case 'y': yes = 1; break; + case 'a': risky_addr = 1; break; default: fprintf(stderr, "Error: Unsupported option \"%s\"!\n", argv[arg_idx]); @@ -210,7 +211,7 @@ int main(int argc, char *argv[]) */ if (!force) { - address = parse_i2c_address(arg_ptr); + address = parse_i2c_address(arg_ptr, risky_addr); if (address < 0) goto err_out_with_arg;