From patchwork Tue Sep 1 21:10:46 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 1355394 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=ajfxj2cM; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4Bh0Cq4kvyz9sTm for ; Wed, 2 Sep 2020 07:13:11 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728411AbgIAVLa (ORCPT ); Tue, 1 Sep 2020 17:11:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50534 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728071AbgIAVL1 (ORCPT ); Tue, 1 Sep 2020 17:11:27 -0400 Received: from mail-lf1-x142.google.com (mail-lf1-x142.google.com [IPv6:2a00:1450:4864:20::142]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A2D32C061245; Tue, 1 Sep 2020 14:11:26 -0700 (PDT) Received: by mail-lf1-x142.google.com with SMTP id z17so1579804lfi.12; Tue, 01 Sep 2020 14:11:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=o54z0KyncSkTIRCR00YgxkSeoepil1oHLoUd4CNcJV8=; b=ajfxj2cMmDaByiJ0CMSkH/zTefpoGuyh6MVVkqRMaH4iVjRyETx2FikF5O7mZy6c1f 4V3i2jE8e82hwXODQMJlwkn2XsoQ83ka2Wq/LDmevKQb4RrOzvJS+cRWUtL0KeFnC/+X VMeSmLTEwChkerB1RtwcwxBgZi0/UtUy86Npkwe3/ZOOju+6Kafy4imDIDWRiNhtjdvl wtdbGh1RXSoHErVztbU3rG8J2Yc13VVdkPjFNMskvaDQ6UAC4WGnQq1ecsbGHqar3WGp xXv4PCru/Kdy6eamzfKhAZtUNZfgJhHAdOY5dho0Hux+9rODQjw8lrKE+pEhsD375EkG sjng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=o54z0KyncSkTIRCR00YgxkSeoepil1oHLoUd4CNcJV8=; b=MA56jpFVNdGqZ2iN6NcwyJWMlq5LA4WZdACx2yqhUOVCGZq0ZB0BWavtWGW88TIQ8c kGvMlsPWjGQ9ECe/mweGMfIMf41eIwLAn38ghtnSEVxBYXeTUfKLT5F7BH8Qg36rjuLA /Ah4FF+M72JSNXCxl2NEwzdXw02+mnKehvZ0WG7Kq6wY8oFxvdmes/4gkMYEQdUSR7xz Sgc4ap/hIJe5aTKG+q0eZpT4hrNTinybfNPp+nz07I3bTMZwnBO7K+FVnmFkGCZrQhn6 AIUoViBb1gwhpsXsb7xq4O1Zg2tk0acdpgbm6SJRVfT0SGGTW86BAe0LsvZPWfHP9Spe d5Fw== X-Gm-Message-State: AOAM533izA3mM99Nc0lzgZgM52c7t3QCbG2QZYG9r1UNHtWh4MlQqTF/ MubTDI+pctdanE6Q2cscfg8= X-Google-Smtp-Source: ABdhPJxOG9uDCeA0STJGGmNQ1ApSBS3SWqIJR52OdEaETxFJKg73yMn9/ZNsGA8cZQFUPJfa1z3DOw== X-Received: by 2002:ac2:5599:: with SMTP id v25mr1592391lfg.129.1598994684550; Tue, 01 Sep 2020 14:11:24 -0700 (PDT) Received: from localhost.localdomain (109-252-170-211.dynamic.spd-mgts.ru. [109.252.170.211]) by smtp.gmail.com with ESMTPSA id g19sm502656ljk.125.2020.09.01.14.11.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2020 14:11:24 -0700 (PDT) From: Dmitry Osipenko To: Thierry Reding , Jonathan Hunter , Laxman Dewangan , Wolfram Sang Cc: linux-i2c@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 01/17] i2c: tegra: Make tegra_i2c_flush_fifos() usable in atomic transfer Date: Wed, 2 Sep 2020 00:10:46 +0300 Message-Id: <20200901211102.11072-2-digetx@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200901211102.11072-1-digetx@gmail.com> References: <20200901211102.11072-1-digetx@gmail.com> MIME-Version: 1.0 Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org The tegra_i2c_flush_fifos() shouldn't sleep in atomic transfer and jiffies are not updating if interrupts are disabled. Hence let's use proper delay functions and use ktime API in order not to hang atomic transfer. Note that this patch doesn't fix any known problem because normally FIFO is flushed at the time of starting a new transfer. Signed-off-by: Dmitry Osipenko --- drivers/i2c/busses/i2c-tegra.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c index 00d3e4d7a01e..aab58395fb71 100644 --- a/drivers/i2c/busses/i2c-tegra.c +++ b/drivers/i2c/busses/i2c-tegra.c @@ -470,7 +470,8 @@ static int tegra_i2c_init_dma(struct tegra_i2c_dev *i2c_dev) static int tegra_i2c_flush_fifos(struct tegra_i2c_dev *i2c_dev) { - unsigned long timeout = jiffies + HZ; + ktime_t ktime = ktime_get(); + ktime_t ktimeout = ktime_add_ms(ktime, 1000); unsigned int offset; u32 mask, val; @@ -489,13 +490,22 @@ static int tegra_i2c_flush_fifos(struct tegra_i2c_dev *i2c_dev) i2c_writel(i2c_dev, val, offset); while (i2c_readl(i2c_dev, offset) & mask) { - if (time_after(jiffies, timeout)) { - dev_warn(i2c_dev->dev, "timeout waiting for fifo flush\n"); - return -ETIMEDOUT; - } - usleep_range(1000, 2000); + if (ktime_after(ktime, ktimeout)) + goto err_timeout; + + if (i2c_dev->is_curr_atomic_xfer) + mdelay(1); + else + fsleep(1000); + + ktime = ktime_get(); } return 0; + +err_timeout: + dev_err(i2c_dev->dev, "fifo flush timed out\n"); + + return -ETIMEDOUT; } static int tegra_i2c_empty_rx_fifo(struct tegra_i2c_dev *i2c_dev) From patchwork Tue Sep 1 21:10:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 1355393 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=lFlkmSD7; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4Bh0Cq0x8Cz9sPB for ; Wed, 2 Sep 2020 07:13:11 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728799AbgIAVLb (ORCPT ); Tue, 1 Sep 2020 17:11:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50536 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728127AbgIAVL1 (ORCPT ); Tue, 1 Sep 2020 17:11:27 -0400 Received: from mail-lj1-x242.google.com (mail-lj1-x242.google.com [IPv6:2a00:1450:4864:20::242]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3BEA0C061246; Tue, 1 Sep 2020 14:11:27 -0700 (PDT) Received: by mail-lj1-x242.google.com with SMTP id a15so3304200ljk.2; Tue, 01 Sep 2020 14:11:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=FRnx45u7/i2kry58qh4geYUb8/TK/AjF/UDJOIFPEeg=; b=lFlkmSD7LTWLNj4Vxpv/0mu+bucA/Wpf/Sxdf7+dq4J3C9Z1iQ8x7q3Ee8VAb86NhE WwaqLOmjhrlAyzA+sXlFAfFQkMDIStd0oPaVCJeWajz8qF4VB3SKB8zsSqEV+QMDPvGQ lFYlgOR+R7LPBpeNTGvm3zyCajLD+R2Ycy2YUjtfdEQAeBOGzSvCeUcf5WfBdXYNf9Tv nYUAl6geeD6ITidW+p2w0txKwuLzHnuQqaUhgx1C70jqyCZxdA3DYHTFIwIggsSXYq+V MJ3lkhySKySIgC3CEgMyUBoDX0N3UIUgG1y/11ENmOgHck9vf943y7YEjR3xnTcj3bD4 9mEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=FRnx45u7/i2kry58qh4geYUb8/TK/AjF/UDJOIFPEeg=; b=Gvne01KUofItxe8J3KPZNQjz3h3bfwZtHVG/oehN3KjcKbKVdNYq3AlWR0dybpCUX+ /J31+tAr0jE0v4xOrdGOjq5HZgoRoCu8IJYmN0ntwD42aHxV1CZpwG5LycN2kZVuFrB3 GO++GNag/MhCCSpOwlMnxZU8LKjnAYkVGIORO4tudlQ/gEvmlCMGHqWkOuKQEsoWoKs2 oMKO3gx3JhUq5j7JVAdduq8upBO1JgOXhniljISn5oWjiofoLK+dX0sIuLIyDkReBprT SGC/wMxLgdIo5Gsxm6S1vvxq+w+COJDPKj1ep+sSuQy39I5Bg7wW7H/bSy8eWRfzcPhQ 6S3w== X-Gm-Message-State: AOAM531SbVj0oP0T7C5N/IzsGfMLrbPhTq6iggVQK2UFlqdj4M5/Ugxj RcsOgRize6BIvJ/JAXCBceUqXg2K/HI= X-Google-Smtp-Source: ABdhPJzgYQjh3/CTH++mR3nRXrWPPnTN6ZqbGJwDiU5Eo68NSJJTL5VwrNGf8EbP5zco4wJpLplhTg== X-Received: by 2002:a2e:8597:: with SMTP id b23mr1555675lji.41.1598994685513; Tue, 01 Sep 2020 14:11:25 -0700 (PDT) Received: from localhost.localdomain (109-252-170-211.dynamic.spd-mgts.ru. [109.252.170.211]) by smtp.gmail.com with ESMTPSA id g19sm502656ljk.125.2020.09.01.14.11.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2020 14:11:25 -0700 (PDT) From: Dmitry Osipenko To: Thierry Reding , Jonathan Hunter , Laxman Dewangan , Wolfram Sang Cc: linux-i2c@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 02/17] i2c: tegra: Add missing newline before returns Date: Wed, 2 Sep 2020 00:10:47 +0300 Message-Id: <20200901211102.11072-3-digetx@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200901211102.11072-1-digetx@gmail.com> References: <20200901211102.11072-1-digetx@gmail.com> MIME-Version: 1.0 Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org Some places in the code are missing a newline before return, making code more difficult to read and creating inconsistency of the code. This patch adds the missing newlines. Signed-off-by: Dmitry Osipenko --- drivers/i2c/busses/i2c-tegra.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c index aab58395fb71..9bd91b6f32f4 100644 --- a/drivers/i2c/busses/i2c-tegra.c +++ b/drivers/i2c/busses/i2c-tegra.c @@ -317,6 +317,7 @@ static unsigned long tegra_i2c_reg_addr(struct tegra_i2c_dev *i2c_dev, reg += (reg >= I2C_TX_FIFO) ? 0x10 : 0x40; else if (i2c_dev->is_vi) reg = 0xc00 + (reg << 2); + return reg; } @@ -392,6 +393,7 @@ static int tegra_i2c_dma_submit(struct tegra_i2c_dev *i2c_dev, size_t len) dma_desc->callback_param = i2c_dev; dmaengine_submit(dma_desc); dma_async_issue_pending(chan); + return 0; } @@ -500,6 +502,7 @@ static int tegra_i2c_flush_fifos(struct tegra_i2c_dev *i2c_dev) ktime = ktime_get(); } + return 0; err_timeout: @@ -707,6 +710,7 @@ static int __maybe_unused tegra_i2c_runtime_resume(struct device *dev) clk_disable(i2c_dev->slow_clk); disable_fast_clk: clk_disable(i2c_dev->fast_clk); + return ret; } @@ -1421,6 +1425,7 @@ static u32 tegra_i2c_func(struct i2c_adapter *adap) if (i2c_dev->hw->has_continue_xfer_support) ret |= I2C_FUNC_NOSTART; + return ret; } @@ -1888,6 +1893,7 @@ static int tegra_i2c_remove(struct platform_device *pdev) clk_unprepare(i2c_dev->fast_clk); tegra_i2c_release_dma(i2c_dev); + return 0; } From patchwork Tue Sep 1 21:10:48 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 1355398 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=SyMA3lnE; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4Bh0D94km0z9sTm for ; Wed, 2 Sep 2020 07:13:29 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728827AbgIAVNH (ORCPT ); Tue, 1 Sep 2020 17:13:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50542 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728495AbgIAVLb (ORCPT ); Tue, 1 Sep 2020 17:11:31 -0400 Received: from mail-lj1-x243.google.com (mail-lj1-x243.google.com [IPv6:2a00:1450:4864:20::243]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E633FC061244; Tue, 1 Sep 2020 14:11:28 -0700 (PDT) Received: by mail-lj1-x243.google.com with SMTP id y4so3281238ljk.8; Tue, 01 Sep 2020 14:11:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=LI5IZwfJ0fn+Z9lwo1JJQbv9Wuowy3OzaHL/E7iS8lc=; b=SyMA3lnESROEfsNblRmAyLHoDCX0QVUCkbE/6PrBh5uUgm1vOJLr2Ao1/iUdmoBKXQ TejkpVyWDZ/gTMpTuoa0kG/STPdy5Bvl8TU+58sQ/tGhqnTe7TuJ8ACvSoxbHL7w3l1e aDUsxtUgNJRYKJrO2go0do7FUAKswY+etfmF4ijkkT4emCrclYrpqLu6WPeDX7uB+R9a DlhwZ0VysCSlRXMumllFVH3pYHQtjlsFBc/L6rijKmUCFB94YlOL1MO34sq6kvUf9EqX N00Z4N2Hm2z4nHNYN5L7yvKG1Y4nw1Z5l5EXp496r06KgsgF4zsk8BepX9OK4hXbwKoO s/KA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=LI5IZwfJ0fn+Z9lwo1JJQbv9Wuowy3OzaHL/E7iS8lc=; b=ufTAes7ABZ8ylsCif2+DHl9p61mSMJen0rZi+wYRH95+g0iGOi02Zj60DSwzE1atJs dGVy5SesLjVWv0iiIZd+F7k2G27bnXy6LNMwEHFhUmoSWL1cpiRfXqYeMd6AfM5uVku/ TSYl85cG/QsISMPAqr5uE6rwTCAE/HeT6pws6Ncz0mq7MKTbgYUexHCFkqS8zygy/kkn ApC99VtGUq2naAbvHY7754wmBPskD3CvKqAq7W3RdZcoGVu5rj/4fiy9QK3gxQFNV40M ezgoXn7wPzMVve6UN1DxkIoBkFFIIqteLEnJ2+DYdSxTG4LIsYPoOL3F1SXlneSlufNy bNcw== X-Gm-Message-State: AOAM532w623nfy4tPze9MpwuP2dxVGv9VaniYrANCKahMy03/yG1WxE1 X4fkpltVZ4XZ6B7GQLWk+S8= X-Google-Smtp-Source: ABdhPJxd5s80+dwKEkCcPo4KkxLLlKennc+YOH4Vf+VOM9syJGN1jSmsLkd1/7g6ceEidrLzwLiRgw== X-Received: by 2002:a2e:3019:: with SMTP id w25mr1439282ljw.291.1598994686527; Tue, 01 Sep 2020 14:11:26 -0700 (PDT) Received: from localhost.localdomain (109-252-170-211.dynamic.spd-mgts.ru. [109.252.170.211]) by smtp.gmail.com with ESMTPSA id g19sm502656ljk.125.2020.09.01.14.11.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2020 14:11:25 -0700 (PDT) From: Dmitry Osipenko To: Thierry Reding , Jonathan Hunter , Laxman Dewangan , Wolfram Sang Cc: linux-i2c@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 03/17] i2c: tegra: Clean up messages in the code Date: Wed, 2 Sep 2020 00:10:48 +0300 Message-Id: <20200901211102.11072-4-digetx@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200901211102.11072-1-digetx@gmail.com> References: <20200901211102.11072-1-digetx@gmail.com> MIME-Version: 1.0 Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org Use lowercase and consistent wording for all messages in the code. Signed-off-by: Dmitry Osipenko --- drivers/i2c/busses/i2c-tegra.c | 65 ++++++++++++++++------------------ 1 file changed, 31 insertions(+), 34 deletions(-) diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c index 9bd91b6f32f4..0d358bc12973 100644 --- a/drivers/i2c/busses/i2c-tegra.c +++ b/drivers/i2c/busses/i2c-tegra.c @@ -377,7 +377,7 @@ static int tegra_i2c_dma_submit(struct tegra_i2c_dev *i2c_dev, size_t len) enum dma_transfer_direction dir; struct dma_chan *chan; - dev_dbg(i2c_dev->dev, "starting DMA for length: %zu\n", len); + dev_dbg(i2c_dev->dev, "starting dma for length: %zu\n", len); reinit_completion(&i2c_dev->dma_complete); dir = i2c_dev->msg_read ? DMA_DEV_TO_MEM : DMA_MEM_TO_DEV; chan = i2c_dev->msg_read ? i2c_dev->rx_dma_chan : i2c_dev->tx_dma_chan; @@ -385,7 +385,7 @@ static int tegra_i2c_dma_submit(struct tegra_i2c_dev *i2c_dev, size_t len) len, dir, DMA_PREP_INTERRUPT | DMA_CTRL_ACK); if (!dma_desc) { - dev_err(i2c_dev->dev, "failed to get DMA descriptor\n"); + dev_err(i2c_dev->dev, "failed to get dma descriptor\n"); return -EINVAL; } @@ -427,7 +427,7 @@ static int tegra_i2c_init_dma(struct tegra_i2c_dev *i2c_dev) return 0; if (!IS_ENABLED(CONFIG_TEGRA20_APB_DMA)) { - dev_dbg(i2c_dev->dev, "Support for APB DMA not enabled!\n"); + dev_dbg(i2c_dev->dev, "dma support not enabled\n"); return 0; } @@ -450,7 +450,7 @@ static int tegra_i2c_init_dma(struct tegra_i2c_dev *i2c_dev) dma_buf = dma_alloc_coherent(i2c_dev->dev, i2c_dev->dma_buf_size, &dma_phys, GFP_KERNEL | __GFP_NOWARN); if (!dma_buf) { - dev_err(i2c_dev->dev, "failed to allocate the DMA buffer\n"); + dev_err(i2c_dev->dev, "failed to allocate dma buffer\n"); err = -ENOMEM; goto err_out; } @@ -462,8 +462,8 @@ static int tegra_i2c_init_dma(struct tegra_i2c_dev *i2c_dev) err_out: tegra_i2c_release_dma(i2c_dev); if (err != -EPROBE_DEFER) { - dev_err(i2c_dev->dev, "cannot use DMA: %d\n", err); - dev_err(i2c_dev->dev, "falling back to PIO\n"); + dev_err(i2c_dev->dev, "cannot use dma: %d\n", err); + dev_err(i2c_dev->dev, "falling back to pio\n"); return 0; } @@ -672,8 +672,7 @@ static int __maybe_unused tegra_i2c_runtime_resume(struct device *dev) ret = clk_enable(i2c_dev->fast_clk); if (ret < 0) { - dev_err(i2c_dev->dev, - "Enabling fast clk failed, err %d\n", ret); + dev_err(dev, "failed to enable fast clock: %d\n", ret); return ret; } @@ -685,8 +684,7 @@ static int __maybe_unused tegra_i2c_runtime_resume(struct device *dev) ret = clk_enable(i2c_dev->div_clk); if (ret < 0) { - dev_err(i2c_dev->dev, - "Enabling div clk failed, err %d\n", ret); + dev_err(dev, "failed to enable div clock: %d\n", ret); goto disable_slow_clk; } @@ -747,8 +745,7 @@ static int tegra_i2c_wait_for_config_load(struct tegra_i2c_dev *i2c_dev) I2C_CONFIG_LOAD_TIMEOUT); if (err) { - dev_warn(i2c_dev->dev, - "timeout waiting for config load\n"); + dev_err(i2c_dev->dev, "failed to load config\n"); return err; } } @@ -850,7 +847,7 @@ static int tegra_i2c_init(struct tegra_i2c_dev *i2c_dev, bool clk_reinit) i2c_dev->bus_clk_rate * clk_multiplier); if (err) { dev_err(i2c_dev->dev, - "failed changing clock rate: %d\n", err); + "failed to set div-clk rate: %d\n", err); return err; } } @@ -1052,8 +1049,7 @@ static void tegra_i2c_config_fifo_trig(struct tegra_i2c_dev *i2c_dev, slv_config.device_fc = true; ret = dmaengine_slave_config(chan, &slv_config); if (ret < 0) { - dev_err(i2c_dev->dev, "DMA slave config failed: %d\n", - ret); + dev_err(i2c_dev->dev, "dma config failed: %d\n", ret); dev_err(i2c_dev->dev, "falling back to PIO\n"); tegra_i2c_release_dma(i2c_dev); i2c_dev->is_curr_dma_xfer = false; @@ -1163,8 +1159,7 @@ static int tegra_i2c_issue_bus_clear(struct i2c_adapter *adap) reg = i2c_readl(i2c_dev, I2C_BUS_CLEAR_STATUS); if (!(reg & I2C_BC_STATUS)) { - dev_err(i2c_dev->dev, - "un-recovered arbitration lost\n"); + dev_err(i2c_dev->dev, "un-recovered arbitration lost\n"); return -EIO; } @@ -1221,8 +1216,7 @@ static int tegra_i2c_xfer_msg(struct tegra_i2c_dev *i2c_dev, err = tegra_i2c_dma_submit(i2c_dev, xfer_size); if (err < 0) { dev_err(i2c_dev->dev, - "starting RX DMA failed, err %d\n", - err); + "starting rx dma failed: %d\n", err); return err; } @@ -1281,8 +1275,7 @@ static int tegra_i2c_xfer_msg(struct tegra_i2c_dev *i2c_dev, err = tegra_i2c_dma_submit(i2c_dev, xfer_size); if (err < 0) { dev_err(i2c_dev->dev, - "starting TX DMA failed, err %d\n", - err); + "starting tx dma failed: %d\n", err); return err; } } else { @@ -1321,7 +1314,7 @@ static int tegra_i2c_xfer_msg(struct tegra_i2c_dev *i2c_dev, i2c_dev->tx_dma_chan); if (!time_left && !completion_done(&i2c_dev->dma_complete)) { - dev_err(i2c_dev->dev, "DMA transfer timeout\n"); + dev_err(i2c_dev->dev, "dma transfer timeout\n"); tegra_i2c_init(i2c_dev, true); return -ETIMEDOUT; } @@ -1676,7 +1669,7 @@ static int tegra_i2c_probe(struct platform_device *pdev) res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); if (!res) { - dev_err(&pdev->dev, "no irq resource\n"); + dev_err(dev, "no irq resource\n"); return -EINVAL; } irq = res->start; @@ -1684,7 +1677,8 @@ static int tegra_i2c_probe(struct platform_device *pdev) div_clk = devm_clk_get(&pdev->dev, "div-clk"); if (IS_ERR(div_clk)) { if (PTR_ERR(div_clk) != -EPROBE_DEFER) - dev_err(&pdev->dev, "missing controller clock\n"); + dev_err(&pdev->dev, "failed to get div-clk: %ld\n", + PTR_ERR(div_clk)); return PTR_ERR(div_clk); } @@ -1705,7 +1699,9 @@ static int tegra_i2c_probe(struct platform_device *pdev) i2c_dev->rst = devm_reset_control_get_exclusive(&pdev->dev, "i2c"); if (IS_ERR(i2c_dev->rst)) { - dev_err(&pdev->dev, "missing controller reset\n"); + dev_err(dev, "failed to get reset control: %pe\n", + i2c_dev->rst); + return PTR_ERR(i2c_dev->rst); } @@ -1725,7 +1721,9 @@ static int tegra_i2c_probe(struct platform_device *pdev) if (!i2c_dev->hw->has_single_clk_source) { fast_clk = devm_clk_get(&pdev->dev, "fast-clk"); if (IS_ERR(fast_clk)) { - dev_err(&pdev->dev, "missing fast clock\n"); + dev_err(dev, "failed to get fast clock\n: %ld\n", + PTR_ERR(fast_clk)); + return PTR_ERR(fast_clk); } i2c_dev->fast_clk = fast_clk; @@ -1746,7 +1744,7 @@ static int tegra_i2c_probe(struct platform_device *pdev) ret = clk_prepare(i2c_dev->fast_clk); if (ret < 0) { - dev_err(i2c_dev->dev, "Clock prepare failed %d\n", ret); + dev_err(dev, "failed to prepare fast clock: %d\n", ret); return ret; } @@ -1770,7 +1768,7 @@ static int tegra_i2c_probe(struct platform_device *pdev) ret = clk_prepare(i2c_dev->div_clk); if (ret < 0) { - dev_err(i2c_dev->dev, "Clock prepare failed %d\n", ret); + dev_err(dev, "failed to prepare div-clk: %d\n", ret); goto unprepare_slow_clk; } @@ -1787,13 +1785,13 @@ static int tegra_i2c_probe(struct platform_device *pdev) if (!pm_runtime_enabled(&pdev->dev)) { ret = tegra_i2c_runtime_resume(&pdev->dev); if (ret < 0) { - dev_err(&pdev->dev, "runtime resume failed\n"); + dev_err(dev, "runtime resume failed\n"); goto unprepare_div_clk; } } else { ret = pm_runtime_get_sync(i2c_dev->dev); if (ret < 0) { - dev_err(&pdev->dev, "runtime resume failed\n"); + dev_err(dev, "runtime resume failed\n"); goto disable_rpm; } } @@ -1801,8 +1799,7 @@ static int tegra_i2c_probe(struct platform_device *pdev) if (i2c_dev->is_multimaster_mode) { ret = clk_enable(i2c_dev->div_clk); if (ret < 0) { - dev_err(i2c_dev->dev, "div_clk enable failed %d\n", - ret); + dev_err(dev, "failed to enable div-clk: %d\n", ret); goto put_rpm; } } @@ -1816,7 +1813,7 @@ static int tegra_i2c_probe(struct platform_device *pdev) ret = tegra_i2c_init(i2c_dev, false); if (ret) { - dev_err(&pdev->dev, "Failed to initialize i2c controller\n"); + dev_err(dev, "failed to initialize i2c controller\n"); goto release_dma; } @@ -1825,7 +1822,7 @@ static int tegra_i2c_probe(struct platform_device *pdev) ret = devm_request_irq(&pdev->dev, i2c_dev->irq, tegra_i2c_isr, IRQF_NO_SUSPEND, dev_name(&pdev->dev), i2c_dev); if (ret) { - dev_err(&pdev->dev, "Failed to request irq %i\n", i2c_dev->irq); + dev_err(dev, "failed to request irq %i\n", i2c_dev->irq); goto release_dma; } From patchwork Tue Sep 1 21:10:49 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 1355399 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=Gz9DrNWU; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4Bh0DB0ZKNz9sPB for ; Wed, 2 Sep 2020 07:13:30 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729932AbgIAVN3 (ORCPT ); Tue, 1 Sep 2020 17:13:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50544 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728153AbgIAVL3 (ORCPT ); Tue, 1 Sep 2020 17:11:29 -0400 Received: from mail-lj1-x243.google.com (mail-lj1-x243.google.com [IPv6:2a00:1450:4864:20::243]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1A52FC061247; Tue, 1 Sep 2020 14:11:29 -0700 (PDT) Received: by mail-lj1-x243.google.com with SMTP id t23so3301470ljc.3; Tue, 01 Sep 2020 14:11:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=MBP4sN9HKmwSlR7KiVXj6bhhwLMA1Oz7lpKmbb1yCMk=; b=Gz9DrNWUYSnn1smrUSkcoI6oUlZ8+zXQ8kd2hNBoKHf7N15ZJLqk5pGSKkSK7eqEey XAUcRnYe9ijuIVJLlgjsVM/cokzVRzb4JNL4MkdICHTsZtsUlYLRlinEKgiu+6DWfzNA kbToctAXceEx0yswV+hCyLvDwfD5GRxMPkiUGyvzGkhdyd70CiQcdPjzM6I1x5HywA6q olWFdSyAh21jXPd/dwwXuEGg2a5HBBSlj33+27bhuf4mQgB41Gv9XAfWLF3ju2leOaXB UhRppzYBVtiBb2lTE1aKp3QZcTkayHyaujryEaaq/747JQWr8+c+kBrKINHLbodJGGr2 k6WA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=MBP4sN9HKmwSlR7KiVXj6bhhwLMA1Oz7lpKmbb1yCMk=; b=FlpRZ2eGxd/OIFnpNGWHhkqoALmZdWO+GxkMJcow20AxmImtSgJ93owmvZ77h6us6z gzRrfmLE5tCMouNyMmKNU1LpSyD3f98IxvNAb7xOz/4AH1OOeU5zVWa6mz+OiGvmSozu E0tGcQX+vj/odnadiQesBwIKNspqPOMWyTt/Vjo0kuzbzFhjcGhdSzWS6Z1TjNwoyaGg yzqrZFtB80Wjibx+bRzL9msr0GHgg6NuSKeWXixtVDrmDx7YXsNqLiZFf3N4pu4tS2iV nBP8Oke0Fjl8s4pDtm8ZdDmECQ6Gml5EFLwoX79Yy3TxelspHUGQWFAy3HuY5kuaIzGb pyew== X-Gm-Message-State: AOAM5313ceQ0G/3/uOs1XDx111n2a3C97Mj2pGZoPuyFY3iOuhU/mORW BrubFD2ViHg3aPmkyJbl0m4= X-Google-Smtp-Source: ABdhPJzND/nTU7CATHNAZEFzs3Axo0s+UjGcgs1ZEizboMhvWloaGbjni6hxydQiBgxZNdrMhyJx6w== X-Received: by 2002:a2e:9b59:: with SMTP id o25mr1672157ljj.264.1598994687560; Tue, 01 Sep 2020 14:11:27 -0700 (PDT) Received: from localhost.localdomain (109-252-170-211.dynamic.spd-mgts.ru. [109.252.170.211]) by smtp.gmail.com with ESMTPSA id g19sm502656ljk.125.2020.09.01.14.11.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2020 14:11:26 -0700 (PDT) From: Dmitry Osipenko To: Thierry Reding , Jonathan Hunter , Laxman Dewangan , Wolfram Sang Cc: linux-i2c@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 04/17] i2c: tegra: Don't ignore tegra_i2c_flush_fifos() error Date: Wed, 2 Sep 2020 00:10:49 +0300 Message-Id: <20200901211102.11072-5-digetx@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200901211102.11072-1-digetx@gmail.com> References: <20200901211102.11072-1-digetx@gmail.com> MIME-Version: 1.0 Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org The tegra_i2c_flush_fifos() may fail and transfer should be aborted in this case. Signed-off-by: Dmitry Osipenko --- drivers/i2c/busses/i2c-tegra.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c index 0d358bc12973..2da45ff32621 100644 --- a/drivers/i2c/busses/i2c-tegra.c +++ b/drivers/i2c/busses/i2c-tegra.c @@ -1179,7 +1179,9 @@ static int tegra_i2c_xfer_msg(struct tegra_i2c_dev *i2c_dev, bool dma; u16 xfer_time = 100; - tegra_i2c_flush_fifos(i2c_dev); + err = tegra_i2c_flush_fifos(i2c_dev); + if (err) + return err; i2c_dev->msg_buf = msg->buf; i2c_dev->msg_buf_remaining = msg->len; From patchwork Tue Sep 1 21:10:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 1355397 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=XponkNRv; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4Bh0D916lcz9sPB for ; Wed, 2 Sep 2020 07:13:29 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729865AbgIAVNL (ORCPT ); Tue, 1 Sep 2020 17:13:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50552 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728730AbgIAVLb (ORCPT ); Tue, 1 Sep 2020 17:11:31 -0400 Received: from mail-lj1-x243.google.com (mail-lj1-x243.google.com [IPv6:2a00:1450:4864:20::243]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0E591C061245; Tue, 1 Sep 2020 14:11:30 -0700 (PDT) Received: by mail-lj1-x243.google.com with SMTP id h19so3256879ljg.13; Tue, 01 Sep 2020 14:11:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=dZ6TJT0d2WHfPiQp5ZxQDWsFPOMSgFVrHCsGXELQF8Q=; b=XponkNRvckXfs6klc/3ZLBkX+6Uzlaof5yRSvgENVLsRKI3+jYQmVOgQhRrBFkymjU uYUDNwTVfCwW4ncmQ0NBqipZNdI39CthK3xAZ7W2B3xNYRVFh/MaIWdRDzjZiOkzCwXC Fmkzwojm5trS1Qkr1ApsyOxgsYy1aReIWRSvXTzGU7rlADmQOC0B4mmsDjbDuJH/Mm3/ y0DVK1kwJfb4XpC9jThoeaDm3AjEGu/oUGXzzwmSntMhGLtxECD0yKtCB3X7BgFkGz5z 7IfobfUfU75JTCmzuVgadJtkCGFpqtBd01wTH7eKpFSJs/KjmwZnXqFWzic8RwoK20v/ IGgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=dZ6TJT0d2WHfPiQp5ZxQDWsFPOMSgFVrHCsGXELQF8Q=; b=CKDd2TzhxmI6SfxlrFacAzLpaC5SiE/YdndYLYwCpNf/0+fvj5Ff2dliycp+W07KnQ NQKZ+vbR06Fsjws8HxR6MiGkYtjP1mQxLq+hdMQMZxUtn3QGiZrPNoRNL10kD7D/mJu9 BzG9b3bCAD9Sjuv8Wj9D0oSmvWn4QTPKN0pWfFESJqzQArsGNR/+/5qt826b4YOHsi/n ZBN1+SHVO1MmZY+M76Xv4b8m1vhhUfEKY9UCEJr6lEdRLLhuJsx3gNU//NMMFIgCX/mt k3ZbdpsUryscgLimpLNZUpWPLTaElLjnzbRfdWZ9JL1aO5guYB2mjC/GGM7oUE8ODW9i dtLA== X-Gm-Message-State: AOAM532QaFfEgPkqNW8IowB7hRuIawx7N8OAEN90Sca7hfG+IbVxfGKO QPiZG9IAZ8cF72oYeRLpiQ4= X-Google-Smtp-Source: ABdhPJwiJytVcgBcne7J0ipyPrtfRdDtc1xB2F+SIki3k+XNyS6122ZHB1Zp3BHdZsIIZu0fz9GZiw== X-Received: by 2002:a05:651c:231:: with SMTP id z17mr1469756ljn.109.1598994688546; Tue, 01 Sep 2020 14:11:28 -0700 (PDT) Received: from localhost.localdomain (109-252-170-211.dynamic.spd-mgts.ru. [109.252.170.211]) by smtp.gmail.com with ESMTPSA id g19sm502656ljk.125.2020.09.01.14.11.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2020 14:11:28 -0700 (PDT) From: Dmitry Osipenko To: Thierry Reding , Jonathan Hunter , Laxman Dewangan , Wolfram Sang Cc: linux-i2c@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 05/17] i2c: tegra: Use reset_control_reset() Date: Wed, 2 Sep 2020 00:10:50 +0300 Message-Id: <20200901211102.11072-6-digetx@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200901211102.11072-1-digetx@gmail.com> References: <20200901211102.11072-1-digetx@gmail.com> MIME-Version: 1.0 Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org Use a single reset_control_reset() instead of assert/deasset couple in order to make code cleaner a tad. Note that the reset_control_reset() uses 1 microsecond delay instead of 2 that was used previously, but this shouldn't matter. In addition don't ignore potential error of the reset. Signed-off-by: Dmitry Osipenko --- drivers/i2c/busses/i2c-tegra.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c index 2da45ff32621..aa815e48f77e 100644 --- a/drivers/i2c/busses/i2c-tegra.c +++ b/drivers/i2c/busses/i2c-tegra.c @@ -790,9 +790,9 @@ static int tegra_i2c_init(struct tegra_i2c_dev *i2c_dev, bool clk_reinit) u32 tsu_thd; u8 tlow, thigh; - reset_control_assert(i2c_dev->rst); - udelay(2); - reset_control_deassert(i2c_dev->rst); + err = reset_control_reset(i2c_dev->rst); + if (WARN_ON_ONCE(err)) + return err; if (i2c_dev->is_dvc) tegra_dvc_init(i2c_dev); From patchwork Tue Sep 1 21:10:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 1355389 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=WFQjl82o; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4Bh0Ch3YGRz9sPB for ; Wed, 2 Sep 2020 07:13:04 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729696AbgIAVMo (ORCPT ); Tue, 1 Sep 2020 17:12:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50544 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728928AbgIAVLd (ORCPT ); Tue, 1 Sep 2020 17:11:33 -0400 Received: from mail-lj1-x242.google.com (mail-lj1-x242.google.com [IPv6:2a00:1450:4864:20::242]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EB58CC061246; Tue, 1 Sep 2020 14:11:30 -0700 (PDT) Received: by mail-lj1-x242.google.com with SMTP id e11so3290503ljn.6; Tue, 01 Sep 2020 14:11:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=gCJ/kJO460VBmMj/2QvJ/CjFLWjG1thy5b14TQ6KA64=; b=WFQjl82ofV8ioHb0HIo8W5GDBdSRFrzFFwm2VOpWZgfmSQQbWfHJtVAKvKJ15vPRAh eJNAEJl8va2VcA/dJVCV3sYc/wypfDFEEYRGPeZQTOCLKV6rahz6jyxsD9hTWkbTZfoo fI0QGQSoGXSu0Lutam+WkW2qaCKyd/bi7f7RgWPQRio7EDA01GEUj3FHEKSBQUvTjCmJ 8RowOCVjYfFIjYSsiFIM9rHX4ZGWXwv0on7apfB1kilN/0BEdrnoce7oqqYjiyGqQrXZ fM2hogjx+P7CBh0VJk/MgjHWfV2ojDUcHXfObS9wVcEccfTxnvJLdoqNbYAWHQ/PCH+C Cl/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=gCJ/kJO460VBmMj/2QvJ/CjFLWjG1thy5b14TQ6KA64=; b=Z9lR/v2uaO9n3NDmU2cEWAM7mhGUS4ay6CDxJU0k/0GzBp/x/cuBtZ5pk0W4P2Uefv nOaiQ0vGsy6QdeKiLGIcJF45+H1EwV2ZCptkUWjAcLwwFJr55xTR1wEYHoY8bqPebPGN Ln5iwMycq/Fhl8VkLCd5iGN+2JHYDB2ZtqlKEJiDr+P7gDnhWm9rscAU2YrT75PfjqcX UzGyGj5BPrFQE3k8rL/Hi9eWV7wG8tzrJvlURGidmul4cz8rZtOkdn+Ed+3kW6m5Yo/v fvIRpWLYjJzyfRTHBjwtjtdicDH/L7Q2e8k/SnC0q76TMKYqvYd+xQANKOYotAdmFBl3 azqg== X-Gm-Message-State: AOAM532Mximrj8BhbN8nzdirnIj02NTG0nPivthz08nZ28z3NzyZykzc TlaEFQtOs62vi4sbmjL4NDc= X-Google-Smtp-Source: ABdhPJyvzZAPYAxEBNPC8JXx41fPj5MrFfrmc8/Pr8hR1To97JgC+pggfWQ/HexTRZxWmUKkRMUFGw== X-Received: by 2002:a2e:94c5:: with SMTP id r5mr1425347ljh.53.1598994689421; Tue, 01 Sep 2020 14:11:29 -0700 (PDT) Received: from localhost.localdomain (109-252-170-211.dynamic.spd-mgts.ru. [109.252.170.211]) by smtp.gmail.com with ESMTPSA id g19sm502656ljk.125.2020.09.01.14.11.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2020 14:11:28 -0700 (PDT) From: Dmitry Osipenko To: Thierry Reding , Jonathan Hunter , Laxman Dewangan , Wolfram Sang Cc: linux-i2c@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 06/17] i2c: tegra: Improve formatting of function variables Date: Wed, 2 Sep 2020 00:10:51 +0300 Message-Id: <20200901211102.11072-7-digetx@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200901211102.11072-1-digetx@gmail.com> References: <20200901211102.11072-1-digetx@gmail.com> MIME-Version: 1.0 Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org Reorder the definition of variables in the code in order to make code easier to read. Signed-off-by: Dmitry Osipenko --- drivers/i2c/busses/i2c-tegra.c | 51 ++++++++++++++-------------------- 1 file changed, 21 insertions(+), 30 deletions(-) diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c index aa815e48f77e..16f105283145 100644 --- a/drivers/i2c/busses/i2c-tegra.c +++ b/drivers/i2c/busses/i2c-tegra.c @@ -419,8 +419,8 @@ static void tegra_i2c_release_dma(struct tegra_i2c_dev *i2c_dev) static int tegra_i2c_init_dma(struct tegra_i2c_dev *i2c_dev) { struct dma_chan *chan; - u32 *dma_buf; dma_addr_t dma_phys; + u32 *dma_buf; int err; if (!i2c_dev->hw->has_apb_dma || i2c_dev->is_vi) @@ -513,11 +513,11 @@ static int tegra_i2c_flush_fifos(struct tegra_i2c_dev *i2c_dev) static int tegra_i2c_empty_rx_fifo(struct tegra_i2c_dev *i2c_dev) { - u32 val; - int rx_fifo_avail; - u8 *buf = i2c_dev->msg_buf; size_t buf_remaining = i2c_dev->msg_buf_remaining; + u8 *buf = i2c_dev->msg_buf; int words_to_transfer; + int rx_fifo_avail; + u32 val; /* * Catch overflow due to message fully sent @@ -574,11 +574,11 @@ static int tegra_i2c_empty_rx_fifo(struct tegra_i2c_dev *i2c_dev) static int tegra_i2c_fill_tx_fifo(struct tegra_i2c_dev *i2c_dev) { - u32 val; - int tx_fifo_avail; - u8 *buf = i2c_dev->msg_buf; size_t buf_remaining = i2c_dev->msg_buf_remaining; + u8 *buf = i2c_dev->msg_buf; int words_to_transfer; + int tx_fifo_avail; + u32 val; if (i2c_dev->hw->has_mst_fifo) { val = i2c_readl(i2c_dev, I2C_MST_FIFO_STATUS); @@ -784,11 +784,8 @@ static void tegra_i2c_vi_init(struct tegra_i2c_dev *i2c_dev) static int tegra_i2c_init(struct tegra_i2c_dev *i2c_dev, bool clk_reinit) { - u32 val; + u32 val, clk_divisor, clk_multiplier, tsu_thd, tlow, thigh; int err; - u32 clk_divisor, clk_multiplier; - u32 tsu_thd; - u8 tlow, thigh; err = reset_control_reset(i2c_dev->rst); if (WARN_ON_ONCE(err)) @@ -896,9 +893,9 @@ static int tegra_i2c_disable_packet_mode(struct tegra_i2c_dev *i2c_dev) static irqreturn_t tegra_i2c_isr(int irq, void *dev_id) { - u32 status; const u32 status_err = I2C_INT_NO_ACK | I2C_INT_ARBITRATION_LOST; struct tegra_i2c_dev *i2c_dev = dev_id; + u32 status; status = i2c_readl(i2c_dev, I2C_INT_STATUS); @@ -1002,12 +999,11 @@ static irqreturn_t tegra_i2c_isr(int irq, void *dev_id) static void tegra_i2c_config_fifo_trig(struct tegra_i2c_dev *i2c_dev, size_t len) { - u32 val, reg; - u8 dma_burst; struct dma_slave_config slv_config = {0}; + unsigned long reg_offset; + u32 val, reg, dma_burst; struct dma_chan *chan; int ret; - unsigned long reg_offset; if (i2c_dev->hw->has_mst_fifo) reg = I2C_MST_FIFO_CONTROL; @@ -1132,9 +1128,9 @@ tegra_i2c_wait_completion_timeout(struct tegra_i2c_dev *i2c_dev, static int tegra_i2c_issue_bus_clear(struct i2c_adapter *adap) { struct tegra_i2c_dev *i2c_dev = i2c_get_adapdata(adap); - int err; unsigned long time_left; u32 reg; + int err; reinit_completion(&i2c_dev->msg_complete); reg = FIELD_PREP(I2C_BC_SCLK_THRESHOLD, 9) | I2C_BC_STOP_COND | @@ -1170,14 +1166,12 @@ static int tegra_i2c_xfer_msg(struct tegra_i2c_dev *i2c_dev, struct i2c_msg *msg, enum msg_end_type end_state) { - u32 packet_header; - u32 int_mask; - unsigned long time_left; - size_t xfer_size; + unsigned long time_left, xfer_time = 100; + u32 packet_header, int_mask; u32 *buffer = NULL; - int err = 0; + size_t xfer_size; bool dma; - u16 xfer_time = 100; + int err; err = tegra_i2c_flush_fifos(i2c_dev); if (err) @@ -1371,8 +1365,7 @@ static int tegra_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num) { struct tegra_i2c_dev *i2c_dev = i2c_get_adapdata(adap); - int i; - int ret; + int i, ret; ret = pm_runtime_get_sync(i2c_dev->dev); if (ret < 0) { @@ -1427,8 +1420,8 @@ static u32 tegra_i2c_func(struct i2c_adapter *adap) static void tegra_i2c_parse_dt(struct tegra_i2c_dev *i2c_dev) { struct device_node *np = i2c_dev->dev->of_node; - int ret; bool multi_mode; + int ret; ret = of_property_read_u32(np, "clock-frequency", &i2c_dev->bus_clk_rate); @@ -1654,14 +1647,12 @@ MODULE_DEVICE_TABLE(of, tegra_i2c_of_match); static int tegra_i2c_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; + struct clk *div_clk, *fast_clk; struct tegra_i2c_dev *i2c_dev; + phys_addr_t base_phys; struct resource *res; - struct clk *div_clk; - struct clk *fast_clk; void __iomem *base; - phys_addr_t base_phys; - int irq; - int ret; + int irq, ret; res = platform_get_resource(pdev, IORESOURCE_MEM, 0); base_phys = res->start; From patchwork Tue Sep 1 21:10:52 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 1355387 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=kgVU0FQL; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4Bh0CL338Hz9sTp for ; Wed, 2 Sep 2020 07:12:46 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729710AbgIAVMo (ORCPT ); Tue, 1 Sep 2020 17:12:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50558 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728827AbgIAVLc (ORCPT ); Tue, 1 Sep 2020 17:11:32 -0400 Received: from mail-lj1-x244.google.com (mail-lj1-x244.google.com [IPv6:2a00:1450:4864:20::244]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B9A50C061247; Tue, 1 Sep 2020 14:11:31 -0700 (PDT) Received: by mail-lj1-x244.google.com with SMTP id w14so3293381ljj.4; Tue, 01 Sep 2020 14:11:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ZYfcEkg6MN7XwZIXTI1VLSEAge97NsZf/nSNk/9wRjc=; b=kgVU0FQL1ZNctd2YFK0SWhXHis7NuQPcskeeA1kGqOjaNH4lBGDOICmwMwWb7S5z+A sEZ/fmxlOM21pMWMvucdrOFTz+w74ahkGGLLjsUUkOkmhWSK2hfwSJqzXWA0t1CuFvl1 dG3h4gcTiQus9ZcOFMtqKLe8zizZDsHYMURrhouenSyjdyMkaAMrt9+Q2TioLJQQbP2S 2i5ud6s7xIQzfBL7I/ysSm1fLs8G28O08bqlkm5QKHt49BZ1TU44A0eBVSresQGwrLp+ Uee5AYli00AU4wPA1iETlQoqyoNuYqaCSd5/JsdxzBdV2MACv4CpqevKQqom2H9YSIzD ZkZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ZYfcEkg6MN7XwZIXTI1VLSEAge97NsZf/nSNk/9wRjc=; b=LM/rmWZBpis5ByOQZotR1oxwxRQKZaIvZZQxwZJk+vWtAjBRp9Qx53IOtBTH2eenfd PFrxRRSt5hzlXH/NIC1jM+KiplK8dZsSIjsWlIi4nbRLMjHUMWJAkpGtdAUyCo5U7iN3 r5OI8Rrz+NrI92Rtv2KEqk78lR8H0Y3Cl0XgsvI5B35NAPUUdTL0wywT2IJYkugbzuYx bX5JV+9IzFC0DIRdxAxEG5U8odt0FgqdwkOc24YQSNcuPJckhIJJz7REaDzjesA3edGN j790WKFPXsz83QPReKK9iMPKy0FNkR4CHSAF1kfPc6lt9VXZ488fEoZOn1T5t5xNsZr3 fegw== X-Gm-Message-State: AOAM530w2CWUApcrDceIXmhczsucmR/4rFoJIbFLnUzOHdChhYUA91ik gLsy0NGucVxHgx0UBFQDB+Y= X-Google-Smtp-Source: ABdhPJyIIDPj3sHfxDUiKnQ8Eti6WewnyWpF6xGCCDK0YJJPEvku3AmzrMN4LpGn3veJhqImU4reGg== X-Received: by 2002:a2e:b1c4:: with SMTP id e4mr1627979lja.379.1598994690234; Tue, 01 Sep 2020 14:11:30 -0700 (PDT) Received: from localhost.localdomain (109-252-170-211.dynamic.spd-mgts.ru. [109.252.170.211]) by smtp.gmail.com with ESMTPSA id g19sm502656ljk.125.2020.09.01.14.11.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2020 14:11:29 -0700 (PDT) From: Dmitry Osipenko To: Thierry Reding , Jonathan Hunter , Laxman Dewangan , Wolfram Sang Cc: linux-i2c@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 07/17] i2c: tegra: Use dev_err_probe() Date: Wed, 2 Sep 2020 00:10:52 +0300 Message-Id: <20200901211102.11072-8-digetx@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200901211102.11072-1-digetx@gmail.com> References: <20200901211102.11072-1-digetx@gmail.com> MIME-Version: 1.0 Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org Use dev_err_probe() to replace the manual -EPROBE_DEFER handling, making code cleaner. Signed-off-by: Dmitry Osipenko --- drivers/i2c/busses/i2c-tegra.c | 32 ++++++++++++-------------------- 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c index 16f105283145..c142b424e46d 100644 --- a/drivers/i2c/busses/i2c-tegra.c +++ b/drivers/i2c/busses/i2c-tegra.c @@ -1646,8 +1646,8 @@ MODULE_DEVICE_TABLE(of, tegra_i2c_of_match); static int tegra_i2c_probe(struct platform_device *pdev) { + struct clk *div_clk, *fast_clk, *slow_clk; struct device *dev = &pdev->dev; - struct clk *div_clk, *fast_clk; struct tegra_i2c_dev *i2c_dev; phys_addr_t base_phys; struct resource *res; @@ -1668,13 +1668,9 @@ static int tegra_i2c_probe(struct platform_device *pdev) irq = res->start; div_clk = devm_clk_get(&pdev->dev, "div-clk"); - if (IS_ERR(div_clk)) { - if (PTR_ERR(div_clk) != -EPROBE_DEFER) - dev_err(&pdev->dev, "failed to get div-clk: %ld\n", - PTR_ERR(div_clk)); - - return PTR_ERR(div_clk); - } + if (IS_ERR(div_clk)) + return dev_err_probe(&pdev->dev, PTR_ERR(div_clk), + "failed to get div-clk\n"); i2c_dev = devm_kzalloc(&pdev->dev, sizeof(*i2c_dev), GFP_KERNEL); if (!i2c_dev) @@ -1713,24 +1709,20 @@ static int tegra_i2c_probe(struct platform_device *pdev) if (!i2c_dev->hw->has_single_clk_source) { fast_clk = devm_clk_get(&pdev->dev, "fast-clk"); - if (IS_ERR(fast_clk)) { - dev_err(dev, "failed to get fast clock\n: %ld\n", - PTR_ERR(fast_clk)); + if (IS_ERR(fast_clk)) + return dev_err_probe(&pdev->dev, PTR_ERR(fast_clk), + "failed to get fast clock\n"); - return PTR_ERR(fast_clk); - } i2c_dev->fast_clk = fast_clk; } if (i2c_dev->is_vi) { - i2c_dev->slow_clk = devm_clk_get(dev, "slow"); - if (IS_ERR(i2c_dev->slow_clk)) { - if (PTR_ERR(i2c_dev->slow_clk) != -EPROBE_DEFER) - dev_err(dev, "failed to get slow clock: %ld\n", - PTR_ERR(i2c_dev->slow_clk)); + slow_clk = devm_clk_get(dev, "slow"); + if (IS_ERR(slow_clk)) + return dev_err_probe(&pdev->dev, PTR_ERR(slow_clk), + "failed to get slow clock\n"); - return PTR_ERR(i2c_dev->slow_clk); - } + i2c_dev->slow_clk = slow_clk; } platform_set_drvdata(pdev, i2c_dev); From patchwork Tue Sep 1 21:10:53 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 1355369 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=TyKYVltl; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4Bh0B76pNFz9sPB for ; Wed, 2 Sep 2020 07:11:43 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729094AbgIAVLl (ORCPT ); Tue, 1 Sep 2020 17:11:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50542 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728998AbgIAVLe (ORCPT ); Tue, 1 Sep 2020 17:11:34 -0400 Received: from mail-lj1-x242.google.com (mail-lj1-x242.google.com [IPv6:2a00:1450:4864:20::242]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CBEC7C061249; Tue, 1 Sep 2020 14:11:32 -0700 (PDT) Received: by mail-lj1-x242.google.com with SMTP id v23so3303176ljd.1; Tue, 01 Sep 2020 14:11:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ULaOztD74OSTG1+kWd+VH/aLpegv1mFhAzUeElTs0qM=; b=TyKYVltlSS23ZSl8C4BJIq5EmiqKodA4NJAAzXI+6ajFQjlG4x+ukhei0dtFaB4VAE dEYjAqmQoT9sgSIOobYpi/UiUUgXeicZSWzS9FRqsgHBeGAzuPXkJE0hl52r13w4XEAb 2NUw90xMGYv8rXBInx9Tun4mx+8FFbacFrNA7ww0ff0tGimxmC8OJE6/uUIUOODrJZaO oRFTkgEBiQXDX1v3ImgddhRQTeH6y4/C4mwFzFO2k7sK6DdM32mnckJ86IHOoMEWlmJO DBoYmB7r7KKyQYmmKK2WuUwucPHKXT9OtTq0oQe8bl444YTfFZYOFVc/8k32mSaDKM4T 8eWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ULaOztD74OSTG1+kWd+VH/aLpegv1mFhAzUeElTs0qM=; b=mxoC48XFpO6Xwgk5m0sJ70T8qeKp3pLSFi3w6LTLlkD9twLCxPc9NsmrrzGnqQIrIC zdP75vK6OcXtma+q0092FCpzEF47u2nfqSdmYL7yvo9Jqsff7oRU09WD+GJQkBpUGMe2 h0zyXDvkwbx2u6pgVkYg/182Y2bwMVQv3a7tW5pB2A3PVegkAkx0KmgwxwvO2LjfFuEb P4mCKY8JkCExHMiq4WJAUdliDMlIO6Fy39oVJ4H2pYuP+7OMZuFzhK8S+FQjHSsX862U LB2M8N6awWWqq8qv+fNj8r9TXTDh/CVyiGG+HG9mctxg4cL35iJqc8/1xIrElbAGfgsX kszA== X-Gm-Message-State: AOAM530xUodIlcGqIBMLQMZix3Qbv7gyWYy/TJmROekLO+4iFnbKsmzK ZGTHx+Ksany4PrfShJOhI/s= X-Google-Smtp-Source: ABdhPJy+7LSy+rn935AMuflyh/7dh9M9paa8A+kn/iPXkUSGbJ1CW3iCFkYG7h47fz0XdTkIbbQVzQ== X-Received: by 2002:a2e:80c9:: with SMTP id r9mr1403653ljg.95.1598994691266; Tue, 01 Sep 2020 14:11:31 -0700 (PDT) Received: from localhost.localdomain (109-252-170-211.dynamic.spd-mgts.ru. [109.252.170.211]) by smtp.gmail.com with ESMTPSA id g19sm502656ljk.125.2020.09.01.14.11.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2020 14:11:30 -0700 (PDT) From: Dmitry Osipenko To: Thierry Reding , Jonathan Hunter , Laxman Dewangan , Wolfram Sang Cc: linux-i2c@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 08/17] i2c: tegra: Runtime PM always available on Tegra Date: Wed, 2 Sep 2020 00:10:53 +0300 Message-Id: <20200901211102.11072-9-digetx@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200901211102.11072-1-digetx@gmail.com> References: <20200901211102.11072-1-digetx@gmail.com> MIME-Version: 1.0 Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org The runtime PM is guaranteed to be always available on Tegra after commit 40b2bb1b132a ("ARM: tegra: enforce PM requirement"). Hence let's remove all the RPM-availability checking and handling from the code. Signed-off-by: Dmitry Osipenko --- drivers/i2c/busses/i2c-tegra.c | 28 ++++++---------------------- 1 file changed, 6 insertions(+), 22 deletions(-) diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c index c142b424e46d..a5d9e3ce6320 100644 --- a/drivers/i2c/busses/i2c-tegra.c +++ b/drivers/i2c/busses/i2c-tegra.c @@ -1767,18 +1767,10 @@ static int tegra_i2c_probe(struct platform_device *pdev) if (!i2c_dev->is_vi) pm_runtime_irq_safe(&pdev->dev); pm_runtime_enable(&pdev->dev); - if (!pm_runtime_enabled(&pdev->dev)) { - ret = tegra_i2c_runtime_resume(&pdev->dev); - if (ret < 0) { - dev_err(dev, "runtime resume failed\n"); - goto unprepare_div_clk; - } - } else { - ret = pm_runtime_get_sync(i2c_dev->dev); - if (ret < 0) { - dev_err(dev, "runtime resume failed\n"); - goto disable_rpm; - } + ret = pm_runtime_get_sync(i2c_dev->dev); + if (ret < 0) { + dev_err(dev, "runtime resume failed\n"); + goto disable_rpm; } if (i2c_dev->is_multimaster_mode) { @@ -1836,16 +1828,10 @@ static int tegra_i2c_probe(struct platform_device *pdev) clk_disable(i2c_dev->div_clk); put_rpm: - if (pm_runtime_enabled(&pdev->dev)) - pm_runtime_put_sync(&pdev->dev); - else - tegra_i2c_runtime_suspend(&pdev->dev); + pm_runtime_put_sync(&pdev->dev); disable_rpm: - if (pm_runtime_enabled(&pdev->dev)) - pm_runtime_disable(&pdev->dev); - -unprepare_div_clk: + pm_runtime_disable(&pdev->dev); clk_unprepare(i2c_dev->div_clk); unprepare_slow_clk: @@ -1867,8 +1853,6 @@ static int tegra_i2c_remove(struct platform_device *pdev) clk_disable(i2c_dev->div_clk); pm_runtime_disable(&pdev->dev); - if (!pm_runtime_status_suspended(&pdev->dev)) - tegra_i2c_runtime_suspend(&pdev->dev); clk_unprepare(i2c_dev->div_clk); clk_unprepare(i2c_dev->slow_clk); From patchwork Tue Sep 1 21:10:54 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 1355391 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=Yo4O0EBN; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4Bh0Cl00Dwz9sTm for ; Wed, 2 Sep 2020 07:13:06 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729107AbgIAVMo (ORCPT ); Tue, 1 Sep 2020 17:12:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50558 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729003AbgIAVLf (ORCPT ); Tue, 1 Sep 2020 17:11:35 -0400 Received: from mail-lj1-x241.google.com (mail-lj1-x241.google.com [IPv6:2a00:1450:4864:20::241]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 73C55C061244; Tue, 1 Sep 2020 14:11:34 -0700 (PDT) Received: by mail-lj1-x241.google.com with SMTP id t23so3301811ljc.3; Tue, 01 Sep 2020 14:11:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=BKPC/hkl/oZ/4v1LWtj3GNzaWcf8G8b/06nCz6OIZ+I=; b=Yo4O0EBNbygOe4Zdv9tEeSNievKhBGCoedAt1ZPdxHaql2ZWwPJAdtbaCQEuS6RX+c gwL4OB0/BVLMyWa6S55XS2FO7qcT8VFDN+ZOgqUDH5DAzD1MFZE6WDbnVzQzk8kCzfob 1w2MQaRc3fHawuRPHclZwbcgP0jS4MdRs6u+TJbJxW70nj89aRLrZxwEHF/X5/xAM0Zp JXMdnX2RrC0jJ33vFGhG4xRA1V1BjqJYgJD9bQj+ipDuzsVDIsTsFgczI9CZB7eecrjP /v/JP4MNBE/2ud0NF6kR5SjMxZwYlu0+op0cmVgdOyIAZ3TVhUo9dmL3G3sPlfWfnZ5g rrZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=BKPC/hkl/oZ/4v1LWtj3GNzaWcf8G8b/06nCz6OIZ+I=; b=qOVxnSNSZUXeL0TjbOPPoyet9ZwKB6rZdKX1iyp5eUNfMm3Rbdsmm6XF+lmd7sTwwv WugecEf3BYmJhGlSywWF8jyqn8hUwx2trVW1+P9aM9dmwcRCZl5E9iE6dUS3KdaeCd2Z hnnjIOn9k7zFkaOxIknF2FSahnevpunObnznd17xwAC0YAR2S8LDjJNS8p1Q89uefEIs /9v6AL3li9wgrl9GVp77Jlq8lUAZSHwYh+bvinbUa84fkDzhau0B26DhbML7gqEXLZHA PWFuJ8/GZsRw2FE+OZtP4+e5nU0pzi/BD4c7fmB44CMiJTChTV5zslSNmuTFYWtz5cdo 6x6g== X-Gm-Message-State: AOAM530Gt9582rICOR8IxRKCP8y3S4BWXV+35OiX4Bsx/XJAk/0biEDU H36Dq4s9XLlqzQiLJ0RKGIw= X-Google-Smtp-Source: ABdhPJxlZOVZG9rScS1a65IGzlvD2qWleVQOhQTyNH0UrfqJG9p1KwzOg9HbW+9QCBNEupI26JGPZg== X-Received: by 2002:a2e:9089:: with SMTP id l9mr1441752ljg.118.1598994692224; Tue, 01 Sep 2020 14:11:32 -0700 (PDT) Received: from localhost.localdomain (109-252-170-211.dynamic.spd-mgts.ru. [109.252.170.211]) by smtp.gmail.com with ESMTPSA id g19sm502656ljk.125.2020.09.01.14.11.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2020 14:11:31 -0700 (PDT) From: Dmitry Osipenko To: Thierry Reding , Jonathan Hunter , Laxman Dewangan , Wolfram Sang Cc: linux-i2c@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 09/17] i2c: tegra: Clean up probe function Date: Wed, 2 Sep 2020 00:10:54 +0300 Message-Id: <20200901211102.11072-10-digetx@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200901211102.11072-1-digetx@gmail.com> References: <20200901211102.11072-1-digetx@gmail.com> MIME-Version: 1.0 Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org The driver's probe function code is difficult to read and follow. This patch splits probe function into several logical parts that are easy to work with. Signed-off-by: Dmitry Osipenko --- drivers/i2c/busses/i2c-tegra.c | 398 ++++++++++++++++++++------------- 1 file changed, 240 insertions(+), 158 deletions(-) diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c index a5d9e3ce6320..a8f6a32229c3 100644 --- a/drivers/i2c/busses/i2c-tegra.c +++ b/drivers/i2c/busses/i2c-tegra.c @@ -447,6 +447,9 @@ static int tegra_i2c_init_dma(struct tegra_i2c_dev *i2c_dev) i2c_dev->tx_dma_chan = chan; + i2c_dev->dma_buf_size = i2c_dev->adapter.quirks->max_write_len + + I2C_PACKET_HEADER_SIZE; + dma_buf = dma_alloc_coherent(i2c_dev->dev, i2c_dev->dma_buf_size, &dma_phys, GFP_KERNEL | __GFP_NOWARN); if (!dma_buf) { @@ -1417,19 +1420,27 @@ static u32 tegra_i2c_func(struct i2c_adapter *adap) return ret; } -static void tegra_i2c_parse_dt(struct tegra_i2c_dev *i2c_dev) +static int tegra_i2c_parse_dt(struct tegra_i2c_dev *i2c_dev) { struct device_node *np = i2c_dev->dev->of_node; + u32 bus_clk_rate = I2C_MAX_STANDARD_MODE_FREQ; bool multi_mode; - int ret; - ret = of_property_read_u32(np, "clock-frequency", - &i2c_dev->bus_clk_rate); - if (ret) - i2c_dev->bus_clk_rate = I2C_MAX_STANDARD_MODE_FREQ; /* default clock rate */ + of_property_read_u32(np, "clock-frequency", &bus_clk_rate); + i2c_dev->bus_clk_rate = bus_clk_rate; multi_mode = of_property_read_bool(np, "multi-master"); i2c_dev->is_multimaster_mode = multi_mode; + + i2c_dev->hw = of_device_get_match_data(i2c_dev->dev); + + if (of_device_is_compatible(np, "nvidia,tegra20-i2c-dvc")) + i2c_dev->is_dvc = true; + + if (of_device_is_compatible(np, "nvidia,tegra210-i2c-vi")) + i2c_dev->is_vi = true; + + return 0; } static const struct i2c_algorithm tegra_i2c_algo = { @@ -1644,221 +1655,292 @@ static const struct of_device_id tegra_i2c_of_match[] = { }; MODULE_DEVICE_TABLE(of, tegra_i2c_of_match); -static int tegra_i2c_probe(struct platform_device *pdev) +static int tegra_i2c_init_resources(struct tegra_i2c_dev *i2c_dev, + struct platform_device *pdev) { - struct clk *div_clk, *fast_clk, *slow_clk; - struct device *dev = &pdev->dev; - struct tegra_i2c_dev *i2c_dev; - phys_addr_t base_phys; struct resource *res; - void __iomem *base; - int irq, ret; res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - base_phys = res->start; - base = devm_ioremap_resource(&pdev->dev, res); - if (IS_ERR(base)) - return PTR_ERR(base); - - res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); - if (!res) { - dev_err(dev, "no irq resource\n"); + if (WARN_ON(!res)) return -EINVAL; - } - irq = res->start; - div_clk = devm_clk_get(&pdev->dev, "div-clk"); - if (IS_ERR(div_clk)) - return dev_err_probe(&pdev->dev, PTR_ERR(div_clk), - "failed to get div-clk\n"); + i2c_dev->base_phys = res->start; - i2c_dev = devm_kzalloc(&pdev->dev, sizeof(*i2c_dev), GFP_KERNEL); - if (!i2c_dev) - return -ENOMEM; + i2c_dev->base = devm_ioremap_resource(i2c_dev->dev, res); + if (IS_ERR(i2c_dev->base)) + return PTR_ERR(i2c_dev->base); - i2c_dev->base = base; - i2c_dev->base_phys = base_phys; - i2c_dev->div_clk = div_clk; - i2c_dev->adapter.algo = &tegra_i2c_algo; - i2c_dev->adapter.retries = 1; - i2c_dev->adapter.timeout = 6 * HZ; - i2c_dev->irq = irq; - i2c_dev->cont_id = pdev->id; - i2c_dev->dev = &pdev->dev; + res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); + if (WARN_ON(!res)) + return -EINVAL; - i2c_dev->rst = devm_reset_control_get_exclusive(&pdev->dev, "i2c"); - if (IS_ERR(i2c_dev->rst)) { - dev_err(dev, "failed to get reset control: %pe\n", - i2c_dev->rst); + i2c_dev->irq = res->start; - return PTR_ERR(i2c_dev->rst); - } + return 0; +} - tegra_i2c_parse_dt(i2c_dev); +static int tegra_i2c_init_clocks(struct tegra_i2c_dev *i2c_dev) +{ + const struct tegra_i2c_hw_feature *hw = i2c_dev->hw; + struct device *dev = i2c_dev->dev; + struct clk *clk; + int err, mode; + + clk = devm_clk_get(dev, "div-clk"); + if (IS_ERR(clk)) + return dev_err_probe(dev, PTR_ERR(clk), + "failed to get div-clk\n"); - i2c_dev->hw = of_device_get_match_data(&pdev->dev); - i2c_dev->is_dvc = of_device_is_compatible(pdev->dev.of_node, - "nvidia,tegra20-i2c-dvc"); - i2c_dev->is_vi = of_device_is_compatible(dev->of_node, - "nvidia,tegra210-i2c-vi"); - i2c_dev->adapter.quirks = i2c_dev->hw->quirks; - i2c_dev->dma_buf_size = i2c_dev->adapter.quirks->max_write_len + - I2C_PACKET_HEADER_SIZE; - init_completion(&i2c_dev->msg_complete); - init_completion(&i2c_dev->dma_complete); + i2c_dev->div_clk = clk; - if (!i2c_dev->hw->has_single_clk_source) { - fast_clk = devm_clk_get(&pdev->dev, "fast-clk"); - if (IS_ERR(fast_clk)) - return dev_err_probe(&pdev->dev, PTR_ERR(fast_clk), - "failed to get fast clock\n"); + if (!hw->has_single_clk_source) { + clk = devm_clk_get(dev, "fast-clk"); + if (IS_ERR(clk)) + return dev_err_probe(dev, PTR_ERR(clk), + "failed to get fast-clk\n"); - i2c_dev->fast_clk = fast_clk; + i2c_dev->fast_clk = clk; } if (i2c_dev->is_vi) { - slow_clk = devm_clk_get(dev, "slow"); - if (IS_ERR(slow_clk)) - return dev_err_probe(&pdev->dev, PTR_ERR(slow_clk), - "failed to get slow clock\n"); + clk = devm_clk_get(dev, "slow"); + if (IS_ERR(clk)) + return dev_err_probe(dev, PTR_ERR(clk), + "failed to get slow clk\n"); - i2c_dev->slow_clk = slow_clk; + i2c_dev->slow_clk = clk; } - platform_set_drvdata(pdev, i2c_dev); - - ret = clk_prepare(i2c_dev->fast_clk); - if (ret < 0) { - dev_err(dev, "failed to prepare fast clock: %d\n", ret); - return ret; + err = clk_prepare(i2c_dev->fast_clk); + if (err) { + dev_err(dev, "failed to prepare fast clk: %d\n", err); + return err; } - ret = clk_prepare(i2c_dev->slow_clk); - if (ret < 0) { - dev_err(dev, "failed to prepare slow clock: %d\n", ret); + err = clk_prepare(i2c_dev->slow_clk); + if (err) { + dev_err(dev, "failed to prepare slow clk: %d\n", err); goto unprepare_fast_clk; } - if (i2c_dev->bus_clk_rate > I2C_MAX_FAST_MODE_FREQ && - i2c_dev->bus_clk_rate <= I2C_MAX_FAST_MODE_PLUS_FREQ) - i2c_dev->clk_divisor_non_hs_mode = - i2c_dev->hw->clk_divisor_fast_plus_mode; - else if (i2c_dev->bus_clk_rate > I2C_MAX_STANDARD_MODE_FREQ && - i2c_dev->bus_clk_rate <= I2C_MAX_FAST_MODE_FREQ) - i2c_dev->clk_divisor_non_hs_mode = - i2c_dev->hw->clk_divisor_fast_mode; - else - i2c_dev->clk_divisor_non_hs_mode = - i2c_dev->hw->clk_divisor_std_mode; - - ret = clk_prepare(i2c_dev->div_clk); - if (ret < 0) { - dev_err(dev, "failed to prepare div-clk: %d\n", ret); + err = clk_prepare(i2c_dev->div_clk); + if (err) { + dev_err(dev, "failed to prepare div-clk: %d\n", err); goto unprepare_slow_clk; } - /* - * VI I2C is in VE power domain which is not always on and not - * an IRQ safe. So, IRQ safe device can't be attached to a non-IRQ - * safe domain as it prevents powering off the PM domain. - * Also, VI I2C device don't need to use runtime IRQ safe as it will - * not be used for atomic transfers. - */ - if (!i2c_dev->is_vi) - pm_runtime_irq_safe(&pdev->dev); - pm_runtime_enable(&pdev->dev); - ret = pm_runtime_get_sync(i2c_dev->dev); - if (ret < 0) { - dev_err(dev, "runtime resume failed\n"); - goto disable_rpm; - } - if (i2c_dev->is_multimaster_mode) { - ret = clk_enable(i2c_dev->div_clk); - if (ret < 0) { - dev_err(dev, "failed to enable div-clk: %d\n", ret); - goto put_rpm; + err = clk_enable(i2c_dev->div_clk); + if (err) { + dev_err(dev, "failed to enable div-clk: %d\n", err); + goto unprepare_div_clk; } } - if (i2c_dev->hw->supports_bus_clear) - i2c_dev->adapter.bus_recovery_info = &tegra_i2c_recovery_info; + switch (i2c_dev->bus_clk_rate) { + case I2C_MAX_FAST_MODE_FREQ ... I2C_MAX_FAST_MODE_PLUS_FREQ: + mode = hw->clk_divisor_fast_plus_mode; + break; - ret = tegra_i2c_init_dma(i2c_dev); - if (ret < 0) - goto disable_div_clk; + case I2C_MAX_STANDARD_MODE_FREQ ... I2C_MAX_FAST_MODE_FREQ - 1: + mode = hw->clk_divisor_fast_mode; + break; - ret = tegra_i2c_init(i2c_dev, false); - if (ret) { - dev_err(dev, "failed to initialize i2c controller\n"); - goto release_dma; + default: + mode = hw->clk_divisor_std_mode; + break; } - irq_set_status_flags(i2c_dev->irq, IRQ_NOAUTOEN); + i2c_dev->clk_divisor_non_hs_mode = mode; - ret = devm_request_irq(&pdev->dev, i2c_dev->irq, tegra_i2c_isr, - IRQF_NO_SUSPEND, dev_name(&pdev->dev), i2c_dev); - if (ret) { - dev_err(dev, "failed to request irq %i\n", i2c_dev->irq); - goto release_dma; + return 0; + +unprepare_div_clk: + clk_unprepare(i2c_dev->div_clk); +unprepare_slow_clk: + clk_unprepare(i2c_dev->slow_clk); +unprepare_fast_clk: + clk_unprepare(i2c_dev->fast_clk); + + return err; +} + +static void tegra_i2c_release_clocks(struct tegra_i2c_dev *i2c_dev) +{ + if (i2c_dev->is_multimaster_mode) + clk_disable(i2c_dev->div_clk); + + clk_unprepare(i2c_dev->div_clk); + clk_unprepare(i2c_dev->slow_clk); + clk_unprepare(i2c_dev->fast_clk); +} + +static int tegra_i2c_init_reset_control(struct tegra_i2c_dev *i2c_dev) +{ + struct device *dev = i2c_dev->dev; + struct reset_control *rst; + + rst = devm_reset_control_get_exclusive(dev, "i2c"); + if (IS_ERR(rst)) { + dev_err(dev, "failed to get reset control: %pe\n", rst); + return PTR_ERR(rst); } - i2c_set_adapdata(&i2c_dev->adapter, i2c_dev); + i2c_dev->rst = rst; + + return 0; +} + +static int tegra_i2c_init_adapter(struct tegra_i2c_dev *i2c_dev) +{ + i2c_dev->adapter.dev.of_node = i2c_dev->dev->of_node; + i2c_dev->adapter.dev.parent = i2c_dev->dev; + i2c_dev->adapter.retries = 1; + i2c_dev->adapter.timeout = 6 * HZ; + i2c_dev->adapter.quirks = i2c_dev->hw->quirks; i2c_dev->adapter.owner = THIS_MODULE; i2c_dev->adapter.class = I2C_CLASS_DEPRECATED; - strlcpy(i2c_dev->adapter.name, dev_name(&pdev->dev), + i2c_dev->adapter.algo = &tegra_i2c_algo; + i2c_dev->adapter.nr = i2c_dev->cont_id; + + if (i2c_dev->hw->supports_bus_clear) + i2c_dev->adapter.bus_recovery_info = &tegra_i2c_recovery_info; + + strlcpy(i2c_dev->adapter.name, dev_name(i2c_dev->dev), sizeof(i2c_dev->adapter.name)); - i2c_dev->adapter.dev.parent = &pdev->dev; - i2c_dev->adapter.nr = pdev->id; - i2c_dev->adapter.dev.of_node = pdev->dev.of_node; - ret = i2c_add_numbered_adapter(&i2c_dev->adapter); - if (ret) - goto release_dma; + i2c_set_adapdata(&i2c_dev->adapter, i2c_dev); - pm_runtime_put(&pdev->dev); + return 0; +} + +static int tegra_i2c_init_runtime_pm(struct tegra_i2c_dev *i2c_dev) +{ + /* + * VI I2C is in VE power domain which is not always ON and not + * IRQ-safe. Thus, IRQ-safe device shouldn't be attached to a + * non IRQ-safe domain because this prevents powering off the power + * domain. + * + * VI I2C device shouldn't be marked as IRQ-safe because VI I2C won't + * be used for atomic transfers. + */ + if (!i2c_dev->is_vi) + pm_runtime_irq_safe(i2c_dev->dev); + + pm_runtime_enable(i2c_dev->dev); return 0; +} -release_dma: - tegra_i2c_release_dma(i2c_dev); +static void tegra_i2c_release_runtime_pm(struct tegra_i2c_dev *i2c_dev) +{ + pm_runtime_disable(i2c_dev->dev); +} -disable_div_clk: - if (i2c_dev->is_multimaster_mode) - clk_disable(i2c_dev->div_clk); +static int tegra_i2c_init_interrupt(struct tegra_i2c_dev *i2c_dev) +{ + irq_set_status_flags(i2c_dev->irq, IRQ_NOAUTOEN); -put_rpm: - pm_runtime_put_sync(&pdev->dev); + return devm_request_irq(i2c_dev->dev, i2c_dev->irq, tegra_i2c_isr, + IRQF_NO_SUSPEND, dev_name(i2c_dev->dev), + i2c_dev); +} -disable_rpm: - pm_runtime_disable(&pdev->dev); - clk_unprepare(i2c_dev->div_clk); +static int tegra_i2c_init_hardware(struct tegra_i2c_dev *i2c_dev) +{ + int ret; -unprepare_slow_clk: - clk_unprepare(i2c_dev->slow_clk); + ret = pm_runtime_get_sync(i2c_dev->dev); + if (ret < 0) { + dev_err(i2c_dev->dev, "runtime resume failed: %d\n", ret); + return ret; + } -unprepare_fast_clk: - clk_unprepare(i2c_dev->fast_clk); + ret = tegra_i2c_init(i2c_dev, false); + pm_runtime_put(i2c_dev->dev); return ret; } -static int tegra_i2c_remove(struct platform_device *pdev) +static int tegra_i2c_probe(struct platform_device *pdev) { - struct tegra_i2c_dev *i2c_dev = platform_get_drvdata(pdev); + struct tegra_i2c_dev *i2c_dev; + int err; - i2c_del_adapter(&i2c_dev->adapter); + i2c_dev = devm_kzalloc(&pdev->dev, sizeof(*i2c_dev), GFP_KERNEL); + if (!i2c_dev) + return -ENOMEM; - if (i2c_dev->is_multimaster_mode) - clk_disable(i2c_dev->div_clk); + platform_set_drvdata(pdev, i2c_dev); - pm_runtime_disable(&pdev->dev); + init_completion(&i2c_dev->msg_complete); + init_completion(&i2c_dev->dma_complete); - clk_unprepare(i2c_dev->div_clk); - clk_unprepare(i2c_dev->slow_clk); - clk_unprepare(i2c_dev->fast_clk); + i2c_dev->cont_id = pdev->id; + i2c_dev->dev = &pdev->dev; + + err = tegra_i2c_parse_dt(i2c_dev); + if (err) + return err; + + err = tegra_i2c_init_resources(i2c_dev, pdev); + if (err) + return err; + + err = tegra_i2c_init_adapter(i2c_dev); + if (err) + return err; + + err = tegra_i2c_init_reset_control(i2c_dev); + if (err) + return err; + + err = tegra_i2c_init_interrupt(i2c_dev); + if (err) + return err; + + err = tegra_i2c_init_clocks(i2c_dev); + if (err) + return err; + + err = tegra_i2c_init_runtime_pm(i2c_dev); + if (err) + goto release_clocks; + + err = tegra_i2c_init_dma(i2c_dev); + if (err) + goto release_rpm; + + err = tegra_i2c_init_hardware(i2c_dev); + if (err) + goto release_dma; + + err = i2c_add_numbered_adapter(&i2c_dev->adapter); + if (err) + goto release_dma; + + return 0; + +release_dma: + tegra_i2c_release_dma(i2c_dev); +release_rpm: + tegra_i2c_release_runtime_pm(i2c_dev); +release_clocks: + tegra_i2c_release_clocks(i2c_dev); + + return err; +} + +static int tegra_i2c_remove(struct platform_device *pdev) +{ + struct tegra_i2c_dev *i2c_dev = platform_get_drvdata(pdev); + + i2c_del_adapter(&i2c_dev->adapter); tegra_i2c_release_dma(i2c_dev); + tegra_i2c_release_runtime_pm(i2c_dev); + tegra_i2c_release_clocks(i2c_dev); return 0; } From patchwork Tue Sep 1 21:10:55 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 1355384 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=emqPFT9M; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4Bh0CJ6WJmz9sTp for ; Wed, 2 Sep 2020 07:12:44 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729676AbgIAVMm (ORCPT ); Tue, 1 Sep 2020 17:12:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50566 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729020AbgIAVLf (ORCPT ); Tue, 1 Sep 2020 17:11:35 -0400 Received: from mail-lj1-x241.google.com (mail-lj1-x241.google.com [IPv6:2a00:1450:4864:20::241]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 905AAC061245; Tue, 1 Sep 2020 14:11:34 -0700 (PDT) Received: by mail-lj1-x241.google.com with SMTP id a15so3304638ljk.2; Tue, 01 Sep 2020 14:11:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=dET0JzECK8CtHPygKgo78u1ZJ6NkxyMLuHDUClj7AMw=; b=emqPFT9MZ5MzoPt8KRw6cJRwm8IdQLrD8XVObCdwoSG5Vyvi37g1xOqN4IPqhztt3l D43G9faSazCJpjfwoJEoJHamI4PLUjw/C5wMqr7Ux5UtEnb644RRWDwtpp46KJDhOgmu MJFRoBeJC3cxo2P9s0QA0FPEY+VLLaIzaN86Arn1sQBb4tgqDD4w0kyhVeWJGSmFgI2k h/wBHVb6FWc7VsZxWTae7y6WXCD4+dvmNpiByyJz1xu7U35OkxuuO9bBWDM/EtfXe4c9 5HYIZrTsOyhUJKpfh190S55sTmc2izRHMSHXz8IvtlJhdeVOqzfKf1YKPoG6zDoI7EIj UErw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=dET0JzECK8CtHPygKgo78u1ZJ6NkxyMLuHDUClj7AMw=; b=esmU7tOk8SyM3D9oFOIoWaydu6zlO7vLuXNhjyF6vfWH09+DGVmwpNtskdULxo5zXL 8HHTGP829BbzgwyXalRBCQzAb+pHdam8X+1XmbPwu5++jlVVdJEOKJAcgTThrWqClBTN nsCnLnXtM/PHTw0spiv3EbJoOKGJOe4kZ2mfi3/XMCyrBW9ez2cmBgk0WnV537JWuqw8 364GjjUUeTOxgh7dGsLdiVNLorge6LZKbjidf+0xlywriwLsepPiP2TCin/f4uwntt0X osRDDmsJp3uQjf0yMMvoGnnN10P97zlvwzSYdA3j7gteT5biXwEq/wm7FyMBgjlFP6c6 zEMg== X-Gm-Message-State: AOAM531CQPgF7Y+KnF+PIGHtn/kZqIH2MJTRxzKoAD9vkDh9LclHQ5WC /5xVl81SdwjygY1mSJ7DZps= X-Google-Smtp-Source: ABdhPJy6W6tslvIXa1o3bxUn0pHlnGL2jL0VLYc9Z5KOGszJy+ZWWZwet8jlxqthDLECxxBkFOB1tw== X-Received: by 2002:a05:651c:552:: with SMTP id q18mr1539028ljp.248.1598994693060; Tue, 01 Sep 2020 14:11:33 -0700 (PDT) Received: from localhost.localdomain (109-252-170-211.dynamic.spd-mgts.ru. [109.252.170.211]) by smtp.gmail.com with ESMTPSA id g19sm502656ljk.125.2020.09.01.14.11.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2020 14:11:32 -0700 (PDT) From: Dmitry Osipenko To: Thierry Reding , Jonathan Hunter , Laxman Dewangan , Wolfram Sang Cc: linux-i2c@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 10/17] i2c: tegra: Drop '_timeout' from wait/poll function names Date: Wed, 2 Sep 2020 00:10:55 +0300 Message-Id: <20200901211102.11072-11-digetx@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200901211102.11072-1-digetx@gmail.com> References: <20200901211102.11072-1-digetx@gmail.com> MIME-Version: 1.0 Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org Drop '_timeout' postfix from the wait/poll completion function names in order to make the names shorter, making code cleaner a tad. Signed-off-by: Dmitry Osipenko --- drivers/i2c/busses/i2c-tegra.c | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c index a8f6a32229c3..3d6189e200ba 100644 --- a/drivers/i2c/busses/i2c-tegra.c +++ b/drivers/i2c/busses/i2c-tegra.c @@ -1067,10 +1067,9 @@ static void tegra_i2c_config_fifo_trig(struct tegra_i2c_dev *i2c_dev, i2c_writel(i2c_dev, val, reg); } -static unsigned long -tegra_i2c_poll_completion_timeout(struct tegra_i2c_dev *i2c_dev, - struct completion *complete, - unsigned int timeout_ms) +static unsigned long tegra_i2c_poll_completion(struct tegra_i2c_dev *i2c_dev, + struct completion *complete, + unsigned int timeout_ms) { ktime_t ktime = ktime_get(); ktime_t ktimeout = ktime_add_ms(ktime, timeout_ms); @@ -1094,16 +1093,14 @@ tegra_i2c_poll_completion_timeout(struct tegra_i2c_dev *i2c_dev, return 0; } -static unsigned long -tegra_i2c_wait_completion_timeout(struct tegra_i2c_dev *i2c_dev, - struct completion *complete, - unsigned int timeout_ms) +static unsigned long tegra_i2c_wait_completion(struct tegra_i2c_dev *i2c_dev, + struct completion *complete, + unsigned int timeout_ms) { unsigned long ret; if (i2c_dev->is_curr_atomic_xfer) { - ret = tegra_i2c_poll_completion_timeout(i2c_dev, complete, - timeout_ms); + ret = tegra_i2c_poll_completion(i2c_dev, complete, timeout_ms); } else { enable_irq(i2c_dev->irq); ret = wait_for_completion_timeout(complete, @@ -1121,8 +1118,7 @@ tegra_i2c_wait_completion_timeout(struct tegra_i2c_dev *i2c_dev, * needs to be checked after timeout. */ if (ret == 0) - ret = tegra_i2c_poll_completion_timeout(i2c_dev, - complete, 0); + ret = tegra_i2c_poll_completion(i2c_dev, complete, 0); } return ret; @@ -1149,8 +1145,8 @@ static int tegra_i2c_issue_bus_clear(struct i2c_adapter *adap) i2c_writel(i2c_dev, reg, I2C_BUS_CLEAR_CNFG); tegra_i2c_unmask_irq(i2c_dev, I2C_INT_BUS_CLR_DONE); - time_left = tegra_i2c_wait_completion_timeout( - i2c_dev, &i2c_dev->msg_complete, 50); + time_left = tegra_i2c_wait_completion(i2c_dev, &i2c_dev->msg_complete, + 50); if (time_left == 0) { dev_err(i2c_dev->dev, "timed out for bus clear\n"); return -ETIMEDOUT; @@ -1296,8 +1292,9 @@ static int tegra_i2c_xfer_msg(struct tegra_i2c_dev *i2c_dev, i2c_readl(i2c_dev, I2C_INT_MASK)); if (dma) { - time_left = tegra_i2c_wait_completion_timeout( - i2c_dev, &i2c_dev->dma_complete, xfer_time); + time_left = tegra_i2c_wait_completion(i2c_dev, + &i2c_dev->dma_complete, + xfer_time); /* * Synchronize DMA first, since dmaengine_terminate_sync() @@ -1328,8 +1325,8 @@ static int tegra_i2c_xfer_msg(struct tegra_i2c_dev *i2c_dev, } } - time_left = tegra_i2c_wait_completion_timeout( - i2c_dev, &i2c_dev->msg_complete, xfer_time); + time_left = tegra_i2c_wait_completion(i2c_dev, &i2c_dev->msg_complete, + xfer_time); tegra_i2c_mask_irq(i2c_dev, int_mask); From patchwork Tue Sep 1 21:10:56 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 1355371 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=YM54XCY/; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4Bh0BG6Cdyz9sPB for ; Wed, 2 Sep 2020 07:11:50 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729183AbgIAVLp (ORCPT ); Tue, 1 Sep 2020 17:11:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50572 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728843AbgIAVLg (ORCPT ); Tue, 1 Sep 2020 17:11:36 -0400 Received: from mail-lj1-x241.google.com (mail-lj1-x241.google.com [IPv6:2a00:1450:4864:20::241]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8038BC061247; Tue, 1 Sep 2020 14:11:35 -0700 (PDT) Received: by mail-lj1-x241.google.com with SMTP id w14so3293559ljj.4; Tue, 01 Sep 2020 14:11:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=PE+51mzkRfodkBHluZb3ZpTwH4zdJTxXbM6Sc21BBt8=; b=YM54XCY/NWq5AUZM9UIBbqtJfLQlF3oW+xLX52tBPf7FuzZZEGJa0ITjVNnneQeZfj mIRCCUMonJWoLi/cSrFQSuLwbovj6U8Po/cPDDRacG5uQURjNxJSea6yXWyTjmWeo+U6 8RsSgw94hQXPurif3rZC9AXvNNS4SnVYj1anxwmiH1eSpwx41DJhpd1UEEW7fWV237R8 51LbYtJ6dKQWleQRkg3xirrJCCr3JlIYvhZkOCTvywsw58J7aBDhIUqK9HJuZ9p6PDV+ DxyDsgsuZ23Rn7xANGEfsrqNfnsV4io4U/5dPTaNZXbrxYF0TA/du8qtAY1mUQgsn9Ri 9yNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=PE+51mzkRfodkBHluZb3ZpTwH4zdJTxXbM6Sc21BBt8=; b=DLxB2iJRLP8zzhdNg9gWlodieRdmSRLi4HyfmloCJ4l2BWd8nAnCNBw/M/MgRE6xnx PhLpPTXl6WmL7ZKH9CvCnr50hfa+KY+MobBieJ7ihoNL3MrqFkVt6t6kSiAgwYVMBaRP WVKHMq+PFb1pWC49xrKptFhSbL7IBi6cw1UWWbu4RKI4jsO2ZHYddlJUKJwBY0HivrRL DfYrB4wtL7RL4kp2GO4nP24PCeB6eOJPxSxoZOUiyLNmBv1Y6X+RaEpfSAgoPh+tBfCy S2zry8P21O4Iaic94l+v2OTJZygm6R+I60OLR6BjKrxLHDCJzSpg3czxmZWMY5DubwYq BZAA== X-Gm-Message-State: AOAM533IGiuU28W7S5/Gyh/XXbXwrQ8wYJXLouPy64cQIhVxHCx1pEHt btJBMnh4Yva+iuefSHWlcc4= X-Google-Smtp-Source: ABdhPJwBi0QGvhGpUn7aOD1FWvMtn5SZDy/E5hSlsAQitcdpFwiegQrO4PNHxfM7NjK2yKimCOO+5g== X-Received: by 2002:a2e:88da:: with SMTP id a26mr1672597ljk.366.1598994693991; Tue, 01 Sep 2020 14:11:33 -0700 (PDT) Received: from localhost.localdomain (109-252-170-211.dynamic.spd-mgts.ru. [109.252.170.211]) by smtp.gmail.com with ESMTPSA id g19sm502656ljk.125.2020.09.01.14.11.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2020 14:11:33 -0700 (PDT) From: Dmitry Osipenko To: Thierry Reding , Jonathan Hunter , Laxman Dewangan , Wolfram Sang Cc: linux-i2c@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 11/17] i2c: tegra: Remove likely/unlikely from the code Date: Wed, 2 Sep 2020 00:10:56 +0300 Message-Id: <20200901211102.11072-12-digetx@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200901211102.11072-1-digetx@gmail.com> References: <20200901211102.11072-1-digetx@gmail.com> MIME-Version: 1.0 Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org The likely/unlikely annotations should be used only in a hot paths of performance-critical code. The I2C driver doesn't have such paths, and thus, there is no justification for usage of likely/unlikely annotations in the code. Hence remove them. Signed-off-by: Dmitry Osipenko --- drivers/i2c/busses/i2c-tegra.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c index 3d6189e200ba..300a6576ff94 100644 --- a/drivers/i2c/busses/i2c-tegra.c +++ b/drivers/i2c/busses/i2c-tegra.c @@ -911,7 +911,7 @@ static irqreturn_t tegra_i2c_isr(int irq, void *dev_id) goto err; } - if (unlikely(status & status_err)) { + if (status & status_err) { tegra_i2c_disable_packet_mode(i2c_dev); if (status & I2C_INT_NO_ACK) i2c_dev->msg_err |= I2C_ERR_NO_ACK; @@ -1341,7 +1341,7 @@ static int tegra_i2c_xfer_msg(struct tegra_i2c_dev *i2c_dev, i2c_dev->msg_err); i2c_dev->is_curr_dma_xfer = false; - if (likely(i2c_dev->msg_err == I2C_ERR_NONE)) + if (i2c_dev->msg_err == I2C_ERR_NONE) return 0; tegra_i2c_init(i2c_dev, true); From patchwork Tue Sep 1 21:10:57 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 1355373 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=QTg2THme; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4Bh0BM5typz9sPB for ; Wed, 2 Sep 2020 07:11:55 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729188AbgIAVLp (ORCPT ); Tue, 1 Sep 2020 17:11:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50574 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729031AbgIAVLh (ORCPT ); Tue, 1 Sep 2020 17:11:37 -0400 Received: from mail-lj1-x242.google.com (mail-lj1-x242.google.com [IPv6:2a00:1450:4864:20::242]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 72D4CC06124F; Tue, 1 Sep 2020 14:11:36 -0700 (PDT) Received: by mail-lj1-x242.google.com with SMTP id e11so3290805ljn.6; Tue, 01 Sep 2020 14:11:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Mv0yu222OJEMYIiqJ/vthowt2F9JGEiQsw/LQHLwEgU=; b=QTg2THmeoUlgLmN2bUFlxtuRYygcEYwmCBodh19ykmXbOmO5yHg1erdhsTzfAps6gz i3a/3R//kPQHxRUgYYiyZh712dlikYjoIs7KF6hsVRTMx/t9D47R9NFGuT2J7YlOjN53 suPt3NC5kDEUUW5l1hOBv+6Sq7j2RvhFeV95nCeeOEBG10jpQPBOxXHAisUHRWRQmpNe 2mOfLiSC+Rw6ppp1irXImXhp0EZCPOZZF327XX/LINebF5smm43ZJDsD2SBWYjhcGupM G5SDcLU6RqrxS+HXnROqQw76smufy+OVb404JecWIwasWXqod5cdVuYDf8OBmu4iNFLF 0eqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Mv0yu222OJEMYIiqJ/vthowt2F9JGEiQsw/LQHLwEgU=; b=dow4gB0vhpXhm8Xx9vCYwxl2Qmqu5HhyXH7zwtalkQVmVWw7hqAx9I9t+RjgmaA2uL KLPBwlDXUZITcuE2CgyqHhF/UKkM29VJxzSWNRz2ABYExlYn676Smp+khStLR545OmcR fzozVV46wp8VqOxNSHYzPT2BbkQ2U6bPiveRjSoaUFCI8TW/urts1k1wNXr6K3fVWOvq 22aD7LymvA9cMQzeJXB9bwTndg871l36mTzAWtD8O8GmwUWeq4aJ+tJdGs+CwhVchjfq zK1+8RmY7ecFcOXGEfm0+fkeV3sZHThHk6ubtgYaFXqMW2dSigCe7SzRzSU90dPSl2Br VNVg== X-Gm-Message-State: AOAM530VfFGy+GqWGqYD/y2JRgu5HLmQHiURwpfozVpxlQzk4yOXhyAs 0ZxOBegNFulHial49RQaZOU= X-Google-Smtp-Source: ABdhPJzKbRsQiqhofuzntiit4K/W8LLLu4HZ4/AGK1nSHBgPYR9TxloWk/j30Psz5j8PLCfQ6grRiQ== X-Received: by 2002:a2e:9185:: with SMTP id f5mr1515470ljg.394.1598994694927; Tue, 01 Sep 2020 14:11:34 -0700 (PDT) Received: from localhost.localdomain (109-252-170-211.dynamic.spd-mgts.ru. [109.252.170.211]) by smtp.gmail.com with ESMTPSA id g19sm502656ljk.125.2020.09.01.14.11.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2020 14:11:34 -0700 (PDT) From: Dmitry Osipenko To: Thierry Reding , Jonathan Hunter , Laxman Dewangan , Wolfram Sang Cc: linux-i2c@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 12/17] i2c: tegra: Factor out error recovery from tegra_i2c_xfer_msg() Date: Wed, 2 Sep 2020 00:10:57 +0300 Message-Id: <20200901211102.11072-13-digetx@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200901211102.11072-1-digetx@gmail.com> References: <20200901211102.11072-1-digetx@gmail.com> MIME-Version: 1.0 Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org Factor out error recovery code from tegra_i2c_xfer_msg() in order to make this function easier to read and follow. Signed-off-by: Dmitry Osipenko --- drivers/i2c/busses/i2c-tegra.c | 46 ++++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c index 300a6576ff94..bc891d4b41ad 100644 --- a/drivers/i2c/busses/i2c-tegra.c +++ b/drivers/i2c/busses/i2c-tegra.c @@ -1161,6 +1161,32 @@ static int tegra_i2c_issue_bus_clear(struct i2c_adapter *adap) return -EAGAIN; } +static int tegra_i2c_error_recover(struct tegra_i2c_dev *i2c_dev, + struct i2c_msg *msg) +{ + if (i2c_dev->msg_err == I2C_ERR_NONE) + return 0; + + tegra_i2c_init(i2c_dev, true); + + /* start recovery upon arbitration loss in single master mode */ + if (i2c_dev->msg_err == I2C_ERR_ARBITRATION_LOST) { + if (!i2c_dev->is_multimaster_mode) + return i2c_recover_bus(&i2c_dev->adapter); + + return -EAGAIN; + } + + if (i2c_dev->msg_err == I2C_ERR_NO_ACK) { + if (msg->flags & I2C_M_IGNORE_NAK) + return 0; + + return -EREMOTEIO; + } + + return -EIO; +} + static int tegra_i2c_xfer_msg(struct tegra_i2c_dev *i2c_dev, struct i2c_msg *msg, enum msg_end_type end_state) @@ -1341,24 +1367,12 @@ static int tegra_i2c_xfer_msg(struct tegra_i2c_dev *i2c_dev, i2c_dev->msg_err); i2c_dev->is_curr_dma_xfer = false; - if (i2c_dev->msg_err == I2C_ERR_NONE) - return 0; - tegra_i2c_init(i2c_dev, true); - /* start recovery upon arbitration loss in single master mode */ - if (i2c_dev->msg_err == I2C_ERR_ARBITRATION_LOST) { - if (!i2c_dev->is_multimaster_mode) - return i2c_recover_bus(&i2c_dev->adapter); - return -EAGAIN; - } - - if (i2c_dev->msg_err == I2C_ERR_NO_ACK) { - if (msg->flags & I2C_M_IGNORE_NAK) - return 0; - return -EREMOTEIO; - } + err = tegra_i2c_error_recover(i2c_dev, msg); + if (err) + return err; - return -EIO; + return 0; } static int tegra_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], From patchwork Tue Sep 1 21:10:58 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 1355383 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=fiPCEwrX; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4Bh0CJ0ltHz9sSP for ; Wed, 2 Sep 2020 07:12:44 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729659AbgIAVMl (ORCPT ); Tue, 1 Sep 2020 17:12:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50544 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729039AbgIAVLh (ORCPT ); Tue, 1 Sep 2020 17:11:37 -0400 Received: from mail-lj1-x243.google.com (mail-lj1-x243.google.com [IPv6:2a00:1450:4864:20::243]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 61DB7C061246; Tue, 1 Sep 2020 14:11:37 -0700 (PDT) Received: by mail-lj1-x243.google.com with SMTP id v12so3273115ljc.10; Tue, 01 Sep 2020 14:11:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=BFRnoOZ6XZak8+RaE/bfJzD46w7iNGKhaqsvbF27kaM=; b=fiPCEwrXN2oOGrzQ8OnuQRA9X2LvP0HXIqq5o9JIat/OLR3aef0MKjFXbAQ04NBJXs 5qeGJio6otdCBPOBsZlHqWatsuQsIBW5REhZi6Mi/OH9/JLjtIi8l4w0FpW3ajtaK1rf OnXj85CS1X8rT3jo2lAP3APiUsGBABOi57ocjcM9yOjaePhCMU9c+7jEg5gvZMxVPt/O 67TINVm6TI+WpYi0Uu+tGp/FcBSqerLhyLZXOEuggEdlD7zxwpLFXDWnv0zH4i4uHGt/ pv7/KvnP8VRoDutrmqNtoARuu/j8ekdwW27Zo2/CUUKYy/95fe3aQfGwwVWCSQWySy6o skrQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=BFRnoOZ6XZak8+RaE/bfJzD46w7iNGKhaqsvbF27kaM=; b=bwp7KI/ppIJBvn3Ib/J7JsM5tf1swCUV7RciD65YR6BeGihsr2GIOf236lGj5S/icQ NX8ZfZzH9Wqz+2l7KbIQ56gYpEwRAo+VHLEgduIKNumMjUq5K46naj/rFHoxX/Yrh3lA 6Xr59zxRy0uioS+11tzfocEw8IrW9BE3YFPKqKYTLC/Asfd7OjBhb/gH6LilNIYUPl+S /kZbJbXMqPGy0pqN4KPAHjP3mzs+jWYS9ostlXB5SX88J+kxaLOa1ykluA3J5zzxck6B YBzmyU5xSlEOBxZ/hTB2s098Z7BKFHkGzDXM91Om1qurjWhmZVAH80pFBmK5KbM6Gwho +0Nw== X-Gm-Message-State: AOAM530YNQGjMNg026VFlcLnhaPJzIMr7vIP1rtYebjKCcg/ljG8elU+ 3gNyRNTGNwSAFcZmS0VdHZtTV+7AGDo= X-Google-Smtp-Source: ABdhPJzMi/7F3hBq1UzOEv5cKZjVTuSKXnrqJ5sabV1DHfgXNJKWQcMgvsej5ZabP2CD2eOJl3a+fQ== X-Received: by 2002:a2e:8346:: with SMTP id l6mr1522669ljh.202.1598994695818; Tue, 01 Sep 2020 14:11:35 -0700 (PDT) Received: from localhost.localdomain (109-252-170-211.dynamic.spd-mgts.ru. [109.252.170.211]) by smtp.gmail.com with ESMTPSA id g19sm502656ljk.125.2020.09.01.14.11.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2020 14:11:35 -0700 (PDT) From: Dmitry Osipenko To: Thierry Reding , Jonathan Hunter , Laxman Dewangan , Wolfram Sang Cc: linux-i2c@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 13/17] i2c: tegra: Check errors for both positive and negative values Date: Wed, 2 Sep 2020 00:10:58 +0300 Message-Id: <20200901211102.11072-14-digetx@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200901211102.11072-1-digetx@gmail.com> References: <20200901211102.11072-1-digetx@gmail.com> MIME-Version: 1.0 Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org The driver's code is inconsistent in regards to the error values checking. The correct way should be to check both positive and negative values. This patch cleans up the error-checks in the code. Note that the pm_runtime_get_sync() could return positive value on success, hence only relevant parts of the code are changed by this patch. Signed-off-by: Dmitry Osipenko --- drivers/i2c/busses/i2c-tegra.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c index bc891d4b41ad..9a807caef4a6 100644 --- a/drivers/i2c/busses/i2c-tegra.c +++ b/drivers/i2c/busses/i2c-tegra.c @@ -674,19 +674,19 @@ static int __maybe_unused tegra_i2c_runtime_resume(struct device *dev) return ret; ret = clk_enable(i2c_dev->fast_clk); - if (ret < 0) { + if (ret) { dev_err(dev, "failed to enable fast clock: %d\n", ret); return ret; } ret = clk_enable(i2c_dev->slow_clk); - if (ret < 0) { + if (ret) { dev_err(dev, "failed to enable slow clock: %d\n", ret); goto disable_fast_clk; } ret = clk_enable(i2c_dev->div_clk); - if (ret < 0) { + if (ret) { dev_err(dev, "failed to enable div clock: %d\n", ret); goto disable_slow_clk; } @@ -1047,7 +1047,7 @@ static void tegra_i2c_config_fifo_trig(struct tegra_i2c_dev *i2c_dev, slv_config.device_fc = true; ret = dmaengine_slave_config(chan, &slv_config); - if (ret < 0) { + if (ret) { dev_err(i2c_dev->dev, "dma config failed: %d\n", ret); dev_err(i2c_dev->dev, "falling back to PIO\n"); tegra_i2c_release_dma(i2c_dev); @@ -1235,7 +1235,7 @@ static int tegra_i2c_xfer_msg(struct tegra_i2c_dev *i2c_dev, xfer_size, DMA_FROM_DEVICE); err = tegra_i2c_dma_submit(i2c_dev, xfer_size); - if (err < 0) { + if (err) { dev_err(i2c_dev->dev, "starting rx dma failed: %d\n", err); return err; @@ -1294,7 +1294,7 @@ static int tegra_i2c_xfer_msg(struct tegra_i2c_dev *i2c_dev, xfer_size, DMA_TO_DEVICE); err = tegra_i2c_dma_submit(i2c_dev, xfer_size); - if (err < 0) { + if (err) { dev_err(i2c_dev->dev, "starting tx dma failed: %d\n", err); return err; From patchwork Tue Sep 1 21:10:59 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 1355377 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=BJ7x0G6W; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4Bh0Bz1svzz9sTm for ; Wed, 2 Sep 2020 07:12:27 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729514AbgIAVM0 (ORCPT ); Tue, 1 Sep 2020 17:12:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50542 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729052AbgIAVLj (ORCPT ); Tue, 1 Sep 2020 17:11:39 -0400 Received: from mail-lj1-x242.google.com (mail-lj1-x242.google.com [IPv6:2a00:1450:4864:20::242]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4E1F1C061251; Tue, 1 Sep 2020 14:11:38 -0700 (PDT) Received: by mail-lj1-x242.google.com with SMTP id w14so3293676ljj.4; Tue, 01 Sep 2020 14:11:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=omhBBLP5TS7dWR2SebTFFy89ZunnJTchedJHBVNNWDw=; b=BJ7x0G6WRm+xkWFNnOzrKW+C6+9zLA5Nc8Tlufc+DNHcYPzWf/SyvPwVFgTWt+2XVl 3Zc7wiHQQX4tsexrakpyAd1RQHPJrYmAB6IrDm6xAQZaPF6BHXuR6kny6dm8oczCwiz5 hjuR1KnS7fu3iBJAeGBS85ncnCkyXuLw/3GZiSzk906mv584hcJLllVTnmAHSdLZZ/ZV npnX8YJ3V8MSrEsOh/Y5bR8ZYsZcMQEOcHCNwTVKuhTlJc1q9vhUm8exwAEC/d35ZGLH xwbukPy8Ce/LdpyzQy5RkypbJPL4V0vGJ6asM30C/mHmwh3YSB7z2LllMNpwKcrp/2Zq Ci4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=omhBBLP5TS7dWR2SebTFFy89ZunnJTchedJHBVNNWDw=; b=ddfeoXmI+nodQk8PeN8oa1xK6RAGGGNYHc7uLHXDHPiyfXHDXevXBTDKb9MsJ+tjU8 3+P5ObkO0+bc61IN06F2xNDit2Gn7oCCYAa/8EiDhHrB0YA6Wr0dfUurVElq1tSB9daS BcJ7yRwW8wPxnqyBd3mH+3ljAQldge1vEffQAfBvvFizQ49BndO8kzAA5oyawJM9kQAN 4oml4L2ekON1Uw0EKKI0F7ombBt++ALtJxYuio59vavYDC76JfqklEHMtMgeX0BWdAc4 4dembxjsmBZEazOZ3QK3qUqwUYGPjPmxvwV7A8re5SsdZvLfMnf3SBqu7VO+Bq2lbW/f JNJA== X-Gm-Message-State: AOAM530UQz++7QGQjYFvm0aNqtsnqTyx/40zNIPuWFWR43W5foGZqTmK il2fx5+anUUUoipiY8MkFwg= X-Google-Smtp-Source: ABdhPJz7z+SHfCFZ09nRhDN4XlS/Qd31FKyxailLSioA3596ire62H5kaJpGCFTjZwo+F1y3iD2uKQ== X-Received: by 2002:a2e:8805:: with SMTP id x5mr1642074ljh.130.1598994696774; Tue, 01 Sep 2020 14:11:36 -0700 (PDT) Received: from localhost.localdomain (109-252-170-211.dynamic.spd-mgts.ru. [109.252.170.211]) by smtp.gmail.com with ESMTPSA id g19sm502656ljk.125.2020.09.01.14.11.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2020 14:11:36 -0700 (PDT) From: Dmitry Osipenko To: Thierry Reding , Jonathan Hunter , Laxman Dewangan , Wolfram Sang Cc: linux-i2c@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 14/17] i2c: tegra: Improve coding style of tegra_i2c_wait_for_config_load() Date: Wed, 2 Sep 2020 00:10:59 +0300 Message-Id: <20200901211102.11072-15-digetx@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200901211102.11072-1-digetx@gmail.com> References: <20200901211102.11072-1-digetx@gmail.com> MIME-Version: 1.0 Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org Improve coding style of the tegra_i2c_wait_for_config_load() function by making code a bit more narrow, adhering to the common kernel coding style. Signed-off-by: Dmitry Osipenko --- drivers/i2c/busses/i2c-tegra.c | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c index 9a807caef4a6..70691179f170 100644 --- a/drivers/i2c/busses/i2c-tegra.c +++ b/drivers/i2c/busses/i2c-tegra.c @@ -733,24 +733,23 @@ static int tegra_i2c_wait_for_config_load(struct tegra_i2c_dev *i2c_dev) u32 val; int err; - if (i2c_dev->hw->has_config_load_reg) { - reg_offset = tegra_i2c_reg_addr(i2c_dev, I2C_CONFIG_LOAD); - addr = i2c_dev->base + reg_offset; - i2c_writel(i2c_dev, I2C_MSTR_CONFIG_LOAD, I2C_CONFIG_LOAD); + if (!i2c_dev->hw->has_config_load_reg) + return 0; - if (i2c_dev->is_curr_atomic_xfer) - err = readl_relaxed_poll_timeout_atomic( - addr, val, val == 0, 1000, - I2C_CONFIG_LOAD_TIMEOUT); - else - err = readl_relaxed_poll_timeout( - addr, val, val == 0, 1000, - I2C_CONFIG_LOAD_TIMEOUT); + reg_offset = tegra_i2c_reg_addr(i2c_dev, I2C_CONFIG_LOAD); + addr = i2c_dev->base + reg_offset; + i2c_writel(i2c_dev, I2C_MSTR_CONFIG_LOAD, I2C_CONFIG_LOAD); - if (err) { - dev_err(i2c_dev->dev, "failed to load config\n"); - return err; - } + if (i2c_dev->is_curr_atomic_xfer) + err = readl_relaxed_poll_timeout_atomic(addr, val, val == 0, 1000, + I2C_CONFIG_LOAD_TIMEOUT); + else + err = readl_relaxed_poll_timeout(addr, val, val == 0, 1000, + I2C_CONFIG_LOAD_TIMEOUT); + + if (err) { + dev_err(i2c_dev->dev, "failed to load config\n"); + return err; } return 0; From patchwork Tue Sep 1 21:11:00 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 1355379 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=CKO27SUk; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4Bh0CD5vVPz9sTq for ; Wed, 2 Sep 2020 07:12:40 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729506AbgIAVM0 (ORCPT ); Tue, 1 Sep 2020 17:12:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50586 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729064AbgIAVLk (ORCPT ); Tue, 1 Sep 2020 17:11:40 -0400 Received: from mail-lj1-x242.google.com (mail-lj1-x242.google.com [IPv6:2a00:1450:4864:20::242]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 321E3C061249; Tue, 1 Sep 2020 14:11:39 -0700 (PDT) Received: by mail-lj1-x242.google.com with SMTP id v23so3303453ljd.1; Tue, 01 Sep 2020 14:11:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=IatbyruaBr7ZVBT4RiIWWB+zJJESjMXJ8GJDpXBSsnU=; b=CKO27SUkg+BYq+pN3KSibuwZtv/VwqiJQF0750cRmskuHl5cQdRFWvwGCv0SQoAvG/ 7a6M2281yunEy5TVnTrRa2Zx5C+GD/VBwBXTNoX+yF9ujgxZT8o8gY8qHxd9xn6Daiea 6+akDKgRpb09x/LY3WUUlv5hJ3eWCtph5XcHX//3fNA9SLa6d/xxfwha/ojS2dJHmeaz 0ls74hh6/N7Up1jZBgIwTc5G1BEYIRqDIn/6wx/Hnwb70ZkjjYU/x6aKfouba9fmfijw ac+fdBEshqYXfiOfMja2xCB32IbtbNXQx9LpCnkeQrmhWf4Y9HvdOEhnSoonndOeNXB7 /WeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=IatbyruaBr7ZVBT4RiIWWB+zJJESjMXJ8GJDpXBSsnU=; b=ihrloC9okWY3gHQoinwZatSH1/mb9eB/JIc9PjA+ZuH6VEvmxrvk5O15mgnwRJ6H1J 1qM2J86YDtIssL4fyTB39Ym9gNnI31EP6dtsMXpqfIYoQvI4J9khAdCyWTjaJMo9mdr6 +sxbXpl0LYSyXSXe24ogMQ2U9ouf7g94NZXAeQXtEm3TIs9GoaJ+r2NZGPHmNZTdYe8k qvUGSajF5hMYIkZmlmpuJyCKWNJcbIILIZS06v26IsH3IUk7HU31O7oyt/Xb7p25c1MH xhrL/ECrFrbQxG+ObpBgGAo2pBPf/cDt5hZdOzzfXO9fLPqhd2dXTd034wpgvtzpyeGJ dwvg== X-Gm-Message-State: AOAM533BkucNYaMiU5zKAyRwwSDyYnwisC/848/MKh94rO+mRf10mtei 3yyvXXwRocNInt5UdpvTRp8= X-Google-Smtp-Source: ABdhPJyX4rN70uekb7zWu1dM3PrnrmKNSTkWQlw3fh74qyfuuGNKqleI2p2rAl572LOpYanly+950A== X-Received: by 2002:a2e:9dd3:: with SMTP id x19mr1393967ljj.459.1598994697678; Tue, 01 Sep 2020 14:11:37 -0700 (PDT) Received: from localhost.localdomain (109-252-170-211.dynamic.spd-mgts.ru. [109.252.170.211]) by smtp.gmail.com with ESMTPSA id g19sm502656ljk.125.2020.09.01.14.11.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2020 14:11:37 -0700 (PDT) From: Dmitry Osipenko To: Thierry Reding , Jonathan Hunter , Laxman Dewangan , Wolfram Sang Cc: linux-i2c@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 15/17] i2c: tegra: Remove unnecessary whitespaces and newlines Date: Wed, 2 Sep 2020 00:11:00 +0300 Message-Id: <20200901211102.11072-16-digetx@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200901211102.11072-1-digetx@gmail.com> References: <20200901211102.11072-1-digetx@gmail.com> MIME-Version: 1.0 Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org Clean up couple places in the code by removing unnecessary whitespaces and newlines. Signed-off-by: Dmitry Osipenko --- drivers/i2c/busses/i2c-tegra.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c index 70691179f170..bdfccf055959 100644 --- a/drivers/i2c/busses/i2c-tegra.c +++ b/drivers/i2c/busses/i2c-tegra.c @@ -1345,8 +1345,7 @@ static int tegra_i2c_xfer_msg(struct tegra_i2c_dev *i2c_dev, i2c_dev->dma_phys, xfer_size, DMA_FROM_DEVICE); - memcpy(i2c_dev->msg_buf, i2c_dev->dma_buf, - msg->len); + memcpy(i2c_dev->msg_buf, i2c_dev->dma_buf, msg->len); } } @@ -2008,15 +2007,14 @@ static const struct dev_pm_ops tegra_i2c_pm = { }; static struct platform_driver tegra_i2c_driver = { - .probe = tegra_i2c_probe, - .remove = tegra_i2c_remove, - .driver = { - .name = "tegra-i2c", + .probe = tegra_i2c_probe, + .remove = tegra_i2c_remove, + .driver = { + .name = "tegra-i2c", .of_match_table = tegra_i2c_of_match, - .pm = &tegra_i2c_pm, + .pm = &tegra_i2c_pm, }, }; - module_platform_driver(tegra_i2c_driver); MODULE_DESCRIPTION("nVidia Tegra2 I2C Bus Controller driver"); From patchwork Tue Sep 1 21:11:01 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 1355380 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=lKZWHY1f; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4Bh0CF1Zbfz9sTr for ; Wed, 2 Sep 2020 07:12:41 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729495AbgIAVMZ (ORCPT ); Tue, 1 Sep 2020 17:12:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50588 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729085AbgIAVLk (ORCPT ); Tue, 1 Sep 2020 17:11:40 -0400 Received: from mail-lf1-x142.google.com (mail-lf1-x142.google.com [IPv6:2a00:1450:4864:20::142]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1B9E4C061258; Tue, 1 Sep 2020 14:11:40 -0700 (PDT) Received: by mail-lf1-x142.google.com with SMTP id q8so1594250lfb.6; Tue, 01 Sep 2020 14:11:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=MjQLy+fqN+zR1x3JEChLov2U4aIDCj6NHus1SvLWF3Y=; b=lKZWHY1fLrBJOdT96nmXh95jzL8MJognCqc+GfqVgP1HA6P8LOaMVkMs30c/IMFfli 44HOdUpqhH2BVO1JMcgvrVaOYHtQtNzcn0LdDr1DvsuBidHAruHtXLA/WegcTEr4Gu8A C1vxurWxhmB9sgwBxCJQiil5y40wxuDnDmPP/9aEkDSvlEA1mmLlKTmmc6M/8tEJhEDS kqJMoozdTWmqss3x0Nkv2G0OULzxqJk8qdXjt9SzZjeporqdfjmYMA8u7uStwIoTi9m5 unlTeeK3Qo7gs2bF06wx5UreSOPXQ9gMPwjnUDAV20xYFKE3C5JYu8X0VAndzovNaXGV MKfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=MjQLy+fqN+zR1x3JEChLov2U4aIDCj6NHus1SvLWF3Y=; b=UBL4OaFc5Lp52sjZ+S+ojMuZUQCluAArMc4gZdQrCOD4SbwJg25LlELuDSvBKJ5WhD xZjFxfHvGA12xaIzlYvG6U/alddSJoPAn0uWPXbApBF5Leqj4AYHf/kW8LlzxJls5+aZ L8InkAlRz7cjQ/hrEgaUCAYVhgV+PfjnrIU3GPlrfCBrplaWXcnz0T544iLrdOqDNA2g 7L+nKmMoNt+u9hU59SJhHxt/enn9Yo3BMnZVeIxVOSRMyBU8SuSVfDvroenLFO6y47N8 Yd6BB8gIhaTnZr7xDtCPts4KOL9K1HExLy0hW0GKFWcAk/e6lFbD+wXVpg7NEZJlMQj7 t85Q== X-Gm-Message-State: AOAM533LKxpZRv4Bfvk1MDx+RWUFK3rFaHBFjcnfw9Pm1vR928elLRpu MtlRgWChl425qEIf3iKwETa52lSih14= X-Google-Smtp-Source: ABdhPJw6A2L3GbY4ssQxDtN4bSbqPCQrL4MgHO3URaRl3Ec1gW9+VhuzVx2nkhr4s13SukinuispIg== X-Received: by 2002:a05:6512:358c:: with SMTP id m12mr1589217lfr.18.1598994698561; Tue, 01 Sep 2020 14:11:38 -0700 (PDT) Received: from localhost.localdomain (109-252-170-211.dynamic.spd-mgts.ru. [109.252.170.211]) by smtp.gmail.com with ESMTPSA id g19sm502656ljk.125.2020.09.01.14.11.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2020 14:11:38 -0700 (PDT) From: Dmitry Osipenko To: Thierry Reding , Jonathan Hunter , Laxman Dewangan , Wolfram Sang Cc: linux-i2c@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 16/17] i2c: tegra: Rename variable in tegra_i2c_issue_bus_clear() Date: Wed, 2 Sep 2020 00:11:01 +0300 Message-Id: <20200901211102.11072-17-digetx@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200901211102.11072-1-digetx@gmail.com> References: <20200901211102.11072-1-digetx@gmail.com> MIME-Version: 1.0 Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org Rename variable "reg" to "val" in order to better reflect the actual usage of the variable in the code and to make naming consistent with the rest of the code. Signed-off-by: Dmitry Osipenko --- drivers/i2c/busses/i2c-tegra.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c index bdfccf055959..628674ed8440 100644 --- a/drivers/i2c/busses/i2c-tegra.c +++ b/drivers/i2c/busses/i2c-tegra.c @@ -1127,21 +1127,21 @@ static int tegra_i2c_issue_bus_clear(struct i2c_adapter *adap) { struct tegra_i2c_dev *i2c_dev = i2c_get_adapdata(adap); unsigned long time_left; - u32 reg; + u32 val; int err; reinit_completion(&i2c_dev->msg_complete); - reg = FIELD_PREP(I2C_BC_SCLK_THRESHOLD, 9) | I2C_BC_STOP_COND | + val = FIELD_PREP(I2C_BC_SCLK_THRESHOLD, 9) | I2C_BC_STOP_COND | I2C_BC_TERMINATE; - i2c_writel(i2c_dev, reg, I2C_BUS_CLEAR_CNFG); + i2c_writel(i2c_dev, val, I2C_BUS_CLEAR_CNFG); if (i2c_dev->hw->has_config_load_reg) { err = tegra_i2c_wait_for_config_load(i2c_dev); if (err) return err; } - reg |= I2C_BC_ENABLE; - i2c_writel(i2c_dev, reg, I2C_BUS_CLEAR_CNFG); + val |= I2C_BC_ENABLE; + i2c_writel(i2c_dev, val, I2C_BUS_CLEAR_CNFG); tegra_i2c_unmask_irq(i2c_dev, I2C_INT_BUS_CLR_DONE); time_left = tegra_i2c_wait_completion(i2c_dev, &i2c_dev->msg_complete, @@ -1151,8 +1151,8 @@ static int tegra_i2c_issue_bus_clear(struct i2c_adapter *adap) return -ETIMEDOUT; } - reg = i2c_readl(i2c_dev, I2C_BUS_CLEAR_STATUS); - if (!(reg & I2C_BC_STATUS)) { + val = i2c_readl(i2c_dev, I2C_BUS_CLEAR_STATUS); + if (!(val & I2C_BC_STATUS)) { dev_err(i2c_dev->dev, "un-recovered arbitration lost\n"); return -EIO; } From patchwork Tue Sep 1 21:11:02 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 1355375 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=H55wt3uH; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4Bh0By1c59z9sTp for ; Wed, 2 Sep 2020 07:12:26 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729443AbgIAVMZ (ORCPT ); Tue, 1 Sep 2020 17:12:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50566 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729108AbgIAVLm (ORCPT ); Tue, 1 Sep 2020 17:11:42 -0400 Received: from mail-lj1-x235.google.com (mail-lj1-x235.google.com [IPv6:2a00:1450:4864:20::235]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F1BC3C061244; Tue, 1 Sep 2020 14:11:41 -0700 (PDT) Received: by mail-lj1-x235.google.com with SMTP id h19so3257543ljg.13; Tue, 01 Sep 2020 14:11:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=eqKOQDvIcPzfOGcXYYks52bq5lwS718ve2YcDrMIuHM=; b=H55wt3uHOE3KFKRMg3AiFK/LitlwYRTebZTN0sIEM2Qv3KVWp5CGA6XqfSI4uuour9 RoCs+v0iVZeazrK//glLCXRzKXNdAEo2cpmknQi+iy0pG6vb8uKjY0sxatROPi2NATp7 JnRU1CTIqIir4y+IU3rlsXu6Hf/LWDIApe2LGFJI9Cuv72nZaPAgZkCEd4rEpqpsaa7c PGbL60fW0kt0t7IMHpVcCZbKWGfPRbwBGq7ClKkoJ0KogTCylnOqKDMGABZ1V93X+clY eLS8zU7cHWQ/QYOAL5PeqFZWRj/FqwN2lErO5f1TeUYnSPbuL2lI/xVTMRVXXu1GXPBs 8D2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=eqKOQDvIcPzfOGcXYYks52bq5lwS718ve2YcDrMIuHM=; b=VmBVFOnKbvnLhhDgcmQqLloJZfM2rQuQVzgEkE8QbK0nlWyCLqj2pUClFDnz6Lx9x3 /6YaxcCVezRIvavk9H5iHSLHKA7gG3HORBg007vzkkNh1a4aCTmzteyGSnTAdjglwK8F /fZoU3NqcyQMzcLz8JZS4wnhMEzuPFdmQbTa8vAgDkJBO+AG5xVupx/hhoM7H2PIuv85 cGn+5psaCovO0Tfd97mnrxGO5+z5b6+tjemQvQVE46tZiA/mgYsP/yGlqngARJYJVT9m mf61NLRaLCRKDEPe+c6obbTT1uR0nx2utsz0MDpt2TCZlXCaWek1nPILKxrgvom8hOLU PA+w== X-Gm-Message-State: AOAM5317lWPnb9fHFDQMMrc9BdVzZoCVxjNdPMQlLsQGKeARtY3QxaPM HW6xjlD06vBEjfjFwQbozIM= X-Google-Smtp-Source: ABdhPJzZqZPe1kDWmHV13iCdd5DCKNtWdqOLR8U8Wx8xVnIfc736WAtYtQhy3sl7/ejKYd4ADp1Xkg== X-Received: by 2002:a2e:b174:: with SMTP id a20mr1686334ljm.200.1598994699484; Tue, 01 Sep 2020 14:11:39 -0700 (PDT) Received: from localhost.localdomain (109-252-170-211.dynamic.spd-mgts.ru. [109.252.170.211]) by smtp.gmail.com with ESMTPSA id g19sm502656ljk.125.2020.09.01.14.11.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2020 14:11:39 -0700 (PDT) From: Dmitry Osipenko To: Thierry Reding , Jonathan Hunter , Laxman Dewangan , Wolfram Sang Cc: linux-i2c@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 17/17] i2c: tegra: Improve driver module description Date: Wed, 2 Sep 2020 00:11:02 +0300 Message-Id: <20200901211102.11072-18-digetx@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200901211102.11072-1-digetx@gmail.com> References: <20200901211102.11072-1-digetx@gmail.com> MIME-Version: 1.0 Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org Use proper spelling of "NVIDIA" and don't designate driver as Tegra2-only since newer SoC generations are supported as well. Signed-off-by: Dmitry Osipenko --- drivers/i2c/busses/i2c-tegra.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c index 628674ed8440..a3113faa2d0b 100644 --- a/drivers/i2c/busses/i2c-tegra.c +++ b/drivers/i2c/busses/i2c-tegra.c @@ -2017,6 +2017,6 @@ static struct platform_driver tegra_i2c_driver = { }; module_platform_driver(tegra_i2c_driver); -MODULE_DESCRIPTION("nVidia Tegra2 I2C Bus Controller driver"); +MODULE_DESCRIPTION("NVIDIA Tegra I2C Bus Controller driver"); MODULE_AUTHOR("Colin Cross"); MODULE_LICENSE("GPL v2");