From patchwork Sat Nov 16 00:01:08 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Taras Kondratiuk X-Patchwork-Id: 291726 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 775D52C00CB for ; Sat, 16 Nov 2013 11:01:54 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753709Ab3KPABo (ORCPT ); Fri, 15 Nov 2013 19:01:44 -0500 Received: from mail-ea0-f175.google.com ([209.85.215.175]:37692 "EHLO mail-ea0-f175.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753585Ab3KPABj (ORCPT ); Fri, 15 Nov 2013 19:01:39 -0500 Received: by mail-ea0-f175.google.com with SMTP id z16so1281985ead.20 for ; Fri, 15 Nov 2013 16:01:38 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=0Mvmabx45xAD7i+KupBfpz5M8KJiUU7MbimVoimjSEw=; b=en9yFznYRi+E7lj8Iz31dJm89pKH8izKr9l7HXJFw+NEKDQBuBriDQu2nvzL6y0a9h g9b4mbdsmzy66lI9qhNEbHglcHoqVV2xQ+DjmbZ9kvvtaYdr4/RO2SEe6DXGg3VExwYW h2B+0E6fdwAYTIIQZ0uORLHD/yj6fhi0fLCU4BHlAg72IOK5L7rdH5ccGmVd4br3Iqps ZleNQhy/2zfc35m4JAXM9WyAjPI1FFqroYuOBcGLS180FCyPb+hBPQeJNfoNWS95hs9+ z6XQUBjpzy7e6ECeMxZAajP4CoqEjm/UOcI43dUU4lyVJrDQgpEPAfN3H8kcZmJ7hVQb apqg== X-Gm-Message-State: ALoCoQlo68vhSxUV7WeMHhkbXtvih/QkgVDqE0k3jJKfxg/AbAmcMN71GYebtAZSmsqPnxgNb5U0 X-Received: by 10.15.91.12 with SMTP id r12mr1695612eez.87.1384560097967; Fri, 15 Nov 2013 16:01:37 -0800 (PST) Received: from localhost.localdomain (5-1-15-192-dynamic.retail.datagroup.ua. [5.1.15.192]) by mx.google.com with ESMTPSA id b42sm11078875eem.9.2013.11.15.16.01.37 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Fri, 15 Nov 2013 16:01:37 -0800 (PST) From: Taras Kondratiuk To: linux-omap@vger.kernel.org Cc: linaro-networking@linaro.org, Victor Kamensky , Tony Lindgren , Wolfram Sang , linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [RFC 05/23] i2c: omap: raw read and write endian fix Date: Sat, 16 Nov 2013 02:01:08 +0200 Message-Id: <1384560086-11994-6-git-send-email-taras.kondratiuk@linaro.org> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1384560086-11994-1-git-send-email-taras.kondratiuk@linaro.org> References: <1384560086-11994-1-git-send-email-taras.kondratiuk@linaro.org> Sender: linux-i2c-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-i2c@vger.kernel.org From: Victor Kamensky All OMAP IP blocks expect LE data, but CPU may operate in BE mode. Need to use endian neutral functions to read/write h/w registers. I.e instead of __raw_read[lw] and __raw_write[lw] functions code need to use read[lw]_relaxed and write[lw]_relaxed functions. If the first simply reads/writes register, the second will byteswap it if host operates in BE mode. Changes are trivial sed like replacement of __raw_xxx functions with xxx_relaxed variant. Signed-off-by: Victor Kamensky Signed-off-by: Taras Kondratiuk --- drivers/i2c/busses/i2c-omap.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c index 9967a6f..d69826e 100644 --- a/drivers/i2c/busses/i2c-omap.c +++ b/drivers/i2c/busses/i2c-omap.c @@ -266,13 +266,13 @@ static const u8 reg_map_ip_v2[] = { static inline void omap_i2c_write_reg(struct omap_i2c_dev *i2c_dev, int reg, u16 val) { - __raw_writew(val, i2c_dev->base + + writew_relaxed(val, i2c_dev->base + (i2c_dev->regs[reg] << i2c_dev->reg_shift)); } static inline u16 omap_i2c_read_reg(struct omap_i2c_dev *i2c_dev, int reg) { - return __raw_readw(i2c_dev->base + + return readw_relaxed(i2c_dev->base + (i2c_dev->regs[reg] << i2c_dev->reg_shift)); } @@ -1142,7 +1142,7 @@ omap_i2c_probe(struct platform_device *pdev) * Also since the omap_i2c_read_reg uses reg_map_ip_* a * raw_readw is done. */ - rev = __raw_readw(dev->base + 0x04); + rev = readw_relaxed(dev->base + 0x04); dev->scheme = OMAP_I2C_SCHEME(rev); switch (dev->scheme) {