From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751457AbeA2EMC (ORCPT ); Sun, 28 Jan 2018 23:12:02 -0500 Received: from mail-by2nam03on0084.outbound.protection.outlook.com ([104.47.42.84]:7936 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750808AbeA2EL7 (ORCPT ); Sun, 28 Jan 2018 23:11:59 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=andrew.cooks@opengear.com; Subject: Re: [PATCH] gpio-pca953x: fall back to byte-at-a-time for 24-bit io To: Andy Shevchenko Cc: Linus Walleij , "open list:GPIO SUBSYSTEM" , open list , platypus-sw@opengear.com, Jean Delvare , linux-i2c@vger.kernel.org References: <1512440242-8983-1-git-send-email-andrew.cooks@opengear.com> From: Andrew Cooks Message-ID: <0f82783e-3f78-34dd-4f80-8e21328f9c91@opengear.com> Date: Mon, 29 Jan 2018 14:11:35 +1000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [59.167.150.161] X-ClientProxiedBy: SYXPR01CA0114.ausprd01.prod.outlook.com (10.171.33.151) To BLUPR15MB0017.namprd15.prod.outlook.com (10.161.124.156) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 95fd4249-ca27-46c1-8a84-08d566ce6dea X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(5600026)(4604075)(2017052603307)(7153060)(7193020);SRVR:BLUPR15MB0017; X-Microsoft-Exchange-Diagnostics: 1;BLUPR15MB0017;3:LopYjqw/3bG+AxunQglGMmy+8V0F6EfNkqN6c8GObDH3TsArg/OcpS60lJA1yvFwTi9SObIrFsayQ8eHQFBPdZObPqsubbZol6lvvfL7Gkdp9k6tj44wlQnADcCcynV2VprBsQMPinM4tlBCE2GK6WygogvncQ3C+ON+SlBpbyKnXOEbl4HwHRb80hSo7SDb0fMSsFyBGiGaBQkqk+Enx5O4OL+ab9d2aAjWk4XJEi1Ysa3KX4DIkTD/+V34U9lz;25:rF/bFAf9tBc991JwSkrdIsuPZhE863fzoSHcKQzvYDvw4w8T+UFAoOSmEfwfKVkPb5UB2LelTD5Ti9hBKUSt9FrO2JMXvJnkRqY9qTO+75Lw1yRiLcH9vWCQuOsRA0eo+n3POKpGKcoJj+mQvI+T0bXJSsnGpr1QZw7B4RtFu6Dc2XABTiNKxhT4/xTTpk8Mvo/O0abFdiLPWnenmIlD5j4Z52mpW//+ixxT0azn4MnLb6Y8p12sh88NARci+OkPMWPxyBjYhWfVx9dxbJ1D2z1/BbDT7wWXV58wdULVgPokSc5RH5zUqDrZSmfYQkA4q0qbP+Ya/O+L00CjbkZBRA==;31:9LROOUcW/g/dw7xEGH+H+idv/waEdPj7Bn/RKSdL1jFji6mGwKUpTSy42M1QuLie1wdB1U4xDlJdtYtyMkhgPTYxZ+NSC3z96vFpJKSj/ClJpht7yFVhpqaEbq9TMGq7DV6LM7tcbWqYzKpGKNPRCXppC4JRyRTF74ApYs54jJvsyAap0wy5JP/WUMocaP6CbS+kl3wv69yP3Fnf8281+k/fIX28HjTBkSP7/KYyb5w= X-MS-TrafficTypeDiagnostic: BLUPR15MB0017: X-Microsoft-Exchange-Diagnostics: 1;BLUPR15MB0017;20:OK+tp/yHTtlsFU5JeYyXmDEdJdKAv23OpbPv2np+NRBTHTBZYIaX2o2NhL80Z3u0pX8tBf4TvYJnhntFT/NeCQfpf4d/A+oNL7cz1CJJwVxu175wdIpTrW9/HIYv+ESryFnA5RwiYkeGthVldCzVbwj1pdgiH2UtlpE/ikaRJuA=;4:cLPLNrcu2xFEsRDzKOryTtmlftqrBCNniHZqdWjY0+FzrEAx8VfelZ7Cf9e61D/uLThnT4bAabGgyciVtFGo3X3jF3r0a/0Uw4xIWCyNJg6GlPitXaZZy2+kHMoHhDoSSv2//Q2LL25pAVpc0hzm+vWC3BXHtn9fnICTS3nn1vfo4+91MAKtWhHEUBhZVAVYtYHCdXxBlYnm/eCPG5q6hk/YMiU3U17lPkyHgwO4xkwq/IkL+hOSUsPzY19p/7flY66EJinCVoBD+tGERoZ2SA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040501)(2401047)(8121501046)(5005006)(93006095)(93001095)(3231101)(944501161)(3002001)(10201501046)(6041288)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123558120)(20161123562045)(6072148)(201708071742011);SRVR:BLUPR15MB0017;BCL:0;PCL:0;RULEID:;SRVR:BLUPR15MB0017; X-Forefront-PRVS: 0567A15835 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6049001)(39380400002)(396003)(376002)(346002)(39830400003)(366004)(199004)(189003)(106356001)(47776003)(2906002)(105586002)(53936002)(16526019)(86362001)(66066001)(31686004)(77096007)(83506002)(8936002)(65956001)(6116002)(7736002)(65806001)(68736007)(39060400002)(50466002)(31696002)(64126003)(6246003)(25786009)(117156002)(305945005)(3846002)(8676002)(36756003)(81166006)(81156014)(478600001)(2486003)(230700001)(229853002)(90366009)(54906003)(4326008)(6486002)(5660300001)(6916009)(76176011)(65826007)(2950100002)(316002)(16576012)(6666003)(52116002)(97736004)(58126008)(386003)(52146003)(23676004)(26005)(53546011);DIR:OUT;SFP:1101;SCL:1;SRVR:BLUPR15MB0017;H:[192.168.254.67];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTFVQUjE1TUIwMDE3OzIzOkRQbFN6WlllUWJyY3N5a0FoNUsxV1BDUjZ3?= =?utf-8?B?d1pMREpnS3dzL2VPVVJHRlN6REJPbU9CUkU2TGc4Mi90dURnMk11UlFHa0JD?= =?utf-8?B?R2FYYStXNm0zTXRtTEdENG5jYkxOR0VNOWVQaXU1N3RjdUxjejJnbmxNdU96?= =?utf-8?B?RlZrRlYrSGhLeW4xM2pOUmJDSmJMRXRRZ2JBTTkwdThCSU0zaDFxSk9LMG1W?= =?utf-8?B?R1Era0tHbVN1K1lhbG5jTDJ5Z3A3WE1KZXYwVWYwb1Y1S0RqSWdLRlo4UWYy?= =?utf-8?B?TE1RYUEvd0ZFRDBGeHBZQ29DQ0VBb0VXRXZ4STFlc1Q5THFETWpWUzBYM21Q?= =?utf-8?B?Y3pOcmlTS1crTWR1cGNKYldlTFlNR3pmN1JqNWNZalpGc3NXNkFDYlZuWTNx?= =?utf-8?B?R2tNQXZNVTRndzEweHdWanZ2eXgwaTduWG5NdzNnNnoxbXYzdG55YVBTMzRT?= =?utf-8?B?SHlUZWF2MUJBOGJEK2VmRWhBUFhyOUlqYS94MWtDY1Jsa2xiaFRRQ2w5WlFv?= =?utf-8?B?NHBNQkVuWmM1cVRwaUp2RWpVQUN5UmloRmtrMlVIdUtSeVowSEcxbWFzTTE1?= =?utf-8?B?L1NYUTFaWWRUU1NQVkJjcTNzMnoyL0dJUmpXZmNmb0l4d09LVjFLaVM1Z3Qv?= =?utf-8?B?Sm9PckpMQml6S0lqczI1RXd1ekNONnpLdlEybmJ5R1V1bjUvSU1GTVpZOTFp?= =?utf-8?B?MldzeWRwZ0RCYm9iOVNnRlBWWjJRcklRSUZmdkxPaVRjWWUwNTkxRGthQlZK?= =?utf-8?B?RXhwZ1NqQWs0SXBYT0M1S0Q0QkszbHdEaFhZOThIL1V3L1B5NHAvekp4Q2VM?= =?utf-8?B?MTJ3ZjlTTUozMVhiUDBKUktTTk54NmsraTVqZ1pyZFp6ekx4YXA2WFVDcnkz?= =?utf-8?B?N1pSbWJaaHBibFNrSC9jdWxqU1U5ZVlVVFQ5R3FsMFZnSTRwRDV3bm1peXln?= =?utf-8?B?Nm56czRWakt2Tm5ML0hseHRSVHlLQkFkd2dRa0s1cjlQSVlLUytEZ0dsOC9w?= =?utf-8?B?dG1DMlplUVFuMEo1aGhFRkFxWTUvbG41WHdteWdla2UvWXFMYk44Wi9RSm0r?= =?utf-8?B?ekpOQk5IRVExSnhaemNFTGNaTnB2WFNlNGlUaG0zd2pOeWNrSGhyc3JXM1N6?= =?utf-8?B?SGJaNlBrV0sveEhJTXN1V0prN3lIY0MyQlJvbmJyLzJhSEJyblFWUVJnNEkz?= =?utf-8?B?Uy80MUpZcGUvMXhQNXJXYkk2RTg0d1lvbE5GZlFFU3VXN3NNYU4vOXRFSFJW?= =?utf-8?B?MzIwaTgzK1Jja0tKYUxJR0t5TjBWL2ZkaGFWUUorc2E1c0FTV3ljc0lDVWQr?= =?utf-8?B?TkZ5dGVNdWM5dURuQVArUk5aak1naHREZTdCU1BMZEtpWGhFWTFzazFPV0Rm?= =?utf-8?B?eW5LdDJ2eXpacUo5YTJIVXJacW9RZ0x4cG1WcmJad0tjR3hxMlA1OExOMGlr?= =?utf-8?B?SnYwbWJyRUs3QityNVkwVnNnWHB1MXd5SWtyK1VsSzdtUG1FMm9FVWdVek16?= =?utf-8?B?anRkREk2Rk42MVZreGZlY3lmdU5XaGVEZmhYQVVEelIxSkxibTlPSGZDbjFu?= =?utf-8?B?YkpvdTg2UFROUVgvS0pJbktkYVQ4ZUhHQW8rMU5TNUxnWEdncElTdG1ScFJI?= =?utf-8?B?Y0NncWs1SUtLWjR5Z2ZIWUdjUXZJV1BHeEh0ZGhKQzBPTFpGdTNvSkFJbmhv?= =?utf-8?B?ajQwNjZiQlU3K0QvZE5UOEVlUUhsQUt4QURBbkF1N0M4T01peStTbTR3MkJu?= =?utf-8?B?VlMya29Wcnl1K0FZWllCWVNDb2lMR3h0MVhGVzhjN2d0M2NOZExEYm85SFdC?= =?utf-8?B?czdjWHBvbk5xL0Y0Wlpjd2h1cEpwVWVWUDJuaG0xeUxqUjZjdWFBUE00NERE?= =?utf-8?B?M0NrenV2aHB1SUNYUzRzdCtkTFN2aTBlNW9URGtHM2s0aHI2MGFKYmkwSzJY?= =?utf-8?B?V2V1bHJNVGVBPT0=?= X-Microsoft-Exchange-Diagnostics: 1;BLUPR15MB0017;6:Pwe3dwXkSANb2ogOXHssVrycydedOR2q9M8LOzebN/Nc+OMwpQzeBF+l1ITGCTTma7JqOOK4a8TNOespUBH3nnVq1pO6ZkUXlVsYHdstA/bifKdxnf7YaUSUbW8aDi7QAERIFGyi3/EU3XqBoCOhVyfpYRx+vHYXtaiIO3EIwSCL7EgBjDseggFT4OvMB6m7LIgcxKSMuEkNYobvuA+fl0NSRMGChvgAszbgYUdivSp9hfDI4FrK/oRXmVDbE37zT0LNlZgzWLGuVw7WINpgD2Lh+ZiRP42pC02eQBa98FEOrzVC4u4AMwdykfz+JKeg/IXL0jz1kUELo75UpPV6JkPybSPfWoIm1yaPoLbX9oI=;5:bJgX1Rg9hvfOPsEedIp6bYobsUzwz75mRFWb9dtmwCJCj24Y7fFyc/YrVR9L+UFtPVwwgzjI2EgCS9PCZ+0ne+v80ifrB/Y+BCPOV/A2ORyskPOdq/L44FLUYO/6/uCTbgwlDxX8hK+MZDaJNCWJFaHz5TGZ7/oP6IUW+hTmQiU=;24:5zDXtgMcksPTTKAf1XOZR168jMQdwhJzUHbA14mwc9Ous6SEwfrDba9mcO2ycM+zQzhUqKGgQqphBHMRmiq2VKtIjIIA4C1XlpEeyvFSAHg=;7:IyS25Tg8+N9QtMZ2vW4nRaHdeDLDSQZ7ZeAcNN2Ay6B4GsXlJzrm8jlvMafUjutNC1xMS3O8w6cZt2b0PTIQrR7aDJNArhtwvMArnOVP2/hRTF2/xmMEj0/FMsyLE7NBT8md54XvZgK66wWZDzlnZGq6bUuNbKkVBSAqNB89yxwtdnD7EDok1yhehw6ewlLkMJejkW8GfWBw4ufOC/MiAqyX/tErTbSOfYEFvhEHuak2cvaVgnkvWmAKOytyFb0f SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: opengear.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jan 2018 04:11:51.0082 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 95fd4249-ca27-46c1-8a84-08d566ce6dea X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a6251c26-d21f-4164-a225-1f4eaebf5f9a X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR15MB0017 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Andy On 29/12/17 19:44, Andy Shevchenko wrote: > On Tue, Dec 5, 2017 at 4:17 AM, Andrew Cooks wrote: >> Using TCA6424A with i2c-piix4 bus driver requires byte-at-a-time IO, >> because the i2c-piix4 driver (and probably some SMBus controllers) don't >> support I2C_SMBUS_I2C_BLOCK_DATA. > > Why not to fix piix4 for now? The piix4 driver applies to so many chips and has been around for such a long time, that I don't know if this kind of change is safe to make. Do you think it's safe to assume that all the implementations that use this driver can handle the 3byte block writes? I've added Jean to the CC list to get the piix4 maintainer's perspective. > >> static int pca953x_write_regs_24(struct pca953x_chip *chip, int reg, u8 *val) >> { >> + int ret, i; >> int bank_shift = fls((chip->gpio_chip.ngpio - 1) / BANK_SZ); >> >> - return i2c_smbus_write_i2c_block_data(chip->client, >> + if (i2c_check_functionality(chip->client->adapter, >> + I2C_FUNC_SMBUS_WRITE_I2C_BLOCK)) { >> + return i2c_smbus_write_i2c_block_data(chip->client, >> (reg << bank_shift) | REG_ADDR_AI, >> NBANK(chip), val); > >> + } else { > > Redundant and makes useless indentation level below. Thanks, will fix this. > >> + for (i = 0; i < NBANK(chip); i++) { >> + ret = i2c_smbus_write_byte_data(chip->client, >> + (reg << 1) + i, val[i]); >> + if (ret < 0) >> + return ret; >> + } >> + return ret; >> + } >> } >> >> static int pca953x_write_regs(struct pca953x_chip *chip, int reg, u8 *val) >> @@ -249,7 +261,7 @@ static int pca953x_read_regs_24(struct pca953x_chip *chip, int reg, u8 *val) >> { >> int bank_shift = fls((chip->gpio_chip.ngpio - 1) / BANK_SZ); >> >> - return i2c_smbus_read_i2c_block_data(chip->client, >> + return i2c_smbus_read_i2c_block_data_or_emulated(chip->client, >> (reg << bank_shift) | REG_ADDR_AI, >> NBANK(chip), val); > > Don't we have a counter part for writing? > > Perhaps, it might be another option. > Again, I don't know if it's safe to assume that the i2c controllers can do this and would appreciate comments. Thanks for your review! a.