Received: by 2002:a25:ef43:0:0:0:0:0 with SMTP id w3csp122027ybm; Tue, 26 May 2020 12:19:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxixih07uZ2fIn842ondeMggHCk9K4gTWLCABKI58TFuZ45KOwpjHZOep7Y0YUMrnLCkaDX X-Received: by 2002:a17:906:934e:: with SMTP id p14mr2420663ejw.494.1590520752266; Tue, 26 May 2020 12:19:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1590520752; cv=none; d=google.com; s=arc-20160816; b=ulPL7q0eh8RVmxJHWUd/Ue9g6ESb9V7c/WhDmKjLR15lkKR1U538jvA2D+EWq4a+HF r7pfrui+bWIJWmvDR4Mpa5jS1lMK3RwAO+K2kOrAyTE9QG9O1DTefxFO0YHZOReeH92L LuSr+Q44tjgGTUodh7L5VPgoxquJO0t0b3Yu23J7baw3Odt2oGZfpYNnPjLiCdpermoq APCB593DDy7cAr1dYC0vIJ4Sbbwnq46Kwd5mme1AY+dJGK0UKyGsNkmaHSXHA8sj/vDu ukcecGMxChHZ3PUivBe82ilN7oc0cBGaSbS6Grq4rJlNnAdvOImesjL7R16+7mVXUM6u SbEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=utB0tM48loIVFPlf5aat8x5IT5bOsFQN6eu6HU2g84A=; b=onMQumzLelaZNzQrbJmlFpgcgstNbU3LazQjoyPm0QCuAVrJlpn1QrJqPqpoeH+ork 54Sfc8+Q37Ou2d1O7F+U012mry7iHkiGVB0182fBGBBf6ruY6BfTwsfWo8Pdhu1jAGKD OpDZX3lBsfzQrdiiTF7rf26Zh7zuG5KIhdOQOCqqASnu1W6mWMURx6zOhq6KDN46/Rkl 8zO2PO8Y35VxI6k/I7x6VqtTixzTvognI4d9GFCtyWklhWrX3IoUaPU2AYbD3PC2tL/+ RoAib8K1uRA4mjlyEkx3i7TjCC2vWJ7F6K9lUK7g+jBVqjHGLNMU8HSAanHvHQGlt6Er 060w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=aEn4KZbK; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id dg18si428480edb.211.2020.05.26.12.18.48; Tue, 26 May 2020 12:19:12 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=aEn4KZbK; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2392197AbgEZTOn (ORCPT + 99 others); Tue, 26 May 2020 15:14:43 -0400 Received: from mail.kernel.org ([198.145.29.99]:45682 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2392180AbgEZTOj (ORCPT ); Tue, 26 May 2020 15:14:39 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id ACA5620776; Tue, 26 May 2020 19:14:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1590520478; bh=HfX6ZpEElBlvUO1vKsCKW0JNuzPPSk1EClaq5LSEjwM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aEn4KZbKKrXsLLKhsQmXuSaeXKViKKOzLVxRpq9qKRQms8ojk71GDJ9NuBz3EFpG6 fBqvjliNtnQjQNjPITFTiZzlnXi5Q6iXeXPhPc4r3onYPduUoPnMttu22iP8xJOCSJ qnSiiLA9+weDdNOKKURDgAAkZvGEmaPeSqdVfRZw= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Fabrice Gasnier , Stable@vger.kernel.org, Jonathan Cameron Subject: [PATCH 5.6 095/126] iio: adc: stm32-dfsdm: fix device used to request dma Date: Tue, 26 May 2020 20:53:52 +0200 Message-Id: <20200526183945.831315042@linuxfoundation.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200526183937.471379031@linuxfoundation.org> References: <20200526183937.471379031@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Fabrice Gasnier commit b455d06e6fb3c035711e8aab1ca18082ccb15d87 upstream. DMA channel request should use device struct from platform device struct. Currently it's using iio device struct. But at this stage when probing, device struct isn't yet registered (e.g. device_register is done in iio_device_register). Since commit 71723a96b8b1 ("dmaengine: Create symlinks between DMA channels and slaves"), a warning message is printed as the links in sysfs can't be created, due to device isn't yet registered: - Cannot create DMA slave symlink - Cannot create DMA dma:rx symlink Fix this by using device struct from platform device to request dma chan. Fixes: eca949800d2d ("IIO: ADC: add stm32 DFSDM support for PDM microphone") Signed-off-by: Fabrice Gasnier Cc: Signed-off-by: Jonathan Cameron Signed-off-by: Greg Kroah-Hartman --- drivers/iio/adc/stm32-dfsdm-adc.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) --- a/drivers/iio/adc/stm32-dfsdm-adc.c +++ b/drivers/iio/adc/stm32-dfsdm-adc.c @@ -62,7 +62,7 @@ enum sd_converter_type { struct stm32_dfsdm_dev_data { int type; - int (*init)(struct iio_dev *indio_dev); + int (*init)(struct device *dev, struct iio_dev *indio_dev); unsigned int num_channels; const struct regmap_config *regmap_cfg; }; @@ -1365,11 +1365,12 @@ static void stm32_dfsdm_dma_release(stru } } -static int stm32_dfsdm_dma_request(struct iio_dev *indio_dev) +static int stm32_dfsdm_dma_request(struct device *dev, + struct iio_dev *indio_dev) { struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); - adc->dma_chan = dma_request_chan(&indio_dev->dev, "rx"); + adc->dma_chan = dma_request_chan(dev, "rx"); if (IS_ERR(adc->dma_chan)) { int ret = PTR_ERR(adc->dma_chan); @@ -1425,7 +1426,7 @@ static int stm32_dfsdm_adc_chan_init_one &adc->dfsdm->ch_list[ch->channel]); } -static int stm32_dfsdm_audio_init(struct iio_dev *indio_dev) +static int stm32_dfsdm_audio_init(struct device *dev, struct iio_dev *indio_dev) { struct iio_chan_spec *ch; struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); @@ -1452,10 +1453,10 @@ static int stm32_dfsdm_audio_init(struct indio_dev->num_channels = 1; indio_dev->channels = ch; - return stm32_dfsdm_dma_request(indio_dev); + return stm32_dfsdm_dma_request(dev, indio_dev); } -static int stm32_dfsdm_adc_init(struct iio_dev *indio_dev) +static int stm32_dfsdm_adc_init(struct device *dev, struct iio_dev *indio_dev) { struct iio_chan_spec *ch; struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); @@ -1499,17 +1500,17 @@ static int stm32_dfsdm_adc_init(struct i init_completion(&adc->completion); /* Optionally request DMA */ - ret = stm32_dfsdm_dma_request(indio_dev); + ret = stm32_dfsdm_dma_request(dev, indio_dev); if (ret) { if (ret != -ENODEV) { if (ret != -EPROBE_DEFER) - dev_err(&indio_dev->dev, + dev_err(dev, "DMA channel request failed with %d\n", ret); return ret; } - dev_dbg(&indio_dev->dev, "No DMA support\n"); + dev_dbg(dev, "No DMA support\n"); return 0; } @@ -1622,7 +1623,7 @@ static int stm32_dfsdm_adc_probe(struct adc->dfsdm->fl_list[adc->fl_id].sync_mode = val; adc->dev_data = dev_data; - ret = dev_data->init(iio); + ret = dev_data->init(dev, iio); if (ret < 0) return ret;