From patchwork Mon Sep 21 10:19:37 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789143 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 6F7A16CA for ; Mon, 21 Sep 2020 10:24:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4D135207BC for ; Mon, 21 Sep 2020 10:24:43 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="ERaArSVn" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726532AbgIUKYm (ORCPT ); Mon, 21 Sep 2020 06:24:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58974 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726755AbgIUKUf (ORCPT ); Mon, 21 Sep 2020 06:20:35 -0400 Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com [IPv6:2a00:1450:4864:20::441]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 54BC5C061755 for ; Mon, 21 Sep 2020 03:20:35 -0700 (PDT) Received: by mail-wr1-x441.google.com with SMTP id t10so12132450wrv.1 for ; Mon, 21 Sep 2020 03:20:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=FAfzGDJNkDiJ14AHNIUhDwhIpLlD543otONzFuTYMfQ=; b=ERaArSVnusIZhh3BpFKhA0YH7Rj3lF6LCWbq+jqxKQnP+9MFEZh1E4yg5l15aO/SH0 e5e9FkbM8T+nBXr70hn4TRSMMkyAqrK2EvTVKzFR6BFdaN0pykgjpnAQvlhD3xx7Smjm hHNyTpdVIwexCovVJDNdKDXac0xAD8tfA2ThaDvsIr8VLhW+AyAV/B58n3MG/w0CLP9D hWlyEyXqjFnM8M6wGw9DzDPsAe2pupXq7BeOJ2DJ8T/DnDWEJT7zChK5qPyK0uEcOjGo 65DikEPIE+20NVDUZpV0wcsHFQ/WVol4ufFxvbz3uaRjLfnIF/qoKTe3uvuaqssVIQnu o3Gg== 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; bh=FAfzGDJNkDiJ14AHNIUhDwhIpLlD543otONzFuTYMfQ=; b=EdvIaU/9PnZeqzAWQTtGZ8L1lQPZ89IO5GP9qcl1vVCd4AiH1pYXY3ITEJ9ocVeco0 5HFDshCpL2nU+5TTHsfdorN3VdCFsltQ8SAYAsUL6CiZDeRHD3BBuwSrcbfVqqQRxtS2 Y1hxFMOTB19lj68J/D0koYzxgfMkR1ov6cGSiY6h+PV3vo8xc2AnXVZtDanI6vVTkXak QLFcaTGcSplWyVPrYaxXy9haAgd4ZrsdPFqvhYvQypfocbZhQiJuK++IB5fqEnm8NGeN 2gfIRSVUSjQKTLoJwTuGBmW/myEngmUASF0fMTQXjpQW8Cdmw9kEIzGznPCZ59QZrofR c01Q== X-Gm-Message-State: AOAM530h1t2PdFDFp2PXb/ds9z64V8ERU5lPnsM3i0RehnwLlv+d3qB8 iw5577g4yMalSEFWUIvIRkYoUw== X-Google-Smtp-Source: ABdhPJwRp8fa0HmGYgcCS7nKvEdN1zyxKC4UrtLKMKxQZ5icXeLaTxukOPBl8Aw2G4MO2Lu2ST4EHg== X-Received: by 2002:adf:f852:: with SMTP id d18mr51733075wrq.245.1600683634013; Mon, 21 Sep 2020 03:20:34 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.20.33 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:20:33 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 02/49] MAINTAINERS: change maintainer of the zoran driver Date: Mon, 21 Sep 2020 10:19:37 +0000 Message-Id: <1600683624-5863-3-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Add myself as maintainer. Signed-off-by: Corentin Labbe --- Documentation/media/v4l-drivers/zoran.rst | 22 +++++++--------------- MAINTAINERS | 10 ++++++++++ drivers/staging/media/zoran/zoran_card.c | 5 ----- drivers/staging/media/zoran/zoran_card.h | 5 ----- drivers/staging/media/zoran/zoran_device.c | 5 ----- drivers/staging/media/zoran/zoran_device.h | 5 ----- 6 files changed, 17 insertions(+), 35 deletions(-) diff --git a/Documentation/media/v4l-drivers/zoran.rst b/Documentation/media/v4l-drivers/zoran.rst index d2724a863d1d..a0586514cd8a 100644 --- a/Documentation/media/v4l-drivers/zoran.rst +++ b/Documentation/media/v4l-drivers/zoran.rst @@ -549,21 +549,13 @@ at high verbosity. See 'Contacting' on how to contact the developers. Maintainers/Contacting ---------------------- -The driver is currently maintained by Laurent Pinchart and Ronald Bultje -( and ). For bug -reports or questions, please contact the mailinglist instead of the developers -individually. For user questions (i.e. bug reports or how-to questions), send -an email to , for developers (i.e. if you want to -help programming), send an email to . See -http://www.sf.net/projects/mjpeg/ for subscription information. - -For bug reports, be sure to include all the information as described in -the section 'It hangs/crashes/fails/whatevers! Help!'. Please make sure -you're using the latest version (http://mjpeg.sf.net/driver-zoran/). - -Previous maintainers/developers of this driver include Serguei Miridonov -, Wolfgang Scherr , Dave Perks - and Rainer Johanni . +Previous maintainers/developers of this driver are +- Laurent Pinchart +- Ronald Bultje rbultje@ronald.bitfreak.net +- Serguei Miridonov +- Wolfgang Scherr +- Dave Perks +- Rainer Johanni Driver's License ---------------- diff --git a/MAINTAINERS b/MAINTAINERS index d3126fc2cca2..f2ece9826be3 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -19233,6 +19233,16 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/zonefs.git F: Documentation/filesystems/zonefs.rst F: fs/zonefs/ +ZR36067 VIDEO FOR LINUX DRIVER +M: Corentin Labbe +L: mjpeg-users@lists.sourceforge.net +L: linux-media@vger.kernel.org +S: Maintained +W: http://mjpeg.sourceforge.net/driver-zoran/ +Q: https://patchwork.linuxtv.org/project/linux-media/list/ +F: drivers/staging/media/zoran/ +F: Documentation/media/v4l-drivers/zoran.rst + ZPOOL COMPRESSED PAGE STORAGE API M: Dan Streetman L: linux-mm@kvack.org diff --git a/drivers/staging/media/zoran/zoran_card.c b/drivers/staging/media/zoran/zoran_card.c index ea10523194e8..d2f82894e8ee 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -7,11 +7,6 @@ * * Copyright (C) 2000 Serguei Miridonov * - * Currently maintained by: - * Ronald Bultje - * Laurent Pinchart - * Mailinglist - * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or diff --git a/drivers/staging/media/zoran/zoran_card.h b/drivers/staging/media/zoran/zoran_card.h index 0cdb7d34926d..53ed511ce546 100644 --- a/drivers/staging/media/zoran/zoran_card.h +++ b/drivers/staging/media/zoran/zoran_card.h @@ -7,11 +7,6 @@ * * Copyright (C) 2000 Serguei Miridonov * - * Currently maintained by: - * Ronald Bultje - * Laurent Pinchart - * Mailinglist - * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or diff --git a/drivers/staging/media/zoran/zoran_device.c b/drivers/staging/media/zoran/zoran_device.c index 22b27632762d..04162be80420 100644 --- a/drivers/staging/media/zoran/zoran_device.c +++ b/drivers/staging/media/zoran/zoran_device.c @@ -7,11 +7,6 @@ * * Copyright (C) 2000 Serguei Miridonov * - * Currently maintained by: - * Ronald Bultje - * Laurent Pinchart - * Mailinglist - * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or diff --git a/drivers/staging/media/zoran/zoran_device.h b/drivers/staging/media/zoran/zoran_device.h index a507aaad4ebb..816d48b09be9 100644 --- a/drivers/staging/media/zoran/zoran_device.h +++ b/drivers/staging/media/zoran/zoran_device.h @@ -7,11 +7,6 @@ * * Copyright (C) 2000 Serguei Miridonov * - * Currently maintained by: - * Ronald Bultje - * Laurent Pinchart - * Mailinglist - * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or From patchwork Mon Sep 21 10:19:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789049 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7621A59D for ; Mon, 21 Sep 2020 10:20:39 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 59AD42193E for ; Mon, 21 Sep 2020 10:20:39 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="I5VTjG3a" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726768AbgIUKUi (ORCPT ); Mon, 21 Sep 2020 06:20:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58982 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726756AbgIUKUg (ORCPT ); Mon, 21 Sep 2020 06:20:36 -0400 Received: from mail-wr1-x442.google.com (mail-wr1-x442.google.com [IPv6:2a00:1450:4864:20::442]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 69F05C0613D2 for ; Mon, 21 Sep 2020 03:20:36 -0700 (PDT) Received: by mail-wr1-x442.google.com with SMTP id k15so12115007wrn.10 for ; Mon, 21 Sep 2020 03:20:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Z5xy1HmEK3Cb2cGuOZNBEue37qSrHj+Vnq/OwfaPORg=; b=I5VTjG3a3ViBXraLZbIZjAF4w3IjxazcKPBR8RM9zZISWgHD9OAAW/k6SSohJYhPNG A5YpvNK36e4G+9BFnfqnxMw1ClkJlY0mfrV41zlhv06gFtYecYAE+trrq+eIDf77q/X6 yJ9A8CxIZkIE7MofTCSiuH14CNxFd1GOFLd0QPPHX1l5Pz9e9RJSOfW1EZPYdHwFYh3n /85ZsSW7M2mpjF8Yzi14whkUIf8DbmA6nOCwjNK9GhrXL+3c8xwcyiWIXyZxS1B26ilp /1uB7h0HAi7DX/gQsZce7RHc+1uONcDNT/4FfiDSZ1HxaKtJR1mEhMWmguiXrcYTJARi o/UA== 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; bh=Z5xy1HmEK3Cb2cGuOZNBEue37qSrHj+Vnq/OwfaPORg=; b=o3q5uvunfPK2F90J/Ym5dw7hBrnJ2RXOclE85IuwO9oU34x5e9wr7whY8i7/t6wIvX dNYA1DmG29q7GHQZtHxdj6ahvkhlElEp3rGlOAXzeMwhcj/2rOcq5Q2hpxc+LvaF50VH 9wCiF+hmyE+A//acTr7AsOPJY3HM+KA7+63fLyK8dbaMpVKyUfVZghokgPyGIvJBW3zO km6meRTHoe+l3cwPV51uxXGcXpCQA4+ZTpeJJbUxoElCR4a6ZS3DzjhmUUjl3oTssfax cMoNzB9ZV5P+DWYCYj+ffUMTXL+mmyZWapkUHGwMNif+i6xB8Esy+Y5beQDf3hcMCI6L +VBg== X-Gm-Message-State: AOAM533mm1rTPT7NFxGHnyswiCpL2l5Tq4mXERA4mirgZ8mFPsz7tKuT XdPcDgmORvpWEr+39XhEBHX7JQ== X-Google-Smtp-Source: ABdhPJxN1Spb10RxJRxY4y67Y7+C7S5d68x0Ru3WpjlUuQNHdi07Ix7g79gisaT5NE8Ke2Dq5/yb2Q== X-Received: by 2002:adf:f78f:: with SMTP id q15mr43195277wrp.206.1600683635053; Mon, 21 Sep 2020 03:20:35 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.20.34 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:20:34 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 03/49] staging: media: zoran: datasheet is no longer available from zoran.com Date: Mon, 21 Sep 2020 10:19:38 +0000 Message-Id: <1600683624-5863-4-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Simply remove this broken reference Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran_device.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/staging/media/zoran/zoran_device.c b/drivers/staging/media/zoran/zoran_device.c index 04162be80420..79da964c678b 100644 --- a/drivers/staging/media/zoran/zoran_device.c +++ b/drivers/staging/media/zoran/zoran_device.c @@ -265,9 +265,6 @@ jpeg_codec_reset (struct zoran *zr) * Set the registers for the size we have specified. Don't bother * trying to understand this without the ZR36057 manual in front of * you [AC]. - * - * PS: The manual is free for download in .pdf format from - * www.zoran.com - nicely done those folks. */ static void From patchwork Mon Sep 21 10:19:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789051 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id CD8A66CA for ; Mon, 21 Sep 2020 10:20:47 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B0D542193E for ; Mon, 21 Sep 2020 10:20:47 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="MaGfrgp7" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726778AbgIUKUj (ORCPT ); Mon, 21 Sep 2020 06:20:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58992 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726764AbgIUKUi (ORCPT ); Mon, 21 Sep 2020 06:20:38 -0400 Received: from mail-wr1-x442.google.com (mail-wr1-x442.google.com [IPv6:2a00:1450:4864:20::442]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4ABEBC0613D4 for ; Mon, 21 Sep 2020 03:20:37 -0700 (PDT) Received: by mail-wr1-x442.google.com with SMTP id t10so12132566wrv.1 for ; Mon, 21 Sep 2020 03:20:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=0BzTczQmHpS8t1I+BEXhbnRvatw/mGTEVui5t5Npsm8=; b=MaGfrgp7PHlwm0A3ZkZ8h7GGR0RRi37Yiy+yOd5x5uXY0+HcDxdjSml1+xef0vvkdj tS3sXina++U+mHFVDNOpo4FxR+MKEuxMpMHJCiPfbi1M9UFYsGR2tGbxTmGawX8YfVhT nKo7z8pNaOdCKG8B5Pn2VUl1tuxJoxxgNGxHZwnWbKtFj7m98v8TJRBs8RYcvOAKLS4p ZnFF3w70EHp62lTH+unebW+knQa6DFB/0HfzeJgPprU7N5ZJ4dLwia0vADFLPrzISADS v+H8iUci900i8d5403aBVru8s47NLPmFzKenxG9h0uSNpOTIPTAGXRKSOvcH4eFpMICM bhmw== 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; bh=0BzTczQmHpS8t1I+BEXhbnRvatw/mGTEVui5t5Npsm8=; b=oTWS6RLL7s1GQsZsm8ptvoEHkifjgafUuPUemvrxAUa7kte/KYHeq+Kok3GKhAvjRl vx0kxxhqANmIsizJEFR7S9eW7vdUutxs4k4DNBApBNNfv9vLWC9gllLcTrKWMyxQi7Yk 9AubopYT6Dq8paDOeWFSa7LL3eaRQsmir0Y1LftdhdjaDHJmxplkNbnA18BB3+njWhJj JQPqFSLqDXmnqCIISHxFAxogrkShHBKXRzX2+GgB7d0bfFOKLn7pIu3J4+h0XobrjFEp qv/Soq1/WG1AZ19/KrUv4ztJX9guMyRrkIQm4sTf/LIxRaNmzUT8wnTn/qOGWAai9B9n rvvg== X-Gm-Message-State: AOAM531zSauNFvCYPW+TZB/G5QrvJ+x5uKD/GTQ8vBg0r0xfhnpW/7JK th2eGXlpgTgxRN84qDv1A5m+Sg== X-Google-Smtp-Source: ABdhPJxO38VZN2Eb0UXu4Mfek/wdnnRWiA/oi1U24WVDHA8DvtyjmmeYlDpoZllXQtDhZEg5Bs/1qQ== X-Received: by 2002:adf:f508:: with SMTP id q8mr49455553wro.233.1600683635970; Mon, 21 Sep 2020 03:20:35 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.20.35 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:20:35 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 04/49] staging: media: zoran: Documentation: fix typo Date: Mon, 21 Sep 2020 10:19:39 +0000 Message-Id: <1600683624-5863-5-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Fix some typo in doc. Signed-off-by: Corentin Labbe --- Documentation/media/v4l-drivers/zoran.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Documentation/media/v4l-drivers/zoran.rst b/Documentation/media/v4l-drivers/zoran.rst index a0586514cd8a..2b82b9a47a71 100644 --- a/Documentation/media/v4l-drivers/zoran.rst +++ b/Documentation/media/v4l-drivers/zoran.rst @@ -119,7 +119,7 @@ Pinnacle/Miro DC10+ * Analog Devices adv7176 TV encoder Drivers to use: videodev, i2c-core, i2c-algo-bit, -videocodec, sa7110, adv7175, zr36060, zr36067 +videocodec, saa7110, adv7175, zr36060, zr36067 Inputs/outputs: Composite, S-video and Internal @@ -280,7 +280,7 @@ Samsung ks0127 TV decoder What the TV encoder can do an what not -------------------------------------- -The TV encoder are doing the "same" as the decoder, but in the oder direction. +The TV encoder are doing the "same" as the decoder, but in the other direction. You feed them digital data and the generate a Composite or SVHS signal. For information about the colorsystems and TV norm take a look in the TV decoder section. From patchwork Mon Sep 21 10:19:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789139 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A9BCD6CA for ; Mon, 21 Sep 2020 10:24:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5248220EDD for ; Mon, 21 Sep 2020 10:24:38 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="B7YShZ+M" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727024AbgIUKYh (ORCPT ); Mon, 21 Sep 2020 06:24:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59010 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726786AbgIUKUl (ORCPT ); Mon, 21 Sep 2020 06:20:41 -0400 Received: from mail-wm1-x343.google.com (mail-wm1-x343.google.com [IPv6:2a00:1450:4864:20::343]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D9960C0613D1 for ; Mon, 21 Sep 2020 03:20:39 -0700 (PDT) Received: by mail-wm1-x343.google.com with SMTP id z9so12015769wmk.1 for ; Mon, 21 Sep 2020 03:20:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=UkASDZ+EoW5yLxxyokbShueZVjU0CI78zVzwUXWhixk=; b=B7YShZ+MIXwhWBnzLnBMYjmy8yKv1nUZm/hpsYzBOh1vs+6mcJ1LK0RfbN4uPO/9K0 LNCTy4oWvonx/wYHGq0gjCGV/DB5KeiBXL0Nk8rUwQ+wrL8CDEnGkNyq9cvf16D6NZRD lBY+CZl+dsuHkB/EZKGqYoxp2ZjOphVAgUycV/Q20EusEO95hMoHx8Lhkmm1DOKyY439 SW0JboO98wi0pAsHc0Dsq8oulSR6B/Xn1eWccPoxr2s4YhGjXgNMJvpmkW7eIIiaAHLR GKdM8u6f5XfBELzs8PemQ6O6rst7VHaoz74O44h+Vl+CQsnBeHccUmppSGwLnbDcbal4 4FHg== 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; bh=UkASDZ+EoW5yLxxyokbShueZVjU0CI78zVzwUXWhixk=; b=Y0vyWhVppVUJ+SAFKFiljpZmTavnVuNY5HZPf3dUEw186RViBm4FtP0M++qb0plF06 mz0m1EGdhFx9rVUb92LTMFTOOChGRla6m5xzjJ0uf5fbmJe/EOx4Qal0kZixl2gIp8rI QLL4697cVlTcESPzq7M6jGXTHAGrxJ8NGs/Iu0rbcOjMINRDU6FHZAnv3qXMzfIuSaZ7 cATtpyNfYbIXKFiuL8OukSSR3dCPxFMToSvahDtmlBEfiBbIyOy0N8V62tNzjhyi0zfM zRcH1TGQxBkInwgDNcrBevBw8KIEQON4IXisHiMR5dRs+o9qN3FXISalrnEUtTG7BLgt 7uLg== X-Gm-Message-State: AOAM5318R4dY6gfZGnDsYycAmAT6dm6RcYJJQ6vEzvdPm7k1SMwbn6Md XiI1OJTl6UVyuHgMz4/THdmkDuI15VkcNg== X-Google-Smtp-Source: ABdhPJzYJiqUDPKXh0Iqlq/b04X5JAGdsDNoxrsu0USoW7J21Oodcn4V8UN+MWBhEonogMrror6khQ== X-Received: by 2002:a1c:4c0d:: with SMTP id z13mr28167319wmf.113.1600683637525; Mon, 21 Sep 2020 03:20:37 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.20.36 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:20:36 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 05/49] staging: media: zoran: fix checkpatch issue Date: Mon, 21 Sep 2020 10:19:40 +0000 Message-Id: <1600683624-5863-6-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Fix a lot of style issue found by checkpatch. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/videocodec.c | 116 ++----- drivers/staging/media/zoran/videocodec.h | 75 +---- drivers/staging/media/zoran/zoran.h | 52 ++- drivers/staging/media/zoran/zoran_card.c | 319 +++++++----------- drivers/staging/media/zoran/zoran_card.h | 11 +- drivers/staging/media/zoran/zoran_device.c | 372 ++++++++------------- drivers/staging/media/zoran/zoran_device.h | 40 +-- drivers/staging/media/zoran/zoran_driver.c | 257 ++++++-------- drivers/staging/media/zoran/zoran_procfs.c | 28 +- drivers/staging/media/zoran/zr36016.c | 166 +++------ drivers/staging/media/zoran/zr36016.h | 17 +- drivers/staging/media/zoran/zr36050.c | 116 ++----- drivers/staging/media/zoran/zr36050.h | 26 +- drivers/staging/media/zoran/zr36057.h | 96 +++--- drivers/staging/media/zoran/zr36060.c | 314 ++++++----------- drivers/staging/media/zoran/zr36060.h | 111 +++--- 16 files changed, 740 insertions(+), 1376 deletions(-) diff --git a/drivers/staging/media/zoran/videocodec.c b/drivers/staging/media/zoran/videocodec.c index 044ef8455ba8..3a2f0c450a44 100644 --- a/drivers/staging/media/zoran/videocodec.c +++ b/drivers/staging/media/zoran/videocodec.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0-or-later /* * VIDEO MOTION CODECs internal API for video devices * @@ -5,22 +6,6 @@ * bound to a master device. * * (c) 2002 Wolfgang Scherr - * - * $Id: videocodec.c,v 1.1.2.8 2003/03/29 07:16:04 rbultje Exp $ - * - * ------------------------------------------------------------------------ - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * ------------------------------------------------------------------------ */ #define VIDEOCODEC_VERSION "v0.2" @@ -69,8 +54,7 @@ static struct codec_list *codeclist_top; /* function prototypes of the master/slave interface */ /* ================================================= */ -struct videocodec * -videocodec_attach (struct videocodec_master *master) +struct videocodec *videocodec_attach(struct videocodec_master *master) { struct codec_list *h = codeclist_top; struct attached_list *a, *ptr; @@ -82,8 +66,7 @@ videocodec_attach (struct videocodec_master *master) return NULL; } - dprintk(2, - "videocodec_attach: '%s', flags %lx, magic %lx\n", + dprintk(2, "%s: '%s', flags %lx, magic %lx\n", __func__, master->name, master->flags, master->magic); if (!h) { @@ -97,50 +80,35 @@ videocodec_attach (struct videocodec_master *master) // attach only if the slave has at least the flags // expected by the master if ((master->flags & h->codec->flags) == master->flags) { - dprintk(4, "videocodec_attach: try '%s'\n", - h->codec->name); + dprintk(4, "%s: try '%s'\n", __func__, h->codec->name); if (!try_module_get(h->codec->owner)) return NULL; - codec = kmemdup(h->codec, sizeof(struct videocodec), - GFP_KERNEL); - if (!codec) { - dprintk(1, - KERN_ERR - "videocodec_attach: no mem\n"); + codec = kmemdup(h->codec, sizeof(struct videocodec), GFP_KERNEL); + if (!codec) goto out_module_put; - } res = strlen(codec->name); - snprintf(codec->name + res, sizeof(codec->name) - res, - "[%d]", h->attached); + snprintf(codec->name + res, sizeof(codec->name) - res, "[%d]", h->attached); codec->master_data = master; res = codec->setup(codec); if (res == 0) { - dprintk(3, "videocodec_attach '%s'\n", - codec->name); - ptr = kzalloc(sizeof(struct attached_list), GFP_KERNEL); - if (!ptr) { - dprintk(1, - KERN_ERR - "videocodec_attach: no memory\n"); + dprintk(3, "%s: '%s'\n", __func__, codec->name); + ptr = kzalloc(sizeof(*ptr), GFP_KERNEL); + if (!ptr) goto out_kfree; - } ptr->codec = codec; a = h->list; if (!a) { h->list = ptr; - dprintk(4, - "videocodec: first element\n"); + dprintk(4, "videocodec: first element\n"); } else { while (a->next) a = a->next; // find end a->next = ptr; - dprintk(4, - "videocodec: in after '%s'\n", - h->codec->name); + dprintk(4, "videocodec: in after '%s'\n", h->codec->name); } h->attached += 1; @@ -161,9 +129,9 @@ videocodec_attach (struct videocodec_master *master) kfree(codec); return NULL; } +EXPORT_SYMBOL(videocodec_attach); -int -videocodec_detach (struct videocodec *codec) +int videocodec_detach(struct videocodec *codec) { struct codec_list *h = codeclist_top; struct attached_list *a, *prev; @@ -174,8 +142,7 @@ videocodec_detach (struct videocodec *codec) return -EINVAL; } - dprintk(2, - "videocodec_detach: '%s', type: %x, flags %lx, magic %lx\n", + dprintk(2, "%s: '%s', type: %x, flags %lx, magic %lx\n", __func__, codec->name, codec->type, codec->flags, codec->magic); if (!h) { @@ -191,9 +158,7 @@ videocodec_detach (struct videocodec *codec) if (codec == a->codec) { res = a->codec->unset(a->codec); if (res >= 0) { - dprintk(3, - "videocodec_detach: '%s'\n", - a->codec->name); + dprintk(3, "%s: '%s'\n", __func__, a->codec->name); a->codec->master_data = NULL; } else { dprintk(1, @@ -202,14 +167,12 @@ videocodec_detach (struct videocodec *codec) a->codec->name); a->codec->master_data = NULL; } - if (prev == NULL) { + if (!prev) { h->list = a->next; - dprintk(4, - "videocodec: delete first\n"); + dprintk(4, "videocodec: delete first\n"); } else { prev->next = a->next; - dprintk(4, - "videocodec: delete middle\n"); + dprintk(4, "videocodec: delete middle\n"); } module_put(a->codec->owner); kfree(a->codec); @@ -226,9 +189,9 @@ videocodec_detach (struct videocodec *codec) dprintk(1, KERN_ERR "videocodec_detach: given codec not found!\n"); return -EINVAL; } +EXPORT_SYMBOL(videocodec_detach); -int -videocodec_register (const struct videocodec *codec) +int videocodec_register(const struct videocodec *codec) { struct codec_list *ptr, *h = codeclist_top; @@ -241,11 +204,9 @@ videocodec_register (const struct videocodec *codec) "videocodec: register '%s', type: %x, flags %lx, magic %lx\n", codec->name, codec->type, codec->flags, codec->magic); - ptr = kzalloc(sizeof(struct codec_list), GFP_KERNEL); - if (!ptr) { - dprintk(1, KERN_ERR "videocodec_register: no memory\n"); + ptr = kzalloc(sizeof(*ptr), GFP_KERNEL); + if (!ptr) return -ENOMEM; - } ptr->codec = codec; if (!h) { @@ -261,9 +222,9 @@ videocodec_register (const struct videocodec *codec) return 0; } +EXPORT_SYMBOL(videocodec_register); -int -videocodec_unregister (const struct videocodec *codec) +int videocodec_unregister(const struct videocodec *codec) { struct codec_list *prev = NULL, *h = codeclist_top; @@ -294,7 +255,7 @@ videocodec_unregister (const struct videocodec *codec) } dprintk(3, "videocodec: unregister '%s' is ok.\n", h->codec->name); - if (prev == NULL) { + if (!prev) { codeclist_top = h->next; dprintk(4, "videocodec: delete first element\n"); @@ -315,6 +276,7 @@ videocodec_unregister (const struct videocodec *codec) "videocodec_unregister: given codec not found!\n"); return -EINVAL; } +EXPORT_SYMBOL(videocodec_unregister); #ifdef CONFIG_PROC_FS static int proc_videocodecs_show(struct seq_file *m, void *v) @@ -327,12 +289,12 @@ static int proc_videocodecs_show(struct seq_file *m, void *v) while (h) { seq_printf(m, "S %32s %04x %08lx %08lx (TEMPLATE)\n", - h->codec->name, h->codec->type, + h->codec->name, h->codec->type, h->codec->flags, h->codec->magic); a = h->list; while (a) { seq_printf(m, "M %32s %04x %08lx %08lx (%s)\n", - a->codec->master_data->name, + a->codec->master_data->name, a->codec->master_data->type, a->codec->master_data->flags, a->codec->master_data->magic, @@ -349,39 +311,29 @@ static int proc_videocodecs_show(struct seq_file *m, void *v) /* ===================== */ /* hook in driver module */ /* ===================== */ -static int __init -videocodec_init (void) +static int __init videocodec_init(void) { #ifdef CONFIG_PROC_FS static struct proc_dir_entry *videocodec_proc_entry; #endif - printk(KERN_INFO "Linux video codec intermediate layer: %s\n", - VIDEOCODEC_VERSION); + pr_info("Linux video codec intermediate layer: %s\n", VIDEOCODEC_VERSION); #ifdef CONFIG_PROC_FS - videocodec_proc_entry = proc_create_single("videocodecs", 0, NULL, - proc_videocodecs_show); - if (!videocodec_proc_entry) { + videocodec_proc_entry = proc_create_single("videocodecs", 0, NULL, proc_videocodecs_show); + if (!videocodec_proc_entry) dprintk(1, KERN_ERR "videocodec: can't init procfs.\n"); - } #endif return 0; } -static void __exit -videocodec_exit (void) +static void __exit videocodec_exit(void) { #ifdef CONFIG_PROC_FS remove_proc_entry("videocodecs", NULL); #endif } -EXPORT_SYMBOL(videocodec_attach); -EXPORT_SYMBOL(videocodec_detach); -EXPORT_SYMBOL(videocodec_register); -EXPORT_SYMBOL(videocodec_unregister); - module_init(videocodec_init); module_exit(videocodec_exit); diff --git a/drivers/staging/media/zoran/videocodec.h b/drivers/staging/media/zoran/videocodec.h index 8ed5a0f7ac01..553af4ad431e 100644 --- a/drivers/staging/media/zoran/videocodec.h +++ b/drivers/staging/media/zoran/videocodec.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ /* * VIDEO MOTION CODECs internal API for video devices * @@ -5,22 +6,6 @@ * bound to a master device. * * (c) 2002 Wolfgang Scherr - * - * $Id: videocodec.h,v 1.1.2.4 2003/01/14 21:15:03 rbultje Exp $ - * - * ------------------------------------------------------------------------ - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * ------------------------------------------------------------------------ */ /* =================== */ @@ -64,7 +49,6 @@ device dependent and vary between MJPEG/MPEG/WAVELET/... devices. (!!!!) ---------------------------------------------------------------------------- */ - /* ========================================== */ /* description of the videocodec_io structure */ @@ -111,7 +95,7 @@ the calls include frame numbers and flags (even/odd/...) if needed and a flag which allows blocking until its ready */ - + /* ============== */ /* user interface */ /* ============== */ @@ -131,7 +115,6 @@ M zr36055[0] 0001 0000c001 00000000 (zr36050[0]) M zr36055[1] 0001 0000c001 00000000 (zr36050[1]) */ - /* =============================================== */ /* special defines for the videocodec_io structure */ @@ -207,10 +190,9 @@ M zr36055[1] 0001 0000c001 00000000 (zr36050[1]) #define CODEC_G_FLAG 0x8000 /* this is how 'get' is detected */ /* types of transfer, directly user space or a kernel buffer (image-fn.'s) */ -/* -> used in get_image, put_image */ +/* -> used in get_image, put_image */ #define CODEC_TRANSFER_KERNEL 0 /* use "memcopy" */ #define CODEC_TRANSFER_USER 1 /* use "to/from_user" */ - /* ========================= */ /* the structures itself ... */ @@ -267,46 +249,27 @@ struct videocodec { void *data; /* private slave data */ /* attach/detach client functions (indirect call) */ - int (*setup) (struct videocodec * codec); - int (*unset) (struct videocodec * codec); + int (*setup)(struct videocodec *codec); + int (*unset)(struct videocodec *codec); /* main functions, every client needs them for sure! */ // set compression or decompression (or freeze, stop, standby, etc) - int (*set_mode) (struct videocodec * codec, - int mode); + int (*set_mode)(struct videocodec *codec, int mode); // setup picture size and norm (for the codec's video frontend) - int (*set_video) (struct videocodec * codec, - struct tvnorm * norm, - struct vfe_settings * cap, - struct vfe_polarity * pol); + int (*set_video)(struct videocodec *codec, struct tvnorm *norm, + struct vfe_settings *cap, struct vfe_polarity *pol); // other control commands, also mmap setup etc. - int (*control) (struct videocodec * codec, - int type, - int size, - void *data); + int (*control)(struct videocodec *codec, int type, int size, void *data); /* additional setup/query/processing (may be NULL pointer) */ // interrupt setup / handling (for irq's delivered by master) - int (*setup_interrupt) (struct videocodec * codec, - long mode); - int (*handle_interrupt) (struct videocodec * codec, - int source, - long flag); + int (*setup_interrupt)(struct videocodec *codec, long mode); + int (*handle_interrupt)(struct videocodec *codec, int source, long flag); // picture interface (if any) - long (*put_image) (struct videocodec * codec, - int tr_type, - int block, - long *fr_num, - long *flag, - long size, - void *buf); - long (*get_image) (struct videocodec * codec, - int tr_type, - int block, - long *fr_num, - long *flag, - long size, - void *buf); + long (*put_image)(struct videocodec *codec, int tr_type, int block, + long *fr_num, long *flag, long size, void *buf); + long (*get_image)(struct videocodec *codec, int tr_type, int block, + long *fr_num, long *flag, long size, void *buf); }; struct videocodec_master { @@ -318,13 +281,9 @@ struct videocodec_master { void *data; /* private master data */ - __u32(*readreg) (struct videocodec * codec, - __u16 reg); - void (*writereg) (struct videocodec * codec, - __u16 reg, - __u32 value); + __u32 (*readreg)(struct videocodec *codec, __u16 reg); + void (*writereg)(struct videocodec *codec, __u16 reg, __u32 value); }; - /* ================================================= */ /* function prototypes of the master/slave interface */ diff --git a/drivers/staging/media/zoran/zoran.h b/drivers/staging/media/zoran/zoran.h index e84fb604a689..eac8e49a080f 100644 --- a/drivers/staging/media/zoran/zoran.h +++ b/drivers/staging/media/zoran/zoran.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ /* * zoran - Iomega Buz driver * @@ -12,16 +13,6 @@ * bttv - Bt848 frame grabber driver * Copyright (C) 1996,97,98 Ralph Metzler (rjkm@thp.uni-koeln.de) * & Marcus Metzler (mocm@thp.uni-koeln.de) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. */ #ifndef _BUZ_H_ @@ -141,11 +132,12 @@ struct zoran_format { __u32 flags; __u32 vfespfr; }; + /* flags */ -#define ZORAN_FORMAT_COMPRESSED 1<<0 -#define ZORAN_FORMAT_OVERLAY 1<<1 -#define ZORAN_FORMAT_CAPTURE 1<<2 -#define ZORAN_FORMAT_PLAYBACK 1<<3 +#define ZORAN_FORMAT_COMPRESSED BIT(0) +#define ZORAN_FORMAT_OVERLAY BIT(1) +#define ZORAN_FORMAT_CAPTURE BIT(2) +#define ZORAN_FORMAT_PLAYBACK BIT(3) /* overlay-settings */ struct zoran_overlay_settings { @@ -205,7 +197,7 @@ struct zoran_buffer_col { enum zoran_lock_activity active; /* feature currently in use? */ unsigned int num_buffers, buffer_size; struct zoran_buffer buffer[MAX_FRAME]; /* buffers */ - u8 allocated; /* Flag if buffers are allocated */ + u8 allocated; /* Flag if buffers are allocated */ u8 need_contiguous; /* Flag if contiguous buffers are needed */ /* only applies to jpg buffers, raw buffers are always contiguous */ }; @@ -262,7 +254,7 @@ struct card_info { /* avs6eyes mux setting */ u8 input_mux; - void (*init) (struct zoran * zr); + void (*init)(struct zoran *zr); }; struct zoran { @@ -300,10 +292,10 @@ struct zoran { v4l2_std_id norm; /* Current buffer params */ - void *vbuf_base; - int vbuf_height, vbuf_width; - int vbuf_depth; - int vbuf_bytesperline; + void *vbuf_base; + int vbuf_height, vbuf_width; + int vbuf_depth; + int vbuf_bytesperline; struct zoran_overlay_settings overlay_settings; u32 *overlay_mask; /* overlay mask */ @@ -336,11 +328,11 @@ struct zoran { /* (dma_head - dma_tail) is number active in DMA, must be <= BUZ_NUM_STAT_COM */ /* (value & BUZ_MASK_STAT_COM) corresponds to index in stat_com table */ unsigned long jpg_que_head; /* Index where to put next buffer which is queued */ - unsigned long jpg_dma_head; /* Index of next buffer which goes into stat_com */ - unsigned long jpg_dma_tail; /* Index of last buffer in stat_com */ - unsigned long jpg_que_tail; /* Index of last buffer in queue */ - unsigned long jpg_seq_num; /* count of frames since grab/play started */ - unsigned long jpg_err_seq; /* last seq_num before error */ + unsigned long jpg_dma_head; /* Index of next buffer which goes into stat_com */ + unsigned long jpg_dma_tail; /* Index of last buffer in stat_com */ + unsigned long jpg_que_tail; /* Index of last buffer in queue */ + unsigned long jpg_seq_num; /* count of frames since grab/play started */ + unsigned long jpg_err_seq; /* last seq_num before error */ unsigned long jpg_err_shift; unsigned long jpg_queued_num; /* count of frames queued since grab/play started */ @@ -392,11 +384,11 @@ static inline struct zoran *to_zoran(struct v4l2_device *v4l2_dev) /* There was something called _ALPHA_BUZ that used the PCI address instead of * the kernel iomapped address for btread/btwrite. */ -#define btwrite(dat,adr) writel((dat), zr->zr36057_mem+(adr)) -#define btread(adr) readl(zr->zr36057_mem+(adr)) +#define btwrite(dat, adr) writel((dat), zr->zr36057_mem + (adr)) +#define btread(adr) readl(zr->zr36057_mem + (adr)) -#define btand(dat,adr) btwrite((dat) & btread(adr), adr) -#define btor(dat,adr) btwrite((dat) | btread(adr), adr) -#define btaor(dat,mask,adr) btwrite((dat) | ((mask) & btread(adr)), adr) +#define btand(dat, adr) btwrite((dat) & btread(adr), adr) +#define btor(dat, adr) btwrite((dat) | btread(adr), adr) +#define btaor(dat, mask, adr) btwrite((dat) | ((mask) & btread(adr)), adr) #endif diff --git a/drivers/staging/media/zoran/zoran_card.c b/drivers/staging/media/zoran/zoran_card.c index d2f82894e8ee..960257cd43d6 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0-or-later /* * Zoran zr36057/zr36067 PCI controller driver, for the * Pinnacle/Miro DC10/DC10+/DC30/DC30+, Iomega Buz, Linux @@ -6,16 +7,6 @@ * This part handles card-specific data and detection * * Copyright (C) 2000 Serguei Miridonov - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. */ #include @@ -51,25 +42,21 @@ extern const struct zoran_format zoran_formats[]; -static int card[BUZ_MAX] = { [0 ... (BUZ_MAX-1)] = -1 }; +static int card[BUZ_MAX] = { [0 ... (BUZ_MAX - 1)] = -1 }; module_param_array(card, int, NULL, 0444); MODULE_PARM_DESC(card, "Card type"); /* - The video mem address of the video card. - The driver has a little database for some videocards - to determine it from there. If your video card is not in there - you have either to give it to the driver as a parameter - or set in in a VIDIOCSFBUF ioctl + * The video mem address of the video card. The driver has a little database for some videocards + * to determine it from there. If your video card is not in there you have either to give it to + * the driver as a parameter or set in in a VIDIOCSFBUF ioctl */ static unsigned long vidmem; /* default = 0 - Video memory base address */ module_param_hw(vidmem, ulong, iomem, 0444); MODULE_PARM_DESC(vidmem, "Default video memory base address"); -/* - Default input and video norm at startup of the driver. -*/ +/* Default input and video norm at startup of the driver. */ static unsigned int default_input; /* default 0 = Composite, 1 = S-Video */ module_param(default_input, uint, 0444); @@ -86,7 +73,7 @@ module_param(default_norm, int, 0444); MODULE_PARM_DESC(default_norm, "Default norm (0=PAL, 1=NTSC, 2=SECAM)"); /* /dev/videoN, -1 for autodetect */ -static int video_nr[BUZ_MAX] = { [0 ... (BUZ_MAX-1)] = -1 }; +static int video_nr[BUZ_MAX] = { [0 ... (BUZ_MAX - 1)] = -1 }; module_param_array(video_nr, int, NULL, 0444); MODULE_PARM_DESC(video_nr, "Video device number (-1=Auto)"); @@ -104,8 +91,9 @@ MODULE_PARM_DESC(jpg_nbufs, "Maximum number of JPG buffers to use"); module_param(jpg_bufsize, int, 0644); MODULE_PARM_DESC(jpg_bufsize, "Maximum size per JPG buffer (in kB)"); -int pass_through = 0; /* 1=Pass through TV signal when device is not used */ - /* 0=Show color bar when device is not used (LML33: only if lml33dpath=1) */ +/* 1=Pass through TV signal when device is not used */ +/* 0=Show color bar when device is not used (LML33: only if lml33dpath=1) */ +int pass_through; module_param(pass_through, int, 0644); MODULE_PARM_DESC(pass_through, "Pass TV signal through to TV-out when idling"); @@ -138,98 +126,73 @@ MODULE_DEVICE_TABLE(pci, zr36067_pci_tbl); static unsigned int zoran_num; /* number of cards found */ /* videocodec bus functions ZR36060 */ -static u32 -zr36060_read (struct videocodec *codec, - u16 reg) +static u32 zr36060_read(struct videocodec *codec, u16 reg) { - struct zoran *zr = (struct zoran *) codec->master_data->data; + struct zoran *zr = (struct zoran *)codec->master_data->data; __u32 data; - if (post_office_wait(zr) - || post_office_write(zr, 0, 1, reg >> 8) - || post_office_write(zr, 0, 2, reg & 0xff)) { + if (post_office_wait(zr) || post_office_write(zr, 0, 1, reg >> 8) || + post_office_write(zr, 0, 2, reg & 0xff)) return -1; - } data = post_office_read(zr, 0, 3) & 0xff; return data; } -static void -zr36060_write (struct videocodec *codec, - u16 reg, - u32 val) +static void zr36060_write(struct videocodec *codec, u16 reg, u32 val) { - struct zoran *zr = (struct zoran *) codec->master_data->data; + struct zoran *zr = (struct zoran *)codec->master_data->data; - if (post_office_wait(zr) - || post_office_write(zr, 0, 1, reg >> 8) - || post_office_write(zr, 0, 2, reg & 0xff)) { + if (post_office_wait(zr) || post_office_write(zr, 0, 1, reg >> 8) || + post_office_write(zr, 0, 2, reg & 0xff)) return; - } post_office_write(zr, 0, 3, val & 0xff); } /* videocodec bus functions ZR36050 */ -static u32 -zr36050_read (struct videocodec *codec, - u16 reg) +static u32 zr36050_read(struct videocodec *codec, u16 reg) { - struct zoran *zr = (struct zoran *) codec->master_data->data; + struct zoran *zr = (struct zoran *)codec->master_data->data; __u32 data; - if (post_office_wait(zr) - || post_office_write(zr, 1, 0, reg >> 2)) { // reg. HIGHBYTES + if (post_office_wait(zr) || post_office_write(zr, 1, 0, reg >> 2)) // reg. HIGHBYTES return -1; - } data = post_office_read(zr, 0, reg & 0x03) & 0xff; // reg. LOWBYTES + read return data; } -static void -zr36050_write (struct videocodec *codec, - u16 reg, - u32 val) +static void zr36050_write(struct videocodec *codec, u16 reg, u32 val) { - struct zoran *zr = (struct zoran *) codec->master_data->data; + struct zoran *zr = (struct zoran *)codec->master_data->data; - if (post_office_wait(zr) - || post_office_write(zr, 1, 0, reg >> 2)) { // reg. HIGHBYTES + if (post_office_wait(zr) || post_office_write(zr, 1, 0, reg >> 2)) // reg. HIGHBYTES return; - } post_office_write(zr, 0, reg & 0x03, val & 0xff); // reg. LOWBYTES + wr. data } /* videocodec bus functions ZR36016 */ -static u32 -zr36016_read (struct videocodec *codec, - u16 reg) +static u32 zr36016_read(struct videocodec *codec, u16 reg) { - struct zoran *zr = (struct zoran *) codec->master_data->data; + struct zoran *zr = (struct zoran *)codec->master_data->data; __u32 data; - if (post_office_wait(zr)) { + if (post_office_wait(zr)) return -1; - } data = post_office_read(zr, 2, reg & 0x03) & 0xff; // read return data; } /* hack for in zoran_device.c */ -void -zr36016_write (struct videocodec *codec, - u16 reg, - u32 val) +void zr36016_write(struct videocodec *codec, u16 reg, u32 val) { - struct zoran *zr = (struct zoran *) codec->master_data->data; + struct zoran *zr = (struct zoran *)codec->master_data->data; - if (post_office_wait(zr)) { + if (post_office_wait(zr)) return; - } post_office_write(zr, 2, reg & 0x03, val & 0x0ff); // wr. data } @@ -238,8 +201,7 @@ zr36016_write (struct videocodec *codec, * Board specific information */ -static void -dc10_init (struct zoran *zr) +static void dc10_init(struct zoran *zr) { dprintk(3, KERN_DEBUG "%s: %s\n", ZR_DEVNAME(zr), __func__); @@ -250,14 +212,12 @@ dc10_init (struct zoran *zr) GPIO(zr, 7, 0); } -static void -dc10plus_init (struct zoran *zr) +static void dc10plus_init(struct zoran *zr) { dprintk(3, KERN_DEBUG "%s: %s\n", ZR_DEVNAME(zr), __func__); } -static void -buz_init (struct zoran *zr) +static void buz_init(struct zoran *zr) { dprintk(3, KERN_DEBUG "%s: %s\n", ZR_DEVNAME(zr), __func__); @@ -267,16 +227,14 @@ buz_init (struct zoran *zr) pci_write_config_dword(zr->pci_dev, 0xe8, 0xc0200000); } -static void -lml33_init (struct zoran *zr) +static void lml33_init(struct zoran *zr) { dprintk(3, KERN_DEBUG "%s: %s\n", ZR_DEVNAME(zr), __func__); GPIO(zr, 2, 1); // Set Composite input/output } -static void -avs6eyes_init (struct zoran *zr) +static void avs6eyes_init(struct zoran *zr) { // AverMedia 6-Eyes original driver by Christer Weinigel @@ -296,11 +254,9 @@ avs6eyes_init (struct zoran *zr) GPIO(zr, 5, mux & 2); /* MUX S1 */ GPIO(zr, 6, 0); /* ? */ GPIO(zr, 7, mux & 4); /* MUX S2 */ - } -static char * -codecid_to_modulename (u16 codecid) +static char *codecid_to_modulename(u16 codecid) { char *name = NULL; @@ -328,24 +284,27 @@ static struct tvnorm f60sqpixel = { 780, 640, 51, 716, 525, 480, 12 }; static struct tvnorm f50ccir601 = { 864, 720, 75, 804, 625, 576, 18 }; static struct tvnorm f60ccir601 = { 858, 720, 57, 788, 525, 480, 16 }; -static struct tvnorm f50ccir601_lml33 = { 864, 720, 75+34, 804, 625, 576, 18 }; -static struct tvnorm f60ccir601_lml33 = { 858, 720, 57+34, 788, 525, 480, 16 }; +static struct tvnorm f50ccir601_lml33 = { 864, 720, 75 + 34, 804, 625, 576, 18 }; +static struct tvnorm f60ccir601_lml33 = { 858, 720, 57 + 34, 788, 525, 480, 16 }; /* The DC10 (57/16/50) uses VActive as HSync, so HStart must be 0 */ static struct tvnorm f50sqpixel_dc10 = { 944, 768, 0, 880, 625, 576, 0 }; static struct tvnorm f60sqpixel_dc10 = { 780, 640, 0, 716, 525, 480, 12 }; -/* FIXME: I cannot swap U and V in saa7114, so i do one - * pixel left shift in zoran (75 -> 74) - * (Maxim Yevtyushkin ) */ -static struct tvnorm f50ccir601_lm33r10 = { 864, 720, 74+54, 804, 625, 576, 18 }; -static struct tvnorm f60ccir601_lm33r10 = { 858, 720, 56+54, 788, 525, 480, 16 }; +/* + * FIXME: I cannot swap U and V in saa7114, so i do one pixel left shift in zoran (75 -> 74) + * (Maxim Yevtyushkin ) + */ +static struct tvnorm f50ccir601_lm33r10 = { 864, 720, 74 + 54, 804, 625, 576, 18 }; +static struct tvnorm f60ccir601_lm33r10 = { 858, 720, 56 + 54, 788, 525, 480, 16 }; -/* FIXME: The ks0127 seem incapable of swapping U and V, too, which is why I - * copy Maxim's left shift hack for the 6 Eyes. +/* + * FIXME: The ks0127 seem incapable of swapping U and V, too, which is why I copy Maxim's left + * shift hack for the 6 Eyes. * * Christer's driver used the unshifted norms, though... - * /Sam */ + * /Sam + */ static struct tvnorm f50ccir601_avs6eyes = { 864, 720, 74, 804, 625, 576, 18 }; static struct tvnorm f60ccir601_avs6eyes = { 858, 720, 56, 788, 525, 480, 16 }; @@ -375,7 +334,7 @@ static struct card_info zoran_cards[NUM_CARDS] = { { 2, "S-Video" }, { 0, "Internal/comp" } }, - .norms = V4L2_STD_NTSC|V4L2_STD_PAL|V4L2_STD_SECAM, + .norms = V4L2_STD_NTSC | V4L2_STD_PAL | V4L2_STD_SECAM, .tvn = { &f50sqpixel_dc10, &f60sqpixel_dc10, @@ -405,7 +364,7 @@ static struct card_info zoran_cards[NUM_CARDS] = { { 7, "S-Video" }, { 5, "Internal/comp" } }, - .norms = V4L2_STD_NTSC|V4L2_STD_PAL|V4L2_STD_SECAM, + .norms = V4L2_STD_NTSC | V4L2_STD_PAL | V4L2_STD_SECAM, .tvn = { &f50sqpixel, &f60sqpixel, @@ -434,7 +393,7 @@ static struct card_info zoran_cards[NUM_CARDS] = { { 7, "S-Video" }, { 5, "Internal/comp" } }, - .norms = V4L2_STD_NTSC|V4L2_STD_PAL|V4L2_STD_SECAM, + .norms = V4L2_STD_NTSC | V4L2_STD_PAL | V4L2_STD_SECAM, .tvn = { &f50sqpixel, &f60sqpixel, @@ -465,7 +424,7 @@ static struct card_info zoran_cards[NUM_CARDS] = { { 2, "S-Video" }, { 0, "Internal/comp" } }, - .norms = V4L2_STD_NTSC|V4L2_STD_PAL|V4L2_STD_SECAM, + .norms = V4L2_STD_NTSC | V4L2_STD_PAL | V4L2_STD_SECAM, .tvn = { &f50sqpixel_dc10, &f60sqpixel_dc10, @@ -496,7 +455,7 @@ static struct card_info zoran_cards[NUM_CARDS] = { { 2, "S-Video" }, { 0, "Internal/comp" } }, - .norms = V4L2_STD_NTSC|V4L2_STD_PAL|V4L2_STD_SECAM, + .norms = V4L2_STD_NTSC | V4L2_STD_PAL | V4L2_STD_SECAM, .tvn = { &f50sqpixel_dc10, &f60sqpixel_dc10, @@ -525,7 +484,7 @@ static struct card_info zoran_cards[NUM_CARDS] = { { 0, "Composite" }, { 7, "S-Video" } }, - .norms = V4L2_STD_NTSC|V4L2_STD_PAL, + .norms = V4L2_STD_NTSC | V4L2_STD_PAL, .tvn = { &f50ccir601_lml33, &f60ccir601_lml33, @@ -554,7 +513,7 @@ static struct card_info zoran_cards[NUM_CARDS] = { { 0, "Composite" }, { 7, "S-Video" } }, - .norms = V4L2_STD_NTSC|V4L2_STD_PAL, + .norms = V4L2_STD_NTSC | V4L2_STD_PAL, .tvn = { &f50ccir601_lm33r10, &f60ccir601_lm33r10, @@ -583,7 +542,7 @@ static struct card_info zoran_cards[NUM_CARDS] = { { 3, "Composite" }, { 7, "S-Video" } }, - .norms = V4L2_STD_NTSC|V4L2_STD_PAL|V4L2_STD_SECAM, + .norms = V4L2_STD_NTSC | V4L2_STD_PAL | V4L2_STD_SECAM, .tvn = { &f50ccir601, &f60ccir601, @@ -601,8 +560,7 @@ static struct card_info zoran_cards[NUM_CARDS] = { }, { .type = AVS6EYES, .name = "6-Eyes", - /* AverMedia chose not to brand the 6-Eyes. Thus it - can't be autodetected, and requires card=x. */ +/* AverMedia chose not to brand the 6-Eyes. Thus it can't be autodetected, and requires card=x. */ .i2c_decoder = "ks0127", .addrs_decoder = ks0127_addrs, .i2c_encoder = "bt866", @@ -622,7 +580,7 @@ static struct card_info zoran_cards[NUM_CARDS] = { {10, "S-Video 3" }, {15, "YCbCr" } }, - .norms = V4L2_STD_NTSC|V4L2_STD_PAL, + .norms = V4L2_STD_NTSC | V4L2_STD_PAL, .tvn = { &f50ccir601_avs6eyes, &f60ccir601_avs6eyes, @@ -645,27 +603,23 @@ static struct card_info zoran_cards[NUM_CARDS] = { * I2C functions */ /* software I2C functions */ -static int -zoran_i2c_getsda (void *data) +static int zoran_i2c_getsda(void *data) { - struct zoran *zr = (struct zoran *) data; + struct zoran *zr = (struct zoran *)data; return (btread(ZR36057_I2CBR) >> 1) & 1; } -static int -zoran_i2c_getscl (void *data) +static int zoran_i2c_getscl(void *data) { - struct zoran *zr = (struct zoran *) data; + struct zoran *zr = (struct zoran *)data; return btread(ZR36057_I2CBR) & 1; } -static void -zoran_i2c_setsda (void *data, - int state) +static void zoran_i2c_setsda(void *data, int state) { - struct zoran *zr = (struct zoran *) data; + struct zoran *zr = (struct zoran *)data; if (state) zr->i2cbr |= 2; @@ -674,11 +628,9 @@ zoran_i2c_setsda (void *data, btwrite(zr->i2cbr, ZR36057_I2CBR); } -static void -zoran_i2c_setscl (void *data, - int state) +static void zoran_i2c_setscl(void *data, int state) { - struct zoran *zr = (struct zoran *) data; + struct zoran *zr = (struct zoran *)data; if (state) zr->i2cbr |= 1; @@ -696,8 +648,7 @@ static const struct i2c_algo_bit_data zoran_i2c_bit_data_template = { .timeout = 100, }; -static int -zoran_register_i2c (struct zoran *zr) +static int zoran_register_i2c(struct zoran *zr) { zr->i2c_algo = zoran_i2c_bit_data_template; zr->i2c_algo.data = zr; @@ -709,18 +660,14 @@ zoran_register_i2c (struct zoran *zr) return i2c_bit_add_bus(&zr->i2c_adapter); } -static void -zoran_unregister_i2c (struct zoran *zr) +static void zoran_unregister_i2c(struct zoran *zr) { i2c_del_adapter(&zr->i2c_adapter); } /* Check a zoran_params struct for correctness, insert default params */ - -int -zoran_check_jpg_settings (struct zoran *zr, - struct zoran_jpg_settings *settings, - int try) +int zoran_check_jpg_settings(struct zoran *zr, + struct zoran_jpg_settings *settings, int try) { int err = 0, err0 = 0; @@ -877,8 +824,7 @@ zoran_check_jpg_settings (struct zoran *zr, return 0; } -void -zoran_open_init_params (struct zoran *zr) +void zoran_open_init_params(struct zoran *zr) { int i; @@ -903,14 +849,12 @@ zoran_open_init_params (struct zoran *zr) zr->v4l_pend_head = 0; zr->v4l_sync_tail = 0; zr->v4l_buffers.active = ZORAN_FREE; - for (i = 0; i < VIDEO_MAX_FRAME; i++) { + for (i = 0; i < VIDEO_MAX_FRAME; i++) zr->v4l_buffers.buffer[i].state = BUZ_STATE_USER; /* nothing going on */ - } zr->v4l_buffers.allocated = 0; - for (i = 0; i < BUZ_MAX_FRAME; i++) { + for (i = 0; i < BUZ_MAX_FRAME; i++) zr->jpg_buffers.buffer[i].state = BUZ_STATE_USER; /* nothing going on */ - } zr->jpg_buffers.active = ZORAN_FREE; zr->jpg_buffers.allocated = 0; /* Set necessary params and call zoran_check_jpg_settings to set the defaults */ @@ -938,7 +882,7 @@ zoran_open_init_params (struct zoran *zr) zr->testing = 0; } -static void test_interrupts (struct zoran *zr) +static void test_interrupts(struct zoran *zr) { DEFINE_WAIT(wait); int timeout, icr; @@ -955,15 +899,14 @@ static void test_interrupts (struct zoran *zr) btwrite(0x78000000, ZR36057_ISR); zr->testing = 0; dprintk(5, KERN_INFO "%s: Testing interrupts...\n", ZR_DEVNAME(zr)); - if (timeout) { + if (timeout) dprintk(1, ": time spent: %d\n", 1 * HZ - timeout); - } if (zr36067_debug > 1) print_interrupts(zr); btwrite(icr, ZR36057_ICR); } -static int zr36057_init (struct zoran *zr) +static int zr36057_init(struct zoran *zr) { int j, err; @@ -981,7 +924,7 @@ static int zr36057_init (struct zoran *zr) zr->jpg_buffers.allocated = 0; zr->v4l_buffers.allocated = 0; - zr->vbuf_base = (void *) vidmem; + zr->vbuf_base = (void *)vidmem; zr->vbuf_width = 0; zr->vbuf_height = 0; zr->vbuf_depth = 0; @@ -1000,7 +943,7 @@ static int zr36057_init (struct zoran *zr) zr->norm = V4L2_STD_SECAM; zr->timing = zr->card.tvn[2]; } - if (zr->timing == NULL) { + if (!zr->timing) { dprintk(1, KERN_WARNING "%s: %s - default TV standard not supported by hardware. PAL will be used.\n", @@ -1009,11 +952,11 @@ static int zr36057_init (struct zoran *zr) zr->timing = zr->card.tvn[0]; } - if (default_input > zr->card.inputs-1) { + if (default_input > zr->card.inputs - 1) { dprintk(1, KERN_WARNING "%s: default_input value %d out of range (0-%d)\n", - ZR_DEVNAME(zr), default_input, zr->card.inputs-1); + ZR_DEVNAME(zr), default_input, zr->card.inputs - 1); default_input = 0; } zr->input = default_input; @@ -1021,8 +964,7 @@ static int zr36057_init (struct zoran *zr) /* default setup (will be repeated at every open) */ zoran_open_init_params(zr); - /* allocate memory *before* doing anything to the hardware - * in case allocation fails */ + /* allocate memory *before* doing anything to the hardware in case allocation fails */ zr->stat_com = kzalloc(BUZ_NUM_STAT_COM * 4, GFP_KERNEL); zr->video_dev = video_device_alloc(); if (!zr->stat_com || !zr->video_dev) { @@ -1033,20 +975,19 @@ static int zr36057_init (struct zoran *zr) err = -ENOMEM; goto exit_free; } - for (j = 0; j < BUZ_NUM_STAT_COM; j++) { + for (j = 0; j < BUZ_NUM_STAT_COM; j++) zr->stat_com[j] = cpu_to_le32(1); /* mark as unavailable to zr36057 */ - } - /* - * Now add the template and register the device unit. - */ + /* Now add the template and register the device unit. */ *zr->video_dev = zoran_template; zr->video_dev->v4l2_dev = &zr->v4l2_dev; zr->video_dev->lock = &zr->lock; strscpy(zr->video_dev->name, ZR_DEVNAME(zr), sizeof(zr->video_dev->name)); - /* It's not a mem2mem device, but you can both capture and output from - one and the same device. This should really be split up into two - device nodes, but that's a job for another day. */ + /* + * It's not a mem2mem device, but you can both capture and output from one and the same + * device. This should really be split up into two device nodes, but that's a job for + * another day. + */ zr->video_dev->vfl_dir = VFL_DIR_M2M; err = video_register_device(zr->video_dev, VFL_TYPE_GRABBER, video_nr[zr->id]); if (err < 0) @@ -1113,8 +1054,7 @@ static void zoran_remove(struct pci_dev *pdev) kfree(zr); } -void -zoran_vdev_release (struct video_device *vdev) +void zoran_vdev_release(struct video_device *vdev) { kfree(vdev); } @@ -1124,17 +1064,14 @@ static struct videocodec_master *zoran_setup_videocodec(struct zoran *zr, { struct videocodec_master *m = NULL; - m = kmalloc(sizeof(struct videocodec_master), GFP_KERNEL); - if (!m) { - dprintk(1, KERN_ERR "%s: %s - no memory\n", - ZR_DEVNAME(zr), __func__); + m = kmalloc(sizeof(*m), GFP_KERNEL); + if (!m) return m; - } - /* magic and type are unused for master struct. Makes sense only at - codec structs. - In the past, .type were initialized to the old V4L1 .hardware - value, as VID_HARDWARE_ZR36067 + /* + * magic and type are unused for master struct. Makes sense only at codec structs. + * In the past, .type were initialized to the old V4L1 .hardware value, + * as VID_HARDWARE_ZR36067 */ m->magic = 0L; m->type = 0; @@ -1143,8 +1080,7 @@ static struct videocodec_master *zoran_setup_videocodec(struct zoran *zr, strscpy(m->name, ZR_DEVNAME(zr), sizeof(m->name)); m->data = zr; - switch (type) - { + switch (type) { case CODEC_TYPE_ZR36060: m->readreg = zr36060_read; m->writereg = zr36060_write; @@ -1169,8 +1105,10 @@ static void zoran_subdev_notify(struct v4l2_subdev *sd, unsigned int cmd, void * { struct zoran *zr = to_zoran(sd->v4l2_dev); - /* Bt819 needs to reset its FIFO buffer using #FRST pin and - LML33 card uses GPIO(7) for that. */ + /* + * Bt819 needs to reset its FIFO buffer using #FRST pin and + * LML33 card uses GPIO(7) for that. + */ if (cmd == BT819_FIFO_RESET_LOW) GPIO(zr, 7, 0); else if (cmd == BT819_FIFO_RESET_HIGH) @@ -1192,7 +1130,6 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) char *codec_name, *vfe_name; unsigned int nr; - nr = zoran_num++; if (nr >= BUZ_MAX) { dprintk(1, KERN_ERR "%s: driver limited to %d card(s) maximum\n", @@ -1200,12 +1137,10 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) return -ENOENT; } - zr = kzalloc(sizeof(struct zoran), GFP_KERNEL); - if (!zr) { - dprintk(1, KERN_ERR "%s: %s - kzalloc failed\n", - ZORAN_NAME, __func__); + zr = kzalloc(sizeof(*zr), GFP_KERNEL); + if (!zr) return -ENOMEM; - } + zr->v4l2_dev.notify = zoran_subdev_notify; if (v4l2_device_register(&pdev->dev, &zr->v4l2_dev)) goto zr_free_mem; @@ -1271,14 +1206,16 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) } } - /* even though we make this a non pointer and thus + /* + * even though we make this a non pointer and thus * theoretically allow for making changes to this struct * on a per-individual card basis at runtime, this is * strongly discouraged. This structure is intended to - * keep general card information, no settings or anything */ + * keep general card information, no settings or anything + */ zr->card = zoran_cards[card_num]; - snprintf(ZR_DEVNAME(zr), sizeof(ZR_DEVNAME(zr)), - "%s[%u]", zr->card.name, zr->id); + snprintf(ZR_DEVNAME(zr), sizeof(ZR_DEVNAME(zr)), "%s[%u]", + zr->card.name, zr->id); zr->zr36057_mem = pci_ioremap_bar(zr->pci_dev, 0); if (!zr->zr36057_mem) { @@ -1316,14 +1253,12 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) if (latency != need_latency) { dprintk(2, KERN_INFO "%s: Changing PCI latency from %d to %d\n", ZR_DEVNAME(zr), latency, need_latency); - pci_write_config_byte(zr->pci_dev, PCI_LATENCY_TIMER, - need_latency); + pci_write_config_byte(zr->pci_dev, PCI_LATENCY_TIMER, need_latency); } zr36057_restart(zr); /* i2c */ - dprintk(2, KERN_INFO "%s: Initializing i2c bus...\n", - ZR_DEVNAME(zr)); + dprintk(2, KERN_INFO "%s: Initializing i2c bus...\n", ZR_DEVNAME(zr)); if (zoran_register_i2c(zr) < 0) { dprintk(1, KERN_ERR "%s: %s - can't initialize i2c bus\n", @@ -1331,18 +1266,16 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) goto zr_free_irq; } - zr->decoder = v4l2_i2c_new_subdev(&zr->v4l2_dev, - &zr->i2c_adapter, zr->card.i2c_decoder, - 0, zr->card.addrs_decoder); + zr->decoder = v4l2_i2c_new_subdev(&zr->v4l2_dev, &zr->i2c_adapter, + zr->card.i2c_decoder, 0, + zr->card.addrs_decoder); if (zr->card.i2c_encoder) - zr->encoder = v4l2_i2c_new_subdev(&zr->v4l2_dev, - &zr->i2c_adapter, zr->card.i2c_encoder, - 0, zr->card.addrs_encoder); + zr->encoder = v4l2_i2c_new_subdev(&zr->v4l2_dev, &zr->i2c_adapter, + zr->card.i2c_encoder, 0, + zr->card.addrs_encoder); - dprintk(2, - KERN_INFO "%s: Initializing videocodec bus...\n", - ZR_DEVNAME(zr)); + dprintk(2, KERN_INFO "%s: Initializing videocodec bus...\n", ZR_DEVNAME(zr)); if (zr->card.video_codec) { codec_name = codecid_to_modulename(zr->card.video_codec); @@ -1457,16 +1390,14 @@ static int __init zoran_init(void) { int res; - printk(KERN_INFO "Zoran MJPEG board driver version %s\n", - ZORAN_VERSION); + pr_info("Zoran MJPEG board driver version %s\n", ZORAN_VERSION); /* check the parameters we have been given, adjust if necessary */ if (v4l_nbufs < 2) v4l_nbufs = 2; if (v4l_nbufs > VIDEO_MAX_FRAME) v4l_nbufs = VIDEO_MAX_FRAME; - /* The user specifies the in KB, we want them in byte - * (and page aligned) */ + /* The user specifies the in KB, we want them in byte (and page aligned) */ v4l_bufsize = PAGE_ALIGN(v4l_bufsize * 1024); if (v4l_bufsize < 32768) v4l_bufsize = 32768; @@ -1491,19 +1422,17 @@ static int __init zoran_init(void) } /* some mainboards might not do PCI-PCI data transfer well */ - if (pci_pci_problems & (PCIPCI_FAIL|PCIAGP_FAIL|PCIPCI_ALIMAGIK)) { + if (pci_pci_problems & (PCIPCI_FAIL | PCIAGP_FAIL | PCIPCI_ALIMAGIK)) { dprintk(1, KERN_WARNING - "%s: chipset does not support reliable PCI-PCI DMA\n", - ZORAN_NAME); + "%s: chipset does not support reliable PCI-PCI DMA\n", ZORAN_NAME); } res = pci_register_driver(&zoran_driver); if (res) { dprintk(1, KERN_ERR - "%s: Unable to register ZR36057 driver\n", - ZORAN_NAME); + "%s: Unable to register ZR36057 driver\n", ZORAN_NAME); return res; } diff --git a/drivers/staging/media/zoran/zoran_card.h b/drivers/staging/media/zoran/zoran_card.h index 53ed511ce546..4af8cb91d03a 100644 --- a/drivers/staging/media/zoran/zoran_card.h +++ b/drivers/staging/media/zoran/zoran_card.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ /* * Zoran zr36057/zr36067 PCI controller driver, for the * Pinnacle/Miro DC10/DC10+/DC30/DC30+, Iomega Buz, Linux @@ -6,16 +7,6 @@ * This part handles card-specific data and detection * * Copyright (C) 2000 Serguei Miridonov - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. */ #ifndef __ZORAN_CARD_H__ diff --git a/drivers/staging/media/zoran/zoran_device.c b/drivers/staging/media/zoran/zoran_device.c index 79da964c678b..cbacfa4ea2d0 100644 --- a/drivers/staging/media/zoran/zoran_device.c +++ b/drivers/staging/media/zoran/zoran_device.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0-or-later /* * Zoran zr36057/zr36067 PCI controller driver, for the * Pinnacle/Miro DC10/DC10+/DC30/DC30+, Iomega Buz, Linux @@ -6,16 +7,6 @@ * This part handles device access (PCI/I2C/codec/...) * * Copyright (C) 2000 Serguei Miridonov - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. */ #include @@ -39,16 +30,16 @@ #include #include -#include +#include #include "videocodec.h" #include "zoran.h" #include "zoran_device.h" #include "zoran_card.h" -#define IRQ_MASK ( ZR36057_ISR_GIRQ0 | \ - ZR36057_ISR_GIRQ1 | \ - ZR36057_ISR_JPEGRepIRQ ) +#define IRQ_MASK (ZR36057_ISR_GIRQ0 | \ + ZR36057_ISR_GIRQ1 | \ + ZR36057_ISR_JPEGRepIRQ) static bool lml33dpath; /* default = 0 * 1 will use digital path in capture @@ -58,14 +49,13 @@ static bool lml33dpath; /* default = 0 * on TV monitor connected to the output. * However, due to absence of 75 Ohm * load on Bt819 input, there will be - * some image imperfections */ + * some image imperfections + */ module_param(lml33dpath, bool, 0644); -MODULE_PARM_DESC(lml33dpath, - "Use digital path capture mode (on LML33 cards)"); +MODULE_PARM_DESC(lml33dpath, "Use digital path capture mode (on LML33 cards)"); -static void -zr36057_init_vfe (struct zoran *zr); +static void zr36057_init_vfe(struct zoran *zr); /* * General Purpose I/O and Guest bus access @@ -76,22 +66,20 @@ zr36057_init_vfe (struct zoran *zr); * GPIO bit number in the card_info structure is set to 0. */ -void -GPIO (struct zoran *zr, - int bit, - unsigned int value) +void GPIO(struct zoran *zr, int bit, unsigned int value) { u32 reg; u32 mask; /* Make sure the bit number is legal * A bit number of -1 (lacking) gives a mask of 0, - * making it harmless */ + * making it harmless + */ mask = (1 << (24 + bit)) & 0xff000000; reg = btread(ZR36057_GPPGCR1) & ~mask; - if (value) { + if (value) reg |= mask; - } + btwrite(reg, ZR36057_GPPGCR1); udelay(1); } @@ -100,8 +88,7 @@ GPIO (struct zoran *zr, * Wait til post office is no longer busy */ -int -post_office_wait (struct zoran *zr) +int post_office_wait(struct zoran *zr) { u32 por; @@ -119,11 +106,8 @@ post_office_wait (struct zoran *zr) return 0; } -int -post_office_write (struct zoran *zr, - unsigned int guest, - unsigned int reg, - unsigned int value) +int post_office_write(struct zoran *zr, unsigned int guest, + unsigned int reg, unsigned int value) { u32 por; @@ -135,18 +119,14 @@ post_office_write (struct zoran *zr, return post_office_wait(zr); } -int -post_office_read (struct zoran *zr, - unsigned int guest, - unsigned int reg) +int post_office_read(struct zoran *zr, unsigned int guest, unsigned int reg) { u32 por; por = ZR36057_POR_POTime | ((guest & 7) << 20) | ((reg & 7) << 16); btwrite(por, ZR36057_POR); - if (post_office_wait(zr) < 0) { + if (post_office_wait(zr) < 0) return -1; - } return btread(ZR36057_POR) & 0xFF; } @@ -155,33 +135,27 @@ post_office_read (struct zoran *zr, * detect guests */ -static void -dump_guests (struct zoran *zr) +static void dump_guests(struct zoran *zr) { if (zr36067_debug > 2) { int i, guest[8]; - for (i = 1; i < 8; i++) { // Don't read jpeg codec here + for (i = 1; i < 8; i++) /* Don't read jpeg codec here */ guest[i] = post_office_read(zr, i, 0); - } - printk(KERN_INFO "%s: Guests: %*ph\n", - ZR_DEVNAME(zr), 8, guest); + pr_info("%s: Guests: %*ph\n", ZR_DEVNAME(zr), 8, guest); } } -void -detect_guest_activity (struct zoran *zr) +void detect_guest_activity(struct zoran *zr) { int timeout, i, j, res, guest[8], guest0[8], change[8][3]; ktime_t t0, t1; dump_guests(zr); - printk(KERN_INFO "%s: Detecting guests activity, please wait...\n", - ZR_DEVNAME(zr)); - for (i = 1; i < 8; i++) { // Don't read jpeg codec here + pr_info("%s: Detecting guests activity, please wait...\n", ZR_DEVNAME(zr)); + for (i = 1; i < 8; i++) /* Don't read jpeg codec here */ guest0[i] = guest[i] = post_office_read(zr, i, 0); - } timeout = 0; j = 0; @@ -205,44 +179,40 @@ detect_guest_activity (struct zoran *zr) break; } - printk(KERN_INFO "%s: Guests: %*ph\n", ZR_DEVNAME(zr), 8, guest0); + pr_info("%s: Guests: %*ph\n", ZR_DEVNAME(zr), 8, guest0); if (j == 0) { - printk(KERN_INFO "%s: No activity detected.\n", ZR_DEVNAME(zr)); + pr_info("%s: No activity detected.\n", ZR_DEVNAME(zr)); return; } - for (i = 0; i < j; i++) { - printk(KERN_INFO "%s: %6d: %d => 0x%02x\n", ZR_DEVNAME(zr), - change[i][0], change[i][1], change[i][2]); - } + for (i = 0; i < j; i++) + pr_info("%s: %6d: %d => 0x%02x\n", ZR_DEVNAME(zr), + change[i][0], change[i][1], change[i][2]); } /* * JPEG Codec access */ -void -jpeg_codec_sleep (struct zoran *zr, - int sleep) +void jpeg_codec_sleep(struct zoran *zr, int sleep) { GPIO(zr, zr->card.gpio[ZR_GPIO_JPEG_SLEEP], !sleep); if (!sleep) { dprintk(3, - KERN_DEBUG - "%s: jpeg_codec_sleep() - wake GPIO=0x%08x\n", - ZR_DEVNAME(zr), btread(ZR36057_GPPGCR1)); + KERN_INFO + "%s: %s() - wake GPIO=0x%08x\n", + ZR_DEVNAME(zr), __func__, btread(ZR36057_GPPGCR1)); udelay(500); } else { dprintk(3, - KERN_DEBUG - "%s: jpeg_codec_sleep() - sleep GPIO=0x%08x\n", - ZR_DEVNAME(zr), btread(ZR36057_GPPGCR1)); + KERN_INFO + "%s: %s() - sleep GPIO=0x%08x\n", + ZR_DEVNAME(zr), __func__, btread(ZR36057_GPPGCR1)); udelay(2); } } -int -jpeg_codec_reset (struct zoran *zr) +int jpeg_codec_reset(struct zoran *zr) { /* Take the codec out of sleep */ jpeg_codec_sleep(zr, 0); @@ -266,10 +236,7 @@ jpeg_codec_reset (struct zoran *zr) * trying to understand this without the ZR36057 manual in front of * you [AC]. */ - -static void -zr36057_adjust_vfe (struct zoran *zr, - enum zoran_codec_mode mode) +static void zr36057_adjust_vfe(struct zoran *zr, enum zoran_codec_mode mode) { u32 reg; @@ -277,9 +244,9 @@ zr36057_adjust_vfe (struct zoran *zr, case BUZ_MODE_MOTION_DECOMPRESS: btand(~ZR36057_VFESPFR_ExtFl, ZR36057_VFESPFR); reg = btread(ZR36057_VFEHCR); - if ((reg & (1 << 10)) && zr->card.type != LML33R10) { + if ((reg & (1 << 10)) && zr->card.type != LML33R10) reg += ((1 << 10) | 1); - } + btwrite(reg, ZR36057_VFEHCR); break; case BUZ_MODE_MOTION_COMPRESS: @@ -292,9 +259,9 @@ zr36057_adjust_vfe (struct zoran *zr, else btor(ZR36057_VFESPFR_ExtFl, ZR36057_VFESPFR); reg = btread(ZR36057_VFEHCR); - if (!(reg & (1 << 10)) && zr->card.type != LML33R10) { + if (!(reg & (1 << 10)) && zr->card.type != LML33R10) reg -= ((1 << 10) | 1); - } + btwrite(reg, ZR36057_VFEHCR); break; } @@ -304,21 +271,18 @@ zr36057_adjust_vfe (struct zoran *zr, * set geometry */ -static void -zr36057_set_vfe (struct zoran *zr, - int video_width, - int video_height, - const struct zoran_format *format) +static void zr36057_set_vfe(struct zoran *zr, int video_width, int video_height, + const struct zoran_format *format) { struct tvnorm *tvn; - unsigned HStart, HEnd, VStart, VEnd; - unsigned DispMode; - unsigned VidWinWid, VidWinHt; - unsigned hcrop1, hcrop2, vcrop1, vcrop2; - unsigned Wa, We, Ha, He; - unsigned X, Y, HorDcm, VerDcm; + unsigned int HStart, HEnd, VStart, VEnd; + unsigned int DispMode; + unsigned int VidWinWid, VidWinHt; + unsigned int hcrop1, hcrop2, vcrop1, vcrop2; + unsigned int Wa, We, Ha, He; + unsigned int X, Y, HorDcm, VerDcm; u32 reg; - unsigned mask_line_size; + unsigned int mask_line_size; tvn = zr->timing; @@ -394,13 +358,13 @@ zr36057_set_vfe (struct zoran *zr, if (!(zr->norm & V4L2_STD_NTSC)) reg |= ZR36057_VFESPFR_ExtFl; // NEEDED!!!!!!! Wolfgang reg |= ZR36057_VFESPFR_TopField; - if (HorDcm >= 48) { + if (HorDcm >= 48) reg |= 3 << ZR36057_VFESPFR_HFilter; /* 5 tap filter */ - } else if (HorDcm >= 32) { + else if (HorDcm >= 32) reg |= 2 << ZR36057_VFESPFR_HFilter; /* 4 tap filter */ - } else if (HorDcm >= 16) { + else if (HorDcm >= 16) reg |= 1 << ZR36057_VFESPFR_HFilter; /* 3 tap filter */ - } + reg |= format->vfespfr; btwrite(reg, ZR36057_VFESPFR); @@ -442,9 +406,7 @@ zr36057_set_vfe (struct zoran *zr, * Switch overlay on or off */ -void -zr36057_overlay (struct zoran *zr, - int on) +void zr36057_overlay(struct zoran *zr, int on) { u32 reg; @@ -462,7 +424,7 @@ zr36057_overlay (struct zoran *zr, * All error messages are internal driver checking only! */ /* video display top and bottom registers */ - reg = (long) zr->vbuf_base + + reg = (long)zr->vbuf_base + zr->overlay_settings.x * ((zr->overlay_settings.format->depth + 7) / 8) + zr->overlay_settings.y * @@ -512,10 +474,10 @@ zr36057_overlay (struct zoran *zr, void write_overlay_mask(struct zoran_fh *fh, struct v4l2_clip *vp, int count) { struct zoran *zr = fh->zr; - unsigned mask_line_size = (BUZ_MAX_WIDTH + 31) / 32; + unsigned int mask_line_size = (BUZ_MAX_WIDTH + 31) / 32; u32 *mask; int x, y, width, height; - unsigned i, j, k; + unsigned int i, j, k; /* fill mask with one bits */ memset(fh->overlay_mask, ~0, mask_line_size * 4 * BUZ_MAX_HEIGHT); @@ -536,20 +498,16 @@ void write_overlay_mask(struct zoran_fh *fh, struct v4l2_clip *vp, int count) height += y; y = 0; } - if (x + width > fh->overlay_settings.width) { + if (x + width > fh->overlay_settings.width) width = fh->overlay_settings.width - x; - } - if (y + height > fh->overlay_settings.height) { + if (y + height > fh->overlay_settings.height) height = fh->overlay_settings.height - y; - } /* ignore degenerate clips */ - if (height <= 0) { + if (height <= 0) continue; - } - if (width <= 0) { + if (width <= 0) continue; - } /* apply clip for each scan line */ for (j = 0; j < height; ++j) { @@ -558,17 +516,14 @@ void write_overlay_mask(struct zoran_fh *fh, struct v4l2_clip *vp, int count) mask = fh->overlay_mask + (y + j) * mask_line_size; for (k = 0; k < width; ++k) { mask[(x + k) / 32] &= - ~((u32) 1 << (x + k) % 32); + ~((u32)1 << (x + k) % 32); } } } } /* Enable/Disable uncompressed memory grabbing of the 36057 */ - -void -zr36057_set_memgrab (struct zoran *zr, - int mode) +void zr36057_set_memgrab(struct zoran *zr, int mode) { if (mode) { /* We only check SnapShot and not FrameGrab here. SnapShot==1 @@ -614,8 +569,7 @@ zr36057_set_memgrab (struct zoran *zr, } } -int -wait_grab_pending (struct zoran *zr) +int wait_grab_pending(struct zoran *zr) { unsigned long flags; @@ -625,7 +579,7 @@ wait_grab_pending (struct zoran *zr) return 0; wait_event_interruptible(zr->v4l_capq, - (zr->v4l_pend_tail == zr->v4l_pend_head)); + (zr->v4l_pend_tail == zr->v4l_pend_head)); if (signal_pending(current)) return -ERESTARTSYS; @@ -642,16 +596,12 @@ wait_grab_pending (struct zoran *zr) * * *****************************************************************************/ -static inline void -set_frame (struct zoran *zr, - int val) +static inline void set_frame(struct zoran *zr, int val) { GPIO(zr, zr->card.gpio[ZR_GPIO_JPEG_FRAME], val); } -static void -set_videobus_dir (struct zoran *zr, - int val) +static void set_videobus_dir(struct zoran *zr, int val) { switch (zr->card.type) { case LML33: @@ -668,8 +618,7 @@ set_videobus_dir (struct zoran *zr, } } -static void -init_jpeg_queue (struct zoran *zr) +static void init_jpeg_queue(struct zoran *zr) { int i; @@ -684,17 +633,14 @@ init_jpeg_queue (struct zoran *zr) zr->jpg_err_seq = 0; zr->jpg_err_shift = 0; zr->jpg_queued_num = 0; - for (i = 0; i < zr->jpg_buffers.num_buffers; i++) { + for (i = 0; i < zr->jpg_buffers.num_buffers; i++) zr->jpg_buffers.buffer[i].state = BUZ_STATE_USER; /* nothing going on */ - } - for (i = 0; i < BUZ_NUM_STAT_COM; i++) { + + for (i = 0; i < BUZ_NUM_STAT_COM; i++) zr->stat_com[i] = cpu_to_le32(1); /* mark as unavailable to zr36057 */ - } } -static void -zr36057_set_jpg (struct zoran *zr, - enum zoran_codec_mode mode) +static void zr36057_set_jpg(struct zoran *zr, enum zoran_codec_mode mode) { struct tvnorm *tvn; u32 reg; @@ -706,7 +652,6 @@ zr36057_set_jpg (struct zoran *zr, /* MJPEG compression mode */ switch (mode) { - case BUZ_MODE_MOTION_COMPRESS: default: reg = ZR36057_JMC_MJPGCmpMode; @@ -726,7 +671,6 @@ zr36057_set_jpg (struct zoran *zr, case BUZ_MODE_STILL_DECOMPRESS: reg = ZR36057_JMC_JPGExpMode; break; - } reg |= ZR36057_JMC_JPG; if (zr->jpg_settings.field_per_buff == 1) @@ -773,7 +717,6 @@ zr36057_set_jpg (struct zoran *zr, /* FIFO threshold (FIFO is 160. double words) */ /* NOTE: decimal values here */ switch (mode) { - case BUZ_MODE_STILL_COMPRESS: case BUZ_MODE_MOTION_COMPRESS: if (zr->card.type != BUZ) @@ -790,35 +733,36 @@ zr36057_set_jpg (struct zoran *zr, default: reg = 80; break; - } btwrite(reg, ZR36057_JCFT); zr36057_adjust_vfe(zr, mode); - } -void -print_interrupts (struct zoran *zr) +void print_interrupts(struct zoran *zr) { int res, noerr = 0; - printk(KERN_INFO "%s: interrupts received:", ZR_DEVNAME(zr)); - if ((res = zr->field_counter) < -1 || res > 1) { + pr_info("%s: interrupts received:", ZR_DEVNAME(zr)); + res = zr->field_counter; + if (res < -1 || res > 1) printk(KERN_CONT " FD:%d", res); - } - if ((res = zr->intr_counter_GIRQ1) != 0) { + res = zr->intr_counter_GIRQ1; + if (res != 0) { printk(KERN_CONT " GIRQ1:%d", res); noerr++; } - if ((res = zr->intr_counter_GIRQ0) != 0) { + res = zr->intr_counter_GIRQ0; + if (res != 0) { printk(KERN_CONT " GIRQ0:%d", res); noerr++; } - if ((res = zr->intr_counter_CodRepIRQ) != 0) { + res = zr->intr_counter_CodRepIRQ; + if (res != 0) { printk(KERN_CONT " CodRepIRQ:%d", res); noerr++; } - if ((res = zr->intr_counter_JPEGRepIRQ) != 0) { + res = zr->intr_counter_JPEGRepIRQ; + if (res != 0) { printk(KERN_CONT " JPEGRepIRQ:%d", res); noerr++; } @@ -833,14 +777,12 @@ print_interrupts (struct zoran *zr) printk(KERN_CONT " queue_state=%ld/%ld/%ld/%ld", zr->jpg_que_tail, zr->jpg_dma_tail, zr->jpg_dma_head, zr->jpg_que_head); //} - if (!noerr) { + if (!noerr) printk(KERN_CONT ": no interrupts detected."); - } printk(KERN_CONT "\n"); } -void -clear_interrupt_counters (struct zoran *zr) +void clear_interrupt_counters(struct zoran *zr) { zr->intr_counter_GIRQ1 = 0; zr->intr_counter_GIRQ0 = 0; @@ -859,12 +801,12 @@ clear_interrupt_counters (struct zoran *zr) zr->JPEG_min_missed = 0x7fffffff; } -static u32 -count_reset_interrupt (struct zoran *zr) +static u32 count_reset_interrupt(struct zoran *zr) { u32 isr; - if ((isr = btread(ZR36057_ISR) & 0x78000000)) { + isr = btread(ZR36057_ISR) & 0x78000000; + if (isr) { if (isr & ZR36057_ISR_GIRQ1) { btwrite(ZR36057_ISR_GIRQ1, ZR36057_ISR); zr->intr_counter_GIRQ1++; @@ -885,8 +827,7 @@ count_reset_interrupt (struct zoran *zr) return isr; } -void -jpeg_start (struct zoran *zr) +void jpeg_start(struct zoran *zr) { int reg; @@ -902,9 +843,7 @@ jpeg_start (struct zoran *zr) /* clear IRQs */ btwrite(IRQ_MASK, ZR36057_ISR); /* enable the JPEG IRQs */ - btwrite(zr->card.jpeg_int | - ZR36057_ICR_JPEGRepIRQ | - ZR36057_ICR_IntPinEn, + btwrite(zr->card.jpeg_int | ZR36057_ICR_JPEGRepIRQ | ZR36057_ICR_IntPinEn, ZR36057_ICR); set_frame(zr, 0); // \FRAME @@ -936,9 +875,7 @@ jpeg_start (struct zoran *zr) dprintk(3, KERN_DEBUG "%s: jpeg_start\n", ZR_DEVNAME(zr)); } -void -zr36057_enable_jpg (struct zoran *zr, - enum zoran_codec_mode mode) +void zr36057_enable_jpg(struct zoran *zr, enum zoran_codec_mode mode) { struct vfe_settings cap; int field_size = @@ -955,7 +892,6 @@ zr36057_enable_jpg (struct zoran *zr, cap.quality = zr->jpg_settings.jpg_comp.quality; switch (mode) { - case BUZ_MODE_MOTION_COMPRESS: { struct jpeg_app_marker app; struct jpeg_com_marker com; @@ -1062,13 +998,11 @@ zr36057_enable_jpg (struct zoran *zr, dprintk(2, KERN_INFO "%s: enable_jpg(IDLE)\n", ZR_DEVNAME(zr)); break; - } } /* when this is called the spinlock must be held */ -void -zoran_feed_stat_com (struct zoran *zr) +void zoran_feed_stat_com(struct zoran *zr) { /* move frames from pending queue to DMA */ @@ -1080,7 +1014,6 @@ zoran_feed_stat_com (struct zoran *zr) while ((zr->jpg_dma_head - zr->jpg_dma_tail) < max_stat_com && zr->jpg_dma_head < zr->jpg_que_head) { - frame = zr->jpg_pend[zr->jpg_dma_head & BUZ_MASK_FRAME]; if (zr->jpg_settings.TmpDcm == 1) { /* fill 1 stat_com entry */ @@ -1103,15 +1036,13 @@ zoran_feed_stat_com (struct zoran *zr) } zr->jpg_buffers.buffer[frame].state = BUZ_STATE_DMA; zr->jpg_dma_head++; - } if (zr->codec_mode == BUZ_MODE_MOTION_DECOMPRESS) zr->jpg_queued_num++; } /* when this is called the spinlock must be held */ -static void -zoran_reap_stat_com (struct zoran *zr) +static void zoran_reap_stat_com(struct zoran *zr) { /* move frames from DMA queue to done queue */ @@ -1125,9 +1056,9 @@ zoran_reap_stat_com (struct zoran *zr) /* In motion decompress we don't have a hardware frame counter, * we just count the interrupts here */ - if (zr->codec_mode == BUZ_MODE_MOTION_DECOMPRESS) { + if (zr->codec_mode == BUZ_MODE_MOTION_DECOMPRESS) zr->jpg_seq_num++; - } + while (zr->jpg_dma_tail < zr->jpg_dma_head) { if (zr->jpg_settings.TmpDcm == 1) i = (zr->jpg_dma_tail - @@ -1138,9 +1069,9 @@ zoran_reap_stat_com (struct zoran *zr) stat_com = le32_to_cpu(zr->stat_com[i]); - if ((stat_com & 1) == 0) { + if ((stat_com & 1) == 0) return; - } + frame = zr->jpg_pend[zr->jpg_dma_tail & BUZ_MASK_FRAME]; buffer = &zr->jpg_buffers.buffer[frame]; buffer->bs.ts = ktime_get_ns(); @@ -1196,10 +1127,7 @@ static void zoran_restart(struct zoran *zr) } } -static void -error_handler (struct zoran *zr, - u32 astat, - u32 stat) +static void error_handler(struct zoran *zr, u32 astat, u32 stat) { int i; @@ -1255,13 +1183,12 @@ error_handler (struct zoran *zr, int j; frame = zr->jpg_pend[zr->jpg_dma_tail & BUZ_MASK_FRAME]; - printk(KERN_ERR - "%s: JPEG error stat=0x%08x(0x%08x) queue_state=%ld/%ld/%ld/%ld seq=%ld frame=%ld. Codec stopped. ", - ZR_DEVNAME(zr), stat, zr->last_isr, - zr->jpg_que_tail, zr->jpg_dma_tail, - zr->jpg_dma_head, zr->jpg_que_head, - zr->jpg_seq_num, frame); - printk(KERN_INFO "stat_com frames:"); + pr_err("%s: JPEG error stat=0x%08x(0x%08x) queue_state=%ld/%ld/%ld/%ld seq=%ld frame=%ld. Codec stopped. ", + ZR_DEVNAME(zr), stat, zr->last_isr, + zr->jpg_que_tail, zr->jpg_dma_tail, + zr->jpg_dma_head, zr->jpg_que_head, + zr->jpg_seq_num, frame); + pr_info("stat_com frames:"); for (j = 0; j < BUZ_NUM_STAT_COM; j++) { for (i = 0; i < zr->jpg_buffers.num_buffers; i++) { if (le32_to_cpu(zr->stat_com[j]) == zr->jpg_buffers.buffer[i].jpg.frag_tab_bus) @@ -1312,18 +1239,13 @@ error_handler (struct zoran *zr, zoran_restart(zr); } -irqreturn_t -zoran_irq (int irq, - void *dev_id) +irqreturn_t zoran_irq(int irq, void *dev_id) { u32 stat, astat; - int count; - struct zoran *zr; + int count = 0; + struct zoran *zr = dev_id; unsigned long flags; - zr = dev_id; - count = 0; - if (zr->testing) { /* Testing interrupts */ spin_lock_irqsave(&zr->spinlock, flags); @@ -1347,13 +1269,9 @@ zoran_irq (int irq, /* get/clear interrupt status bits */ stat = count_reset_interrupt(zr); astat = stat & IRQ_MASK; - if (!astat) { + if (!astat) break; - } - dprintk(4, - KERN_DEBUG - "zoran_irq: astat: 0x%08x, mask: 0x%08x\n", - astat, btread(ZR36057_ICR)); + pr_debug("%s: astat: 0x%08x, mask: 0x%08x\n", __func__, astat, btread(ZR36057_ICR)); if (astat & zr->card.vsync_int) { // SW if (zr->codec_mode == BUZ_MODE_MOTION_DECOMPRESS || @@ -1362,9 +1280,11 @@ zoran_irq (int irq, zr->JPEG_missed++; } //post_office_read(zr,1,0); - /* Interrupts may still happen when + /* + * Interrupts may still happen when * zr->v4l_memgrab_active is switched off. - * We simply ignore them */ + * We simply ignore them + */ if (zr->v4l_memgrab_active) { /* A lot more checks should be here ... */ @@ -1419,20 +1339,20 @@ zoran_irq (int irq, reg |= ZR36057_VSSFGR_FrameGrab; btwrite(reg, ZR36057_VSSFGR); - btor(ZR36057_VDCR_VidEn, - ZR36057_VDCR); + btor(ZR36057_VDCR_VidEn, ZR36057_VDCR); } } - /* even if we don't grab, we do want to increment - * the sequence counter to see lost frames */ + /* + * even if we don't grab, we do want to increment + * the sequence counter to see lost frames + */ zr->v4l_grab_seq++; } #if (IRQ_MASK & ZR36057_ISR_CodRepIRQ) if (astat & ZR36057_ISR_CodRepIRQ) { zr->intr_counter_CodRepIRQ++; - IDEBUG(printk(KERN_DEBUG "%s: ZR36057_ISR_CodRepIRQ\n", - ZR_DEVNAME(zr))); + IDEBUG(printk(KERN_DEBUG "%s: ZR36057_ISR_CodRepIRQ\n", ZR_DEVNAME(zr))); btand(~ZR36057_ICR_CodRepIRQ, ZR36057_ICR); } #endif /* (IRQ_MASK & ZR36057_ISR_CodRepIRQ) */ @@ -1445,23 +1365,16 @@ zoran_irq (int irq, char sv[BUZ_NUM_STAT_COM + 1]; int i; - printk(KERN_INFO - "%s: first frame ready: state=0x%08x odd_even=%d field_per_buff=%d delay=%d\n", - ZR_DEVNAME(zr), stat, - zr->jpg_settings.odd_even, - zr->jpg_settings.field_per_buff, - zr->JPEG_missed); + pr_info("%s: first frame ready: state=0x%08x odd_even=%d field_per_buff=%d delay=%d\n", + ZR_DEVNAME(zr), stat, zr->jpg_settings.odd_even, + zr->jpg_settings.field_per_buff, zr->JPEG_missed); for (i = 0; i < BUZ_NUM_STAT_COM; i++) sv[i] = le32_to_cpu(zr->stat_com[i]) & 1 ? '1' : '0'; sv[BUZ_NUM_STAT_COM] = 0; - printk(KERN_INFO - "%s: stat_com=%s queue_state=%ld/%ld/%ld/%ld\n", - ZR_DEVNAME(zr), sv, - zr->jpg_que_tail, - zr->jpg_dma_tail, - zr->jpg_dma_head, - zr->jpg_que_head); + pr_info("%s: stat_com=%s queue_state=%ld/%ld/%ld/%ld\n", + ZR_DEVNAME(zr), sv, zr->jpg_que_tail, zr->jpg_dma_tail, + zr->jpg_dma_head, zr->jpg_que_head); } else { /* Get statistics */ if (zr->JPEG_missed > zr->JPEG_max_missed) @@ -1473,12 +1386,9 @@ zoran_irq (int irq, if (zr36067_debug > 2 && zr->frame_num < 6) { int i; - printk(KERN_INFO "%s: seq=%ld stat_com:", - ZR_DEVNAME(zr), zr->jpg_seq_num); - for (i = 0; i < 4; i++) { - printk(KERN_CONT " %08x", - le32_to_cpu(zr->stat_com[i])); - } + pr_info("%s: seq=%ld stat_com:", ZR_DEVNAME(zr), zr->jpg_seq_num); + for (i = 0; i < 4; i++) + printk(KERN_CONT " %08x", le32_to_cpu(zr->stat_com[i])); printk(KERN_CONT "\n"); } zr->frame_num++; @@ -1519,9 +1429,7 @@ zoran_irq (int irq, return IRQ_HANDLED; } -void -zoran_set_pci_master (struct zoran *zr, - int set_master) +void zoran_set_pci_master(struct zoran *zr, int set_master) { if (set_master) { pci_set_master(zr->pci_dev); @@ -1534,21 +1442,19 @@ zoran_set_pci_master (struct zoran *zr, } } -void -zoran_init_hardware (struct zoran *zr) +void zoran_init_hardware(struct zoran *zr) { /* Enable bus-mastering */ zoran_set_pci_master(zr, 1); /* Initialize the board */ - if (zr->card.init) { + if (zr->card.init) zr->card.init(zr); - } decoder_call(zr, core, init, 0); decoder_call(zr, video, s_std, zr->norm); decoder_call(zr, video, s_routing, - zr->card.input[zr->input].muxsel, 0, 0); + zr->card.input[zr->input].muxsel, 0, 0); encoder_call(zr, core, init, 0); encoder_call(zr, video, s_std_output, zr->norm); @@ -1569,8 +1475,7 @@ zoran_init_hardware (struct zoran *zr) btwrite(IRQ_MASK, ZR36057_ISR); // Clears interrupts } -void -zr36057_restart (struct zoran *zr) +void zr36057_restart(struct zoran *zr) { btwrite(0, ZR36057_SPGPPCR); mdelay(1); @@ -1590,8 +1495,7 @@ zr36057_restart (struct zoran *zr) * initialize video front end */ -static void -zr36057_init_vfe (struct zoran *zr) +static void zr36057_init_vfe(struct zoran *zr) { u32 reg; diff --git a/drivers/staging/media/zoran/zoran_device.h b/drivers/staging/media/zoran/zoran_device.h index 816d48b09be9..24be19a61b6d 100644 --- a/drivers/staging/media/zoran/zoran_device.h +++ b/drivers/staging/media/zoran/zoran_device.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ /* * Zoran zr36057/zr36067 PCI controller driver, for the * Pinnacle/Miro DC10/DC10+/DC30/DC30+, Iomega Buz, Linux @@ -6,50 +7,28 @@ * This part handles card-specific data and detection * * Copyright (C) 2000 Serguei Miridonov - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. */ #ifndef __ZORAN_DEVICE_H__ #define __ZORAN_DEVICE_H__ /* general purpose I/O */ -extern void GPIO(struct zoran *zr, - int bit, - unsigned int value); +extern void GPIO(struct zoran *zr, int bit, unsigned int value); /* codec (or actually: guest bus) access */ extern int post_office_wait(struct zoran *zr); -extern int post_office_write(struct zoran *zr, - unsigned guest, - unsigned reg, - unsigned value); -extern int post_office_read(struct zoran *zr, - unsigned guest, - unsigned reg); +extern int post_office_write(struct zoran *zr, unsigned int guest, unsigned int reg, unsigned int value); +extern int post_office_read(struct zoran *zr, unsigned int guest, unsigned int reg); extern void detect_guest_activity(struct zoran *zr); -extern void jpeg_codec_sleep(struct zoran *zr, - int sleep); +extern void jpeg_codec_sleep(struct zoran *zr, int sleep); extern int jpeg_codec_reset(struct zoran *zr); /* zr360x7 access to raw capture */ -extern void zr36057_overlay(struct zoran *zr, - int on); -extern void write_overlay_mask(struct zoran_fh *fh, - struct v4l2_clip *vp, - int count); -extern void zr36057_set_memgrab(struct zoran *zr, - int mode); +extern void zr36057_overlay(struct zoran *zr, int on); +extern void write_overlay_mask(struct zoran_fh *fh, struct v4l2_clip *vp, int count); +extern void zr36057_set_memgrab(struct zoran *zr, int mode); extern int wait_grab_pending(struct zoran *zr); /* interrupts */ @@ -64,8 +43,7 @@ extern void zr36057_enable_jpg(struct zoran *zr, extern void zoran_feed_stat_com(struct zoran *zr); /* general */ -extern void zoran_set_pci_master(struct zoran *zr, - int set_master); +extern void zoran_set_pci_master(struct zoran *zr, int set_master); extern void zoran_init_hardware(struct zoran *zr); extern void zr36057_restart(struct zoran *zr); diff --git a/drivers/staging/media/zoran/zoran_driver.c b/drivers/staging/media/zoran/zoran_driver.c index c998aa4dc73b..fd4795468069 100644 --- a/drivers/staging/media/zoran/zoran_driver.c +++ b/drivers/staging/media/zoran/zoran_driver.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0-or-later /* * Zoran zr36057/zr36067 PCI controller driver, for the * Pinnacle/Miro DC10/DC10+/DC30/DC30+, Iomega Buz, Linux @@ -27,17 +28,6 @@ * bttv - Bt848 frame grabber driver * Copyright (C) 1996,97,98 Ralph Metzler (rjkm@thp.uni-koeln.de) * & Marcus Metzler (mocm@thp.uni-koeln.de) - * - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. */ #include @@ -61,7 +51,7 @@ #include "videocodec.h" #include -#include +#include #include #include @@ -70,7 +60,6 @@ #include "zoran_device.h" #include "zoran_card.h" - const struct zoran_format zoran_formats[] = { { .name = "15-bit RGB LE", @@ -79,7 +68,7 @@ const struct zoran_format zoran_formats[] = { .depth = 15, .flags = ZORAN_FORMAT_CAPTURE | ZORAN_FORMAT_OVERLAY, - .vfespfr = ZR36057_VFESPFR_RGB555|ZR36057_VFESPFR_ErrDif| + .vfespfr = ZR36057_VFESPFR_RGB555 | ZR36057_VFESPFR_ErrDif | ZR36057_VFESPFR_LittleEndian, }, { .name = "15-bit RGB BE", @@ -88,7 +77,7 @@ const struct zoran_format zoran_formats[] = { .depth = 15, .flags = ZORAN_FORMAT_CAPTURE | ZORAN_FORMAT_OVERLAY, - .vfespfr = ZR36057_VFESPFR_RGB555|ZR36057_VFESPFR_ErrDif, + .vfespfr = ZR36057_VFESPFR_RGB555 | ZR36057_VFESPFR_ErrDif, }, { .name = "16-bit RGB LE", .fourcc = V4L2_PIX_FMT_RGB565, @@ -96,7 +85,7 @@ const struct zoran_format zoran_formats[] = { .depth = 16, .flags = ZORAN_FORMAT_CAPTURE | ZORAN_FORMAT_OVERLAY, - .vfespfr = ZR36057_VFESPFR_RGB565|ZR36057_VFESPFR_ErrDif| + .vfespfr = ZR36057_VFESPFR_RGB565 | ZR36057_VFESPFR_ErrDif | ZR36057_VFESPFR_LittleEndian, }, { .name = "16-bit RGB BE", @@ -105,7 +94,7 @@ const struct zoran_format zoran_formats[] = { .depth = 16, .flags = ZORAN_FORMAT_CAPTURE | ZORAN_FORMAT_OVERLAY, - .vfespfr = ZR36057_VFESPFR_RGB565|ZR36057_VFESPFR_ErrDif, + .vfespfr = ZR36057_VFESPFR_RGB565 | ZR36057_VFESPFR_ErrDif, }, { .name = "24-bit RGB", .fourcc = V4L2_PIX_FMT_BGR24, @@ -113,7 +102,7 @@ const struct zoran_format zoran_formats[] = { .depth = 24, .flags = ZORAN_FORMAT_CAPTURE | ZORAN_FORMAT_OVERLAY, - .vfespfr = ZR36057_VFESPFR_RGB888|ZR36057_VFESPFR_Pack24, + .vfespfr = ZR36057_VFESPFR_RGB888 | ZR36057_VFESPFR_Pack24, }, { .name = "32-bit RGB LE", .fourcc = V4L2_PIX_FMT_BGR32, @@ -121,7 +110,7 @@ const struct zoran_format zoran_formats[] = { .depth = 32, .flags = ZORAN_FORMAT_CAPTURE | ZORAN_FORMAT_OVERLAY, - .vfespfr = ZR36057_VFESPFR_RGB888|ZR36057_VFESPFR_LittleEndian, + .vfespfr = ZR36057_VFESPFR_RGB888 | ZR36057_VFESPFR_LittleEndian, }, { .name = "32-bit RGB BE", .fourcc = V4L2_PIX_FMT_RGB32, @@ -145,7 +134,7 @@ const struct zoran_format zoran_formats[] = { .depth = 16, .flags = ZORAN_FORMAT_CAPTURE | ZORAN_FORMAT_OVERLAY, - .vfespfr = ZR36057_VFESPFR_YUV422|ZR36057_VFESPFR_LittleEndian, + .vfespfr = ZR36057_VFESPFR_YUV422 | ZR36057_VFESPFR_LittleEndian, }, { .name = "Hardware-encoded Motion-JPEG", .fourcc = V4L2_PIX_FMT_MJPEG, @@ -156,13 +145,15 @@ const struct zoran_format zoran_formats[] = { ZORAN_FORMAT_COMPRESSED, } }; + #define NUM_FORMATS ARRAY_SIZE(zoran_formats) - /* small helper function for calculating buffersizes for v4l2 + /* + * small helper function for calculating buffersizes for v4l2 * we calculate the nearest higher power-of-two, which - * will be the recommended buffersize */ -static __u32 -zoran_v4l2_calc_bufsize (struct zoran_jpg_settings *settings) + * will be the recommended buffersize + */ +static __u32 zoran_v4l2_calc_bufsize(struct zoran_jpg_settings *settings) { __u8 div = settings->VerDcm * settings->HorDcm * settings->TmpDcm; __u32 num = (1024 * 512) / (div); @@ -192,12 +183,14 @@ static void map_mode_raw(struct zoran_fh *fh) fh->buffers.buffer_size = v4l_bufsize; fh->buffers.num_buffers = v4l_nbufs; } + static void map_mode_jpg(struct zoran_fh *fh, int play) { fh->map_mode = play ? ZORAN_MAP_MODE_JPG_PLAY : ZORAN_MAP_MODE_JPG_REC; fh->buffers.buffer_size = jpg_bufsize; fh->buffers.num_buffers = jpg_nbufs; } + static inline const char *mode_name(enum zoran_map_mode mode) { return mode == ZORAN_MAP_MODE_RAW ? "V4L" : "JPG"; @@ -223,8 +216,7 @@ static int v4l_fbuffer_alloc(struct zoran_fh *fh) ZR_DEVNAME(zr), __func__, i); //udelay(20); - mem = kmalloc(fh->buffers.buffer_size, - GFP_KERNEL | __GFP_NOWARN); + mem = kmalloc(fh->buffers.buffer_size, GFP_KERNEL | __GFP_NOWARN); if (!mem) { dprintk(1, KERN_ERR @@ -332,7 +324,7 @@ static int jpg_fbuffer_alloc(struct zoran_fh *fh) if (fh->buffers.need_contiguous) { mem = kmalloc(fh->buffers.buffer_size, GFP_KERNEL); - if (mem == NULL) { + if (!mem) { dprintk(1, KERN_ERR "%s: %s - kmalloc failed for buffer %d\n", @@ -350,7 +342,7 @@ static int jpg_fbuffer_alloc(struct zoran_fh *fh) /* jpg_bufsize is already page aligned */ for (j = 0; j < fh->buffers.buffer_size / PAGE_SIZE; j++) { mem = (void *)get_zeroed_page(GFP_KERNEL); - if (mem == NULL) { + if (!mem) { dprintk(1, KERN_ERR "%s: %s - get_zeroed_page failed for buffer %d\n", @@ -431,11 +423,8 @@ static void jpg_fbuffer_free(struct zoran_fh *fh) * V4L Buffer grabbing */ -static int -zoran_v4l_set_format (struct zoran_fh *fh, - int width, - int height, - const struct zoran_format *format) +static int zoran_v4l_set_format(struct zoran_fh *fh, int width, int height, + const struct zoran_format *format) { struct zoran *zr = fh->zr; int bpp; @@ -534,7 +523,7 @@ static int zoran_v4l_queue_frame(struct zoran_fh *fh, int num) KERN_WARNING "%s: %s - queueing buffer %d in state DONE!?\n", ZR_DEVNAME(zr), __func__, num); - /* fall through */ + /* fallthrough */ case BUZ_STATE_USER: /* since there is at least one unused buffer there's room for at least * one more pend[] entry */ @@ -593,7 +582,7 @@ static int v4l_sync(struct zoran_fh *fh, int frame) mutex_unlock(&zr->lock); /* wait on this buffer to get ready */ if (!wait_event_interruptible_timeout(zr->v4l_capq, - (zr->v4l_buffers.buffer[frame].state != BUZ_STATE_PEND), 10*HZ)) { + (zr->v4l_buffers.buffer[frame].state != BUZ_STATE_PEND), 10 * HZ)) { mutex_lock(&zr->lock); return -ETIME; } @@ -629,7 +618,6 @@ static int v4l_sync(struct zoran_fh *fh, int frame) /* * Queue a MJPEG buffer for capture/playback */ - static int zoran_jpg_queue_frame(struct zoran_fh *fh, int num, enum zoran_codec_mode mode) { @@ -694,7 +682,7 @@ static int zoran_jpg_queue_frame(struct zoran_fh *fh, int num, KERN_WARNING "%s: %s - queuing frame in BUZ_STATE_DONE state!?\n", ZR_DEVNAME(zr), __func__); - /* fall through */ + /* fallthrough */ case BUZ_STATE_USER: /* since there is at least one unused buffer there's room for at *least one more pend[] entry */ @@ -751,10 +739,11 @@ static int jpg_qbuf(struct zoran_fh *fh, int frame, enum zoran_codec_mode mode) } } - if ((res = zoran_jpg_queue_frame(fh, frame, mode))) + res = zoran_jpg_queue_frame(fh, frame, mode); + if (res) return res; - /* Start the jpeg codec when the first frame is queued */ + /* Start the jpeg codec when the first frame is queued */ if (!res && zr->jpg_que_head == 1) jpeg_start(zr); @@ -788,15 +777,14 @@ static int jpg_sync(struct zoran_fh *fh, struct zoran_sync *bs) } mutex_unlock(&zr->lock); if (!wait_event_interruptible_timeout(zr->jpg_capq, - (zr->jpg_que_tail != zr->jpg_dma_tail || + (zr->jpg_que_tail != zr->jpg_dma_tail || zr->jpg_dma_tail == zr->jpg_dma_head), - 10*HZ)) { + 10 * HZ)) { int isr; btand(~ZR36057_JMC_Go_en, ZR36057_JMC); udelay(1); - zr->codec->control(zr->codec, CODEC_G_STATUS, - sizeof(isr), &isr); + zr->codec->control(zr->codec, CODEC_G_STATUS, sizeof(isr), &isr); mutex_lock(&zr->lock); dprintk(1, KERN_ERR @@ -804,7 +792,6 @@ static int jpg_sync(struct zoran_fh *fh, struct zoran_sync *bs) ZR_DEVNAME(zr), __func__, isr); return -ETIME; - } mutex_lock(&zr->lock); if (signal_pending(current)) @@ -907,7 +894,6 @@ static void zoran_close_end_session(struct zoran_fh *fh) /* * Open a zoran card. Right now the flags stuff is just playing */ - static int zoran_open(struct file *file) { struct zoran *zr = video_drvdata(file); @@ -927,7 +913,7 @@ static int zoran_open(struct file *file) } /* now, create the open()-specific file_ops struct */ - fh = kzalloc(sizeof(struct zoran_fh), GFP_KERNEL); + fh = kzalloc(sizeof(*fh), GFP_KERNEL); if (!fh) { dprintk(1, KERN_ERR @@ -938,10 +924,11 @@ static int zoran_open(struct file *file) } v4l2_fh_init(&fh->fh, video_devdata(file)); - /* used to be BUZ_MAX_WIDTH/HEIGHT, but that gives overflows - * on norm-change! */ - fh->overlay_mask = - kmalloc(array3_size((768 + 31) / 32, 576, 4), GFP_KERNEL); + /* + * used to be BUZ_MAX_WIDTH/HEIGHT, but that gives overflows + * on norm-change! + */ + fh->overlay_mask = kmalloc(array3_size((768 + 31) / 32, 576, 4), GFP_KERNEL); if (!fh->overlay_mask) { dprintk(1, KERN_ERR @@ -984,8 +971,7 @@ static int zoran_open(struct file *file) return res; } -static int -zoran_close(struct file *file) +static int zoran_close(struct file *file) { struct zoran_fh *fh = file->private_data; struct zoran *zr = fh->zr; @@ -1041,12 +1027,8 @@ zoran_close(struct file *file) return 0; } -static int setup_fbuffer(struct zoran_fh *fh, - void *base, - const struct zoran_format *fmt, - int width, - int height, - int bytesperline) +static int setup_fbuffer(struct zoran_fh *fh, void *base, const struct zoran_format *fmt, + int width, int height, int bytesperline) { struct zoran *zr = fh->zr; @@ -1054,9 +1036,11 @@ static int setup_fbuffer(struct zoran_fh *fh, if (!capable(CAP_SYS_ADMIN) && !capable(CAP_SYS_RAWIO)) return -EPERM; - /* Don't allow frame buffer overlay if PCI or AGP is buggy, or on + /* + * Don't allow frame buffer overlay if PCI or AGP is buggy, or on ALi Magik (that needs very low latency while the card needs a - higher value always) */ + higher value always) + */ if (pci_pci_problems & (PCIPCI_FAIL | PCIAGP_FAIL | PCIPCI_ALIMAGIK)) return -ENXIO; @@ -1103,7 +1087,7 @@ static int setup_fbuffer(struct zoran_fh *fh, return -EINVAL; } - zr->vbuf_base = (void *) ((unsigned long) base & ~3); + zr->vbuf_base = (void *)((unsigned long)base & ~3); zr->vbuf_height = height; zr->vbuf_width = width; zr->vbuf_depth = fmt->depth; @@ -1116,21 +1100,13 @@ static int setup_fbuffer(struct zoran_fh *fh, return 0; } - -static int setup_window(struct zoran_fh *fh, - int x, - int y, - int width, - int height, - struct v4l2_clip __user *clips, - unsigned int clipcount, - void __user *bitmap) +static int setup_window(struct zoran_fh *fh, int x, int y, int width, int height, + struct v4l2_clip __user *clips, unsigned int clipcount, void __user *bitmap) { struct zoran *zr = fh->zr; struct v4l2_clip *vcp = NULL; int on, end; - if (!zr->vbuf_base) { dprintk(1, KERN_ERR @@ -1222,7 +1198,7 @@ static int setup_window(struct zoran_fh *fh, /* write our own bitmap from the clips */ vcp = vmalloc(array_size(sizeof(struct v4l2_clip), clipcount + 4)); - if (vcp == NULL) { + if (!vcp) { dprintk(1, KERN_ERR "%s: %s - Alloc of clip mask failed\n", @@ -1280,8 +1256,10 @@ static int setup_overlay(struct zoran_fh *fh, int on) if (on == 0) { zr->overlay_active = fh->overlay_active = ZORAN_FREE; zr->v4l_overlay_active = 0; - /* When a grab is running, the video simply - * won't be switched on any more */ + /* + * When a grab is running, the video simply + * won't be switched on any more + */ if (!zr->v4l_memgrab_active) zr36057_overlay(zr, 0); zr->overlay_mask = NULL; @@ -1306,8 +1284,10 @@ static int setup_overlay(struct zoran_fh *fh, int on) zr->overlay_settings = fh->overlay_settings; if (!zr->v4l_memgrab_active) zr36057_overlay(zr, 1); - /* When a grab is running, the video will be - * switched on when grab is finished */ + /* + * When a grab is running, the video will be + * switched on when grab is finished + */ } /* Make sure the changes come into effect */ @@ -1421,9 +1401,7 @@ static int zoran_v4l2_buffer_status(struct zoran_fh *fh, return 0; } -static int -zoran_set_norm (struct zoran *zr, - v4l2_std_id norm) +static int zoran_set_norm(struct zoran *zr, v4l2_std_id norm) { int on; @@ -1450,8 +1428,10 @@ zoran_set_norm (struct zoran *zr, else zr->timing = zr->card.tvn[0]; - /* We switch overlay off and on since a change in the - * norm needs different VFE settings */ + /* + * We switch overlay off and on since a change in the + * norm needs different VFE settings + */ on = zr->overlay_active && !zr->v4l_memgrab_active; if (on) zr36057_overlay(zr, 0); @@ -1468,13 +1448,10 @@ zoran_set_norm (struct zoran *zr, return 0; } -static int -zoran_set_input (struct zoran *zr, - int input) +static int zoran_set_input(struct zoran *zr, int input) { - if (input == zr->input) { + if (input == zr->input) return 0; - } if (zr->v4l_buffers.active != ZORAN_FREE || zr->jpg_buffers.active != ZORAN_FREE) { @@ -1495,8 +1472,7 @@ zoran_set_input (struct zoran *zr, zr->input = input; - decoder_call(zr, video, s_routing, - zr->card.input[input].muxsel, 0, 0); + decoder_call(zr, video, s_routing, zr->card.input[input].muxsel, 0, 0); return 0; } @@ -1512,8 +1488,7 @@ static int zoran_querycap(struct file *file, void *__fh, struct v4l2_capability strscpy(cap->card, ZR_DEVNAME(zr), sizeof(cap->card)); strscpy(cap->driver, "zoran", sizeof(cap->driver)); - snprintf(cap->bus_info, sizeof(cap->bus_info), "PCI:%s", - pci_name(zr->pci_dev)); + snprintf(cap->bus_info, sizeof(cap->bus_info), "PCI:%s", pci_name(zr->pci_dev)); cap->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_VIDEO_OVERLAY; cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS; @@ -1539,7 +1514,7 @@ static int zoran_enum_fmt(struct zoran *zr, struct v4l2_fmtdesc *fmt, int flag) } static int zoran_enum_fmt_vid_cap(struct file *file, void *__fh, - struct v4l2_fmtdesc *f) + struct v4l2_fmtdesc *f) { struct zoran_fh *fh = __fh; struct zoran *zr = fh->zr; @@ -1548,7 +1523,7 @@ static int zoran_enum_fmt_vid_cap(struct file *file, void *__fh, } static int zoran_enum_fmt_vid_out(struct file *file, void *__fh, - struct v4l2_fmtdesc *f) + struct v4l2_fmtdesc *f) { struct zoran_fh *fh = __fh; struct zoran *zr = fh->zr; @@ -1557,7 +1532,7 @@ static int zoran_enum_fmt_vid_out(struct file *file, void *__fh, } static int zoran_enum_fmt_vid_overlay(struct file *file, void *__fh, - struct v4l2_fmtdesc *f) + struct v4l2_fmtdesc *f) { struct zoran_fh *fh = __fh; struct zoran *zr = fh->zr; @@ -1566,7 +1541,7 @@ static int zoran_enum_fmt_vid_overlay(struct file *file, void *__fh, } static int zoran_g_fmt_vid_out(struct file *file, void *__fh, - struct v4l2_format *fmt) + struct v4l2_format *fmt) { struct zoran_fh *fh = __fh; @@ -1588,7 +1563,7 @@ static int zoran_g_fmt_vid_out(struct file *file, void *__fh, } static int zoran_g_fmt_vid_cap(struct file *file, void *__fh, - struct v4l2_format *fmt) + struct v4l2_format *fmt) { struct zoran_fh *fh = __fh; struct zoran *zr = fh->zr; @@ -1611,7 +1586,7 @@ static int zoran_g_fmt_vid_cap(struct file *file, void *__fh, } static int zoran_g_fmt_vid_overlay(struct file *file, void *__fh, - struct v4l2_format *fmt) + struct v4l2_format *fmt) { struct zoran_fh *fh = __fh; struct zoran *zr = fh->zr; @@ -1629,7 +1604,7 @@ static int zoran_g_fmt_vid_overlay(struct file *file, void *__fh, } static int zoran_try_fmt_vid_overlay(struct file *file, void *__fh, - struct v4l2_format *fmt) + struct v4l2_format *fmt) { struct zoran_fh *fh = __fh; struct zoran *zr = fh->zr; @@ -1647,7 +1622,7 @@ static int zoran_try_fmt_vid_overlay(struct file *file, void *__fh, } static int zoran_try_fmt_vid_out(struct file *file, void *__fh, - struct v4l2_format *fmt) + struct v4l2_format *fmt) { struct zoran_fh *fh = __fh; struct zoran *zr = fh->zr; @@ -1711,7 +1686,7 @@ static int zoran_try_fmt_vid_out(struct file *file, void *__fh, } static int zoran_try_fmt_vid_cap(struct file *file, void *__fh, - struct v4l2_format *fmt) + struct v4l2_format *fmt) { struct zoran_fh *fh = __fh; struct zoran *zr = fh->zr; @@ -1729,20 +1704,19 @@ static int zoran_try_fmt_vid_cap(struct file *file, void *__fh, return -EINVAL; bpp = DIV_ROUND_UP(zoran_formats[i].depth, 8); - v4l_bound_align_image( - &fmt->fmt.pix.width, BUZ_MIN_WIDTH, BUZ_MAX_WIDTH, bpp == 2 ? 1 : 2, + v4l_bound_align_image(&fmt->fmt.pix.width, BUZ_MIN_WIDTH, BUZ_MAX_WIDTH, bpp == 2 ? 1 : 2, &fmt->fmt.pix.height, BUZ_MIN_HEIGHT, BUZ_MAX_HEIGHT, 0, 0); return 0; } static int zoran_s_fmt_vid_overlay(struct file *file, void *__fh, - struct v4l2_format *fmt) + struct v4l2_format *fmt) { struct zoran_fh *fh = __fh; int res; dprintk(3, "x=%d, y=%d, w=%d, h=%d, cnt=%d, map=0x%p\n", - fmt->fmt.win.w.left, fmt->fmt.win.w.top, + fmt->fmt.win.w.left, fmt->fmt.win.w.top, fmt->fmt.win.w.width, fmt->fmt.win.w.height, fmt->fmt.win.clipcount, @@ -1755,7 +1729,7 @@ static int zoran_s_fmt_vid_overlay(struct file *file, void *__fh, } static int zoran_s_fmt_vid_out(struct file *file, void *__fh, - struct v4l2_format *fmt) + struct v4l2_format *fmt) { struct zoran_fh *fh = __fh; struct zoran *zr = fh->zr; @@ -1764,9 +1738,9 @@ static int zoran_s_fmt_vid_out(struct file *file, void *__fh, int res = 0; dprintk(3, "size=%dx%d, fmt=0x%x (%4.4s)\n", - fmt->fmt.pix.width, fmt->fmt.pix.height, + fmt->fmt.pix.width, fmt->fmt.pix.height, fmt->fmt.pix.pixelformat, - (char *) &printformat); + (char *)&printformat); if (fmt->fmt.pix.pixelformat != V4L2_PIX_FMT_MJPEG) return -EINVAL; @@ -1836,7 +1810,7 @@ static int zoran_s_fmt_vid_out(struct file *file, void *__fh, } static int zoran_s_fmt_vid_cap(struct file *file, void *__fh, - struct v4l2_format *fmt) + struct v4l2_format *fmt) { struct zoran_fh *fh = __fh; struct zoran *zr = fh->zr; @@ -1858,7 +1832,7 @@ static int zoran_s_fmt_vid_cap(struct file *file, void *__fh, if ((fh->map_mode != ZORAN_MAP_MODE_RAW && fh->buffers.allocated) || fh->buffers.active != ZORAN_FREE) { dprintk(1, KERN_ERR "%s: VIDIOC_S_FMT - cannot change capture mode\n", - ZR_DEVNAME(zr)); + ZR_DEVNAME(zr)); res = -EBUSY; return res; } @@ -1886,7 +1860,7 @@ static int zoran_s_fmt_vid_cap(struct file *file, void *__fh, } static int zoran_g_fbuf(struct file *file, void *__fh, - struct v4l2_framebuffer *fb) + struct v4l2_framebuffer *fb) { struct zoran_fh *fh = __fh; struct zoran *zr = fh->zr; @@ -1906,7 +1880,7 @@ static int zoran_g_fbuf(struct file *file, void *__fh, } static int zoran_s_fbuf(struct file *file, void *__fh, - const struct v4l2_framebuffer *fb) + const struct v4l2_framebuffer *fb) { struct zoran_fh *fh = __fh; struct zoran *zr = fh->zr; @@ -1932,11 +1906,8 @@ static int zoran_s_fbuf(struct file *file, void *__fh, static int zoran_overlay(struct file *file, void *__fh, unsigned int on) { struct zoran_fh *fh = __fh; - int res; - res = setup_overlay(fh, on); - - return res; + return setup_overlay(fh, on); } static int zoran_streamoff(struct file *file, void *__fh, enum v4l2_buf_type type); @@ -1949,7 +1920,7 @@ static int zoran_reqbufs(struct file *file, void *__fh, struct v4l2_requestbuffe if (req->memory != V4L2_MEMORY_MMAP) { dprintk(2, - KERN_ERR + KERN_ERR "%s: only MEMORY_MMAP capture is supported, not %d\n", ZR_DEVNAME(zr), req->memory); return -EINVAL; @@ -1960,7 +1931,7 @@ static int zoran_reqbufs(struct file *file, void *__fh, struct v4l2_requestbuffe if (fh->buffers.allocated) { dprintk(2, - KERN_ERR + KERN_ERR "%s: VIDIOC_REQBUFS - buffers already allocated\n", ZR_DEVNAME(zr)); res = -EBUSY; @@ -2002,7 +1973,7 @@ static int zoran_reqbufs(struct file *file, void *__fh, struct v4l2_requestbuffe } } else { dprintk(1, - KERN_ERR + KERN_ERR "%s: VIDIOC_REQBUFS - unknown type %d\n", ZR_DEVNAME(zr), req->type); res = -EINVAL; @@ -2014,11 +1985,8 @@ static int zoran_reqbufs(struct file *file, void *__fh, struct v4l2_requestbuffe static int zoran_querybuf(struct file *file, void *__fh, struct v4l2_buffer *buf) { struct zoran_fh *fh = __fh; - int res; - res = zoran_v4l2_buffer_status(fh, buf, buf->index); - - return res; + return zoran_v4l2_buffer_status(fh, buf, buf->index); } static int zoran_qbuf(struct file *file, void *__fh, struct v4l2_buffer *buf) @@ -2189,7 +2157,7 @@ static int zoran_streamon(struct file *file, void *__fh, enum v4l2_buf_type type zr->jpg_buffers.active = fh->buffers.active = ZORAN_LOCKED; if (zr->jpg_que_head != zr->jpg_que_tail) { - /* Start the jpeg codec when the first frame is queued */ + /* Start the jpeg codec when the first frame is queued */ jpeg_start(zr); } break; @@ -2224,10 +2192,8 @@ static int zoran_streamoff(struct file *file, void *__fh, enum v4l2_buf_type typ spin_lock_irqsave(&zr->spinlock, flags); /* unload capture */ - if (zr->v4l_memgrab_active) { - + if (zr->v4l_memgrab_active) zr36057_set_memgrab(zr, 0); - } for (i = 0; i < fh->buffers.num_buffers; i++) zr->v4l_buffers.buffer[i].state = BUZ_STATE_USER; @@ -2254,7 +2220,7 @@ static int zoran_streamoff(struct file *file, void *__fh, enum v4l2_buf_type typ return res; res = jpg_qbuf(fh, -1, - (fh->map_mode == ZORAN_MAP_MODE_JPG_REC) ? + (fh->map_mode == ZORAN_MAP_MODE_JPG_REC) ? BUZ_MODE_MOTION_COMPRESS : BUZ_MODE_MOTION_DECOMPRESS); if (res) @@ -2269,6 +2235,7 @@ static int zoran_streamoff(struct file *file, void *__fh, enum v4l2_buf_type typ } return res; } + static int zoran_g_std(struct file *file, void *__fh, v4l2_std_id *std) { struct zoran_fh *fh = __fh; @@ -2293,7 +2260,7 @@ static int zoran_s_std(struct file *file, void *__fh, v4l2_std_id std) } static int zoran_enum_input(struct file *file, void *__fh, - struct v4l2_input *inp) + struct v4l2_input *inp) { struct zoran_fh *fh = __fh; struct zoran *zr = fh->zr; @@ -2301,8 +2268,7 @@ static int zoran_enum_input(struct file *file, void *__fh, if (inp->index >= zr->card.inputs) return -EINVAL; - strscpy(inp->name, zr->card.input[inp->index].name, - sizeof(inp->name)); + strscpy(inp->name, zr->card.input[inp->index].name, sizeof(inp->name)); inp->type = V4L2_INPUT_TYPE_CAMERA; inp->std = V4L2_STD_ALL; @@ -2337,7 +2303,7 @@ static int zoran_s_input(struct file *file, void *__fh, unsigned int input) } static int zoran_enum_output(struct file *file, void *__fh, - struct v4l2_output *outp) + struct v4l2_output *outp) { if (outp->index != 0) return -EINVAL; @@ -2451,9 +2417,10 @@ static int zoran_s_selection(struct file *file, void *__fh, struct v4l2_selectio } static int zoran_g_jpegcomp(struct file *file, void *__fh, - struct v4l2_jpegcompression *params) + struct v4l2_jpegcompression *params) { struct zoran_fh *fh = __fh; + memset(params, 0, sizeof(*params)); params->quality = fh->jpg_settings.jpg_comp.quality; @@ -2473,7 +2440,7 @@ static int zoran_g_jpegcomp(struct file *file, void *__fh, } static int zoran_s_jpegcomp(struct file *file, void *__fh, - const struct v4l2_jpegcompression *params) + const struct v4l2_jpegcompression *params) { struct zoran_fh *fh = __fh; struct zoran *zr = fh->zr; @@ -2502,9 +2469,7 @@ static int zoran_s_jpegcomp(struct file *file, void *__fh, return res; } -static __poll_t -zoran_poll (struct file *file, - poll_table *wait) +static __poll_t zoran_poll(struct file *file, poll_table *wait) { struct zoran_fh *fh = file->private_data; struct zoran *zr = fh->zr; @@ -2577,7 +2542,6 @@ zoran_poll (struct file *file, return res; } - /* * This maps the buffers to user space. * @@ -2590,15 +2554,14 @@ zoran_poll (struct file *file, * the buffer accordingly (zoran_vm_close()) */ -static void -zoran_vm_open (struct vm_area_struct *vma) +static void zoran_vm_open(struct vm_area_struct *vma) { struct zoran_mapping *map = vma->vm_private_data; + atomic_inc(&map->count); } -static void -zoran_vm_close (struct vm_area_struct *vma) +static void zoran_vm_close(struct vm_area_struct *vma) { struct zoran_mapping *map = vma->vm_private_data; struct zoran_fh *fh = map->fh; @@ -2616,9 +2579,8 @@ zoran_vm_close (struct vm_area_struct *vma) /* Any buffers still mapped? */ for (i = 0; i < fh->buffers.num_buffers; i++) { - if (fh->buffers.buffer[i].map) { + if (fh->buffers.buffer[i].map) return; - } } dprintk(3, KERN_INFO "%s: %s - free %s buffers\n", ZR_DEVNAME(zr), @@ -2650,9 +2612,7 @@ static const struct vm_operations_struct zoran_vm_ops = { .close = zoran_vm_close, }; -static int -zoran_mmap (struct file *file, - struct vm_area_struct *vma) +static int zoran_mmap(struct file *file, struct vm_area_struct *vma) { struct zoran_fh *fh = file->private_data; struct zoran *zr = fh->zr; @@ -2716,7 +2676,7 @@ zoran_mmap (struct file *file, } /* map these buffers */ - map = kmalloc(sizeof(struct zoran_mapping), GFP_KERNEL); + map = kmalloc(sizeof(*map), GFP_KERNEL); if (!map) { res = -ENOMEM; return res; @@ -2735,7 +2695,7 @@ zoran_mmap (struct file *file, todo = fh->buffers.buffer_size; page = fh->buffers.buffer[i].v4l.fbuffer_phys; if (remap_pfn_range(vma, start, page >> PAGE_SHIFT, - todo, PAGE_SHARED)) { + todo, PAGE_SHARED)) { dprintk(1, KERN_ERR "%s: %s(V4L) - remap_pfn_range failed\n", @@ -2767,7 +2727,7 @@ zoran_mmap (struct file *file, page = virt_to_phys(bus_to_virt(pos)) >> PAGE_SHIFT; if (remap_pfn_range(vma, start, page, - todo, PAGE_SHARED)) { + todo, PAGE_SHARED)) { dprintk(1, KERN_ERR "%s: %s(V4L) - remap_pfn_range failed\n", @@ -2786,7 +2746,6 @@ zoran_mmap (struct file *file, fh->buffers.buffer[i].map = map; if (size == 0) break; - } } return res; diff --git a/drivers/staging/media/zoran/zoran_procfs.c b/drivers/staging/media/zoran/zoran_procfs.c index 78ac8f853748..13367e6f6620 100644 --- a/drivers/staging/media/zoran/zoran_procfs.c +++ b/drivers/staging/media/zoran/zoran_procfs.c @@ -83,14 +83,11 @@ static const struct procfs_params_zr36067 zr67[] = { {NULL, 0, 0, 0}, }; -static void -setparam (struct zoran *zr, - char *name, - char *sval) +static void setparam(struct zoran *zr, char *name, char *sval) { int i = 0, reg0, reg, val; - while (zr67[i].name != NULL) { + while (zr67[i].name) { if (!strncmp(name, zr67[i].name, strlen(zr67[i].name))) { reg = reg0 = btread(zr67[i].reg); reg &= ~(zr67[i].mask << zr67[i].bit); @@ -119,19 +116,20 @@ static int zoran_show(struct seq_file *p, void *v) seq_printf(p, "ZR36067 registers:\n"); for (i = 0; i < 0x130; i += 16) - seq_printf(p, "%03X %08X %08X %08X %08X \n", i, - btread(i), btread(i+4), btread(i+8), btread(i+12)); + seq_printf(p, "%03X %08X %08X %08X %08X\n", i, + btread(i), btread(i + 4), btread(i + 8), btread(i + 12)); return 0; } static int zoran_open(struct inode *inode, struct file *file) { struct zoran *data = PDE_DATA(inode); + return single_open(file, zoran_show, data); } static ssize_t zoran_write(struct file *file, const char __user *buffer, - size_t count, loff_t *ppos) + size_t count, loff_t *ppos) { struct zoran *zr = PDE_DATA(file_inode(file)); char *string, *sp; @@ -142,14 +140,10 @@ static ssize_t zoran_write(struct file *file, const char __user *buffer, string = sp = vmalloc(count + 1); if (!string) { - dprintk(1, - KERN_ERR - "%s: write_proc: can not allocate memory\n", - ZR_DEVNAME(zr)); return -ENOMEM; } if (copy_from_user(string, buffer, count)) { - vfree (string); + vfree(string); return -EFAULT; } string[count] = 0; @@ -185,15 +179,14 @@ static const struct file_operations zoran_operations = { }; #endif -int -zoran_proc_init (struct zoran *zr) +int zoran_proc_init(struct zoran *zr) { #ifdef CONFIG_PROC_FS char name[8]; snprintf(name, 7, "zoran%d", zr->id); zr->zoran_proc = proc_create_data(name, 0, NULL, &zoran_operations, zr); - if (zr->zoran_proc != NULL) { + if (zr->zoran_proc) { dprintk(2, KERN_INFO "%s: procfs entry /proc/%s allocated. data=%p\n", @@ -207,8 +200,7 @@ zoran_proc_init (struct zoran *zr) return 0; } -void -zoran_proc_cleanup (struct zoran *zr) +void zoran_proc_cleanup(struct zoran *zr) { #ifdef CONFIG_PROC_FS char name[8]; diff --git a/drivers/staging/media/zoran/zr36016.c b/drivers/staging/media/zoran/zr36016.c index 8736b9d8d97e..3219b63d6f72 100644 --- a/drivers/staging/media/zoran/zr36016.c +++ b/drivers/staging/media/zoran/zr36016.c @@ -1,39 +1,13 @@ +// SPDX-License-Identifier: GPL-2.0-or-later /* * Zoran ZR36016 basic configuration functions * * Copyright (C) 2001 Wolfgang Scherr - * - * $Id: zr36016.c,v 1.1.2.14 2003/08/20 19:46:55 rbultje Exp $ - * - * ------------------------------------------------------------------------ - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * ------------------------------------------------------------------------ */ -#define ZR016_VERSION "v0.7" - #include #include #include -#include - -#include -#include - -/* I/O commands, error codes */ -#include - -/* v4l API */ /* headerfile of this module */ #include "zr36016.h" @@ -66,40 +40,31 @@ MODULE_PARM_DESC(debug, "Debug level (0-4)"); ========================================================================= */ /* read and write functions */ -static u8 -zr36016_read (struct zr36016 *ptr, - u16 reg) +static u8 zr36016_read(struct zr36016 *ptr, u16 reg) { u8 value = 0; - // just in case something is wrong... + /* just in case something is wrong... */ if (ptr->codec->master_data->readreg) - value = - (ptr->codec->master_data-> - readreg(ptr->codec, reg)) & 0xFF; + value = (ptr->codec->master_data->readreg(ptr->codec, reg)) & 0xFF; else dprintk(1, KERN_ERR "%s: invalid I/O setup, nothing read!\n", ptr->name); - dprintk(4, "%s: reading from 0x%04x: %02x\n", ptr->name, reg, - value); + dprintk(4, "%s: reading from 0x%04x: %02x\n", ptr->name, reg, value); return value; } -static void -zr36016_write (struct zr36016 *ptr, - u16 reg, - u8 value) +static void zr36016_write(struct zr36016 *ptr, u16 reg, u8 value) { - dprintk(4, "%s: writing 0x%02x to 0x%04x\n", ptr->name, value, - reg); + dprintk(4, "%s: writing 0x%02x to 0x%04x\n", ptr->name, value, reg); // just in case something is wrong... - if (ptr->codec->master_data->writereg) { + if (ptr->codec->master_data->writereg) ptr->codec->master_data->writereg(ptr->codec, reg, value); - } else + else dprintk(1, KERN_ERR "%s: invalid I/O setup, nothing written!\n", @@ -109,45 +74,40 @@ zr36016_write (struct zr36016 *ptr, /* indirect read and write functions */ /* the 016 supports auto-addr-increment, but * writing it all time cost not much and is safer... */ -static u8 -zr36016_readi (struct zr36016 *ptr, - u16 reg) +static u8 zr36016_readi(struct zr36016 *ptr, u16 reg) { u8 value = 0; - // just in case something is wrong... - if ((ptr->codec->master_data->writereg) && - (ptr->codec->master_data->readreg)) { + /* just in case something is wrong... */ + if ((ptr->codec->master_data->writereg) && (ptr->codec->master_data->readreg)) { ptr->codec->master_data->writereg(ptr->codec, ZR016_IADDR, reg & 0x0F); // ADDR value = (ptr->codec->master_data->readreg(ptr->codec, ZR016_IDATA)) & 0xFF; // DATA - } else + } else { dprintk(1, KERN_ERR "%s: invalid I/O setup, nothing read (i)!\n", ptr->name); + } - dprintk(4, "%s: reading indirect from 0x%04x: %02x\n", ptr->name, - reg, value); + dprintk(4, "%s: reading indirect from 0x%04x: %02x\n", ptr->name, reg, value); return value; } -static void -zr36016_writei (struct zr36016 *ptr, - u16 reg, - u8 value) +static void zr36016_writei(struct zr36016 *ptr, u16 reg, u8 value) { dprintk(4, "%s: writing indirect 0x%02x to 0x%04x\n", ptr->name, value, reg); - // just in case something is wrong... + /* just in case something is wrong... */ if (ptr->codec->master_data->writereg) { ptr->codec->master_data->writereg(ptr->codec, ZR016_IADDR, reg & 0x0F); // ADDR ptr->codec->master_data->writereg(ptr->codec, ZR016_IDATA, value & 0x0FF); // DATA - } else + } else { dprintk(1, KERN_ERR "%s: invalid I/O setup, nothing written (i)!\n", ptr->name); + } } /* ========================================================================= @@ -157,8 +117,7 @@ zr36016_writei (struct zr36016 *ptr, ========================================================================= */ /* version kept in datastructure */ -static u8 -zr36016_read_version (struct zr36016 *ptr) +static u8 zr36016_read_version(struct zr36016 *ptr) { ptr->version = zr36016_read(ptr, 0) >> 4; return ptr->version; @@ -170,11 +129,11 @@ zr36016_read_version (struct zr36016 *ptr) basic test of "connectivity", writes/reads to/from PAX-Lo register ========================================================================= */ -static int -zr36016_basic_test (struct zr36016 *ptr) +static int zr36016_basic_test(struct zr36016 *ptr) { if (debug) { int i; + zr36016_writei(ptr, ZR016I_PAX_LO, 0x55); dprintk(1, KERN_INFO "%s: registers: ", ptr->name); for (i = 0; i <= 0x0b; i++) @@ -219,16 +178,16 @@ zr36016_basic_test (struct zr36016 *ptr) ========================================================================= */ #if 0 -static int zr36016_pushit (struct zr36016 *ptr, - u16 startreg, +static int zr36016_pushit(struct zr36016 *ptr, + u16 startreg, u16 len, const char *data) { - int i=0; + int i = 0; dprintk(4, "%s: write data block to 0x%04x (len=%d)\n", - ptr->name, startreg,len); - while (iname, startreg, len); + while (i < len) { zr36016_writei(ptr, startreg++, data[i++]); } @@ -242,8 +201,7 @@ static int zr36016_pushit (struct zr36016 *ptr, //TODO// ========================================================================= */ -static void -zr36016_init (struct zr36016 *ptr) +static void zr36016_init(struct zr36016 *ptr) { // stop any processing zr36016_write(ptr, ZR016_GOSTOP, 0); @@ -283,11 +241,9 @@ zr36016_init (struct zr36016 *ptr) /* set compression/expansion mode and launches codec - this should be the last call from the master before starting processing */ -static int -zr36016_set_mode (struct videocodec *codec, - int mode) +static int zr36016_set_mode(struct videocodec *codec, int mode) { - struct zr36016 *ptr = (struct zr36016 *) codec->data; + struct zr36016 *ptr = (struct zr36016 *)codec->data; dprintk(2, "%s: set_mode %d call\n", ptr->name, mode); @@ -301,13 +257,10 @@ zr36016_set_mode (struct videocodec *codec, } /* set picture size */ -static int -zr36016_set_video (struct videocodec *codec, - struct tvnorm *norm, - struct vfe_settings *cap, - struct vfe_polarity *pol) +static int zr36016_set_video(struct videocodec *codec, struct tvnorm *norm, + struct vfe_settings *cap, struct vfe_polarity *pol) { - struct zr36016 *ptr = (struct zr36016 *) codec->data; + struct zr36016 *ptr = (struct zr36016 *)codec->data; dprintk(2, "%s: set_video %d.%d, %d/%d-%dx%d (0x%x) call\n", ptr->name, norm->HStart, norm->VStart, @@ -339,17 +292,12 @@ zr36016_set_video (struct videocodec *codec, } /* additional control functions */ -static int -zr36016_control (struct videocodec *codec, - int type, - int size, - void *data) +static int zr36016_control(struct videocodec *codec, int type, int size, void *data) { - struct zr36016 *ptr = (struct zr36016 *) codec->data; - int *ival = (int *) data; + struct zr36016 *ptr = (struct zr36016 *)codec->data; + int *ival = (int *)data; - dprintk(2, "%s: control %d call with %d byte\n", ptr->name, type, - size); + dprintk(2, "%s: control %d call with %d byte\n", ptr->name, type, size); switch (type) { case CODEC_G_STATUS: /* get last status - we don't know it ... */ @@ -393,16 +341,14 @@ zr36016_control (struct videocodec *codec, Deinitializes Zoran's JPEG processor ========================================================================= */ -static int -zr36016_unset (struct videocodec *codec) +static int zr36016_unset(struct videocodec *codec) { struct zr36016 *ptr = codec->data; if (ptr) { /* do wee need some codec deinit here, too ???? */ - dprintk(1, "%s: finished codec #%d\n", ptr->name, - ptr->num); + dprintk(1, "%s: finished codec #%d\n", ptr->name, ptr->num); kfree(ptr); codec->data = NULL; @@ -422,29 +368,23 @@ zr36016_unset (struct videocodec *codec) (the given size is determined by the processor with the video interface) ========================================================================= */ -static int -zr36016_setup (struct videocodec *codec) +static int zr36016_setup(struct videocodec *codec) { struct zr36016 *ptr; int res; - dprintk(2, "zr36016: initializing VFE subsystem #%d.\n", - zr36016_codecs); + dprintk(2, "zr36016: initializing VFE subsystem #%d.\n", zr36016_codecs); if (zr36016_codecs == MAX_CODECS) { - dprintk(1, - KERN_ERR "zr36016: Can't attach more codecs!\n"); + dprintk(1, KERN_ERR "zr36016: Can't attach more codecs!\n"); return -ENOSPC; } //mem structure init codec->data = ptr = kzalloc(sizeof(struct zr36016), GFP_KERNEL); - if (NULL == ptr) { - dprintk(1, KERN_ERR "zr36016: Can't get enough memory!\n"); + if (!ptr) { return -ENOMEM; - } - snprintf(ptr->name, sizeof(ptr->name), "zr36016[%d]", - zr36016_codecs); + snprintf(ptr->name, sizeof(ptr->name), "zr36016[%d]", zr36016_codecs); ptr->num = zr36016_codecs++; ptr->codec = codec; @@ -462,8 +402,7 @@ zr36016_setup (struct videocodec *codec) ptr->ydec = 0; zr36016_init(ptr); - dprintk(1, KERN_INFO "%s: codec v%d attached and running\n", - ptr->name, ptr->version); + dprintk(1, KERN_INFO "%s: codec v%d attached and running\n", ptr->name, ptr->version); return 0; } @@ -471,33 +410,31 @@ zr36016_setup (struct videocodec *codec) static const struct videocodec zr36016_codec = { .owner = THIS_MODULE, .name = "zr36016", - .magic = 0L, // magic not used + .magic = 0L, /* magic not used */ .flags = CODEC_FLAG_HARDWARE | CODEC_FLAG_VFE | CODEC_FLAG_ENCODER | CODEC_FLAG_DECODER, .type = CODEC_TYPE_ZR36016, - .setup = zr36016_setup, // functionality + .setup = zr36016_setup, /* functionality */ .unset = zr36016_unset, .set_mode = zr36016_set_mode, .set_video = zr36016_set_video, .control = zr36016_control, - // others are not used + /* others are not used */ }; /* ========================================================================= HOOK IN DRIVER AS KERNEL MODULE ========================================================================= */ -static int __init -zr36016_init_module (void) +static int __init zr36016_init_module(void) { //dprintk(1, "ZR36016 driver %s\n",ZR016_VERSION); zr36016_codecs = 0; return videocodec_register(&zr36016_codec); } -static void __exit -zr36016_cleanup_module (void) +static void __exit zr36016_cleanup_module(void) { if (zr36016_codecs) { dprintk(1, @@ -511,6 +448,5 @@ module_init(zr36016_init_module); module_exit(zr36016_cleanup_module); MODULE_AUTHOR("Wolfgang Scherr "); -MODULE_DESCRIPTION("Driver module for ZR36016 video frontends " - ZR016_VERSION); +MODULE_DESCRIPTION("Driver module for ZR36016 video frontends"); MODULE_LICENSE("GPL"); diff --git a/drivers/staging/media/zoran/zr36016.h b/drivers/staging/media/zoran/zr36016.h index 784bcf5727b8..1475f971cc24 100644 --- a/drivers/staging/media/zoran/zr36016.h +++ b/drivers/staging/media/zoran/zr36016.h @@ -1,23 +1,8 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ /* * Zoran ZR36016 basic configuration functions - header file * * Copyright (C) 2001 Wolfgang Scherr - * - * $Id: zr36016.h,v 1.1.2.3 2003/01/14 21:18:07 rbultje Exp $ - * - * ------------------------------------------------------------------------ - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * ------------------------------------------------------------------------ */ #ifndef ZR36016_H diff --git a/drivers/staging/media/zoran/zr36050.c b/drivers/staging/media/zoran/zr36050.c index 5ebfc16672f3..dc7928d88099 100644 --- a/drivers/staging/media/zoran/zr36050.c +++ b/drivers/staging/media/zoran/zr36050.c @@ -1,23 +1,8 @@ +// SPDX-License-Identifier: GPL-2.0-or-later /* * Zoran ZR36050 basic configuration functions * * Copyright (C) 2001 Wolfgang Scherr - * - * $Id: zr36050.c,v 1.1.2.11 2003/08/03 14:54:53 rbultje Exp $ - * - * ------------------------------------------------------------------------ - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * ------------------------------------------------------------------------ */ #define ZR050_VERSION "v0.7.1" @@ -64,36 +49,27 @@ MODULE_PARM_DESC(debug, "Debug level (0-4)"); ========================================================================= */ /* read and write functions */ -static u8 -zr36050_read (struct zr36050 *ptr, - u16 reg) +static u8 zr36050_read(struct zr36050 *ptr, u16 reg) { u8 value = 0; - // just in case something is wrong... + /* just in case something is wrong... */ if (ptr->codec->master_data->readreg) - value = (ptr->codec->master_data->readreg(ptr->codec, - reg)) & 0xFF; + value = (ptr->codec->master_data->readreg(ptr->codec, reg)) & 0xFF; else dprintk(1, - KERN_ERR "%s: invalid I/O setup, nothing read!\n", - ptr->name); + KERN_ERR "%s: invalid I/O setup, nothing read!\n", ptr->name); - dprintk(4, "%s: reading from 0x%04x: %02x\n", ptr->name, reg, - value); + dprintk(4, "%s: reading from 0x%04x: %02x\n", ptr->name, reg, value); return value; } -static void -zr36050_write (struct zr36050 *ptr, - u16 reg, - u8 value) +static void zr36050_write(struct zr36050 *ptr, u16 reg, u8 value) { - dprintk(4, "%s: writing 0x%02x to 0x%04x\n", ptr->name, value, - reg); + dprintk(4, "%s: writing 0x%02x to 0x%04x\n", ptr->name, value, reg); - // just in case something is wrong... + /* just in case something is wrong... */ if (ptr->codec->master_data->writereg) ptr->codec->master_data->writereg(ptr->codec, reg, value); else @@ -110,8 +86,7 @@ zr36050_write (struct zr36050 *ptr, ========================================================================= */ /* status is kept in datastructure */ -static u8 -zr36050_read_status1 (struct zr36050 *ptr) +static u8 zr36050_read_status1(struct zr36050 *ptr) { ptr->status1 = zr36050_read(ptr, ZR050_STATUS_1); @@ -126,8 +101,7 @@ zr36050_read_status1 (struct zr36050 *ptr) ========================================================================= */ /* scale factor is kept in datastructure */ -static u16 -zr36050_read_scalefactor (struct zr36050 *ptr) +static u16 zr36050_read_scalefactor(struct zr36050 *ptr) { ptr->scalefact = (zr36050_read(ptr, ZR050_SF_HI) << 8) | (zr36050_read(ptr, ZR050_SF_LO) & 0xFF); @@ -143,8 +117,7 @@ zr36050_read_scalefactor (struct zr36050 *ptr) wait if codec is ready to proceed (end of processing) or time is over ========================================================================= */ -static void -zr36050_wait_end (struct zr36050 *ptr) +static void zr36050_wait_end(struct zr36050 *ptr) { int i = 0; @@ -165,8 +138,7 @@ zr36050_wait_end (struct zr36050 *ptr) basic test of "connectivity", writes/reads to/from memory the SOF marker ========================================================================= */ -static int -zr36050_basic_test (struct zr36050 *ptr) +static int zr36050_basic_test(struct zr36050 *ptr) { zr36050_write(ptr, ZR050_SOF_IDX, 0x00); zr36050_write(ptr, ZR050_SOF_IDX + 1, 0x00); @@ -207,19 +179,14 @@ zr36050_basic_test (struct zr36050 *ptr) simple loop for pushing the init datasets ========================================================================= */ -static int -zr36050_pushit (struct zr36050 *ptr, - u16 startreg, - u16 len, - const char *data) +static int zr36050_pushit(struct zr36050 *ptr, u16 startreg, u16 len, const char *data) { int i = 0; dprintk(4, "%s: write data block to 0x%04x (len=%d)\n", ptr->name, startreg, len); - while (i < len) { + while (i < len) zr36050_write(ptr, startreg++, data[i++]); - } return i; } @@ -338,8 +305,7 @@ static const char zr36050_decimation_v[8] = { 1, 1, 1, 0, 0, 0, 0, 0 }; /* SOF (start of frame) segment depends on width, height and sampling ratio of each color component */ -static int -zr36050_set_sof (struct zr36050 *ptr) +static int zr36050_set_sof(struct zr36050 *ptr) { char sof_data[34]; // max. size of register set int i; @@ -370,8 +336,7 @@ zr36050_set_sof (struct zr36050 *ptr) /* SOS (start of scan) segment depends on the used scan components of each color component */ -static int -zr36050_set_sos (struct zr36050 *ptr) +static int zr36050_set_sos(struct zr36050 *ptr) { char sos_data[16]; // max. size of register set int i; @@ -398,8 +363,7 @@ zr36050_set_sos (struct zr36050 *ptr) /* DRI (define restart interval) */ -static int -zr36050_set_dri (struct zr36050 *ptr) +static int zr36050_set_dri(struct zr36050 *ptr) { char dri_data[6]; // max. size of register set @@ -421,8 +385,7 @@ zr36050_set_dri (struct zr36050 *ptr) ... sorry for the spaghetti code ... ========================================================================= */ -static void -zr36050_init (struct zr36050 *ptr) +static void zr36050_init(struct zr36050 *ptr) { int sum = 0; long bitcnt, tmp; @@ -577,11 +540,9 @@ zr36050_init (struct zr36050 *ptr) /* set compression/expansion mode and launches codec - this should be the last call from the master before starting processing */ -static int -zr36050_set_mode (struct videocodec *codec, - int mode) +static int zr36050_set_mode(struct videocodec *codec, int mode) { - struct zr36050 *ptr = (struct zr36050 *) codec->data; + struct zr36050 *ptr = (struct zr36050 *)codec->data; dprintk(2, "%s: set_mode %d call\n", ptr->name, mode); @@ -595,13 +556,10 @@ zr36050_set_mode (struct videocodec *codec, } /* set picture size (norm is ignored as the codec doesn't know about it) */ -static int -zr36050_set_video (struct videocodec *codec, - struct tvnorm *norm, - struct vfe_settings *cap, - struct vfe_polarity *pol) +static int zr36050_set_video(struct videocodec *codec, struct tvnorm *norm, + struct vfe_settings *cap, struct vfe_polarity *pol) { - struct zr36050 *ptr = (struct zr36050 *) codec->data; + struct zr36050 *ptr = (struct zr36050 *)codec->data; int size; dprintk(2, "%s: set_video %d.%d, %d/%d-%dx%d (0x%x) q%d call\n", @@ -630,21 +588,17 @@ zr36050_set_video (struct videocodec *codec, ptr->real_code_vol = size >> 3; /* in bytes */ /* Set max_block_vol here (previously in zr36050_init, moved - * here for consistency with zr36060 code */ + * here for consistency with zr36060 code */ zr36050_write(ptr, ZR050_MBCV, ptr->max_block_vol); return 0; } /* additional control functions */ -static int -zr36050_control (struct videocodec *codec, - int type, - int size, - void *data) +static int zr36050_control(struct videocodec *codec, int type, int size, void *data) { - struct zr36050 *ptr = (struct zr36050 *) codec->data; - int *ival = (int *) data; + struct zr36050 *ptr = (struct zr36050 *)codec->data; + int *ival = (int *)data; dprintk(2, "%s: control %d call with %d byte\n", ptr->name, type, size); @@ -760,8 +714,7 @@ zr36050_control (struct videocodec *codec, Deinitializes Zoran's JPEG processor ========================================================================= */ -static int -zr36050_unset (struct videocodec *codec) +static int zr36050_unset(struct videocodec *codec) { struct zr36050 *ptr = codec->data; @@ -789,8 +742,7 @@ zr36050_unset (struct videocodec *codec) (the given size is determined by the processor with the video interface) ========================================================================= */ -static int -zr36050_setup (struct videocodec *codec) +static int zr36050_setup(struct videocodec *codec) { struct zr36050 *ptr; int res; @@ -805,7 +757,7 @@ zr36050_setup (struct videocodec *codec) } //mem structure init codec->data = ptr = kzalloc(sizeof(struct zr36050), GFP_KERNEL); - if (NULL == ptr) { + if (!ptr) { dprintk(1, KERN_ERR "zr36050: Can't get enough memory!\n"); return -ENOMEM; } @@ -868,16 +820,14 @@ static const struct videocodec zr36050_codec = { HOOK IN DRIVER AS KERNEL MODULE ========================================================================= */ -static int __init -zr36050_init_module (void) +static int __init zr36050_init_module(void) { //dprintk(1, "ZR36050 driver %s\n",ZR050_VERSION); zr36050_codecs = 0; return videocodec_register(&zr36050_codec); } -static void __exit -zr36050_cleanup_module (void) +static void __exit zr36050_cleanup_module(void) { if (zr36050_codecs) { dprintk(1, diff --git a/drivers/staging/media/zoran/zr36050.h b/drivers/staging/media/zoran/zr36050.h index 9236486d3c2b..8f972d045b58 100644 --- a/drivers/staging/media/zoran/zr36050.h +++ b/drivers/staging/media/zoran/zr36050.h @@ -1,23 +1,8 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ /* * Zoran ZR36050 basic configuration functions - header file * * Copyright (C) 2001 Wolfgang Scherr - * - * $Id: zr36050.h,v 1.1.2.2 2003/01/14 21:18:22 rbultje Exp $ - * - * ------------------------------------------------------------------------ - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * ------------------------------------------------------------------------ */ #ifndef ZR36050_H @@ -85,10 +70,10 @@ struct zr36050 { #define ZR050_ACT_MH 0x01b #define ZR050_ACT_ML 0x01c #define ZR050_ACT_LO 0x01d -#define ZR050_ACV_TRUN_HI 0x01e -#define ZR050_ACV_TRUN_MH 0x01f -#define ZR050_ACV_TRUN_ML 0x020 -#define ZR050_ACV_TRUN_LO 0x021 +#define ZR050_ACV_TURN_HI 0x01e +#define ZR050_ACV_TURN_MH 0x01f +#define ZR050_ACV_TURN_ML 0x020 +#define ZR050_ACV_TURN_LO 0x021 #define ZR050_STATUS_0 0x02e #define ZR050_STATUS_1 0x02f @@ -145,7 +130,6 @@ struct zr36050 { #define ZR050_OP_NSCN_8 0xE0 #define ZR050_OP_OVF 0x10 - /* zr36050 markers-enable register bits */ #define ZR050_ME_APP 0x80 diff --git a/drivers/staging/media/zoran/zr36057.h b/drivers/staging/media/zoran/zr36057.h index c8acb21dcb5c..b0ec4a7ffda2 100644 --- a/drivers/staging/media/zoran/zr36057.h +++ b/drivers/staging/media/zoran/zr36057.h @@ -1,41 +1,31 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ /* * zr36057.h - zr36057 register offsets * * Copyright (C) 1998 Dave Perks - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. */ #ifndef _ZR36057_H_ #define _ZR36057_H_ - /* Zoran ZR36057 registers */ #define ZR36057_VFEHCR 0x000 /* Video Front End, Horizontal Configuration Register */ -#define ZR36057_VFEHCR_HSPol (1<<30) +#define ZR36057_VFEHCR_HSPol BIT(30) #define ZR36057_VFEHCR_HStart 10 #define ZR36057_VFEHCR_HEnd 0 #define ZR36057_VFEHCR_Hmask 0x3ff #define ZR36057_VFEVCR 0x004 /* Video Front End, Vertical Configuration Register */ -#define ZR36057_VFEVCR_VSPol (1<<30) +#define ZR36057_VFEVCR_VSPol BIT(30) #define ZR36057_VFEVCR_VStart 10 #define ZR36057_VFEVCR_VEnd 0 #define ZR36057_VFEVCR_Vmask 0x3ff #define ZR36057_VFESPFR 0x008 /* Video Front End, Scaler and Pixel Format Register */ -#define ZR36057_VFESPFR_ExtFl (1<<26) -#define ZR36057_VFESPFR_TopField (1<<25) -#define ZR36057_VFESPFR_VCLKPol (1<<24) +#define ZR36057_VFESPFR_ExtFl BIT(26) +#define ZR36057_VFESPFR_TopField BIT(25) +#define ZR36057_VFESPFR_VCLKPol BIT(24) #define ZR36057_VFESPFR_HFilter 21 #define ZR36057_VFESPFR_HorDcm 14 #define ZR36057_VFESPFR_VerDcm 8 @@ -54,14 +44,14 @@ #define ZR36057_VSSFGR 0x014 /* Video Stride, Status, and Frame Grab Register */ #define ZR36057_VSSFGR_DispStride 16 -#define ZR36057_VSSFGR_VidOvf (1<<8) -#define ZR36057_VSSFGR_SnapShot (1<<1) -#define ZR36057_VSSFGR_FrameGrab (1<<0) +#define ZR36057_VSSFGR_VidOvf BIT(8) +#define ZR36057_VSSFGR_SnapShot BIT(1) +#define ZR36057_VSSFGR_FrameGrab BIT(0) #define ZR36057_VDCR 0x018 /* Video Display Configuration Register */ -#define ZR36057_VDCR_VidEn (1<<31) +#define ZR36057_VDCR_VidEn BIT(31) #define ZR36057_VDCR_MinPix 24 -#define ZR36057_VDCR_Triton (1<<24) +#define ZR36057_VDCR_Triton BIT(24) #define ZR36057_VDCR_VidWinHt 12 #define ZR36057_VDCR_VidWinWid 0 @@ -70,60 +60,60 @@ #define ZR36057_MMBR 0x020 /* Masking Map "Bottom" Register */ #define ZR36057_OCR 0x024 /* Overlay Control Register */ -#define ZR36057_OCR_OvlEnable (1 << 15) +#define ZR36057_OCR_OvlEnable BIT(15) #define ZR36057_OCR_MaskStride 0 #define ZR36057_SPGPPCR 0x028 /* System, PCI, and General Purpose Pins Control Register */ -#define ZR36057_SPGPPCR_SoftReset (1<<24) +#define ZR36057_SPGPPCR_SoftReset BIT(24) #define ZR36057_GPPGCR1 0x02c /* General Purpose Pins and GuestBus Control Register (1) */ #define ZR36057_MCSAR 0x030 /* MPEG Code Source Address Register */ #define ZR36057_MCTCR 0x034 /* MPEG Code Transfer Control Register */ -#define ZR36057_MCTCR_CodTime (1 << 30) -#define ZR36057_MCTCR_CEmpty (1 << 29) -#define ZR36057_MCTCR_CFlush (1 << 28) +#define ZR36057_MCTCR_CodTime BIT(30) +#define ZR36057_MCTCR_CEmpty BIT(29) +#define ZR36057_MCTCR_CFlush BIT(28) #define ZR36057_MCTCR_CodGuestID 20 #define ZR36057_MCTCR_CodGuestReg 16 #define ZR36057_MCMPR 0x038 /* MPEG Code Memory Pointer Register */ #define ZR36057_ISR 0x03c /* Interrupt Status Register */ -#define ZR36057_ISR_GIRQ1 (1<<30) -#define ZR36057_ISR_GIRQ0 (1<<29) -#define ZR36057_ISR_CodRepIRQ (1<<28) -#define ZR36057_ISR_JPEGRepIRQ (1<<27) +#define ZR36057_ISR_GIRQ1 BIT(30) +#define ZR36057_ISR_GIRQ0 BIT(29) +#define ZR36057_ISR_CodRepIRQ BIT(28) +#define ZR36057_ISR_JPEGRepIRQ BIT(27) #define ZR36057_ICR 0x040 /* Interrupt Control Register */ -#define ZR36057_ICR_GIRQ1 (1<<30) -#define ZR36057_ICR_GIRQ0 (1<<29) -#define ZR36057_ICR_CodRepIRQ (1<<28) -#define ZR36057_ICR_JPEGRepIRQ (1<<27) -#define ZR36057_ICR_IntPinEn (1<<24) +#define ZR36057_ICR_GIRQ1 BIT(30) +#define ZR36057_ICR_GIRQ0 BIT(29) +#define ZR36057_ICR_CodRepIRQ BIT(28) +#define ZR36057_ICR_JPEGRepIRQ BIT(27) +#define ZR36057_ICR_IntPinEn BIT(24) #define ZR36057_I2CBR 0x044 /* I2C Bus Register */ -#define ZR36057_I2CBR_SDA (1<<1) -#define ZR36057_I2CBR_SCL (1<<0) +#define ZR36057_I2CBR_SDA BIT(1) +#define ZR36057_I2CBR_SCL BIT(0) #define ZR36057_JMC 0x100 /* JPEG Mode and Control */ -#define ZR36057_JMC_JPG (1 << 31) +#define ZR36057_JMC_JPG BIT(31) #define ZR36057_JMC_JPGExpMode (0 << 29) -#define ZR36057_JMC_JPGCmpMode (1 << 29) +#define ZR36057_JMC_JPGCmpMode BIT(29) #define ZR36057_JMC_MJPGExpMode (2 << 29) #define ZR36057_JMC_MJPGCmpMode (3 << 29) -#define ZR36057_JMC_RTBUSY_FB (1 << 6) -#define ZR36057_JMC_Go_en (1 << 5) -#define ZR36057_JMC_SyncMstr (1 << 4) -#define ZR36057_JMC_Fld_per_buff (1 << 3) -#define ZR36057_JMC_VFIFO_FB (1 << 2) -#define ZR36057_JMC_CFIFO_FB (1 << 1) -#define ZR36057_JMC_Stll_LitEndian (1 << 0) +#define ZR36057_JMC_RTBUSY_FB BIT(6) +#define ZR36057_JMC_Go_en BIT(5) +#define ZR36057_JMC_SyncMstr BIT(4) +#define ZR36057_JMC_Fld_per_buff BIT(3) +#define ZR36057_JMC_VFIFO_FB BIT(2) +#define ZR36057_JMC_CFIFO_FB BIT(1) +#define ZR36057_JMC_Stll_LitEndian BIT(0) #define ZR36057_JPC 0x104 /* JPEG Process Control */ -#define ZR36057_JPC_P_Reset (1 << 7) -#define ZR36057_JPC_CodTrnsEn (1 << 5) -#define ZR36057_JPC_Active (1 << 0) +#define ZR36057_JPC_P_Reset BIT(7) +#define ZR36057_JPC_CodTrnsEn BIT(5) +#define ZR36057_JPC_Active BIT(0) #define ZR36057_VSP 0x108 /* Vertical Sync Parameters */ #define ZR36057_VSP_VsyncSize 16 @@ -142,7 +132,7 @@ #define ZR36057_FVAP_PAY 0 #define ZR36057_FPP 0x118 /* Field Process Parameters */ -#define ZR36057_FPP_Odd_Even (1 << 0) +#define ZR36057_FPP_Odd_Even BIT(0) #define ZR36057_JCBA 0x11c /* JPEG Code Base Address */ @@ -155,9 +145,9 @@ #define ZR36057_GCR2 0x12c /* GuestBus Control Register (2) */ #define ZR36057_POR 0x200 /* Post Office Register */ -#define ZR36057_POR_POPen (1<<25) -#define ZR36057_POR_POTime (1<<24) -#define ZR36057_POR_PODir (1<<23) +#define ZR36057_POR_POPen BIT(25) +#define ZR36057_POR_POTime BIT(24) +#define ZR36057_POR_PODir BIT(23) #define ZR36057_STR 0x300 /* "Still" Transfer Register */ diff --git a/drivers/staging/media/zoran/zr36060.c b/drivers/staging/media/zoran/zr36060.c index 2c2e8130fc96..c04054f1306b 100644 --- a/drivers/staging/media/zoran/zr36060.c +++ b/drivers/staging/media/zoran/zr36060.c @@ -1,23 +1,8 @@ +// SPDX-License-Identifier: GPL-2.0-or-later /* * Zoran ZR36060 basic configuration functions * * Copyright (C) 2002 Laurent Pinchart - * - * $Id: zr36060.c,v 1.1.2.22 2003/05/06 09:35:36 rbultje Exp $ - * - * ------------------------------------------------------------------------ - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * ------------------------------------------------------------------------ */ #define ZR060_VERSION "v0.7" @@ -31,7 +16,7 @@ #include /* I/O commands, error codes */ -#include +#include /* headerfile of this module */ #include "zr36060.h" @@ -39,8 +24,7 @@ /* codec io API */ #include "videocodec.h" -/* it doesn't make sense to have more than 20 or so, - just to prevent some unwanted loops */ +/* it doesn't make sense to have more than 20 or so, just to prevent some unwanted loops */ #define MAX_CODECS 20 /* amount of chips attached via this driver */ @@ -62,38 +46,28 @@ MODULE_PARM_DESC(debug, "Debug level (0-4)"); } while (0) /* ========================================================================= - Local hardware I/O functions: - - read/write via codec layer (registers are located in the master device) - ========================================================================= */ + * Local hardware I/O functions: + * read/write via codec layer (registers are located in the master device) + * ========================================================================= + */ -/* read and write functions */ -static u8 -zr36060_read (struct zr36060 *ptr, - u16 reg) +static u8 zr36060_read(struct zr36060 *ptr, u16 reg) { u8 value = 0; // just in case something is wrong... if (ptr->codec->master_data->readreg) - value = (ptr->codec->master_data->readreg(ptr->codec, - reg)) & 0xff; + value = (ptr->codec->master_data->readreg(ptr->codec, reg)) & 0xff; else dprintk(1, KERN_ERR "%s: invalid I/O setup, nothing read!\n", ptr->name); - //dprintk(4, "%s: reading from 0x%04x: %02x\n",ptr->name,reg,value); - return value; } -static void -zr36060_write(struct zr36060 *ptr, - u16 reg, - u8 value) +static void zr36060_write(struct zr36060 *ptr, u16 reg, u8 value) { - //dprintk(4, "%s: writing 0x%02x to 0x%04x\n",ptr->name,value,reg); dprintk(4, "0x%02x @0x%04x\n", value, reg); // just in case something is wrong... @@ -107,14 +81,13 @@ zr36060_write(struct zr36060 *ptr, } /* ========================================================================= - Local helper function: - - status read - ========================================================================= */ + * Local helper function: + * status read + * ========================================================================= + */ /* status is kept in datastructure */ -static u8 -zr36060_read_status (struct zr36060 *ptr) +static u8 zr36060_read_status(struct zr36060 *ptr) { ptr->status = zr36060_read(ptr, ZR060_CFSR); @@ -122,15 +95,8 @@ zr36060_read_status (struct zr36060 *ptr) return ptr->status; } -/* ========================================================================= - Local helper function: - - scale factor read - ========================================================================= */ - /* scale factor is kept in datastructure */ -static u16 -zr36060_read_scalefactor (struct zr36060 *ptr) +static u16 zr36060_read_scalefactor(struct zr36060 *ptr) { ptr->scalefact = (zr36060_read(ptr, ZR060_SF_HI) << 8) | (zr36060_read(ptr, ZR060_SF_LO) & 0xFF); @@ -140,14 +106,8 @@ zr36060_read_scalefactor (struct zr36060 *ptr) return ptr->scalefact; } -/* ========================================================================= - Local helper function: - - wait if codec is ready to proceed (end of processing) or time is over - ========================================================================= */ - -static void -zr36060_wait_end (struct zr36060 *ptr) +/* wait if codec is ready to proceed (end of processing) or time is over */ +static void zr36060_wait_end(struct zr36060 *ptr) { int i = 0; @@ -162,14 +122,8 @@ zr36060_wait_end (struct zr36060 *ptr) } } -/* ========================================================================= - Local helper function: - - basic test of "connectivity", writes/reads to/from memory the SOF marker - ========================================================================= */ - -static int -zr36060_basic_test (struct zr36060 *ptr) +/* Basic test of "connectivity", writes/reads to/from memory the SOF marker */ +static int zr36060_basic_test(struct zr36060 *ptr) { if ((zr36060_read(ptr, ZR060_IDR_DEV) != 0x33) && (zr36060_read(ptr, ZR060_IDR_REV) != 0x01)) { @@ -192,40 +146,29 @@ zr36060_basic_test (struct zr36060 *ptr) return 0; /* looks good! */ } -/* ========================================================================= - Local helper function: - - simple loop for pushing the init datasets - ========================================================================= */ - -static int -zr36060_pushit (struct zr36060 *ptr, - u16 startreg, - u16 len, - const char *data) +/* simple loop for pushing the init datasets */ +static int zr36060_pushit(struct zr36060 *ptr, u16 startreg, u16 len, const char *data) { int i = 0; dprintk(4, "%s: write data block to 0x%04x (len=%d)\n", ptr->name, startreg, len); - while (i < len) { + while (i < len) zr36060_write(ptr, startreg++, data[i++]); - } return i; } /* ========================================================================= - Basic datasets: - - jpeg baseline setup data (you find it on lots places in internet, or just - extract it from any regular .jpg image...) - - Could be variable, but until it's not needed it they are just fixed to save - memory. Otherwise expand zr36060 structure with arrays, push the values to - it and initialize from there, as e.g. the linux zr36057/60 driver does it. - ========================================================================= */ - + * Basic datasets: + * jpeg baseline setup data (you find it on lots places in internet, or just + * extract it from any regular .jpg image...) + * + * Could be variable, but until it's not needed it they are just fixed to save + * memory. Otherwise expand zr36060 structure with arrays, push the values to + * it and initialize from there, as e.g. the linux zr36057/60 driver does it. + * ========================================================================= + */ static const char zr36060_dqt[0x86] = { 0xff, 0xdb, //Marker: DQT 0x00, 0x84, //Length: 2*65+2 @@ -317,20 +260,8 @@ static const char zr36060_ta[8] = { 0, 1, 1, 0, 0, 0, 0, 0 }; //table idx's AC static const char zr36060_decimation_h[8] = { 2, 1, 1, 0, 0, 0, 0, 0 }; static const char zr36060_decimation_v[8] = { 1, 1, 1, 0, 0, 0, 0, 0 }; -/* ========================================================================= - Local helper functions: - - calculation and setup of parameter-dependent JPEG baseline segments - (needed for compression only) - ========================================================================= */ - -/* ------------------------------------------------------------------------- */ - -/* SOF (start of frame) segment depends on width, height and sampling ratio - of each color component */ - -static int -zr36060_set_sof (struct zr36060 *ptr) +/* SOF (start of frame) segment depends on width, height and sampling ratio of each color component */ +static int zr36060_set_sof(struct zr36060 *ptr) { char sof_data[34]; // max. size of register set int i; @@ -357,13 +288,8 @@ zr36060_set_sof (struct zr36060 *ptr) (3 * NO_OF_COMPONENTS) + 10, sof_data); } -/* ------------------------------------------------------------------------- */ - -/* SOS (start of scan) segment depends on the used scan components - of each color component */ - -static int -zr36060_set_sos (struct zr36060 *ptr) +/* SOS (start of scan) segment depends on the used scan components of each color component */ +static int zr36060_set_sos(struct zr36060 *ptr) { char sos_data[16]; // max. size of register set int i; @@ -387,12 +313,8 @@ zr36060_set_sos (struct zr36060 *ptr) sos_data); } -/* ------------------------------------------------------------------------- */ - /* DRI (define restart interval) */ - -static int -zr36060_set_dri (struct zr36060 *ptr) +static int zr36060_set_dri(struct zr36060 *ptr) { char dri_data[6]; // max. size of register set @@ -406,16 +328,10 @@ zr36060_set_dri (struct zr36060 *ptr) return zr36060_pushit(ptr, ZR060_DRI_IDX, 6, dri_data); } -/* ========================================================================= - Setup function: - - Setup compression/decompression of Zoran's JPEG processor - ( see also zoran 36060 manual ) - - ... sorry for the spaghetti code ... - ========================================================================= */ -static void -zr36060_init (struct zr36060 *ptr) +/* Setup compression/decompression of Zoran's JPEG processor ( see also zoran 36060 manual ) + * ... sorry for the spaghetti code ... + */ +static void zr36060_init(struct zr36060 *ptr) { int sum = 0; long bitcnt, tmp; @@ -430,9 +346,7 @@ zr36060_init (struct zr36060 *ptr) /* Compression with or without variable scale factor */ /*FIXME: What about ptr->bitrate_ctrl? */ - zr36060_write(ptr, ZR060_CMR, - ZR060_CMR_Comp | ZR060_CMR_Pass2 | - ZR060_CMR_BRB); + zr36060_write(ptr, ZR060_CMR, ZR060_CMR_Comp | ZR060_CMR_Pass2 | ZR060_CMR_BRB); /* Must be zero */ zr36060_write(ptr, ZR060_MBZ, 0x00); @@ -455,26 +369,19 @@ zr36060_init (struct zr36060 *ptr) sum += zr36060_set_sos(ptr); sum += zr36060_set_dri(ptr); - /* setup the fixed jpeg tables - maybe variable, though - - * (see table init section above) */ - sum += - zr36060_pushit(ptr, ZR060_DQT_IDX, sizeof(zr36060_dqt), - zr36060_dqt); - sum += - zr36060_pushit(ptr, ZR060_DHT_IDX, sizeof(zr36060_dht), - zr36060_dht); +/* setup the fixed jpeg tables - maybe variable, though - (see table init section above) */ + sum += zr36060_pushit(ptr, ZR060_DQT_IDX, sizeof(zr36060_dqt), zr36060_dqt); + sum += zr36060_pushit(ptr, ZR060_DHT_IDX, sizeof(zr36060_dht), zr36060_dht); zr36060_write(ptr, ZR060_APP_IDX, 0xff); zr36060_write(ptr, ZR060_APP_IDX + 1, 0xe0 + ptr->app.appn); zr36060_write(ptr, ZR060_APP_IDX + 2, 0x00); zr36060_write(ptr, ZR060_APP_IDX + 3, ptr->app.len + 2); - sum += zr36060_pushit(ptr, ZR060_APP_IDX + 4, 60, - ptr->app.data) + 4; + sum += zr36060_pushit(ptr, ZR060_APP_IDX + 4, 60, ptr->app.data) + 4; zr36060_write(ptr, ZR060_COM_IDX, 0xff); zr36060_write(ptr, ZR060_COM_IDX + 1, 0xfe); zr36060_write(ptr, ZR060_COM_IDX + 2, 0x00); zr36060_write(ptr, ZR060_COM_IDX + 3, ptr->com.len + 2); - sum += zr36060_pushit(ptr, ZR060_COM_IDX + 4, 60, - ptr->com.data) + 4; + sum += zr36060_pushit(ptr, ZR060_COM_IDX + 4, 60, ptr->com.data) + 4; /* setup misc. data for compression (target code sizes) */ @@ -536,10 +443,8 @@ zr36060_init (struct zr36060 *ptr) /* setup misc. data for expansion */ zr36060_write(ptr, ZR060_MER, 0); - /* setup the fixed jpeg tables - maybe variable, though - - * (see table init section above) */ - zr36060_pushit(ptr, ZR060_DHT_IDX, sizeof(zr36060_dht), - zr36060_dht); +/* setup the fixed jpeg tables - maybe variable, though - (see table init section above) */ + zr36060_pushit(ptr, ZR060_DHT_IDX, sizeof(zr36060_dht), zr36060_dht); /* Setup the Video Frontend */ //zr36060_write(ptr, ZR060_VCR, ZR060_VCR_FIExt); @@ -548,11 +453,9 @@ zr36060_init (struct zr36060 *ptr) } /* Load the tables */ - zr36060_write(ptr, ZR060_LOAD, - ZR060_LOAD_SyncRst | ZR060_LOAD_Load); + zr36060_write(ptr, ZR060_LOAD, ZR060_LOAD_SyncRst | ZR060_LOAD_Load); zr36060_wait_end(ptr); - dprintk(2, "%s: Status after table preload: 0x%02x\n", ptr->name, - ptr->status); + dprintk(2, "%s: Status after table preload: 0x%02x\n", ptr->name, ptr->status); if (ptr->status & ZR060_CFSR_Busy) { dprintk(1, KERN_ERR "%s: init aborted!\n", ptr->name); @@ -561,22 +464,21 @@ zr36060_init (struct zr36060 *ptr) } /* ========================================================================= - CODEC API FUNCTIONS - - this functions are accessed by the master via the API structure - ========================================================================= */ + * CODEC API FUNCTIONS + * this functions are accessed by the master via the API structure + * ========================================================================= + */ -/* set compression/expansion mode and launches codec - - this should be the last call from the master before starting processing */ -static int -zr36060_set_mode (struct videocodec *codec, - int mode) +/* set compressiion/expansion mode and launches codec - + * this should be the last call from the master before starting processing + */ +static int zr36060_set_mode(struct videocodec *codec, int mode) { - struct zr36060 *ptr = (struct zr36060 *) codec->data; + struct zr36060 *ptr = (struct zr36060 *)codec->data; dprintk(2, "%s: set_mode %d call\n", ptr->name, mode); - if ((mode != CODEC_DO_EXPANSION) && (mode != CODEC_DO_COMPRESSION)) + if (mode != CODEC_DO_EXPANSION && mode != CODEC_DO_COMPRESSION) return -EINVAL; ptr->mode = mode; @@ -586,13 +488,10 @@ zr36060_set_mode (struct videocodec *codec, } /* set picture size (norm is ignored as the codec doesn't know about it) */ -static int -zr36060_set_video (struct videocodec *codec, - struct tvnorm *norm, - struct vfe_settings *cap, - struct vfe_polarity *pol) +static int zr36060_set_video(struct videocodec *codec, struct tvnorm *norm, + struct vfe_settings *cap, struct vfe_polarity *pol) { - struct zr36060 *ptr = (struct zr36060 *) codec->data; + struct zr36060 *ptr = (struct zr36060 *)codec->data; u32 reg; int size; @@ -601,7 +500,8 @@ zr36060_set_video (struct videocodec *codec, /* if () return -EINVAL; * trust the master driver that it knows what it does - so - * we allow invalid startx/y and norm for now ... */ + * we allow invalid startx/y and norm for now ... + */ ptr->width = cap->width / (cap->decimation & 0xff); ptr->height = cap->height / (cap->decimation >> 8); @@ -611,7 +511,7 @@ zr36060_set_video (struct videocodec *codec, * meaning of their zr360x7 counterparts with the same names * N.b. for VSPol this is only true if FIVEdge = 0 (default, * left unchanged here - in accordance with datasheet). - */ + */ reg = (!pol->vsync_pol ? ZR060_VPR_VSPol : 0) | (!pol->hsync_pol ? ZR060_VPR_HSPol : 0) | (pol->field_pol ? ZR060_VPR_FIPol : 0) @@ -725,7 +625,8 @@ zr36060_set_video (struct videocodec *codec, * ratio 1:2. Setting low_bitrate (insmod option) sets * it to 1:4 (instead of 1:2, zr36060 max) as limit because the * buz can't handle more at decimation=1... Use low_bitrate if - * you have a Buz, unless you know what you're doing */ + * you have a Buz, unless you know what you're doing + */ size = size * cap->quality / (low_bitrate ? 400 : 200); /* Lower limit (arbitrary, 1 KB) */ if (size < 8192) @@ -738,7 +639,8 @@ zr36060_set_video (struct videocodec *codec, /* the MBCVR is the *maximum* block volume, according to the * JPEG ISO specs, this shouldn't be used, since that allows - * for the best encoding quality. So set it to it's max value */ + * for the best encoding quality. So set it to it's max value + */ reg = ptr->max_block_vol; zr36060_write(ptr, ZR060_MBCVR, reg); @@ -746,14 +648,10 @@ zr36060_set_video (struct videocodec *codec, } /* additional control functions */ -static int -zr36060_control (struct videocodec *codec, - int type, - int size, - void *data) +static int zr36060_control(struct videocodec *codec, int type, int size, void *data) { - struct zr36060 *ptr = (struct zr36060 *) codec->data; - int *ival = (int *) data; + struct zr36060 *ptr = (struct zr36060 *)codec->data; + int *ival = (int *)data; dprintk(2, "%s: control %d call with %d byte\n", ptr->name, type, size); @@ -862,21 +760,18 @@ zr36060_control (struct videocodec *codec, } /* ========================================================================= - Exit and unregister function: - - Deinitializes Zoran's JPEG processor - ========================================================================= */ - -static int -zr36060_unset (struct videocodec *codec) + * Exit and unregister function: + * Deinitializes Zoran's JPEG processor + * ========================================================================= + */ +static int zr36060_unset(struct videocodec *codec) { struct zr36060 *ptr = codec->data; if (ptr) { /* do wee need some codec deinit here, too ???? */ - dprintk(1, "%s: finished codec #%d\n", ptr->name, - ptr->num); + dprintk(1, "%s: finished codec #%d\n", ptr->name, ptr->num); kfree(ptr); codec->data = NULL; @@ -888,22 +783,18 @@ zr36060_unset (struct videocodec *codec) } /* ========================================================================= - Setup and registry function: - - Initializes Zoran's JPEG processor - - Also sets pixel size, average code size, mode (compr./decompr.) - (the given size is determined by the processor with the video interface) - ========================================================================= */ - -static int -zr36060_setup (struct videocodec *codec) + * Setup and registry function: + * Initializes Zoran's JPEG processor + * Also sets pixel size, average code size, mode (compr./decompr.) + * (the given size is determined by the processor with the video interface) + * ========================================================================= + */ +static int zr36060_setup(struct videocodec *codec) { struct zr36060 *ptr; int res; - dprintk(2, "zr36060: initializing MJPEG subsystem #%d.\n", - zr36060_codecs); + dprintk(2, "zr36060: initializing MJPEG subsystem #%d.\n", zr36060_codecs); if (zr36060_codecs == MAX_CODECS) { dprintk(1, @@ -911,14 +802,11 @@ zr36060_setup (struct videocodec *codec) return -ENOSPC; } //mem structure init - codec->data = ptr = kzalloc(sizeof(struct zr36060), GFP_KERNEL); - if (NULL == ptr) { - dprintk(1, KERN_ERR "zr36060: Can't get enough memory!\n"); + codec->data = ptr = kzalloc(sizeof(*ptr), GFP_KERNEL); + if (!ptr) return -ENOMEM; - } - snprintf(ptr->name, sizeof(ptr->name), "zr36060[%d]", - zr36060_codecs); + snprintf(ptr->name, sizeof(ptr->name), "zr36060[%d]", zr36060_codecs); ptr->num = zr36060_codecs++; ptr->codec = codec; @@ -932,8 +820,7 @@ zr36060_setup (struct videocodec *codec) memcpy(ptr->h_samp_ratio, zr36060_decimation_h, 8); memcpy(ptr->v_samp_ratio, zr36060_decimation_v, 8); - ptr->bitrate_ctrl = 0; /* 0 or 1 - fixed file size flag - * (what is the difference?) */ + ptr->bitrate_ctrl = 0; /* 0 or 1 - fixed file size flag (what is the difference?) */ ptr->mode = CODEC_DO_COMPRESSION; ptr->width = 384; ptr->height = 288; @@ -950,8 +837,7 @@ zr36060_setup (struct videocodec *codec) zr36060_init(ptr); - dprintk(1, KERN_INFO "%s: codec attached and running\n", - ptr->name); + dprintk(1, KERN_INFO "%s: codec attached and running\n", ptr->name); return 0; } @@ -972,20 +858,13 @@ static const struct videocodec zr36060_codec = { // others are not used }; -/* ========================================================================= - HOOK IN DRIVER AS KERNEL MODULE - ========================================================================= */ - -static int __init -zr36060_init_module (void) +static int __init zr36060_init_module(void) { - //dprintk(1, "zr36060 driver %s\n",ZR060_VERSION); zr36060_codecs = 0; return videocodec_register(&zr36060_codec); } -static void __exit -zr36060_cleanup_module (void) +static void __exit zr36060_cleanup_module(void) { if (zr36060_codecs) { dprintk(1, @@ -1001,6 +880,5 @@ module_init(zr36060_init_module); module_exit(zr36060_cleanup_module); MODULE_AUTHOR("Laurent Pinchart "); -MODULE_DESCRIPTION("Driver module for ZR36060 jpeg processors " - ZR060_VERSION); +MODULE_DESCRIPTION("Driver module for ZR36060 jpeg processors " ZR060_VERSION); MODULE_LICENSE("GPL"); diff --git a/drivers/staging/media/zoran/zr36060.h b/drivers/staging/media/zoran/zr36060.h index 82911757ba78..9289a9921c03 100644 --- a/drivers/staging/media/zoran/zr36060.h +++ b/drivers/staging/media/zoran/zr36060.h @@ -1,23 +1,8 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ /* * Zoran ZR36060 basic configuration functions - header file * * Copyright (C) 2002 Laurent Pinchart - * - * $Id: zr36060.h,v 1.1.1.1.2.3 2003/01/14 21:18:47 rbultje Exp $ - * - * ------------------------------------------------------------------------ - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * ------------------------------------------------------------------------ */ #ifndef ZR36060_H @@ -86,10 +71,10 @@ struct zr36060 { #define ZR060_ACT_MH 0x01b #define ZR060_ACT_ML 0x01c #define ZR060_ACT_LO 0x01d -#define ZR060_ACV_TRUN_HI 0x01e -#define ZR060_ACV_TRUN_MH 0x01f -#define ZR060_ACV_TRUN_ML 0x020 -#define ZR060_ACV_TRUN_LO 0x021 +#define ZR060_ACV_TURN_HI 0x01e +#define ZR060_ACV_TURN_MH 0x01f +#define ZR060_ACV_TURN_ML 0x020 +#define ZR060_ACV_TURN_LO 0x021 #define ZR060_IDR_DEV 0x022 #define ZR060_IDR_REV 0x023 #define ZR060_TCR_HI 0x024 @@ -139,78 +124,78 @@ struct zr36060 { /* ZR36060 LOAD register bits */ -#define ZR060_LOAD_Load (1 << 7) -#define ZR060_LOAD_SyncRst (1 << 0) +#define ZR060_LOAD_Load BIT(7) +#define ZR060_LOAD_SyncRst BIT(0) /* ZR36060 Code FIFO Status register bits */ -#define ZR060_CFSR_Busy (1 << 7) -#define ZR060_CFSR_CBusy (1 << 2) +#define ZR060_CFSR_Busy BIT(7) +#define ZR060_CFSR_CBusy BIT(2) #define ZR060_CFSR_CFIFO (3 << 0) /* ZR36060 Code Interface register */ -#define ZR060_CIR_Code16 (1 << 7) -#define ZR060_CIR_Endian (1 << 6) -#define ZR060_CIR_CFIS (1 << 2) -#define ZR060_CIR_CodeMstr (1 << 0) +#define ZR060_CIR_Code16 BIT(7) +#define ZR060_CIR_Endian BIT(6) +#define ZR060_CIR_CFIS BIT(2) +#define ZR060_CIR_CodeMstr BIT(0) /* ZR36060 Codec Mode register */ -#define ZR060_CMR_Comp (1 << 7) -#define ZR060_CMR_ATP (1 << 6) -#define ZR060_CMR_Pass2 (1 << 5) -#define ZR060_CMR_TLM (1 << 4) -#define ZR060_CMR_BRB (1 << 2) -#define ZR060_CMR_FSF (1 << 1) +#define ZR060_CMR_Comp BIT(7) +#define ZR060_CMR_ATP BIT(6) +#define ZR060_CMR_Pass2 BIT(5) +#define ZR060_CMR_TLM BIT(4) +#define ZR060_CMR_BRB BIT(2) +#define ZR060_CMR_FSF BIT(1) /* ZR36060 Markers Enable register */ -#define ZR060_MER_App (1 << 7) -#define ZR060_MER_Com (1 << 6) -#define ZR060_MER_DRI (1 << 5) -#define ZR060_MER_DQT (1 << 4) -#define ZR060_MER_DHT (1 << 3) +#define ZR060_MER_App BIT(7) +#define ZR060_MER_Com BIT(6) +#define ZR060_MER_DRI BIT(5) +#define ZR060_MER_DQT BIT(4) +#define ZR060_MER_DHT BIT(3) /* ZR36060 Interrupt Mask register */ -#define ZR060_IMR_EOAV (1 << 3) -#define ZR060_IMR_EOI (1 << 2) -#define ZR060_IMR_End (1 << 1) -#define ZR060_IMR_DataErr (1 << 0) +#define ZR060_IMR_EOAV BIT(3) +#define ZR060_IMR_EOI BIT(2) +#define ZR060_IMR_End BIT(1) +#define ZR060_IMR_DataErr BIT(0) /* ZR36060 Interrupt Status register */ #define ZR060_ISR_ProCnt (3 << 6) -#define ZR060_ISR_EOAV (1 << 3) -#define ZR060_ISR_EOI (1 << 2) -#define ZR060_ISR_End (1 << 1) -#define ZR060_ISR_DataErr (1 << 0) +#define ZR060_ISR_EOAV BIT(3) +#define ZR060_ISR_EOI BIT(2) +#define ZR060_ISR_End BIT(1) +#define ZR060_ISR_DataErr BIT(0) /* ZR36060 Video Control register */ -#define ZR060_VCR_Video8 (1 << 7) -#define ZR060_VCR_Range (1 << 6) -#define ZR060_VCR_FIDet (1 << 3) -#define ZR060_VCR_FIVedge (1 << 2) -#define ZR060_VCR_FIExt (1 << 1) -#define ZR060_VCR_SyncMstr (1 << 0) +#define ZR060_VCR_Video8 BIT(7) +#define ZR060_VCR_Range BIT(6) +#define ZR060_VCR_FIDet BIT(3) +#define ZR060_VCR_FIVedge BIT(2) +#define ZR060_VCR_FIExt BIT(1) +#define ZR060_VCR_SyncMstr BIT(0) /* ZR36060 Video Polarity register */ -#define ZR060_VPR_VCLKPol (1 << 7) -#define ZR060_VPR_PValPol (1 << 6) -#define ZR060_VPR_PoePol (1 << 5) -#define ZR060_VPR_SImgPol (1 << 4) -#define ZR060_VPR_BLPol (1 << 3) -#define ZR060_VPR_FIPol (1 << 2) -#define ZR060_VPR_HSPol (1 << 1) -#define ZR060_VPR_VSPol (1 << 0) +#define ZR060_VPR_VCLKPol BIT(7) +#define ZR060_VPR_PValPol BIT(6) +#define ZR060_VPR_PoePol BIT(5) +#define ZR060_VPR_SImgPol BIT(4) +#define ZR060_VPR_BLPol BIT(3) +#define ZR060_VPR_FIPol BIT(2) +#define ZR060_VPR_HSPol BIT(1) +#define ZR060_VPR_VSPol BIT(0) /* ZR36060 Scaling register */ -#define ZR060_SR_VScale (1 << 2) -#define ZR060_SR_HScale2 (1 << 0) +#define ZR060_SR_VScale BIT(2) +#define ZR060_SR_HScale2 BIT(0) #define ZR060_SR_HScale4 (2 << 0) #endif /*fndef ZR36060_H */ From patchwork Mon Sep 21 10:19:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789135 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 88E556CA for ; Mon, 21 Sep 2020 10:24:26 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5CE83218AC for ; Mon, 21 Sep 2020 10:24:26 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="Ss/NN1u/" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726810AbgIUKUr (ORCPT ); Mon, 21 Sep 2020 06:20:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59000 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726739AbgIUKUk (ORCPT ); Mon, 21 Sep 2020 06:20:40 -0400 Received: from mail-wr1-x444.google.com (mail-wr1-x444.google.com [IPv6:2a00:1450:4864:20::444]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B7972C061755 for ; Mon, 21 Sep 2020 03:20:39 -0700 (PDT) Received: by mail-wr1-x444.google.com with SMTP id z1so12137120wrt.3 for ; Mon, 21 Sep 2020 03:20:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=5uhe1308m43PG3J5ondyQyQs1QTAcFPlc6WH9QwCnnE=; b=Ss/NN1u/0g/clmuxuiU5Ltl01J4XDcDKnLMhrqklubZqRwix6RqLqpOgi58sG1Odm+ 3w5vrCzcX8bcTofTRpB8lbX+QQk4lmS1o+EnOVp8XlOoQaEEQvQtgsC5XTevym3QqYCU TmzGgqBic8FUjLWRh4NSuuQBLxn8xxA3Rkt4oRKKV9p4hsK7R8VUu0a90NjnjTNi+5q5 RfXCihA+X7UqEtNdaglfcu10zVK94wbfoS2rymBl8zklydPZtwu3dJ+GliWpIWtgzAkK mZ/o3y3hU/4Dgwx7DX5H+3YL46wp+nc3TstOtNXAQyh8nzikv8gxGtG49NRdgBch74gs ci/g== 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; bh=5uhe1308m43PG3J5ondyQyQs1QTAcFPlc6WH9QwCnnE=; b=YirHzCGt3YyFJk2zL7m211moW7BHyGqZj8c1GNDtLMEQiVYcB4iDtrkwWJoMzA1rHx 580tpkNBu/F2R4jwVNOd9cJG5jGa58eZo6v5EcgC2JnynKjG/lcxP3WJFP10fPRgJXLS PsNaA0Mpm0o1cIIG7aG4R0ML+6j/U76ov6UriaX0mCd/AcTagv/dzySHbYFksCPuQYgL nRDrrwxs9Q0wKlK7JnQBE+Bd+hEFpyOSnE2FHOxATTDsyVnXL0CeEcqo0lKpHb+b53sW DH5+2Kqk8Ni64vsPZUq08KUM4Tf2sH0lr44magxiymAXkcTwAjjGhQFrh5Oa+UUgowIB llSw== X-Gm-Message-State: AOAM5334IFdbPXf1Rxmr1l/lhb3udEA/YyBdQgmYD0xpqrxp9ga+8QWg NtAb9nBkfoWIj4WqiND3/oGoJjR+OjshJQ== X-Google-Smtp-Source: ABdhPJynsNZF2lfqM2QoZBJw1Kg3ObcuY8dl+u8cPTCKUkXOXYa2rSFAA+V/EUk71eoHNffB5ROLDQ== X-Received: by 2002:adf:e4cc:: with SMTP id v12mr50542076wrm.216.1600683638415; Mon, 21 Sep 2020 03:20:38 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.20.37 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:20:37 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 06/49] staging: media: zoran: unsplit lines Date: Mon, 21 Sep 2020 10:19:41 +0000 Message-Id: <1600683624-5863-7-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org This patch un-split some lines. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran_card.c | 27 ++++-------- drivers/staging/media/zoran/zoran_device.c | 49 +++++++--------------- drivers/staging/media/zoran/zoran_driver.c | 27 ++++-------- 3 files changed, 34 insertions(+), 69 deletions(-) diff --git a/drivers/staging/media/zoran/zoran_card.c b/drivers/staging/media/zoran/zoran_card.c index 960257cd43d6..fcf58d69de31 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -652,8 +652,7 @@ static int zoran_register_i2c(struct zoran *zr) { zr->i2c_algo = zoran_i2c_bit_data_template; zr->i2c_algo.data = zr; - strscpy(zr->i2c_adapter.name, ZR_DEVNAME(zr), - sizeof(zr->i2c_adapter.name)); + strscpy(zr->i2c_adapter.name, ZR_DEVNAME(zr), sizeof(zr->i2c_adapter.name)); i2c_set_adapdata(&zr->i2c_adapter, &zr->v4l2_dev); zr->i2c_adapter.algo_data = &zr->i2c_algo; zr->i2c_adapter.dev.parent = &zr->pci_dev->dev; @@ -666,8 +665,7 @@ static void zoran_unregister_i2c(struct zoran *zr) } /* Check a zoran_params struct for correctness, insert default params */ -int zoran_check_jpg_settings(struct zoran *zr, - struct zoran_jpg_settings *settings, int try) +int zoran_check_jpg_settings(struct zoran *zr, struct zoran_jpg_settings *settings, int try) { int err = 0, err0 = 0; @@ -866,13 +864,10 @@ void zoran_open_init_params(struct zoran *zr) zr->jpg_settings.odd_even = 0; zr->jpg_settings.jpg_comp.APPn = 0; zr->jpg_settings.jpg_comp.APP_len = 0; /* No APPn marker */ - memset(zr->jpg_settings.jpg_comp.APP_data, 0, - sizeof(zr->jpg_settings.jpg_comp.APP_data)); + memset(zr->jpg_settings.jpg_comp.APP_data, 0, sizeof(zr->jpg_settings.jpg_comp.APP_data)); zr->jpg_settings.jpg_comp.COM_len = 0; /* No COM marker */ - memset(zr->jpg_settings.jpg_comp.COM_data, 0, - sizeof(zr->jpg_settings.jpg_comp.COM_data)); - zr->jpg_settings.jpg_comp.jpeg_markers = - V4L2_JPEG_MARKER_DHT | V4L2_JPEG_MARKER_DQT; + memset(zr->jpg_settings.jpg_comp.COM_data, 0, sizeof(zr->jpg_settings.jpg_comp.COM_data)); + zr->jpg_settings.jpg_comp.jpeg_markers = V4L2_JPEG_MARKER_DHT | V4L2_JPEG_MARKER_DQT; i = zoran_check_jpg_settings(zr, &zr->jpg_settings, 0); if (i) dprintk(1, KERN_ERR "%s: %s internal error\n", @@ -1059,8 +1054,7 @@ void zoran_vdev_release(struct video_device *vdev) kfree(vdev); } -static struct videocodec_master *zoran_setup_videocodec(struct zoran *zr, - int type) +static struct videocodec_master *zoran_setup_videocodec(struct zoran *zr, int type) { struct videocodec_master *m = NULL; @@ -1214,8 +1208,7 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) * keep general card information, no settings or anything */ zr->card = zoran_cards[card_num]; - snprintf(ZR_DEVNAME(zr), sizeof(ZR_DEVNAME(zr)), "%s[%u]", - zr->card.name, zr->id); + snprintf(ZR_DEVNAME(zr), sizeof(ZR_DEVNAME(zr)), "%s[%u]", zr->card.name, zr->id); zr->zr36057_mem = pci_ioremap_bar(zr->pci_dev, 0); if (!zr->zr36057_mem) { @@ -1266,14 +1259,12 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) goto zr_free_irq; } - zr->decoder = v4l2_i2c_new_subdev(&zr->v4l2_dev, &zr->i2c_adapter, - zr->card.i2c_decoder, 0, + zr->decoder = v4l2_i2c_new_subdev(&zr->v4l2_dev, &zr->i2c_adapter, zr->card.i2c_decoder, 0, zr->card.addrs_decoder); if (zr->card.i2c_encoder) zr->encoder = v4l2_i2c_new_subdev(&zr->v4l2_dev, &zr->i2c_adapter, - zr->card.i2c_encoder, 0, - zr->card.addrs_encoder); + zr->card.i2c_encoder, 0, zr->card.addrs_encoder); dprintk(2, KERN_INFO "%s: Initializing videocodec bus...\n", ZR_DEVNAME(zr)); diff --git a/drivers/staging/media/zoran/zoran_device.c b/drivers/staging/media/zoran/zoran_device.c index cbacfa4ea2d0..783d7bce6c80 100644 --- a/drivers/staging/media/zoran/zoran_device.c +++ b/drivers/staging/media/zoran/zoran_device.c @@ -679,8 +679,7 @@ static void zr36057_set_jpg(struct zoran *zr, enum zoran_codec_mode mode) /* vertical */ btor(ZR36057_VFEVCR_VSPol, ZR36057_VFEVCR); - reg = (6 << ZR36057_VSP_VsyncSize) | - (tvn->Ht << ZR36057_VSP_FrmTot); + reg = (6 << ZR36057_VSP_VsyncSize) | (tvn->Ht << ZR36057_VSP_FrmTot); btwrite(reg, ZR36057_VSP); reg = ((zr->jpg_settings.img_y + tvn->VStart) << ZR36057_FVAP_NAY) | (zr->jpg_settings.img_height << ZR36057_FVAP_PAY); @@ -691,11 +690,9 @@ static void zr36057_set_jpg(struct zoran *zr, enum zoran_codec_mode mode) btor(ZR36057_VFEHCR_HSPol, ZR36057_VFEHCR); else btand(~ZR36057_VFEHCR_HSPol, ZR36057_VFEHCR); - reg = ((tvn->HSyncStart) << ZR36057_HSP_HsyncStart) | - (tvn->Wt << ZR36057_HSP_LineTot); + reg = ((tvn->HSyncStart) << ZR36057_HSP_HsyncStart) | (tvn->Wt << ZR36057_HSP_LineTot); btwrite(reg, ZR36057_HSP); - reg = ((zr->jpg_settings.img_x + - tvn->HStart + 4) << ZR36057_FHAP_NAX) | + reg = ((zr->jpg_settings.img_x + tvn->HStart + 4) << ZR36057_FHAP_NAX) | (zr->jpg_settings.img_width << ZR36057_FHAP_PAX); btwrite(reg, ZR36057_FHAP); @@ -887,8 +884,7 @@ void zr36057_enable_jpg(struct zoran *zr, enum zoran_codec_mode mode) cap.y = zr->jpg_settings.img_y; cap.width = zr->jpg_settings.img_width; cap.height = zr->jpg_settings.img_height; - cap.decimation = - zr->jpg_settings.HorDcm | (zr->jpg_settings.VerDcm << 8); + cap.decimation = zr->jpg_settings.HorDcm | (zr->jpg_settings.VerDcm << 8); cap.quality = zr->jpg_settings.jpg_comp.quality; switch (mode) { @@ -919,18 +915,14 @@ void zr36057_enable_jpg(struct zoran *zr, enum zoran_codec_mode mode) sizeof(struct jpeg_com_marker), &com); /* Setup the JPEG codec */ - zr->codec->control(zr->codec, CODEC_S_JPEG_TDS_BYTE, - sizeof(int), &field_size); - zr->codec->set_video(zr->codec, zr->timing, &cap, - &zr->card.vfe_pol); + zr->codec->control(zr->codec, CODEC_S_JPEG_TDS_BYTE, sizeof(int), &field_size); + zr->codec->set_video(zr->codec, zr->timing, &cap, &zr->card.vfe_pol); zr->codec->set_mode(zr->codec, CODEC_DO_COMPRESSION); /* Setup the VFE */ if (zr->vfe) { - zr->vfe->control(zr->vfe, CODEC_S_JPEG_TDS_BYTE, - sizeof(int), &field_size); - zr->vfe->set_video(zr->vfe, zr->timing, &cap, - &zr->card.vfe_pol); + zr->vfe->control(zr->vfe, CODEC_S_JPEG_TDS_BYTE, sizeof(int), &field_size); + zr->vfe->set_video(zr->vfe, zr->timing, &cap, &zr->card.vfe_pol); zr->vfe->set_mode(zr->vfe, CODEC_DO_COMPRESSION); } @@ -955,13 +947,11 @@ void zr36057_enable_jpg(struct zoran *zr, enum zoran_codec_mode mode) jpeg_codec_sleep(zr, 0); /* Setup the VFE */ if (zr->vfe) { - zr->vfe->set_video(zr->vfe, zr->timing, &cap, - &zr->card.vfe_pol); + zr->vfe->set_video(zr->vfe, zr->timing, &cap, &zr->card.vfe_pol); zr->vfe->set_mode(zr->vfe, CODEC_DO_EXPANSION); } /* Setup the JPEG codec */ - zr->codec->set_video(zr->codec, zr->timing, &cap, - &zr->card.vfe_pol); + zr->codec->set_video(zr->codec, zr->timing, &cap, &zr->card.vfe_pol); zr->codec->set_mode(zr->codec, CODEC_DO_EXPANSION); init_jpeg_queue(zr); @@ -975,10 +965,8 @@ void zr36057_enable_jpg(struct zoran *zr, enum zoran_codec_mode mode) case BUZ_MODE_IDLE: default: /* shut down processing */ - btand(~(zr->card.jpeg_int | ZR36057_ICR_JPEGRepIRQ), - ZR36057_ICR); - btwrite(zr->card.jpeg_int | ZR36057_ICR_JPEGRepIRQ, - ZR36057_ISR); + btand(~(zr->card.jpeg_int | ZR36057_ICR_JPEGRepIRQ), ZR36057_ICR); + btwrite(zr->card.jpeg_int | ZR36057_ICR_JPEGRepIRQ, ZR36057_ISR); btand(~ZR36057_JMC_Go_en, ZR36057_JMC); // \Go_en msleep(50); @@ -1008,25 +996,21 @@ void zoran_feed_stat_com(struct zoran *zr) int frame, i, max_stat_com; - max_stat_com = - (zr->jpg_settings.TmpDcm == - 1) ? BUZ_NUM_STAT_COM : (BUZ_NUM_STAT_COM >> 1); + max_stat_com = (zr->jpg_settings.TmpDcm == 1) ? BUZ_NUM_STAT_COM : (BUZ_NUM_STAT_COM >> 1); while ((zr->jpg_dma_head - zr->jpg_dma_tail) < max_stat_com && zr->jpg_dma_head < zr->jpg_que_head) { frame = zr->jpg_pend[zr->jpg_dma_head & BUZ_MASK_FRAME]; if (zr->jpg_settings.TmpDcm == 1) { /* fill 1 stat_com entry */ - i = (zr->jpg_dma_head - - zr->jpg_err_shift) & BUZ_MASK_STAT_COM; + i = (zr->jpg_dma_head - zr->jpg_err_shift) & BUZ_MASK_STAT_COM; if (!(zr->stat_com[i] & cpu_to_le32(1))) break; zr->stat_com[i] = cpu_to_le32(zr->jpg_buffers.buffer[frame].jpg.frag_tab_bus); } else { /* fill 2 stat_com entries */ - i = ((zr->jpg_dma_head - - zr->jpg_err_shift) & 1) * 2; + i = ((zr->jpg_dma_head - zr->jpg_err_shift) & 1) * 2; if (!(zr->stat_com[i] & cpu_to_le32(1))) break; zr->stat_com[i] = @@ -1453,8 +1437,7 @@ void zoran_init_hardware(struct zoran *zr) decoder_call(zr, core, init, 0); decoder_call(zr, video, s_std, zr->norm); - decoder_call(zr, video, s_routing, - zr->card.input[zr->input].muxsel, 0, 0); + decoder_call(zr, video, s_routing, zr->card.input[zr->input].muxsel, 0, 0); encoder_call(zr, core, init, 0); encoder_call(zr, video, s_std_output, zr->norm); diff --git a/drivers/staging/media/zoran/zoran_driver.c b/drivers/staging/media/zoran/zoran_driver.c index fd4795468069..cd8198183e6a 100644 --- a/drivers/staging/media/zoran/zoran_driver.c +++ b/drivers/staging/media/zoran/zoran_driver.c @@ -1501,8 +1501,7 @@ static int zoran_enum_fmt(struct zoran *zr, struct v4l2_fmtdesc *fmt, int flag) for (num = i = 0; i < NUM_FORMATS; i++) { if (zoran_formats[i].flags & flag && num++ == fmt->index) { - strscpy(fmt->description, zoran_formats[i].name, - sizeof(fmt->description)); + strscpy(fmt->description, zoran_formats[i].name, sizeof(fmt->description)); /* fmt struct pre-zeroed, so adding '\0' not needed */ fmt->pixelformat = zoran_formats[i].fourcc; if (zoran_formats[i].flags & ZORAN_FORMAT_COMPRESSED) @@ -1540,8 +1539,7 @@ static int zoran_enum_fmt_vid_overlay(struct file *file, void *__fh, return zoran_enum_fmt(zr, f, ZORAN_FORMAT_OVERLAY); } -static int zoran_g_fmt_vid_out(struct file *file, void *__fh, - struct v4l2_format *fmt) +static int zoran_g_fmt_vid_out(struct file *file, void *__fh, struct v4l2_format *fmt) { struct zoran_fh *fh = __fh; @@ -1562,8 +1560,7 @@ static int zoran_g_fmt_vid_out(struct file *file, void *__fh, return 0; } -static int zoran_g_fmt_vid_cap(struct file *file, void *__fh, - struct v4l2_format *fmt) +static int zoran_g_fmt_vid_cap(struct file *file, void *__fh, struct v4l2_format *fmt) { struct zoran_fh *fh = __fh; struct zoran *zr = fh->zr; @@ -1728,8 +1725,7 @@ static int zoran_s_fmt_vid_overlay(struct file *file, void *__fh, return res; } -static int zoran_s_fmt_vid_out(struct file *file, void *__fh, - struct v4l2_format *fmt) +static int zoran_s_fmt_vid_out(struct file *file, void *__fh, struct v4l2_format *fmt) { struct zoran_fh *fh = __fh; struct zoran *zr = fh->zr; @@ -1795,8 +1791,7 @@ static int zoran_s_fmt_vid_out(struct file *file, void *__fh, /* tell the user what we actually did */ fmt->fmt.pix.width = settings.img_width / settings.HorDcm; - fmt->fmt.pix.height = settings.img_height * 2 / - (settings.TmpDcm * settings.VerDcm); + fmt->fmt.pix.height = settings.img_height * 2 / (settings.TmpDcm * settings.VerDcm); if (settings.TmpDcm == 1) fmt->fmt.pix.field = (fh->jpg_settings.odd_even ? V4L2_FIELD_SEQ_TB : V4L2_FIELD_SEQ_BT); @@ -1809,8 +1804,7 @@ static int zoran_s_fmt_vid_out(struct file *file, void *__fh, return res; } -static int zoran_s_fmt_vid_cap(struct file *file, void *__fh, - struct v4l2_format *fmt) +static int zoran_s_fmt_vid_cap(struct file *file, void *__fh, struct v4l2_format *fmt) { struct zoran_fh *fh = __fh; struct zoran *zr = fh->zr; @@ -1843,8 +1837,7 @@ static int zoran_s_fmt_vid_cap(struct file *file, void *__fh, map_mode_raw(fh); - res = zoran_v4l_set_format(fh, fmt->fmt.pix.width, fmt->fmt.pix.height, - &zoran_formats[i]); + res = zoran_v4l_set_format(fh, fmt->fmt.pix.width, fmt->fmt.pix.height, &zoran_formats[i]); if (res) return res; @@ -2259,8 +2252,7 @@ static int zoran_s_std(struct file *file, void *__fh, v4l2_std_id std) return res; } -static int zoran_enum_input(struct file *file, void *__fh, - struct v4l2_input *inp) +static int zoran_enum_input(struct file *file, void *__fh, struct v4l2_input *inp) { struct zoran_fh *fh = __fh; struct zoran *zr = fh->zr; @@ -2416,8 +2408,7 @@ static int zoran_s_selection(struct file *file, void *__fh, struct v4l2_selectio return res; } -static int zoran_g_jpegcomp(struct file *file, void *__fh, - struct v4l2_jpegcompression *params) +static int zoran_g_jpegcomp(struct file *file, void *__fh, struct v4l2_jpegcompression *params) { struct zoran_fh *fh = __fh; From patchwork Mon Sep 21 10:19:42 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789141 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D68F3112E for ; Mon, 21 Sep 2020 10:24:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B9C4B20EDD for ; Mon, 21 Sep 2020 10:24:38 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="EwZ63cO+" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727040AbgIUKYh (ORCPT ); Mon, 21 Sep 2020 06:24:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59012 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726787AbgIUKUl (ORCPT ); Mon, 21 Sep 2020 06:20:41 -0400 Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com [IPv6:2a00:1450:4864:20::441]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 84D88C061755 for ; Mon, 21 Sep 2020 03:20:40 -0700 (PDT) Received: by mail-wr1-x441.google.com with SMTP id c18so12123212wrm.9 for ; Mon, 21 Sep 2020 03:20:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=yT+7g7cZmwgOzhVIcE+1qXxZwSKLTSSFChevbMCeH+o=; b=EwZ63cO+tlKq2AG2nWrD4d2XhWegdUe1jNXNvFBAHdNz9ilGkOuIxnjK/BXVeAztet sMdaHyNIncAkyoVjVduxgUryKkGRtPpK8qeDio3OCo3s6f2+N2h9ZrPSqPURG0CHPbPF xTaCDKucrtN/tEy9toRvNYHhRsriAYOexDMdaidTJMK4cIis90vX6y0DYFhFJT4xeRBq t97KIVx6XPo79l8Crf+CMlOCgYbbaMoha0RzONlzpAmLmupgrfhJoBiKH9+C+879JCS+ SBWX+qDB81ND2VSRf20KfJZyWzjp/ebLz0TSzJSK8LPNkq3a4gGl4EpfolRezWGKTY4J j/qA== 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; bh=yT+7g7cZmwgOzhVIcE+1qXxZwSKLTSSFChevbMCeH+o=; b=WxWxZjcIcof8e92uKbG5bLPlCAR+bJbKg7h0zR3WX4LUKPq8ts7w7o9gavqndCG7bg XpWn8MFU4mUzLvUshyg8tBxElMsmwC8Juo0hOCV4bWUVy+sYmy08sgH3bTCXYTxdA5Zj M1P8+8rvLGztN3IH1HDcV94P0AkRPF+7sJ70I7ESW0q3c+81UDQkbwAipOuPsRYkIvAx 4LinUMH800PvAyzh0dIQxr2INq4/hhjvMyoOP1AWqbOan2wo+sT4688tqilW9Pv15IzF NXQGvoCxZUZf1m6HyEsOfYOsZIQ4drmWC9c1dy/pF3pRr7Yh6lJXdS5smUEEnLJlEnms +HuA== X-Gm-Message-State: AOAM532XW0uB2CXdZnB95TBwI0prPffyEcWSKx29dZtfnvD7VXNAiQct bC3jxgovdqaIVQwfVBc/LCITF8Qre0PYAA== X-Google-Smtp-Source: ABdhPJxdpQHqO5++kMBiuLNEhD+xHOgH30GP/PD9/JEzGy2S+yIbg+UTXWS7yONq0phNqnWGNX5pFw== X-Received: by 2002:a5d:568d:: with SMTP id f13mr50608020wrv.303.1600683639289; Mon, 21 Sep 2020 03:20:39 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.20.38 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:20:38 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 07/49] staging: media: zoran: do not forward declare zr36057_init_vfe Date: Mon, 21 Sep 2020 10:19:42 +0000 Message-Id: <1600683624-5863-8-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org move function for avoiding forward declaration Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran_device.c | 44 +++++++++++----------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/drivers/staging/media/zoran/zoran_device.c b/drivers/staging/media/zoran/zoran_device.c index 783d7bce6c80..0985b16d5a55 100644 --- a/drivers/staging/media/zoran/zoran_device.c +++ b/drivers/staging/media/zoran/zoran_device.c @@ -55,7 +55,27 @@ static bool lml33dpath; /* default = 0 module_param(lml33dpath, bool, 0644); MODULE_PARM_DESC(lml33dpath, "Use digital path capture mode (on LML33 cards)"); -static void zr36057_init_vfe(struct zoran *zr); +/* + * initialize video front end + */ +static void zr36057_init_vfe(struct zoran *zr) +{ + u32 reg; + + reg = btread(ZR36057_VFESPFR); + reg |= ZR36057_VFESPFR_LittleEndian; + reg &= ~ZR36057_VFESPFR_VCLKPol; + reg |= ZR36057_VFESPFR_ExtFl; + reg |= ZR36057_VFESPFR_TopField; + btwrite(reg, ZR36057_VFESPFR); + reg = btread(ZR36057_VDCR); + if (pci_pci_problems & PCIPCI_TRITON) + // || zr->revision < 1) // Revision 1 has also Triton support + reg &= ~ZR36057_VDCR_Triton; + else + reg |= ZR36057_VDCR_Triton; + btwrite(reg, ZR36057_VDCR); +} /* * General Purpose I/O and Guest bus access @@ -1474,25 +1494,3 @@ void zr36057_restart(struct zoran *zr) btwrite((0x81 << 24) | 0x8888, ZR36057_GPPGCR1); } -/* - * initialize video front end - */ - -static void zr36057_init_vfe(struct zoran *zr) -{ - u32 reg; - - reg = btread(ZR36057_VFESPFR); - reg |= ZR36057_VFESPFR_LittleEndian; - reg &= ~ZR36057_VFESPFR_VCLKPol; - reg |= ZR36057_VFESPFR_ExtFl; - reg |= ZR36057_VFESPFR_TopField; - btwrite(reg, ZR36057_VFESPFR); - reg = btread(ZR36057_VDCR); - if (pci_pci_problems & PCIPCI_TRITON) - // || zr->revision < 1) // Revision 1 has also Triton support - reg &= ~ZR36057_VDCR_Triton; - else - reg |= ZR36057_VDCR_Triton; - btwrite(reg, ZR36057_VDCR); -} From patchwork Mon Sep 21 10:19:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789137 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id DFA6359D for ; Mon, 21 Sep 2020 10:24:28 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id ACF8E218AC for ; Mon, 21 Sep 2020 10:24:28 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="RzKgSVZT" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726543AbgIUKY1 (ORCPT ); Mon, 21 Sep 2020 06:24:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59016 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726550AbgIUKUm (ORCPT ); Mon, 21 Sep 2020 06:20:42 -0400 Received: from mail-wm1-x342.google.com (mail-wm1-x342.google.com [IPv6:2a00:1450:4864:20::342]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CF95AC0613D2 for ; Mon, 21 Sep 2020 03:20:41 -0700 (PDT) Received: by mail-wm1-x342.google.com with SMTP id q9so11566147wmj.2 for ; Mon, 21 Sep 2020 03:20:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=WRTqzJJg+xeFyFfTXb9h4oMkZlErrKKNyHHvPxytCac=; b=RzKgSVZTveGcrrBbh8a6VsUhN0pP15oopH+ApSNB4qnhDAHzNnhZKNFvaMQntZGQoS o1c3O0Rr8gtG/Vh3IXzjwF/LnR6UyHUdPFRTrdDH4X7cyIFAu4ACBaUaiU6NJg7UC4w4 Ofc5dMYaIwXsk9HkT0K7fCGn3I/RGbH46THQ1IG1VhxDnaDLY4HBqqV12mh/+03+kVLY /XiV4ZL8Iq9GR7Xe3iuiLmZekW9Fqcw0tZuVV5gWhRC0RyIX+9zBVV/VZh4X/RJzzMf4 V26VOvHITXLuQ3dOjC1ziJjeHGnPfAZLjnLLW0wrlIY/Btp8GIhMGB9eYwqR8jOPq8BE kD1A== 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; bh=WRTqzJJg+xeFyFfTXb9h4oMkZlErrKKNyHHvPxytCac=; b=WDcQMn/LOKMtYejjV2PdJf+SSkV7kqwQ+ri1nvY+QnUOETwJzx7KCYS/Mwxnn5Kz2n /nv/8ymbFeQNbB8TVbmB/s9d0Zydcf/g6TR/EjJzxorXkZ8wksen4Q54N4WSxphhkteb UTErmcOfqDNk2dLGtBCuy1Sv50yzVi1twG3c8XpTUQ57EntLVpuUX9rE/KtGC7jltKWq y9s8klSkDzhb0MJox6gWDMy3mZ1n5u7rNVhQQjWX1u7qdRAa6ilElzFB8ocHrg1wIIxZ TT3jQZ3KoJ9qWAF3tCz/PJ/+wwmpJw8MfkPs9kf0Oc6Rk0I3bRF1lKwvA5qYcuW9k+co OCEg== X-Gm-Message-State: AOAM531FqbtccKRYw4LP8Gyc0P89Apd4oKs0FR26+9bw4QFlhXz09eJC xHO/WtyfQHdWHdgPODCkMQ+/yA== X-Google-Smtp-Source: ABdhPJwCJZI3UAhS+JWbjghgWyntvCGr+4ArmwyqnRNGZMHH7YOzuyNrfFOi0+FOJEceyEH/QNID/w== X-Received: by 2002:a7b:ca4a:: with SMTP id m10mr23069041wml.11.1600683640193; Mon, 21 Sep 2020 03:20:40 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.20.39 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:20:39 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 08/49] staging: media: zoran: convert all error dprintk to pci_err/pr_err Date: Mon, 21 Sep 2020 10:19:43 +0000 Message-Id: <1600683624-5863-9-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org This patch converts all errors dprintk to pci_err/pr_err. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/videocodec.c | 39 +-- drivers/staging/media/zoran/zoran_card.c | 96 ++---- drivers/staging/media/zoran/zoran_device.c | 28 +- drivers/staging/media/zoran/zoran_driver.c | 334 +++++---------------- drivers/staging/media/zoran/zoran_procfs.c | 4 +- drivers/staging/media/zoran/zr36016.c | 39 +-- drivers/staging/media/zoran/zr36050.c | 10 +- drivers/staging/media/zoran/zr36060.c | 24 +- 8 files changed, 145 insertions(+), 429 deletions(-) diff --git a/drivers/staging/media/zoran/videocodec.c b/drivers/staging/media/zoran/videocodec.c index 3a2f0c450a44..28031d3fd757 100644 --- a/drivers/staging/media/zoran/videocodec.c +++ b/drivers/staging/media/zoran/videocodec.c @@ -62,7 +62,7 @@ struct videocodec *videocodec_attach(struct videocodec_master *master) int res; if (!master) { - dprintk(1, KERN_ERR "videocodec_attach: no data\n"); + pr_err("%s: no data\n", __func__); return NULL; } @@ -70,9 +70,7 @@ struct videocodec *videocodec_attach(struct videocodec_master *master) master->name, master->flags, master->magic); if (!h) { - dprintk(1, - KERN_ERR - "videocodec_attach: no device available\n"); + pr_err("%s: no device available\n", __func__); return NULL; } @@ -120,7 +118,7 @@ struct videocodec *videocodec_attach(struct videocodec_master *master) h = h->next; } - dprintk(1, KERN_ERR "videocodec_attach: no codec found!\n"); + pr_err("%s: no codec found!\n", __func__); return NULL; out_module_put: @@ -138,7 +136,7 @@ int videocodec_detach(struct videocodec *codec) int res; if (!codec) { - dprintk(1, KERN_ERR "videocodec_detach: no data\n"); + pr_err("%s: no data\n", __func__); return -EINVAL; } @@ -146,8 +144,7 @@ int videocodec_detach(struct videocodec *codec) codec->name, codec->type, codec->flags, codec->magic); if (!h) { - dprintk(1, - KERN_ERR "videocodec_detach: no device left...\n"); + pr_err("%s: no device left...\n", __func__); return -ENXIO; } @@ -161,10 +158,7 @@ int videocodec_detach(struct videocodec *codec) dprintk(3, "%s: '%s'\n", __func__, a->codec->name); a->codec->master_data = NULL; } else { - dprintk(1, - KERN_ERR - "videocodec_detach: '%s'\n", - a->codec->name); + pr_err("%s: '%s'\n", __func__, a->codec->name); a->codec->master_data = NULL; } if (!prev) { @@ -186,7 +180,7 @@ int videocodec_detach(struct videocodec *codec) h = h->next; } - dprintk(1, KERN_ERR "videocodec_detach: given codec not found!\n"); + pr_err("%s: given codec not found!\n", __func__); return -EINVAL; } EXPORT_SYMBOL(videocodec_detach); @@ -196,7 +190,7 @@ int videocodec_register(const struct videocodec *codec) struct codec_list *ptr, *h = codeclist_top; if (!codec) { - dprintk(1, KERN_ERR "videocodec_register: no data!\n"); + pr_err("%s: no data!\n", __func__); return -EINVAL; } @@ -229,7 +223,7 @@ int videocodec_unregister(const struct videocodec *codec) struct codec_list *prev = NULL, *h = codeclist_top; if (!codec) { - dprintk(1, KERN_ERR "videocodec_unregister: no data!\n"); + pr_err("%s: no data!\n", __func__); return -EINVAL; } @@ -238,19 +232,14 @@ int videocodec_unregister(const struct videocodec *codec) codec->name, codec->type, codec->flags, codec->magic); if (!h) { - dprintk(1, - KERN_ERR - "videocodec_unregister: no device left...\n"); + pr_err("%s: no device left...\n", __func__); return -ENXIO; } while (h) { if (codec == h->codec) { if (h->attached) { - dprintk(1, - KERN_ERR - "videocodec: '%s' is used\n", - h->codec->name); + pr_err("videocodec: '%s' is used\n", h->codec->name); return -EBUSY; } dprintk(3, "videocodec: unregister '%s' is ok.\n", @@ -271,9 +260,7 @@ int videocodec_unregister(const struct videocodec *codec) h = h->next; } - dprintk(1, - KERN_ERR - "videocodec_unregister: given codec not found!\n"); + pr_err("%s: given codec not found!\n", __func__); return -EINVAL; } EXPORT_SYMBOL(videocodec_unregister); @@ -322,7 +309,7 @@ static int __init videocodec_init(void) #ifdef CONFIG_PROC_FS videocodec_proc_entry = proc_create_single("videocodecs", 0, NULL, proc_videocodecs_show); if (!videocodec_proc_entry) - dprintk(1, KERN_ERR "videocodec: can't init procfs.\n"); + pr_err("videocodec: can't init procfs.\n"); #endif return 0; } diff --git a/drivers/staging/media/zoran/zoran_card.c b/drivers/staging/media/zoran/zoran_card.c index fcf58d69de31..006f209c40ea 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -785,18 +785,13 @@ int zoran_check_jpg_settings(struct zoran *zr, struct zoran_jpg_settings *settin } if (!try && err0) { - dprintk(1, - KERN_ERR - "%s: %s - error in params for decimation = 0\n", - ZR_DEVNAME(zr), __func__); + pci_err(zr->pci_dev, "%s - error in params for decimation = 0\n", __func__); err++; } break; default: - dprintk(1, - KERN_ERR - "%s: %s - decimation = %d, must be 0, 1, 2 or 4\n", - ZR_DEVNAME(zr), __func__, settings->decimation); + pci_err(zr->pci_dev, "%s - decimation = %d, must be 0, 1, 2 or 4\n", + __func__, settings->decimation); err++; break; } @@ -870,8 +865,7 @@ void zoran_open_init_params(struct zoran *zr) zr->jpg_settings.jpg_comp.jpeg_markers = V4L2_JPEG_MARKER_DHT | V4L2_JPEG_MARKER_DQT; i = zoran_check_jpg_settings(zr, &zr->jpg_settings, 0); if (i) - dprintk(1, KERN_ERR "%s: %s internal error\n", - ZR_DEVNAME(zr), __func__); + pci_err(zr->pci_dev, "%s internal error\n", __func__); clear_interrupt_counters(zr); zr->testing = 0; @@ -963,10 +957,6 @@ static int zr36057_init(struct zoran *zr) zr->stat_com = kzalloc(BUZ_NUM_STAT_COM * 4, GFP_KERNEL); zr->video_dev = video_device_alloc(); if (!zr->stat_com || !zr->video_dev) { - dprintk(1, - KERN_ERR - "%s: %s - kmalloc (STAT_COM) failed\n", - ZR_DEVNAME(zr), __func__); err = -ENOMEM; goto exit_free; } @@ -1126,8 +1116,7 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) nr = zoran_num++; if (nr >= BUZ_MAX) { - dprintk(1, KERN_ERR "%s: driver limited to %d card(s) maximum\n", - ZORAN_NAME, BUZ_MAX); + pci_err(pdev, "driver limited to %d card(s) maximum\n", BUZ_MAX); return -ENOENT; } @@ -1166,23 +1155,14 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) /* Use auto-detected card type? */ if (card[nr] == -1) { if (zr->revision < 2) { - dprintk(1, - KERN_ERR - "%s: No card type specified, please use the card=X module parameter\n", - ZR_DEVNAME(zr)); - dprintk(1, - KERN_ERR - "%s: It is not possible to auto-detect ZR36057 based cards\n", - ZR_DEVNAME(zr)); + pci_err(pdev, "No card type specified, please use the card=X module parameter\n"); + pci_err(pdev, "It is not possible to auto-detect ZR36057 based cards\n"); goto zr_unreg; } card_num = ent->driver_data; if (card_num >= NUM_CARDS) { - dprintk(1, - KERN_ERR - "%s: Unknown card, try specifying card=X module parameter\n", - ZR_DEVNAME(zr)); + pci_err(pdev, "Unknown card, try specifying card=X module parameter\n"); goto zr_unreg; } dprintk(3, @@ -1192,10 +1172,8 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) } else { card_num = card[nr]; if (card_num >= NUM_CARDS || card_num < 0) { - dprintk(1, - KERN_ERR - "%s: User specified card type %d out of range (0 .. %d)\n", - ZR_DEVNAME(zr), card_num, NUM_CARDS - 1); + pci_err(pdev, "User specified card type %d out of range (0 .. %d)\n", + card_num, NUM_CARDS - 1); goto zr_unreg; } } @@ -1212,8 +1190,7 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) zr->zr36057_mem = pci_ioremap_bar(zr->pci_dev, 0); if (!zr->zr36057_mem) { - dprintk(1, KERN_ERR "%s: %s() - ioremap failed\n", - ZR_DEVNAME(zr), __func__); + pci_err(pdev, "%s() - ioremap failed\n", __func__); goto zr_unreg; } @@ -1221,20 +1198,12 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) IRQF_SHARED, ZR_DEVNAME(zr), zr); if (result < 0) { if (result == -EINVAL) { - dprintk(1, - KERN_ERR - "%s: %s - bad irq number or handler\n", - ZR_DEVNAME(zr), __func__); + pci_err(pdev, "%s - bad IRQ number or handler\n", __func__); } else if (result == -EBUSY) { - dprintk(1, - KERN_ERR - "%s: %s - IRQ %d busy, change your PnP config in BIOS\n", - ZR_DEVNAME(zr), __func__, zr->pci_dev->irq); + pci_err(pdev, "%s - IRQ %d busy, change your PnP config in BIOS\n", + __func__, zr->pci_dev->irq); } else { - dprintk(1, - KERN_ERR - "%s: %s - can't assign irq, error code %d\n", - ZR_DEVNAME(zr), __func__, result); + pci_err(pdev, "%s - cannot assign IRQ, error code %d\n", __func__, result); } goto zr_unmap; } @@ -1254,8 +1223,7 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) dprintk(2, KERN_INFO "%s: Initializing i2c bus...\n", ZR_DEVNAME(zr)); if (zoran_register_i2c(zr) < 0) { - dprintk(1, KERN_ERR "%s: %s - can't initialize i2c bus\n", - ZR_DEVNAME(zr), __func__); + pci_err(pdev, "%s - can't initialize i2c bus\n", __func__); goto zr_free_irq; } @@ -1272,24 +1240,16 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) codec_name = codecid_to_modulename(zr->card.video_codec); if (codec_name) { result = request_module(codec_name); - if (result) { - dprintk(1, - KERN_ERR - "%s: failed to load modules %s: %d\n", - ZR_DEVNAME(zr), codec_name, result); - } + if (result) + pci_err(pdev, "failed to load modules %s: %d\n", codec_name, result); } } if (zr->card.video_vfe) { vfe_name = codecid_to_modulename(zr->card.video_vfe); if (vfe_name) { result = request_module(vfe_name); - if (result < 0) { - dprintk(1, - KERN_ERR - "%s: failed to load modules %s: %d\n", - ZR_DEVNAME(zr), vfe_name, result); - } + if (result < 0) + pci_err(pdev, "failed to load modules %s: %d\n", vfe_name, result); } } @@ -1304,13 +1264,11 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) goto zr_unreg_i2c; zr->codec = videocodec_attach(master_codec); if (!zr->codec) { - dprintk(1, KERN_ERR "%s: %s - no codec found\n", - ZR_DEVNAME(zr), __func__); + pci_err(pdev, "%s - no codec found\n", __func__); goto zr_free_codec; } if (zr->codec->type != zr->card.video_codec) { - dprintk(1, KERN_ERR "%s: %s - wrong codec\n", - ZR_DEVNAME(zr), __func__); + pci_err(pdev, "%s - wrong codec\n", __func__); goto zr_detach_codec; } } @@ -1320,13 +1278,11 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) goto zr_detach_codec; zr->vfe = videocodec_attach(master_vfe); if (!zr->vfe) { - dprintk(1, KERN_ERR "%s: %s - no VFE found\n", - ZR_DEVNAME(zr), __func__); + pci_err(pdev, "%s - no VFE found\n", __func__); goto zr_free_vfe; } if (zr->vfe->type != zr->card.video_vfe) { - dprintk(1, KERN_ERR "%s: %s = wrong VFE\n", - ZR_DEVNAME(zr), __func__); + pci_err(pdev, "%s = wrong VFE\n", __func__); goto zr_detach_vfe; } } @@ -1421,9 +1377,7 @@ static int __init zoran_init(void) res = pci_register_driver(&zoran_driver); if (res) { - dprintk(1, - KERN_ERR - "%s: Unable to register ZR36057 driver\n", ZORAN_NAME); + pr_err("Unable to register ZR36057 driver\n"); return res; } diff --git a/drivers/staging/media/zoran/zoran_device.c b/drivers/staging/media/zoran/zoran_device.c index 0985b16d5a55..d7c85787e9c0 100644 --- a/drivers/staging/media/zoran/zoran_device.c +++ b/drivers/staging/media/zoran/zoran_device.c @@ -315,8 +315,7 @@ static void zr36057_set_vfe(struct zoran *zr, int video_width, int video_height, if (video_width < BUZ_MIN_WIDTH || video_height < BUZ_MIN_HEIGHT || video_width > Wa || video_height > Ha) { - dprintk(1, KERN_ERR "%s: set_vfe: w=%d h=%d not valid\n", - ZR_DEVNAME(zr), video_width, video_height); + pci_err(zr->pci_dev, "set_vfe: w=%d h=%d not valid\n", video_width, video_height); return; } @@ -451,10 +450,7 @@ void zr36057_overlay(struct zoran *zr, int on) zr->vbuf_bytesperline; btwrite(reg, ZR36057_VDTR); if (reg & 3) - dprintk(1, - KERN_ERR - "%s: zr36057_overlay() - video_address not aligned\n", - ZR_DEVNAME(zr)); + pci_err(zr->pci_dev, "zr36057_overlay() - video_address not aligned\n"); if (zr->overlay_settings.height > BUZ_MAX_HEIGHT / 2) reg += zr->vbuf_bytesperline; btwrite(reg, ZR36057_VDBR); @@ -466,10 +462,7 @@ void zr36057_overlay(struct zoran *zr, int on) if (zr->overlay_settings.height > BUZ_MAX_HEIGHT / 2) reg += zr->vbuf_bytesperline; if (reg & 3) - dprintk(1, - KERN_ERR - "%s: zr36057_overlay() - video_stride not aligned\n", - ZR_DEVNAME(zr)); + pci_err(zr->pci_dev, "zr36057_overlay() - video_stride not aligned\n"); reg = (reg << ZR36057_VSSFGR_DispStride); reg |= ZR36057_VSSFGR_VidOvf; /* clear overflow status */ btwrite(reg, ZR36057_VSSFGR); @@ -1187,8 +1180,8 @@ static void error_handler(struct zoran *zr, u32 astat, u32 stat) int j; frame = zr->jpg_pend[zr->jpg_dma_tail & BUZ_MASK_FRAME]; - pr_err("%s: JPEG error stat=0x%08x(0x%08x) queue_state=%ld/%ld/%ld/%ld seq=%ld frame=%ld. Codec stopped. ", - ZR_DEVNAME(zr), stat, zr->last_isr, + pci_err(zr->pci_dev, "JPEG error stat=0x%08x(0x%08x) queue_state=%ld/%ld/%ld/%ld seq=%ld frame=%ld. Codec stopped. ", + stat, zr->last_isr, zr->jpg_que_tail, zr->jpg_dma_tail, zr->jpg_dma_head, zr->jpg_que_head, zr->jpg_seq_num, frame); @@ -1256,10 +1249,8 @@ irqreturn_t zoran_irq(int irq, void *dev_id) while ((stat = count_reset_interrupt(zr))) { if (count++ > 100) { btand(~ZR36057_ICR_IntPinEn, ZR36057_ICR); - dprintk(1, - KERN_ERR - "%s: IRQ lockup while testing, isr=0x%08x, cleared int mask\n", - ZR_DEVNAME(zr), stat); + pci_err(zr->pci_dev, "IRQ lockup while testing, isr=0x%08x, cleared int mask\n", + stat); wake_up_interruptible(&zr->test_q); } } @@ -1419,10 +1410,7 @@ irqreturn_t zoran_irq(int irq, void *dev_id) ZR_DEVNAME(zr), count); if (count > 20) { btand(~ZR36057_ICR_IntPinEn, ZR36057_ICR); - dprintk(2, - KERN_ERR - "%s: IRQ lockup, cleared int mask\n", - ZR_DEVNAME(zr)); + pci_err(zr->pci_dev, "IRQ lockup, cleared int mask\n"); break; } } diff --git a/drivers/staging/media/zoran/zoran_driver.c b/drivers/staging/media/zoran/zoran_driver.c index cd8198183e6a..4082d5e53a24 100644 --- a/drivers/staging/media/zoran/zoran_driver.c +++ b/drivers/staging/media/zoran/zoran_driver.c @@ -218,10 +218,7 @@ static int v4l_fbuffer_alloc(struct zoran_fh *fh) //udelay(20); mem = kmalloc(fh->buffers.buffer_size, GFP_KERNEL | __GFP_NOWARN); if (!mem) { - dprintk(1, - KERN_ERR - "%s: %s - kmalloc for V4L buf %d failed\n", - ZR_DEVNAME(zr), __func__, i); + pci_err(zr->pci_dev, "%s - kmalloc for V4L buf %d failed\n", __func__, i); v4l_fbuffer_free(fh); return -ENOBUFS; } @@ -312,10 +309,7 @@ static int jpg_fbuffer_alloc(struct zoran_fh *fh) mem = (void *)get_zeroed_page(GFP_KERNEL); if (!mem) { - dprintk(1, - KERN_ERR - "%s: %s - get_zeroed_page (frag_tab) failed for buffer %d\n", - ZR_DEVNAME(zr), __func__, i); + pci_err(zr->pci_dev, "%s - get_zeroed_page (frag_tab) failed for buffer %d\n", __func__, i); jpg_fbuffer_free(fh); return -ENOBUFS; } @@ -325,10 +319,7 @@ static int jpg_fbuffer_alloc(struct zoran_fh *fh) if (fh->buffers.need_contiguous) { mem = kmalloc(fh->buffers.buffer_size, GFP_KERNEL); if (!mem) { - dprintk(1, - KERN_ERR - "%s: %s - kmalloc failed for buffer %d\n", - ZR_DEVNAME(zr), __func__, i); + pci_err(zr->pci_dev, "%s - kmalloc failed for buffer %d\n", __func__, i); jpg_fbuffer_free(fh); return -ENOBUFS; } @@ -343,10 +334,7 @@ static int jpg_fbuffer_alloc(struct zoran_fh *fh) for (j = 0; j < fh->buffers.buffer_size / PAGE_SIZE; j++) { mem = (void *)get_zeroed_page(GFP_KERNEL); if (!mem) { - dprintk(1, - KERN_ERR - "%s: %s - get_zeroed_page failed for buffer %d\n", - ZR_DEVNAME(zr), __func__, i); + pci_err(zr->pci_dev, "%s - get_zeroed_page failed for buffer %d\n", __func__, i); jpg_fbuffer_free(fh); return -ENOBUFS; } @@ -433,10 +421,7 @@ static int zoran_v4l_set_format(struct zoran_fh *fh, int width, int height, if (height < BUZ_MIN_HEIGHT || width < BUZ_MIN_WIDTH || height > BUZ_MAX_HEIGHT || width > BUZ_MAX_WIDTH) { - dprintk(1, - KERN_ERR - "%s: %s - wrong frame size (%dx%d)\n", - ZR_DEVNAME(zr), __func__, width, height); + pci_err(zr->pci_dev, "%s - wrong frame size (%dx%d)\n", __func__, width, height); return -EINVAL; } @@ -444,20 +429,15 @@ static int zoran_v4l_set_format(struct zoran_fh *fh, int width, int height, /* Check against available buffer size */ if (height * width * bpp > fh->buffers.buffer_size) { - dprintk(1, - KERN_ERR - "%s: %s - video buffer size (%d kB) is too small\n", - ZR_DEVNAME(zr), __func__, fh->buffers.buffer_size >> 10); + pci_err(zr->pci_dev, "%s - video buffer size (%d kB) is too small\n", + __func__, fh->buffers.buffer_size >> 10); return -EINVAL; } /* The video front end needs 4-byte alinged line sizes */ if ((bpp == 2 && (width & 1)) || (bpp == 3 && (width & 3))) { - dprintk(1, - KERN_ERR - "%s: %s - wrong frame alignment\n", - ZR_DEVNAME(zr), __func__); + pci_err(zr->pci_dev, "%s - wrong frame alignment\n", __func__); return -EINVAL; } @@ -476,19 +456,13 @@ static int zoran_v4l_queue_frame(struct zoran_fh *fh, int num) int res = 0; if (!fh->buffers.allocated) { - dprintk(1, - KERN_ERR - "%s: %s - buffers not yet allocated\n", - ZR_DEVNAME(zr), __func__); + pci_err(zr->pci_dev, "%s - buffers not yet allocated\n", __func__); res = -ENOMEM; } /* No grabbing outside the buffer range! */ if (num >= fh->buffers.num_buffers || num < 0) { - dprintk(1, - KERN_ERR - "%s: %s - buffer %d is out of range\n", - ZR_DEVNAME(zr), __func__, num); + pci_err(zr->pci_dev, "%s - buffer %d is out of range\n", __func__, num); res = -EINVAL; } @@ -499,10 +473,7 @@ static int zoran_v4l_queue_frame(struct zoran_fh *fh, int num) zr->v4l_buffers = fh->buffers; fh->buffers.active = ZORAN_ACTIVE; } else { - dprintk(1, - KERN_ERR - "%s: %s - another session is already capturing\n", - ZR_DEVNAME(zr), __func__); + pci_err(zr->pci_dev, "%s - another session is already capturing\n", __func__); res = -EBUSY; } } @@ -555,27 +526,19 @@ static int v4l_sync(struct zoran_fh *fh, int frame) unsigned long flags; if (fh->buffers.active == ZORAN_FREE) { - dprintk(1, - KERN_ERR - "%s: %s - no grab active for this session\n", - ZR_DEVNAME(zr), __func__); + pci_err(zr->pci_dev, "%s - no grab active for this session\n", __func__); return -EINVAL; } /* check passed-in frame number */ if (frame >= fh->buffers.num_buffers || frame < 0) { - dprintk(1, - KERN_ERR "%s: %s - frame %d is invalid\n", - ZR_DEVNAME(zr), __func__, frame); + pci_err(zr->pci_dev, "%s - frame %d is invalid\n", __func__, frame); return -EINVAL; } /* Check if is buffer was queued at all */ if (zr->v4l_buffers.buffer[frame].state == BUZ_STATE_USER) { - dprintk(1, - KERN_ERR - "%s: %s - attempt to sync on a buffer which was not queued?\n", - ZR_DEVNAME(zr), __func__); + pci_err(zr->pci_dev, "%s - attempt to sync on a buffer which was not queued?\n", __func__); return -EPROTO; } @@ -592,9 +555,7 @@ static int v4l_sync(struct zoran_fh *fh, int frame) /* buffer should now be in BUZ_STATE_DONE */ if (zr->v4l_buffers.buffer[frame].state != BUZ_STATE_DONE) - dprintk(2, - KERN_ERR "%s: %s - internal state error\n", - ZR_DEVNAME(zr), __func__); + pci_err(zr->pci_dev, "%s - internal state error\n", __func__); zr->v4l_buffers.buffer[frame].state = BUZ_STATE_USER; fh->buffers.buffer[frame] = zr->v4l_buffers.buffer[frame]; @@ -627,19 +588,13 @@ static int zoran_jpg_queue_frame(struct zoran_fh *fh, int num, /* Check if buffers are allocated */ if (!fh->buffers.allocated) { - dprintk(1, - KERN_ERR - "%s: %s - buffers not yet allocated\n", - ZR_DEVNAME(zr), __func__); + pci_err(zr->pci_dev, "%s - buffers not yet allocated\n", __func__); return -ENOMEM; } /* No grabbing outside the buffer range! */ if (num >= fh->buffers.num_buffers || num < 0) { - dprintk(1, - KERN_ERR - "%s: %s - buffer %d out of range\n", - ZR_DEVNAME(zr), __func__, num); + pci_err(zr->pci_dev, "%s - buffer %d out of range\n", __func__, num); return -EINVAL; } @@ -648,10 +603,7 @@ static int zoran_jpg_queue_frame(struct zoran_fh *fh, int num, zr->jpg_settings = fh->jpg_settings; } else if (zr->codec_mode != mode) { /* wrong codec mode active - invalid */ - dprintk(1, - KERN_ERR - "%s: %s - codec in wrong mode\n", - ZR_DEVNAME(zr), __func__); + pci_err(zr->pci_dev, "%s - codec in wrong mode\n", __func__); return -EINVAL; } @@ -660,10 +612,7 @@ static int zoran_jpg_queue_frame(struct zoran_fh *fh, int num, zr->jpg_buffers = fh->buffers; fh->buffers.active = ZORAN_ACTIVE; } else { - dprintk(1, - KERN_ERR - "%s: %s - another session is already capturing\n", - ZR_DEVNAME(zr), __func__); + pci_err(zr->pci_dev, "%s - another session is already capturing\n", __func__); res = -EBUSY; } } @@ -720,10 +669,7 @@ static int jpg_qbuf(struct zoran_fh *fh, int frame, enum zoran_codec_mode mode) if (frame < 0) { if (zr->codec_mode == mode) { if (fh->buffers.active == ZORAN_FREE) { - dprintk(1, - KERN_ERR - "%s: %s(-1) - session not active\n", - ZR_DEVNAME(zr), __func__); + pci_err(zr->pci_dev, "%s(-1) - session not active\n", __func__); return -EINVAL; } fh->buffers.active = zr->jpg_buffers.active = ZORAN_FREE; @@ -731,10 +677,7 @@ static int jpg_qbuf(struct zoran_fh *fh, int frame, enum zoran_codec_mode mode) zr36057_enable_jpg(zr, BUZ_MODE_IDLE); return 0; } else { - dprintk(1, - KERN_ERR - "%s: %s - stop streaming but not in streaming mode\n", - ZR_DEVNAME(zr), __func__); + pci_err(zr->pci_dev, "%s - stop streaming but not in streaming mode\n", __func__); return -EINVAL; } } @@ -761,18 +704,12 @@ static int jpg_sync(struct zoran_fh *fh, struct zoran_sync *bs) int frame; if (fh->buffers.active == ZORAN_FREE) { - dprintk(1, - KERN_ERR - "%s: %s - capture is not currently active\n", - ZR_DEVNAME(zr), __func__); + pci_err(zr->pci_dev, "%s - capture is not currently active\n", __func__); return -EINVAL; } if (zr->codec_mode != BUZ_MODE_MOTION_DECOMPRESS && zr->codec_mode != BUZ_MODE_MOTION_COMPRESS) { - dprintk(1, - KERN_ERR - "%s: %s - codec not in streaming mode\n", - ZR_DEVNAME(zr), __func__); + pci_err(zr->pci_dev, "%s - codec not in streaming mode\n", __func__); return -EINVAL; } mutex_unlock(&zr->lock); @@ -786,10 +723,7 @@ static int jpg_sync(struct zoran_fh *fh, struct zoran_sync *bs) udelay(1); zr->codec->control(zr->codec, CODEC_G_STATUS, sizeof(isr), &isr); mutex_lock(&zr->lock); - dprintk(1, - KERN_ERR - "%s: %s - timeout: codec isr=0x%02x\n", - ZR_DEVNAME(zr), __func__, isr); + pci_err(zr->pci_dev, "%s - timeout: codec isr=0x%02x\n", __func__, isr); return -ETIME; } @@ -806,9 +740,7 @@ static int jpg_sync(struct zoran_fh *fh, struct zoran_sync *bs) /* buffer should now be in BUZ_STATE_DONE */ if (zr->jpg_buffers.buffer[frame].state != BUZ_STATE_DONE) - dprintk(2, - KERN_ERR "%s: %s - internal state error\n", - ZR_DEVNAME(zr), __func__); + pci_err(zr->pci_dev, "%s - internal state error\n", __func__); *bs = zr->jpg_buffers.buffer[frame].bs; bs->frame = frame; @@ -906,8 +838,7 @@ static int zoran_open(struct file *file) mutex_lock(&zr->lock); if (zr->user >= 2048) { - dprintk(1, KERN_ERR "%s: too many users (%d) on device\n", - ZR_DEVNAME(zr), zr->user); + pci_err(zr->pci_dev, "too many users (%d) on device\n", zr->user); res = -EBUSY; goto fail_unlock; } @@ -915,10 +846,6 @@ static int zoran_open(struct file *file) /* now, create the open()-specific file_ops struct */ fh = kzalloc(sizeof(*fh), GFP_KERNEL); if (!fh) { - dprintk(1, - KERN_ERR - "%s: %s - allocation of zoran_fh failed\n", - ZR_DEVNAME(zr), __func__); res = -ENOMEM; goto fail_unlock; } @@ -930,10 +857,6 @@ static int zoran_open(struct file *file) */ fh->overlay_mask = kmalloc(array3_size((768 + 31) / 32, 576, 4), GFP_KERNEL); if (!fh->overlay_mask) { - dprintk(1, - KERN_ERR - "%s: %s - allocation of overlay_mask failed\n", - ZR_DEVNAME(zr), __func__); res = -ENOMEM; goto fail_fh; } @@ -1066,24 +989,17 @@ static int setup_fbuffer(struct zoran_fh *fh, void *base, const struct zoran_for #endif if (!(fmt->flags & ZORAN_FORMAT_OVERLAY)) { - dprintk(1, - KERN_ERR - "%s: %s - no valid overlay format given\n", - ZR_DEVNAME(zr), __func__); + pci_err(zr->pci_dev, "%s - no valid overlay format given\n", __func__); return -EINVAL; } if (height <= 0 || width <= 0 || bytesperline <= 0) { - dprintk(1, - KERN_ERR - "%s: %s - invalid height/width/bpl value (%d|%d|%d)\n", - ZR_DEVNAME(zr), __func__, width, height, bytesperline); + pci_err(zr->pci_dev, "%s - invalid height/width/bpl value (%d|%d|%d)\n", + __func__, width, height, bytesperline); return -EINVAL; } if (bytesperline & 3) { - dprintk(1, - KERN_ERR - "%s: %s - bytesperline (%d) must be 4-byte aligned\n", - ZR_DEVNAME(zr), __func__, bytesperline); + pci_err(zr->pci_dev, "%s - bytesperline (%d) must be 4-byte aligned\n", + __func__, bytesperline); return -EINVAL; } @@ -1108,26 +1024,17 @@ static int setup_window(struct zoran_fh *fh, int x, int y, int width, int height int on, end; if (!zr->vbuf_base) { - dprintk(1, - KERN_ERR - "%s: %s - frame buffer has to be set first\n", - ZR_DEVNAME(zr), __func__); + pci_err(zr->pci_dev, "%s - frame buffer has to be set first\n", __func__); return -EINVAL; } if (!fh->overlay_settings.format) { - dprintk(1, - KERN_ERR - "%s: %s - no overlay format set\n", - ZR_DEVNAME(zr), __func__); + pci_err(zr->pci_dev, "%s - no overlay format set\n", __func__); return -EINVAL; } if (clipcount > 2048) { - dprintk(1, - KERN_ERR - "%s: %s - invalid clipcount\n", - ZR_DEVNAME(zr), __func__); + pci_err(zr->pci_dev, "%s - invalid clipcount\n", __func__); return -EINVAL; } @@ -1155,10 +1062,7 @@ static int setup_window(struct zoran_fh *fh, int x, int y, int width, int height /* Check for invalid parameters */ if (width < BUZ_MIN_WIDTH || height < BUZ_MIN_HEIGHT || width > BUZ_MAX_WIDTH || height > BUZ_MAX_HEIGHT) { - dprintk(1, - KERN_ERR - "%s: %s - width = %d or height = %d invalid\n", - ZR_DEVNAME(zr), __func__, width, height); + pci_err(zr->pci_dev, "%s - width = %d or height = %d invalid\n", __func__, width, height); return -EINVAL; } @@ -1199,10 +1103,6 @@ static int setup_window(struct zoran_fh *fh, int x, int y, int width, int height vcp = vmalloc(array_size(sizeof(struct v4l2_clip), clipcount + 4)); if (!vcp) { - dprintk(1, - KERN_ERR - "%s: %s - Alloc of clip mask failed\n", - ZR_DEVNAME(zr), __func__); return -ENOMEM; } if (copy_from_user @@ -1238,18 +1138,12 @@ static int setup_overlay(struct zoran_fh *fh, int on) /* check whether we're touching someone else's overlay */ if (on && zr->overlay_active != ZORAN_FREE && fh->overlay_active == ZORAN_FREE) { - dprintk(1, - KERN_ERR - "%s: %s - overlay is already active for another session\n", - ZR_DEVNAME(zr), __func__); + pci_err(zr->pci_dev, "%s - overlay is already active for another session\n", __func__); return -EBUSY; } if (!on && zr->overlay_active != ZORAN_FREE && fh->overlay_active == ZORAN_FREE) { - dprintk(1, - KERN_ERR - "%s: %s - you cannot cancel someone else's session\n", - ZR_DEVNAME(zr), __func__); + pci_err(zr->pci_dev, "%s - you cannot cancel someone else's session\n", __func__); return -EPERM; } @@ -1265,17 +1159,11 @@ static int setup_overlay(struct zoran_fh *fh, int on) zr->overlay_mask = NULL; } else { if (!zr->vbuf_base || !fh->overlay_settings.is_set) { - dprintk(1, - KERN_ERR - "%s: %s - buffer or window not set\n", - ZR_DEVNAME(zr), __func__); + pci_err(zr->pci_dev, "%s - buffer or window not set\n", __func__); return -EINVAL; } if (!fh->overlay_settings.format) { - dprintk(1, - KERN_ERR - "%s: %s - no overlay format set\n", - ZR_DEVNAME(zr), __func__); + pci_err(zr->pci_dev, "%s - no overlay format set\n", __func__); return -EINVAL; } zr->overlay_active = fh->overlay_active = ZORAN_LOCKED; @@ -1308,10 +1196,7 @@ static int zoran_v4l2_buffer_status(struct zoran_fh *fh, /* check range */ if (num < 0 || num >= fh->buffers.num_buffers || !fh->buffers.allocated) { - dprintk(1, - KERN_ERR - "%s: %s - wrong number or buffers not allocated\n", - ZR_DEVNAME(zr), __func__); + pci_err(zr->pci_dev, "%s - wrong number or buffers not allocated\n", __func__); return -EINVAL; } @@ -1352,10 +1237,7 @@ static int zoran_v4l2_buffer_status(struct zoran_fh *fh, /* check range */ if (num < 0 || num >= fh->buffers.num_buffers || !fh->buffers.allocated) { - dprintk(1, - KERN_ERR - "%s: %s - wrong number or buffers not allocated\n", - ZR_DEVNAME(zr), __func__); + pci_err(zr->pci_dev, "%s - wrong number or buffers not allocated\n", __func__); return -EINVAL; } @@ -1387,10 +1269,8 @@ static int zoran_v4l2_buffer_status(struct zoran_fh *fh, default: - dprintk(5, - KERN_ERR - "%s: %s - invalid buffer type|map_mode (%d|%d)\n", - ZR_DEVNAME(zr), __func__, buf->type, fh->map_mode); + pci_err(zr->pci_dev, "%s - invalid buffer type|map_mode (%d|%d)\n", + __func__, buf->type, fh->map_mode); return -EINVAL; } @@ -1407,17 +1287,12 @@ static int zoran_set_norm(struct zoran *zr, v4l2_std_id norm) if (zr->v4l_buffers.active != ZORAN_FREE || zr->jpg_buffers.active != ZORAN_FREE) { - dprintk(1, - KERN_WARNING - "%s: %s called while in playback/capture mode\n", - ZR_DEVNAME(zr), __func__); + pr_warn("%s: %s called while in playback/capture mode\n", ZR_DEVNAME(zr), __func__); return -EBUSY; } if (!(norm & zr->card.norms)) { - dprintk(1, - KERN_ERR "%s: %s - unsupported norm %llx\n", - ZR_DEVNAME(zr), __func__, norm); + pci_err(zr->pci_dev, "%s - unsupported norm %llx\n", __func__, norm); return -EINVAL; } @@ -1463,10 +1338,7 @@ static int zoran_set_input(struct zoran *zr, int input) } if (input < 0 || input >= zr->card.inputs) { - dprintk(1, - KERN_ERR - "%s: %s - unsupported input %d\n", - ZR_DEVNAME(zr), __func__, input); + pci_err(zr->pci_dev, "%s - unsupported input %d\n", __func__, input); return -EINVAL; } @@ -1741,8 +1613,7 @@ static int zoran_s_fmt_vid_out(struct file *file, void *__fh, struct v4l2_format return -EINVAL; if (fh->buffers.allocated) { - dprintk(1, KERN_ERR "%s: VIDIOC_S_FMT - cannot change capture mode\n", - ZR_DEVNAME(zr)); + pci_err(zr->pci_dev, "VIDIOC_S_FMT - cannot change capture mode\n"); res = -EBUSY; return res; } @@ -1818,15 +1689,14 @@ static int zoran_s_fmt_vid_cap(struct file *file, void *__fh, struct v4l2_format if (fmt->fmt.pix.pixelformat == zoran_formats[i].fourcc) break; if (i == NUM_FORMATS) { - dprintk(1, KERN_ERR "%s: VIDIOC_S_FMT - unknown/unsupported format 0x%x\n", - ZR_DEVNAME(zr), fmt->fmt.pix.pixelformat); + pci_err(zr->pci_dev, "VIDIOC_S_FMT - unknown/unsupported format 0x%x\n", + fmt->fmt.pix.pixelformat); return -EINVAL; } if ((fh->map_mode != ZORAN_MAP_MODE_RAW && fh->buffers.allocated) || fh->buffers.active != ZORAN_FREE) { - dprintk(1, KERN_ERR "%s: VIDIOC_S_FMT - cannot change capture mode\n", - ZR_DEVNAME(zr)); + pci_err(zr->pci_dev, "VIDIOC_S_FMT - cannot change capture mode\n"); res = -EBUSY; return res; } @@ -1884,8 +1754,8 @@ static int zoran_s_fbuf(struct file *file, void *__fh, if (zoran_formats[i].fourcc == fb->fmt.pixelformat) break; if (i == NUM_FORMATS) { - dprintk(1, KERN_ERR "%s: VIDIOC_S_FBUF - format=0x%x (%4.4s) not allowed\n", - ZR_DEVNAME(zr), fb->fmt.pixelformat, + pci_err(zr->pci_dev, "VIDIOC_S_FBUF - format=0x%x (%4.4s) not allowed\n", + fb->fmt.pixelformat, (char *)&printformat); return -EINVAL; } @@ -1912,10 +1782,7 @@ static int zoran_reqbufs(struct file *file, void *__fh, struct v4l2_requestbuffe int res = 0; if (req->memory != V4L2_MEMORY_MMAP) { - dprintk(2, - KERN_ERR - "%s: only MEMORY_MMAP capture is supported, not %d\n", - ZR_DEVNAME(zr), req->memory); + pci_err(zr->pci_dev, "only MEMORY_MMAP capture is supported, not %d\n", req->memory); return -EINVAL; } @@ -1923,10 +1790,7 @@ static int zoran_reqbufs(struct file *file, void *__fh, struct v4l2_requestbuffe return zoran_streamoff(file, fh, req->type); if (fh->buffers.allocated) { - dprintk(2, - KERN_ERR - "%s: VIDIOC_REQBUFS - buffers already allocated\n", - ZR_DEVNAME(zr)); + pr_warn("%s: VIDIOC_REQBUFS - buffers already allocated\n", ZR_DEVNAME(zr)); res = -EBUSY; return res; } @@ -1965,10 +1829,7 @@ static int zoran_reqbufs(struct file *file, void *__fh, struct v4l2_requestbuffe return res; } } else { - dprintk(1, - KERN_ERR - "%s: VIDIOC_REQBUFS - unknown type %d\n", - ZR_DEVNAME(zr), req->type); + pci_err(zr->pci_dev, "VIDIOC_REQBUFS - unknown type %d\n", req->type); res = -EINVAL; return res; } @@ -1991,9 +1852,8 @@ static int zoran_qbuf(struct file *file, void *__fh, struct v4l2_buffer *buf) switch (fh->map_mode) { case ZORAN_MAP_MODE_RAW: if (buf->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) { - dprintk(1, KERN_ERR - "%s: VIDIOC_QBUF - invalid buf->type=%d for map_mode=%d\n", - ZR_DEVNAME(zr), buf->type, fh->map_mode); + pci_err(zr->pci_dev, "VIDIOC_QBUF - invalid buf->type=%d for map_mode=%d\n", + buf->type, fh->map_mode); res = -EINVAL; return res; } @@ -2016,9 +1876,8 @@ static int zoran_qbuf(struct file *file, void *__fh, struct v4l2_buffer *buf) } if (buf->type != buf_type) { - dprintk(1, KERN_ERR - "%s: VIDIOC_QBUF - invalid buf->type=%d for map_mode=%d\n", - ZR_DEVNAME(zr), buf->type, fh->map_mode); + pci_err(zr->pci_dev, "VIDIOC_QBUF - invalid buf->type=%d for map_mode=%d\n", + buf->type, fh->map_mode); res = -EINVAL; return res; } @@ -2033,9 +1892,7 @@ static int zoran_qbuf(struct file *file, void *__fh, struct v4l2_buffer *buf) break; default: - dprintk(1, KERN_ERR - "%s: VIDIOC_QBUF - unsupported type %d\n", - ZR_DEVNAME(zr), buf->type); + pci_err(zr->pci_dev, "VIDIOC_QBUF - unsupported type %d\n", buf->type); res = -EINVAL; break; } @@ -2051,9 +1908,8 @@ static int zoran_dqbuf(struct file *file, void *__fh, struct v4l2_buffer *buf) switch (fh->map_mode) { case ZORAN_MAP_MODE_RAW: if (buf->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) { - dprintk(1, KERN_ERR - "%s: VIDIOC_QBUF - invalid buf->type=%d for map_mode=%d\n", - ZR_DEVNAME(zr), buf->type, fh->map_mode); + pci_err(zr->pci_dev, "VIDIOC_QBUF - invalid buf->type=%d for map_mode=%d\n", + buf->type, fh->map_mode); res = -EINVAL; return res; } @@ -2082,9 +1938,8 @@ static int zoran_dqbuf(struct file *file, void *__fh, struct v4l2_buffer *buf) buf_type = V4L2_BUF_TYPE_VIDEO_CAPTURE; if (buf->type != buf_type) { - dprintk(1, KERN_ERR - "%s: VIDIOC_QBUF - invalid buf->type=%d for map_mode=%d\n", - ZR_DEVNAME(zr), buf->type, fh->map_mode); + pci_err(zr->pci_dev, "VIDIOC_QBUF - invalid buf->type=%d for map_mode=%d\n", + buf->type, fh->map_mode); res = -EINVAL; return res; } @@ -2105,9 +1960,7 @@ static int zoran_dqbuf(struct file *file, void *__fh, struct v4l2_buffer *buf) } default: - dprintk(1, KERN_ERR - "%s: VIDIOC_DQBUF - unsupported type %d\n", - ZR_DEVNAME(zr), buf->type); + pci_err(zr->pci_dev, "VIDIOC_DQBUF - unsupported type %d\n", buf->type); res = -EINVAL; break; } @@ -2156,10 +2009,7 @@ static int zoran_streamon(struct file *file, void *__fh, enum v4l2_buf_type type break; default: - dprintk(1, - KERN_ERR - "%s: VIDIOC_STREAMON - invalid map mode %d\n", - ZR_DEVNAME(zr), fh->map_mode); + pci_err(zr->pci_dev, "VIDIOC_STREAMON - invalid map mode %d\n", fh->map_mode); res = -EINVAL; break; } @@ -2220,9 +2070,7 @@ static int zoran_streamoff(struct file *file, void *__fh, enum v4l2_buf_type typ return res; break; default: - dprintk(1, KERN_ERR - "%s: VIDIOC_STREAMOFF - invalid map mode %d\n", - ZR_DEVNAME(zr), fh->map_mode); + pci_err(zr->pci_dev, "VIDIOC_STREAMOFF - invalid map mode %d\n", fh->map_mode); res = -EINVAL; break; } @@ -2333,9 +2181,7 @@ static int zoran_g_selection(struct file *file, void *__fh, struct v4l2_selectio return -EINVAL; if (fh->map_mode == ZORAN_MAP_MODE_RAW) { - dprintk(1, KERN_ERR - "%s: VIDIOC_G_SELECTION - subcapture only supported for compressed capture\n", - ZR_DEVNAME(zr)); + pci_err(zr->pci_dev, "VIDIOC_G_SELECTION - subcapture only supported for compressed capture\n"); return -EINVAL; } @@ -2377,18 +2223,14 @@ static int zoran_s_selection(struct file *file, void *__fh, struct v4l2_selectio return -EINVAL; if (fh->map_mode == ZORAN_MAP_MODE_RAW) { - dprintk(1, KERN_ERR - "%s: VIDIOC_S_SELECTION - subcapture only supported for compressed capture\n", - ZR_DEVNAME(zr)); + pci_err(zr->pci_dev, "VIDIOC_S_SELECTION - subcapture only supported for compressed capture\n"); return -EINVAL; } settings = fh->jpg_settings; if (fh->buffers.allocated) { - dprintk(1, KERN_ERR - "%s: VIDIOC_S_SELECTION - cannot change settings while active\n", - ZR_DEVNAME(zr)); + pci_err(zr->pci_dev, "VIDIOC_S_SELECTION - cannot change settings while active\n"); return -EBUSY; } @@ -2523,10 +2365,7 @@ static __poll_t zoran_poll(struct file *file, poll_table *wait) break; default: - dprintk(1, - KERN_ERR - "%s: %s - internal error, unknown map_mode=%d\n", - ZR_DEVNAME(zr), __func__, fh->map_mode); + pci_err(zr->pci_dev, "%s - internal error, unknown map_mode=%d\n", __func__, fh->map_mode); res |= EPOLLERR; } @@ -2622,18 +2461,12 @@ static int zoran_mmap(struct file *file, struct vm_area_struct *vma) if (!(vma->vm_flags & VM_SHARED) || !(vma->vm_flags & VM_READ) || !(vma->vm_flags & VM_WRITE)) { - dprintk(1, - KERN_ERR - "%s: %s - no MAP_SHARED/PROT_{READ,WRITE} given\n", - ZR_DEVNAME(zr), __func__); + pci_err(zr->pci_dev, "%s - no MAP_SHARED/PROT_{READ,WRITE} given\n", __func__); return -EINVAL; } if (!fh->buffers.allocated) { - dprintk(1, - KERN_ERR - "%s: %s(%s) - buffers not yet allocated\n", - ZR_DEVNAME(zr), __func__, mode_name(fh->map_mode)); + pci_err(zr->pci_dev, "%s(%s) - buffers not yet allocated\n", __func__, mode_name(fh->map_mode)); res = -ENOMEM; return res; } @@ -2644,10 +2477,8 @@ static int zoran_mmap(struct file *file, struct vm_area_struct *vma) size % fh->buffers.buffer_size != 0 || first < 0 || last < 0 || first >= fh->buffers.num_buffers || last >= fh->buffers.buffer_size) { - dprintk(1, - KERN_ERR - "%s: %s(%s) - offset=%lu or size=%lu invalid for bufsize=%d and numbufs=%d\n", - ZR_DEVNAME(zr), __func__, mode_name(fh->map_mode), offset, size, + pci_err(zr->pci_dev, "%s(%s) - offset=%lu or size=%lu invalid for bufsize=%d and numbufs=%d\n", + __func__, mode_name(fh->map_mode), offset, size, fh->buffers.buffer_size, fh->buffers.num_buffers); res = -EINVAL; @@ -2657,10 +2488,7 @@ static int zoran_mmap(struct file *file, struct vm_area_struct *vma) /* Check if any buffers are already mapped */ for (i = first; i <= last; i++) { if (fh->buffers.buffer[i].map) { - dprintk(1, - KERN_ERR - "%s: %s(%s) - buffer %d already mapped\n", - ZR_DEVNAME(zr), __func__, mode_name(fh->map_mode), i); + pci_err(zr->pci_dev, "%s(%s) - buffer %d already mapped\n", __func__, mode_name(fh->map_mode), i); res = -EBUSY; return res; } @@ -2687,10 +2515,7 @@ static int zoran_mmap(struct file *file, struct vm_area_struct *vma) page = fh->buffers.buffer[i].v4l.fbuffer_phys; if (remap_pfn_range(vma, start, page >> PAGE_SHIFT, todo, PAGE_SHARED)) { - dprintk(1, - KERN_ERR - "%s: %s(V4L) - remap_pfn_range failed\n", - ZR_DEVNAME(zr), __func__); + pci_err(zr->pci_dev, "%s(V4L) - remap_pfn_range failed\n", __func__); res = -EAGAIN; return res; } @@ -2719,10 +2544,7 @@ static int zoran_mmap(struct file *file, struct vm_area_struct *vma) >> PAGE_SHIFT; if (remap_pfn_range(vma, start, page, todo, PAGE_SHARED)) { - dprintk(1, - KERN_ERR - "%s: %s(V4L) - remap_pfn_range failed\n", - ZR_DEVNAME(zr), __func__); + pci_err(zr->pci_dev, "%s(V4L) - remap_pfn_range failed\n", __func__); res = -EAGAIN; return res; } diff --git a/drivers/staging/media/zoran/zoran_procfs.c b/drivers/staging/media/zoran/zoran_procfs.c index 13367e6f6620..98f9e0103d83 100644 --- a/drivers/staging/media/zoran/zoran_procfs.c +++ b/drivers/staging/media/zoran/zoran_procfs.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include @@ -192,8 +193,7 @@ int zoran_proc_init(struct zoran *zr) "%s: procfs entry /proc/%s allocated. data=%p\n", ZR_DEVNAME(zr), name, zr); } else { - dprintk(1, KERN_ERR "%s: Unable to initialise /proc/%s\n", - ZR_DEVNAME(zr), name); + pr_err("%s: Unable to initialise /proc/%s\n", ZR_DEVNAME(zr), name); return 1; } #endif diff --git a/drivers/staging/media/zoran/zr36016.c b/drivers/staging/media/zoran/zr36016.c index 3219b63d6f72..a8190005bc4d 100644 --- a/drivers/staging/media/zoran/zr36016.c +++ b/drivers/staging/media/zoran/zr36016.c @@ -48,9 +48,7 @@ static u8 zr36016_read(struct zr36016 *ptr, u16 reg) if (ptr->codec->master_data->readreg) value = (ptr->codec->master_data->readreg(ptr->codec, reg)) & 0xFF; else - dprintk(1, - KERN_ERR "%s: invalid I/O setup, nothing read!\n", - ptr->name); + pr_err("%s: invalid I/O setup, nothing read!\n", ptr->name); dprintk(4, "%s: reading from 0x%04x: %02x\n", ptr->name, reg, value); @@ -65,10 +63,7 @@ static void zr36016_write(struct zr36016 *ptr, u16 reg, u8 value) if (ptr->codec->master_data->writereg) ptr->codec->master_data->writereg(ptr->codec, reg, value); else - dprintk(1, - KERN_ERR - "%s: invalid I/O setup, nothing written!\n", - ptr->name); + pr_err("%s: invalid I/O setup, nothing written!\n", ptr->name); } /* indirect read and write functions */ @@ -83,10 +78,7 @@ static u8 zr36016_readi(struct zr36016 *ptr, u16 reg) ptr->codec->master_data->writereg(ptr->codec, ZR016_IADDR, reg & 0x0F); // ADDR value = (ptr->codec->master_data->readreg(ptr->codec, ZR016_IDATA)) & 0xFF; // DATA } else { - dprintk(1, - KERN_ERR - "%s: invalid I/O setup, nothing read (i)!\n", - ptr->name); + pr_err("%s: invalid I/O setup, nothing read (i)!\n", ptr->name); } dprintk(4, "%s: reading indirect from 0x%04x: %02x\n", ptr->name, reg, value); @@ -103,10 +95,7 @@ static void zr36016_writei(struct zr36016 *ptr, u16 reg, u8 value) ptr->codec->master_data->writereg(ptr->codec, ZR016_IADDR, reg & 0x0F); // ADDR ptr->codec->master_data->writereg(ptr->codec, ZR016_IDATA, value & 0x0FF); // DATA } else { - dprintk(1, - KERN_ERR - "%s: invalid I/O setup, nothing written (i)!\n", - ptr->name); + pr_err("%s: invalid I/O setup, nothing written (i)!\n", ptr->name); } } @@ -144,27 +133,19 @@ static int zr36016_basic_test(struct zr36016 *ptr) // it back in both cases zr36016_writei(ptr, ZR016I_PAX_LO, 0x00); if (zr36016_readi(ptr, ZR016I_PAX_LO) != 0x0) { - dprintk(1, - KERN_ERR - "%s: attach failed, can't connect to vfe processor!\n", - ptr->name); + pr_err("%s: attach failed, can't connect to vfe processor!\n", ptr->name); return -ENXIO; } zr36016_writei(ptr, ZR016I_PAX_LO, 0x0d0); if (zr36016_readi(ptr, ZR016I_PAX_LO) != 0x0d0) { - dprintk(1, - KERN_ERR - "%s: attach failed, can't connect to vfe processor!\n", - ptr->name); + pr_err("%s: attach failed, can't connect to vfe processor!\n", ptr->name); return -ENXIO; } // we allow version numbers from 0-3, should be enough, though zr36016_read_version(ptr); if (ptr->version & 0x0c) { - dprintk(1, - KERN_ERR - "%s: attach failed, suspicious version %d found...\n", - ptr->name, ptr->version); + pr_err("%s: attach failed, suspicious version %d found...\n", ptr->name, + ptr->version); return -ENXIO; } @@ -376,12 +357,12 @@ static int zr36016_setup(struct videocodec *codec) dprintk(2, "zr36016: initializing VFE subsystem #%d.\n", zr36016_codecs); if (zr36016_codecs == MAX_CODECS) { - dprintk(1, KERN_ERR "zr36016: Can't attach more codecs!\n"); + pr_err("zr36016: Can't attach more codecs!\n"); return -ENOSPC; } //mem structure init codec->data = ptr = kzalloc(sizeof(struct zr36016), GFP_KERNEL); - if (!ptr) { + if (!ptr) return -ENOMEM; snprintf(ptr->name, sizeof(ptr->name), "zr36016[%d]", zr36016_codecs); diff --git a/drivers/staging/media/zoran/zr36050.c b/drivers/staging/media/zoran/zr36050.c index dc7928d88099..f551631c18cd 100644 --- a/drivers/staging/media/zoran/zr36050.c +++ b/drivers/staging/media/zoran/zr36050.c @@ -448,8 +448,7 @@ static void zr36050_init(struct zr36050 *ptr) ptr->name, ptr->status1); if ((ptr->status1 & 0x4) == 0) { - dprintk(1, KERN_ERR "%s: init aborted!\n", - ptr->name); + pr_err("%s: init aborted!\n", ptr->name); return; // something is wrong, its timed out!!!! } @@ -518,8 +517,7 @@ static void zr36050_init(struct zr36050 *ptr) ptr->name, ptr->status1); if ((ptr->status1 & 0x4) == 0) { - dprintk(1, KERN_ERR "%s: init aborted!\n", - ptr->name); + pr_err("%s: init aborted!\n", ptr->name); return; // something is wrong, its timed out!!!! } @@ -757,10 +755,8 @@ static int zr36050_setup(struct videocodec *codec) } //mem structure init codec->data = ptr = kzalloc(sizeof(struct zr36050), GFP_KERNEL); - if (!ptr) { - dprintk(1, KERN_ERR "zr36050: Can't get enough memory!\n"); + if (!ptr) return -ENOMEM; - } snprintf(ptr->name, sizeof(ptr->name), "zr36050[%d]", zr36050_codecs); diff --git a/drivers/staging/media/zoran/zr36060.c b/drivers/staging/media/zoran/zr36060.c index c04054f1306b..0a0916f5f8cd 100644 --- a/drivers/staging/media/zoran/zr36060.c +++ b/drivers/staging/media/zoran/zr36060.c @@ -59,9 +59,7 @@ static u8 zr36060_read(struct zr36060 *ptr, u16 reg) if (ptr->codec->master_data->readreg) value = (ptr->codec->master_data->readreg(ptr->codec, reg)) & 0xff; else - dprintk(1, - KERN_ERR "%s: invalid I/O setup, nothing read!\n", - ptr->name); + pr_err("%s: invalid I/O setup, nothing read!\n", ptr->name); return value; } @@ -74,10 +72,7 @@ static void zr36060_write(struct zr36060 *ptr, u16 reg, u8 value) if (ptr->codec->master_data->writereg) ptr->codec->master_data->writereg(ptr->codec, reg, value); else - dprintk(1, - KERN_ERR - "%s: invalid I/O setup, nothing written!\n", - ptr->name); + pr_err("%s: invalid I/O setup, nothing written!\n", ptr->name); } /* ========================================================================= @@ -127,19 +122,13 @@ static int zr36060_basic_test(struct zr36060 *ptr) { if ((zr36060_read(ptr, ZR060_IDR_DEV) != 0x33) && (zr36060_read(ptr, ZR060_IDR_REV) != 0x01)) { - dprintk(1, - KERN_ERR - "%s: attach failed, can't connect to jpeg processor!\n", - ptr->name); + pr_err("%s: attach failed, can't connect to jpeg processor!\n", ptr->name); return -ENXIO; } zr36060_wait_end(ptr); if (ptr->status & ZR060_CFSR_Busy) { - dprintk(1, - KERN_ERR - "%s: attach failed, jpeg processor failed (end flag)!\n", - ptr->name); + pr_err("%s: attach failed, jpeg processor failed (end flag)!\n", ptr->name); return -EBUSY; } @@ -458,7 +447,7 @@ static void zr36060_init(struct zr36060 *ptr) dprintk(2, "%s: Status after table preload: 0x%02x\n", ptr->name, ptr->status); if (ptr->status & ZR060_CFSR_Busy) { - dprintk(1, KERN_ERR "%s: init aborted!\n", ptr->name); + pr_err("%s: init aborted!\n", ptr->name); return; // something is wrong, its timed out!!!! } } @@ -797,8 +786,7 @@ static int zr36060_setup(struct videocodec *codec) dprintk(2, "zr36060: initializing MJPEG subsystem #%d.\n", zr36060_codecs); if (zr36060_codecs == MAX_CODECS) { - dprintk(1, - KERN_ERR "zr36060: Can't attach more codecs!\n"); + pr_err("zr36060: Can't attach more codecs!\n"); return -ENOSPC; } //mem structure init From patchwork Mon Sep 21 10:19:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789121 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 492D659D for ; Mon, 21 Sep 2020 10:23:35 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2A2A320EDD for ; Mon, 21 Sep 2020 10:23:35 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="j1b3of5h" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726831AbgIUKUt (ORCPT ); Mon, 21 Sep 2020 06:20:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59034 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726814AbgIUKUs (ORCPT ); Mon, 21 Sep 2020 06:20:48 -0400 Received: from mail-wm1-x344.google.com (mail-wm1-x344.google.com [IPv6:2a00:1450:4864:20::344]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 736D7C0613D5 for ; Mon, 21 Sep 2020 03:20:42 -0700 (PDT) Received: by mail-wm1-x344.google.com with SMTP id q9so11566177wmj.2 for ; Mon, 21 Sep 2020 03:20:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=hrN3Tazs/CNvILE5Bj2raDzS8EMF0Eei2YZ/frmZsTs=; b=j1b3of5hWSLdhH7uMP0cnSDMUCCK9GHQoWeW933WF24UvLG10n9eZJyyCCiFjvy23L DzYGssX3rxCzRNxlfbtomUWVhwL+RAduaO7DUU8d6beNjROvb3NmwHPQGGhVJidWKXbL ws07Klo5s51H6WpjISDCqtyhyZQW/ndgKy41fTPqY9hf9CGGuXRx9eMn2VvvMmSEly2C SsJCwy6cFIByEOtcr1EwgTa3fU89ekIAWKHaOuLIoHhc1ECHBeGO4J2E8Lu9nqSLftDu slV24OpAv92KbjWTz3iR63DnaUDh3O7IaOG9vdXCZfNXNoneZWqAjBbWFfCAH1i638K2 7rgg== 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; bh=hrN3Tazs/CNvILE5Bj2raDzS8EMF0Eei2YZ/frmZsTs=; b=q3E+716NNkGN/zzo2yUtkKp2BcofSwdXbhzVQOfW/VILb5aC8eknplCCTNhj3i95lC 3U4DCmhYKhsGeToqL6Osp0FP72hwvv9VBe6nA84BJZhVYfcgSSwnD1Bm7TjhHBx5K8dL sun81XJ7JcXTWTf1HHGXmPDArnsOh+eihEfwFRlr9H/VJCFyVEmhpOq1xUNaJvfbn8Wk CVHbAk4jmfRBQXBMFCNznzzw2IohMbzF9tHZsZNUJgEkWYfhdypM8T1X2alg2SlkaG+8 r3qm116y0S4tk8tRkyFW1buydi9sM6pZJSjXxEMQ4VlzFa0Y28kmu+30zjL0/mzQK0JP Y3MQ== X-Gm-Message-State: AOAM531ECDypb5uSAK4mObkxDPsCE62PQYTh4gS0hQbqe+DNaoZMZIj/ HrUTAk1Wrol4LvGdNAQL+HSckg== X-Google-Smtp-Source: ABdhPJwJvmN7W2B1ePJdoM966nluFYhO59lhl4DS5OGBPJwWsiseNY+NXKBLe6Knq9Y3M8Q4YoDP3g== X-Received: by 2002:a1c:bdc4:: with SMTP id n187mr29264694wmf.109.1600683641133; Mon, 21 Sep 2020 03:20:41 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.20.40 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:20:40 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 09/49] staging: media: zoran: convert dprintk warn Date: Mon, 21 Sep 2020 10:19:44 +0000 Message-Id: <1600683624-5863-10-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org This patch convert dprintk(warn) to pci_warn. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran_card.c | 18 ++++---------- drivers/staging/media/zoran/zoran_device.c | 13 +++------- drivers/staging/media/zoran/zoran_driver.c | 29 +++++----------------- 3 files changed, 14 insertions(+), 46 deletions(-) diff --git a/drivers/staging/media/zoran/zoran_card.c b/drivers/staging/media/zoran/zoran_card.c index 006f209c40ea..26f58e687333 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -933,19 +933,14 @@ static int zr36057_init(struct zoran *zr) zr->timing = zr->card.tvn[2]; } if (!zr->timing) { - dprintk(1, - KERN_WARNING - "%s: %s - default TV standard not supported by hardware. PAL will be used.\n", - ZR_DEVNAME(zr), __func__); + pci_warn(zr->pci_dev, "%s - default TV standard not supported by hardware. PAL will be used.\n", __func__); zr->norm = V4L2_STD_PAL; zr->timing = zr->card.tvn[0]; } if (default_input > zr->card.inputs - 1) { - dprintk(1, - KERN_WARNING - "%s: default_input value %d out of range (0-%d)\n", - ZR_DEVNAME(zr), default_input, zr->card.inputs - 1); + pci_warn(zr->pci_dev, "default_input value %d out of range (0-%d)\n", + default_input, zr->card.inputs - 1); default_input = 0; } zr->input = default_input; @@ -1369,11 +1364,8 @@ static int __init zoran_init(void) } /* some mainboards might not do PCI-PCI data transfer well */ - if (pci_pci_problems & (PCIPCI_FAIL | PCIAGP_FAIL | PCIPCI_ALIMAGIK)) { - dprintk(1, - KERN_WARNING - "%s: chipset does not support reliable PCI-PCI DMA\n", ZORAN_NAME); - } + if (pci_pci_problems & (PCIPCI_FAIL | PCIAGP_FAIL | PCIPCI_ALIMAGIK)) + pr_warn("%s: chipset does not support reliable PCI-PCI DMA\n", ZORAN_NAME); res = pci_register_driver(&zoran_driver); if (res) { diff --git a/drivers/staging/media/zoran/zoran_device.c b/drivers/staging/media/zoran/zoran_device.c index d7c85787e9c0..a04fbae30745 100644 --- a/drivers/staging/media/zoran/zoran_device.c +++ b/drivers/staging/media/zoran/zoran_device.c @@ -547,10 +547,7 @@ void zr36057_set_memgrab(struct zoran *zr, int mode) * will be stuck at 1 until capturing is turned back on. */ if (btread(ZR36057_VSSFGR) & ZR36057_VSSFGR_SnapShot) - dprintk(1, - KERN_WARNING - "%s: zr36057_set_memgrab(1) with SnapShot on!?\n", - ZR_DEVNAME(zr)); + pci_warn(zr->pci_dev, "zr36057_set_memgrab(1) with SnapShot on!?\n"); /* switch on VSync interrupts */ btwrite(IRQ_MASK, ZR36057_ISR); // Clear Interrupts @@ -1284,10 +1281,7 @@ irqreturn_t zoran_irq(int irq, void *dev_id) if (zr->v4l_memgrab_active) { /* A lot more checks should be here ... */ if ((btread(ZR36057_VSSFGR) & ZR36057_VSSFGR_SnapShot) == 0) - dprintk(1, - KERN_WARNING - "%s: BuzIRQ with SnapShot off ???\n", - ZR_DEVNAME(zr)); + pci_warn(zr->pci_dev, "BuzIRQ with SnapShot off ???\n"); if (zr->v4l_grab_frame != NO_GRAB_ACTIVE) { /* There is a grab on a frame going on, check if it has finished */ @@ -1406,8 +1400,7 @@ irqreturn_t zoran_irq(int irq, void *dev_id) count++; if (count > 10) { - dprintk(2, KERN_WARNING "%s: irq loop %d\n", - ZR_DEVNAME(zr), count); + pci_warn(zr->pci_dev, "irq loop %d\n", count); if (count > 20) { btand(~ZR36057_ICR_IntPinEn, ZR36057_ICR); pci_err(zr->pci_dev, "IRQ lockup, cleared int mask\n"); diff --git a/drivers/staging/media/zoran/zoran_driver.c b/drivers/staging/media/zoran/zoran_driver.c index 4082d5e53a24..3b061c3e4a82 100644 --- a/drivers/staging/media/zoran/zoran_driver.c +++ b/drivers/staging/media/zoran/zoran_driver.c @@ -210,10 +210,7 @@ static int v4l_fbuffer_alloc(struct zoran_fh *fh) for (i = 0; i < fh->buffers.num_buffers; i++) { if (fh->buffers.buffer[i].v4l.fbuffer) - dprintk(2, - KERN_WARNING - "%s: %s - buffer %d already allocated!?\n", - ZR_DEVNAME(zr), __func__, i); + pci_warn(zr->pci_dev, "%s - buffer %d already allocated!?\n", __func__, i); //udelay(20); mem = kmalloc(fh->buffers.buffer_size, GFP_KERNEL | __GFP_NOWARN); @@ -300,10 +297,7 @@ static int jpg_fbuffer_alloc(struct zoran_fh *fh) for (i = 0; i < fh->buffers.num_buffers; i++) { if (fh->buffers.buffer[i].jpg.frag_tab) - dprintk(2, - KERN_WARNING - "%s: %s - buffer %d already allocated!?\n", - ZR_DEVNAME(zr), __func__, i); + pci_warn(zr->pci_dev, "%s - buffer %d already allocated!?\n", __func__, i); /* Allocate fragment table for this buffer */ @@ -490,10 +484,7 @@ static int zoran_v4l_queue_frame(struct zoran_fh *fh, int num) res = -EBUSY; /* what are you doing? */ break; case BUZ_STATE_DONE: - dprintk(2, - KERN_WARNING - "%s: %s - queueing buffer %d in state DONE!?\n", - ZR_DEVNAME(zr), __func__, num); + pci_warn(zr->pci_dev, "%s - queueing buffer %d in state DONE!?\n", __func__, num); /* fallthrough */ case BUZ_STATE_USER: /* since there is at least one unused buffer there's room for at least @@ -627,10 +618,7 @@ static int zoran_jpg_queue_frame(struct zoran_fh *fh, int num, if (!res) { switch (zr->jpg_buffers.buffer[num].state) { case BUZ_STATE_DONE: - dprintk(2, - KERN_WARNING - "%s: %s - queuing frame in BUZ_STATE_DONE state!?\n", - ZR_DEVNAME(zr), __func__); + pci_warn(zr->pci_dev, "%s - queuing frame in BUZ_STATE_DONE state!?\n", __func__); /* fallthrough */ case BUZ_STATE_USER: /* since there is at least one unused buffer there's room for at @@ -1330,10 +1318,7 @@ static int zoran_set_input(struct zoran *zr, int input) if (zr->v4l_buffers.active != ZORAN_FREE || zr->jpg_buffers.active != ZORAN_FREE) { - dprintk(1, - KERN_WARNING - "%s: %s called while in playback/capture mode\n", - ZR_DEVNAME(zr), __func__); + pci_warn(zr->pci_dev, "%s called while in playback/capture mode\n", __func__); return -EBUSY; } @@ -2285,9 +2270,7 @@ static int zoran_s_jpegcomp(struct file *file, void *__fh, settings.jpg_comp = *params; if (fh->buffers.active != ZORAN_FREE) { - dprintk(1, KERN_WARNING - "%s: VIDIOC_S_JPEGCOMP called while in playback/capture mode\n", - ZR_DEVNAME(zr)); + pci_warn(zr->pci_dev, "VIDIOC_S_JPEGCOMP called while in playback/capture mode\n"); res = -EBUSY; return res; } From patchwork Mon Sep 21 10:19:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789129 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 1A28F6CA for ; Mon, 21 Sep 2020 10:24:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id DA3B220EDD for ; Mon, 21 Sep 2020 10:24:00 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="slyncmIC" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726832AbgIUKXy (ORCPT ); Mon, 21 Sep 2020 06:23:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59038 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726820AbgIUKUs (ORCPT ); Mon, 21 Sep 2020 06:20:48 -0400 Received: from mail-wm1-x341.google.com (mail-wm1-x341.google.com [IPv6:2a00:1450:4864:20::341]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C0DCFC0613D6 for ; Mon, 21 Sep 2020 03:20:43 -0700 (PDT) Received: by mail-wm1-x341.google.com with SMTP id l9so12023355wme.3 for ; Mon, 21 Sep 2020 03:20:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=XQtRtjHSNQiSv0g3mZwkcnE0Fkjc1fIWl4XCgS/r66c=; b=slyncmICmXdEhhWYEdsc+ean+2FXOU4MeBJKJmPo2//+IaYRB3AfzhfeHPRPoYmjcU /rK6AcQZekKH1tayoc7buUtGimhtDhst9KvohiUoWsxOYew2qxZKBurKJ6n8guxtd/Gm jsCVWoymfh3+RcpdH9ybo64Lr5V3alaPCfxDi3BVTmwrfWi7toQhMnjWq8+0K0mYpOT7 QP8kd9PMMb/Zff/N3U8eLFvWZnubKaM4LRKIdxFqb8WjXuX3eQxCGBPOPJFXS4scOKQ6 TBfMIbhGnuIeNHt578xdco7ka9XxF/X+NEfLiGkbz1J6+Oa88foumPYueZhAR/jNPAxi cv1Q== 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; bh=XQtRtjHSNQiSv0g3mZwkcnE0Fkjc1fIWl4XCgS/r66c=; b=fhvK0Qvc4EdyqqSajl8/ukcMxyEZxbrGasWLNPBhRIWqje7DiHsQstvU4kS19DYMVO H7BZLwT79u9uB0tH2Uk+s89fneqU1J351FKigiWbshWWNidyO91lgiIs00s++yEj0FxJ QmCMoh7rE+KOwbv8ZOv/HWqMtdAbw584GvNx/K7yS2vpgoUf5/yoy/foDjrH9VYIgJhd udV5vs/m4rVT5f6wjqrv/azsNPRFtE9paLgbkcTLpq1OBplIsDYT7KLWnfB2KXmyHJu+ 07Zm7E5mx/E5y7jcEUJdxNPPL8qB7f8mCSmM/AOS36XFBCNocMhiBAugSW6EOXxiuTvt oyjA== X-Gm-Message-State: AOAM533pR1/Bf+sA1ZFkjG0mqLcKn7klSJ2AOV48XUUW+PyLG6dphphT HMqEbN5jr9RTyb26oyRMcBid5w== X-Google-Smtp-Source: ABdhPJzLqCAqD/VEfG70gkysoerYVRtzTxtVm9b+0uuTk5ona1L4qr25Ge+YWXB4ngJw2k5ewFF6kQ== X-Received: by 2002:a1c:6187:: with SMTP id v129mr29087223wmb.35.1600683642386; Mon, 21 Sep 2020 03:20:42 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.20.41 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:20:41 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 10/49] staging: media: zoran: convert dprintk info to pci_info Date: Mon, 21 Sep 2020 10:19:45 +0000 Message-Id: <1600683624-5863-11-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org This patch convert dprintk(info) to pci_info (or pci_dbg if the message is not important). Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran_card.c | 46 +++++++--------------- drivers/staging/media/zoran/zoran_device.c | 27 ++++--------- drivers/staging/media/zoran/zoran_driver.c | 34 ++++++---------- 3 files changed, 36 insertions(+), 71 deletions(-) diff --git a/drivers/staging/media/zoran/zoran_card.c b/drivers/staging/media/zoran/zoran_card.c index 26f58e687333..fd633265761c 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -887,9 +887,9 @@ static void test_interrupts(struct zoran *zr) btwrite(0, ZR36057_ICR); btwrite(0x78000000, ZR36057_ISR); zr->testing = 0; - dprintk(5, KERN_INFO "%s: Testing interrupts...\n", ZR_DEVNAME(zr)); + pci_info(zr->pci_dev, "Testing interrupts...\n"); if (timeout) - dprintk(1, ": time spent: %d\n", 1 * HZ - timeout); + pci_info(zr->pci_dev, ": time spent: %d\n", 1 * HZ - timeout); if (zr36067_debug > 1) print_interrupts(zr); btwrite(icr, ZR36057_ICR); @@ -899,10 +899,7 @@ static int zr36057_init(struct zoran *zr) { int j, err; - dprintk(1, - KERN_INFO - "%s: %s - initializing card[%d], zr=%p\n", - ZR_DEVNAME(zr), __func__, zr->id, zr); + pci_info(zr->pci_dev, "initializing card[%d]\n", zr->id); /* default setup of all parameters which will persist between opens */ zr->user = 0; @@ -1134,18 +1131,12 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) goto zr_unreg; zr->revision = zr->pci_dev->revision; - dprintk(1, - KERN_INFO - "%s: Zoran ZR360%c7 (rev %d), irq: %d, memory: 0x%08llx\n", - ZR_DEVNAME(zr), zr->revision < 2 ? '5' : '6', zr->revision, - zr->pci_dev->irq, (uint64_t)pci_resource_start(zr->pci_dev, 0)); - if (zr->revision >= 2) { - dprintk(1, - KERN_INFO - "%s: Subsystem vendor=0x%04x id=0x%04x\n", - ZR_DEVNAME(zr), zr->pci_dev->subsystem_vendor, - zr->pci_dev->subsystem_device); - } + pci_info(zr->pci_dev, "Zoran ZR360%c7 (rev %d), irq: %d, memory: 0x%08llx\n", + zr->revision < 2 ? '5' : '6', zr->revision, + zr->pci_dev->irq, (uint64_t)pci_resource_start(zr->pci_dev, 0)); + if (zr->revision >= 2) + pci_info(zr->pci_dev, "Subsystem vendor=0x%04x id=0x%04x\n", + zr->pci_dev->subsystem_vendor, zr->pci_dev->subsystem_device); /* Use auto-detected card type? */ if (card[nr] == -1) { @@ -1208,14 +1199,13 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) &latency); need_latency = zr->revision > 1 ? 32 : 48; if (latency != need_latency) { - dprintk(2, KERN_INFO "%s: Changing PCI latency from %d to %d\n", - ZR_DEVNAME(zr), latency, need_latency); + pci_info(zr->pci_dev, "Changing PCI latency from %d to %d\n", latency, need_latency); pci_write_config_byte(zr->pci_dev, PCI_LATENCY_TIMER, need_latency); } zr36057_restart(zr); /* i2c */ - dprintk(2, KERN_INFO "%s: Initializing i2c bus...\n", ZR_DEVNAME(zr)); + pci_info(zr->pci_dev, "Initializing i2c bus...\n"); if (zoran_register_i2c(zr) < 0) { pci_err(pdev, "%s - can't initialize i2c bus\n", __func__); @@ -1229,7 +1219,7 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) zr->encoder = v4l2_i2c_new_subdev(&zr->v4l2_dev, &zr->i2c_adapter, zr->card.i2c_encoder, 0, zr->card.addrs_encoder); - dprintk(2, KERN_INFO "%s: Initializing videocodec bus...\n", ZR_DEVNAME(zr)); + pci_info(zr->pci_dev, "Initializing videocodec bus...\n"); if (zr->card.video_codec) { codec_name = codecid_to_modulename(zr->card.video_codec); @@ -1285,9 +1275,7 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) /* take care of Natoma chipset and a revision 1 zr36057 */ if ((pci_pci_problems & PCIPCI_NATOMA) && zr->revision <= 1) { zr->jpg_buffers.need_contiguous = 1; - dprintk(1, KERN_INFO - "%s: ZR36057/Natoma bug, max. buffer size is 128K\n", - ZR_DEVNAME(zr)); + pci_info(zr->pci_dev, "ZR36057/Natoma bug, max. buffer size is 128K\n"); } if (zr36057_init(zr) < 0) @@ -1356,12 +1344,8 @@ static int __init zoran_init(void) if (jpg_bufsize > (512 * 1024)) jpg_bufsize = 512 * 1024; /* Use parameter for vidmem or try to find a video card */ - if (vidmem) { - dprintk(1, - KERN_INFO - "%s: Using supplied video memory base address @ 0x%lx\n", - ZORAN_NAME, vidmem); - } + if (vidmem) + pr_info("%s: Using supplied video memory base address @ 0x%lx\n", ZORAN_NAME, vidmem); /* some mainboards might not do PCI-PCI data transfer well */ if (pci_pci_problems & (PCIPCI_FAIL | PCIAGP_FAIL | PCIPCI_ALIMAGIK)) diff --git a/drivers/staging/media/zoran/zoran_device.c b/drivers/staging/media/zoran/zoran_device.c index a04fbae30745..1f625e1e8477 100644 --- a/drivers/staging/media/zoran/zoran_device.c +++ b/drivers/staging/media/zoran/zoran_device.c @@ -118,8 +118,7 @@ int post_office_wait(struct zoran *zr) } if ((por & ZR36057_POR_POTime) && !zr->card.gws_not_connected) { /* In LML33/BUZ \GWS line is not connected, so it has always timeout set */ - dprintk(1, KERN_INFO "%s: pop timeout %08x\n", ZR_DEVNAME(zr), - por); + pci_info(zr->pci_dev, "pop timeout %08x\n", por); return -1; } @@ -218,16 +217,10 @@ void jpeg_codec_sleep(struct zoran *zr, int sleep) { GPIO(zr, zr->card.gpio[ZR_GPIO_JPEG_SLEEP], !sleep); if (!sleep) { - dprintk(3, - KERN_INFO - "%s: %s() - wake GPIO=0x%08x\n", - ZR_DEVNAME(zr), __func__, btread(ZR36057_GPPGCR1)); + pci_dbg(zr->pci_dev, "%s() - wake GPIO=0x%08x\n", __func__, btread(ZR36057_GPPGCR1)); udelay(500); } else { - dprintk(3, - KERN_INFO - "%s: %s() - sleep GPIO=0x%08x\n", - ZR_DEVNAME(zr), __func__, btread(ZR36057_GPPGCR1)); + pci_dbg(zr->pci_dev, "%s() - sleep GPIO=0x%08x\n", __func__, btread(ZR36057_GPPGCR1)); udelay(2); } } @@ -309,8 +302,7 @@ static void zr36057_set_vfe(struct zoran *zr, int video_width, int video_height, Wa = tvn->Wa; Ha = tvn->Ha; - dprintk(2, KERN_INFO "%s: set_vfe() - width = %d, height = %d\n", - ZR_DEVNAME(zr), video_width, video_height); + pci_info(zr->pci_dev, "set_vfe() - width = %d, height = %d\n", video_width, video_height); if (video_width < BUZ_MIN_WIDTH || video_height < BUZ_MIN_HEIGHT || @@ -940,8 +932,7 @@ void zr36057_enable_jpg(struct zoran *zr, enum zoran_codec_mode mode) zr36057_set_jpg(zr, mode); // \P_Reset, ... Video param, FIFO clear_interrupt_counters(zr); - dprintk(2, KERN_INFO "%s: enable_jpg(MOTION_COMPRESS)\n", - ZR_DEVNAME(zr)); + pci_info(zr->pci_dev, "enable_jpg(MOTION_COMPRESS)\n"); break; } @@ -968,8 +959,7 @@ void zr36057_enable_jpg(struct zoran *zr, enum zoran_codec_mode mode) zr36057_set_jpg(zr, mode); // \P_Reset, ... Video param, FIFO clear_interrupt_counters(zr); - dprintk(2, KERN_INFO "%s: enable_jpg(MOTION_DECOMPRESS)\n", - ZR_DEVNAME(zr)); + pci_info(zr->pci_dev, "enable_jpg(MOTION_DECOMPRESS)\n"); break; case BUZ_MODE_IDLE: @@ -994,7 +984,7 @@ void zr36057_enable_jpg(struct zoran *zr, enum zoran_codec_mode mode) decoder_call(zr, video, s_stream, 1); encoder_call(zr, video, s_routing, 0, 0, 0); - dprintk(2, KERN_INFO "%s: enable_jpg(IDLE)\n", ZR_DEVNAME(zr)); + pci_info(zr->pci_dev, "enable_jpg(IDLE)\n"); break; } } @@ -1112,8 +1102,7 @@ static void zoran_restart(struct zoran *zr) jpeg_start(zr); if (zr->num_errors <= 8) - dprintk(2, KERN_INFO "%s: Restart\n", - ZR_DEVNAME(zr)); + pci_info(zr->pci_dev, "Restart\n"); zr->JPEG_missed = 0; zr->JPEG_error = 2; diff --git a/drivers/staging/media/zoran/zoran_driver.c b/drivers/staging/media/zoran/zoran_driver.c index 3b061c3e4a82..02c1f69d073e 100644 --- a/drivers/staging/media/zoran/zoran_driver.c +++ b/drivers/staging/media/zoran/zoran_driver.c @@ -225,11 +225,8 @@ static int v4l_fbuffer_alloc(struct zoran_fh *fh) for (off = 0; off < fh->buffers.buffer_size; off += PAGE_SIZE) SetPageReserved(virt_to_page(mem + off)); - dprintk(4, - KERN_INFO - "%s: %s - V4L frame %d mem %p (bus: 0x%llx)\n", - ZR_DEVNAME(zr), __func__, i, mem, - (unsigned long long)virt_to_bus(mem)); + pci_info(zr->pci_dev, "%s - V4L frame %d mem %p (bus: 0x%llx)\n", __func__, i, mem, + (unsigned long long)virt_to_bus(mem)); } fh->buffers.allocated = 1; @@ -244,7 +241,7 @@ static void v4l_fbuffer_free(struct zoran_fh *fh) int i, off; unsigned char *mem; - dprintk(4, KERN_INFO "%s: %s\n", ZR_DEVNAME(zr), __func__); + pci_dbg(zr->pci_dev, "%s\n", __func__); for (i = 0; i < fh->buffers.num_buffers; i++) { if (!fh->buffers.buffer[i].v4l.fbuffer) @@ -820,8 +817,8 @@ static int zoran_open(struct file *file) struct zoran_fh *fh; int res, first_open = 0; - dprintk(2, KERN_INFO "%s: %s(%s, pid=[%d]), users(-)=%d\n", - ZR_DEVNAME(zr), __func__, current->comm, task_pid_nr(current), zr->user + 1); + pci_info(zr->pci_dev, "%s(%s, pid=[%d]), users(-)=%d\n", __func__, current->comm, + task_pid_nr(current), zr->user + 1); mutex_lock(&zr->lock); @@ -876,8 +873,7 @@ static int zoran_open(struct file *file) fail_unlock: mutex_unlock(&zr->lock); - dprintk(2, KERN_INFO "%s: open failed (%d), users(-)=%d\n", - ZR_DEVNAME(zr), res, zr->user); + pci_info(zr->pci_dev, "open failed (%d), users(-)=%d\n", res, zr->user); return res; } @@ -887,8 +883,8 @@ static int zoran_close(struct file *file) struct zoran_fh *fh = file->private_data; struct zoran *zr = fh->zr; - dprintk(2, KERN_INFO "%s: %s(%s, pid=[%d]), users(+)=%d\n", - ZR_DEVNAME(zr), __func__, current->comm, task_pid_nr(current), zr->user - 1); + pci_info(zr->pci_dev, "%s(%s, pid=[%d]), users(+)=%d\n", __func__, current->comm, + task_pid_nr(current), zr->user - 1); /* kernel locks (fs/device.c), so don't do that ourselves * (prevents deadlocks) */ @@ -933,7 +929,7 @@ static int zoran_close(struct file *file) kfree(fh->overlay_mask); kfree(fh); - dprintk(4, KERN_INFO "%s: %s done\n", ZR_DEVNAME(zr), __func__); + pci_dbg(zr->pci_dev, "%s done\n", __func__); return 0; } @@ -2381,8 +2377,7 @@ static void zoran_vm_close(struct vm_area_struct *vma) struct zoran *zr = fh->zr; int i; - dprintk(3, KERN_INFO "%s: %s - munmap(%s)\n", ZR_DEVNAME(zr), - __func__, mode_name(fh->map_mode)); + pci_info(zr->pci_dev, "%s - munmap(%s)\n", ZR_DEVNAME(zr), mode_name(fh->map_mode)); for (i = 0; i < fh->buffers.num_buffers; i++) { if (fh->buffers.buffer[i].map == map) @@ -2396,8 +2391,7 @@ static void zoran_vm_close(struct vm_area_struct *vma) return; } - dprintk(3, KERN_INFO "%s: %s - free %s buffers\n", ZR_DEVNAME(zr), - __func__, mode_name(fh->map_mode)); + pci_info(zr->pci_dev, "%s - free %s buffers\n", __func__, mode_name(fh->map_mode)); if (fh->map_mode == ZORAN_MAP_MODE_RAW) { if (fh->buffers.active != ZORAN_FREE) { @@ -2437,10 +2431,8 @@ static int zoran_mmap(struct file *file, struct vm_area_struct *vma) struct zoran_mapping *map; int res = 0; - dprintk(3, - KERN_INFO "%s: %s(%s) of 0x%08lx-0x%08lx (size=%lu)\n", - ZR_DEVNAME(zr), __func__, - mode_name(fh->map_mode), vma->vm_start, vma->vm_end, size); + pci_info(zr->pci_dev, "%s(%s) of 0x%08lx-0x%08lx (size=%lu)\n", __func__, + mode_name(fh->map_mode), vma->vm_start, vma->vm_end, size); if (!(vma->vm_flags & VM_SHARED) || !(vma->vm_flags & VM_READ) || !(vma->vm_flags & VM_WRITE)) { From patchwork Mon Sep 21 10:19:46 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789133 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 4B0B46CA for ; Mon, 21 Sep 2020 10:24:25 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2ACA42193E for ; Mon, 21 Sep 2020 10:24:25 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="ihhzXOQx" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726684AbgIUKYB (ORCPT ); Mon, 21 Sep 2020 06:24:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59036 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726817AbgIUKUs (ORCPT ); Mon, 21 Sep 2020 06:20:48 -0400 Received: from mail-wm1-x344.google.com (mail-wm1-x344.google.com [IPv6:2a00:1450:4864:20::344]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A6070C0613D9 for ; Mon, 21 Sep 2020 03:20:44 -0700 (PDT) Received: by mail-wm1-x344.google.com with SMTP id s13so11551822wmh.4 for ; Mon, 21 Sep 2020 03:20:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=psEAVLj+sH2AqoAHfj9DEEGhFTvZRUKNVBnToNLqBd0=; b=ihhzXOQxkEROGLDVgaZhfXhqylK69WyPOGFY/lWUQGQzcM/FpDD2hcr9pqKTswU2CR iNk1CSkYXR2TuJdCN+3naymh0SIlfnd5S5D3dFy6/fF3xdW/irQFhnTOpyXFGDXV2N4R cseIp6UiIjhKaP+njfPkd98w33P5oz3IPE5+MQmjepCEIcu3bu/wT15YwrsJ3S5bT2U8 qKot92KRw9gcc1wJbkLgtfkzxDHDLhwWn0c7mg+rhPfGdfeKVsdWRjuCrQbF6y4LkwZ1 ZvK90mGsFBEILQCpZbshtsRzKV17WHC7smkLjUugLHAvQG1tOYRD1DMnWQKwg3QqoVR/ +35w== 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; bh=psEAVLj+sH2AqoAHfj9DEEGhFTvZRUKNVBnToNLqBd0=; b=Nm5T7StpXZkeK0ibXiTClx3dtsP5G2cT6OyU7RcR/4UZ/2vC68cD6rCuPRzAGcUEZA Iwp07n3OBlMxnoxyi/KF4mdc1aGjXfuPsZPulTY5RXjcmHqOHhq4O+ZCBbhbk24BrnZ2 aw/+RSkb919H7IhSQSYoU9FJL2ifPjj1GvvKRnwI/51PrYVSF4c1AwAG3v9nUbcyihRF d0Uqv/0mgfGObVSnEs+jOrFadGiaydvLqGNt+hKnqKUGEdZuczXnyVD2yqEg36uSUpMy ITu0gbMBnIy1MKQlE+vSQXT8hrtLFaGXjFkkeMjgrHfoM5nX2J+pxJxHOcTP2vWe7fNL BW+g== X-Gm-Message-State: AOAM533A0BY5SCkUASkVL6UYzqof+hcZ2tC0qUEGK295EnQMzD5Qejmm 8OnzquCUbUOE8b2ObCbfQIJGsQ== X-Google-Smtp-Source: ABdhPJw1h5T5T9K5f3+6kx+h317+Hq1cVUPcP0ii3iKm1tSFevx0Vve5X0isQHnCkNWZ8ljZuhFeEw== X-Received: by 2002:a7b:c317:: with SMTP id k23mr28410922wmj.44.1600683643274; Mon, 21 Sep 2020 03:20:43 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.20.42 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:20:42 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 11/49] staging: media: zoran: convert dprintk debug Date: Mon, 21 Sep 2020 10:19:46 +0000 Message-Id: <1600683624-5863-12-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org This patch convert dprintk(debug) to pci_dbg. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran_card.c | 30 ++++++++-------------- drivers/staging/media/zoran/zoran_card.h | 6 ----- drivers/staging/media/zoran/zoran_device.c | 2 +- drivers/staging/media/zoran/zoran_driver.c | 28 ++++++++------------ 4 files changed, 21 insertions(+), 45 deletions(-) diff --git a/drivers/staging/media/zoran/zoran_card.c b/drivers/staging/media/zoran/zoran_card.c index fd633265761c..5a3fa5fe32b1 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -203,7 +203,7 @@ void zr36016_write(struct videocodec *codec, u16 reg, u32 val) static void dc10_init(struct zoran *zr) { - dprintk(3, KERN_DEBUG "%s: %s\n", ZR_DEVNAME(zr), __func__); + pci_dbg(zr->pci_dev, "%s\n", __func__); /* Pixel clock selection */ GPIO(zr, 4, 0); @@ -214,12 +214,12 @@ static void dc10_init(struct zoran *zr) static void dc10plus_init(struct zoran *zr) { - dprintk(3, KERN_DEBUG "%s: %s\n", ZR_DEVNAME(zr), __func__); + pci_dbg(zr->pci_dev, "%s\n", __func__); } static void buz_init(struct zoran *zr) { - dprintk(3, KERN_DEBUG "%s: %s\n", ZR_DEVNAME(zr), __func__); + pci_dbg(zr->pci_dev, "%s\n", __func__); /* some stuff from Iomega */ pci_write_config_dword(zr->pci_dev, 0xfc, 0x90680f15); @@ -229,7 +229,7 @@ static void buz_init(struct zoran *zr) static void lml33_init(struct zoran *zr) { - dprintk(3, KERN_DEBUG "%s: %s\n", ZR_DEVNAME(zr), __func__); + pci_dbg(zr->pci_dev, "%s\n", __func__); GPIO(zr, 2, 1); // Set Composite input/output } @@ -669,15 +669,11 @@ int zoran_check_jpg_settings(struct zoran *zr, struct zoran_jpg_settings *settin { int err = 0, err0 = 0; - dprintk(4, - KERN_DEBUG - "%s: %s - dec: %d, Hdcm: %d, Vdcm: %d, Tdcm: %d\n", - ZR_DEVNAME(zr), __func__, settings->decimation, settings->HorDcm, + pci_dbg(zr->pci_dev, "%s - dec: %d, Hdcm: %d, Vdcm: %d, Tdcm: %d\n", + __func__, settings->decimation, settings->HorDcm, settings->VerDcm, settings->TmpDcm); - dprintk(4, - KERN_DEBUG - "%s: %s - x: %d, y: %d, w: %d, y: %d\n", - ZR_DEVNAME(zr), __func__, settings->img_x, settings->img_y, + pci_dbg(zr->pci_dev, "%s - x: %d, y: %d, w: %d, y: %d\n", __func__, + settings->img_x, settings->img_y, settings->img_width, settings->img_height); /* Check decimation, set default values for decimation = 1, 2, 4 */ switch (settings->decimation) { @@ -707,10 +703,7 @@ int zoran_check_jpg_settings(struct zoran *zr, struct zoran_jpg_settings *settin case 4: if (zr->card.type == DC10_new) { - dprintk(1, - KERN_DEBUG - "%s: %s - HDec by 4 is not supported on the DC10\n", - ZR_DEVNAME(zr), __func__); + pci_dbg(zr->pci_dev, "%s - HDec by 4 is not supported on the DC10\n", __func__); err0++; break; } @@ -1151,10 +1144,7 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) pci_err(pdev, "Unknown card, try specifying card=X module parameter\n"); goto zr_unreg; } - dprintk(3, - KERN_DEBUG - "%s: %s() - card %s detected\n", - ZR_DEVNAME(zr), __func__, zoran_cards[card_num].name); + pci_info(zr->pci_dev, "%s() - card %s detected\n", __func__, zoran_cards[card_num].name); } else { card_num = card[nr]; if (card_num >= NUM_CARDS || card_num < 0) { diff --git a/drivers/staging/media/zoran/zoran_card.h b/drivers/staging/media/zoran/zoran_card.h index 4af8cb91d03a..8e0d634cb30f 100644 --- a/drivers/staging/media/zoran/zoran_card.h +++ b/drivers/staging/media/zoran/zoran_card.h @@ -14,12 +14,6 @@ extern int zr36067_debug; -#define dprintk(num, format, args...) \ - do { \ - if (zr36067_debug >= num) \ - printk(format, ##args); \ - } while (0) - /* Anybody who uses more than four? */ #define BUZ_MAX 4 diff --git a/drivers/staging/media/zoran/zoran_device.c b/drivers/staging/media/zoran/zoran_device.c index 1f625e1e8477..516a7f18ce7a 100644 --- a/drivers/staging/media/zoran/zoran_device.c +++ b/drivers/staging/media/zoran/zoran_device.c @@ -871,7 +871,7 @@ void jpeg_start(struct zoran *zr) set_frame(zr, 1); // /FRAME - dprintk(3, KERN_DEBUG "%s: jpeg_start\n", ZR_DEVNAME(zr)); + pci_dbg(zr->pci_dev, "jpeg_start\n"); } void zr36057_enable_jpg(struct zoran *zr, enum zoran_codec_mode mode) diff --git a/drivers/staging/media/zoran/zoran_driver.c b/drivers/staging/media/zoran/zoran_driver.c index 02c1f69d073e..2f6ef995927a 100644 --- a/drivers/staging/media/zoran/zoran_driver.c +++ b/drivers/staging/media/zoran/zoran_driver.c @@ -341,9 +341,7 @@ static int jpg_fbuffer_alloc(struct zoran_fh *fh) } } - dprintk(4, - KERN_DEBUG "%s: %s - %d KB allocated\n", - ZR_DEVNAME(zr), __func__, + pci_dbg(zr->pci_dev, "%s - %d KB allocated\n", __func__, (fh->buffers.num_buffers * fh->buffers.buffer_size) >> 10); fh->buffers.allocated = 1; @@ -360,7 +358,7 @@ static void jpg_fbuffer_free(struct zoran_fh *fh) __le32 frag_tab; struct zoran_buffer *buffer; - dprintk(4, KERN_DEBUG "%s: %s\n", ZR_DEVNAME(zr), __func__); + pci_dbg(zr->pci_dev, "%s\n", __func__); for (i = 0, buffer = &fh->buffers.buffer[0]; i < fh->buffers.num_buffers; i++, buffer++) { @@ -1185,10 +1183,7 @@ static int zoran_v4l2_buffer_status(struct zoran_fh *fh, } spin_lock_irqsave(&zr->spinlock, flags); - dprintk(3, - KERN_DEBUG - "%s: %s() - raw active=%c, buffer %d: state=%c, map=%c\n", - ZR_DEVNAME(zr), __func__, + pci_dbg(zr->pci_dev, "%s() - raw active=%c, buffer %d: state=%c, map=%c\n", __func__, "FAL"[fh->buffers.active], num, "UPMD"[zr->v4l_buffers.buffer[num].state], fh->buffers.buffer[num].map ? 'Y' : 'N'); @@ -1563,9 +1558,10 @@ static int zoran_s_fmt_vid_overlay(struct file *file, void *__fh, struct v4l2_format *fmt) { struct zoran_fh *fh = __fh; + struct zoran *zr = fh->zr; int res; - dprintk(3, "x=%d, y=%d, w=%d, h=%d, cnt=%d, map=0x%p\n", + pci_dbg(zr->pci_dev, "x=%d, y=%d, w=%d, h=%d, cnt=%d, map=0x%p\n", fmt->fmt.win.w.left, fmt->fmt.win.w.top, fmt->fmt.win.w.width, fmt->fmt.win.w.height, @@ -1586,7 +1582,7 @@ static int zoran_s_fmt_vid_out(struct file *file, void *__fh, struct v4l2_format struct zoran_jpg_settings settings; int res = 0; - dprintk(3, "size=%dx%d, fmt=0x%x (%4.4s)\n", + pci_dbg(zr->pci_dev, "size=%dx%d, fmt=0x%x (%4.4s)\n", fmt->fmt.pix.width, fmt->fmt.pix.height, fmt->fmt.pix.pixelformat, (char *)&printformat); @@ -2303,10 +2299,8 @@ static __poll_t zoran_poll(struct file *file, poll_table *wait) frame = zr->v4l_pend[zr->v4l_sync_tail & V4L_MASK_FRAME]; spin_lock_irqsave(&zr->spinlock, flags); - dprintk(3, - KERN_DEBUG - "%s: %s() raw - active=%c, sync_tail=%lu/%c, pend_tail=%lu, pend_head=%lu\n", - ZR_DEVNAME(zr), __func__, + pci_dbg(zr->pci_dev, "%s() raw - active=%c, sync_tail=%lu/%c, pend_tail=%lu, pend_head=%lu\n", + __func__, "FAL"[fh->buffers.active], zr->v4l_sync_tail, "UPMD"[zr->v4l_buffers.buffer[frame].state], zr->v4l_pend_tail, zr->v4l_pend_head); @@ -2325,10 +2319,8 @@ static __poll_t zoran_poll(struct file *file, poll_table *wait) frame = zr->jpg_pend[zr->jpg_que_tail & BUZ_MASK_FRAME]; spin_lock_irqsave(&zr->spinlock, flags); - dprintk(3, - KERN_DEBUG - "%s: %s() jpg - active=%c, que_tail=%lu/%c, que_head=%lu, dma=%lu/%lu\n", - ZR_DEVNAME(zr), __func__, + pci_dbg(zr->pci_dev, "%s() jpg - active=%c, que_tail=%lu/%c, que_head=%lu, dma=%lu/%lu\n", + __func__, "FAL"[fh->buffers.active], zr->jpg_que_tail, "UPMD"[zr->jpg_buffers.buffer[frame].state], zr->jpg_que_head, zr->jpg_dma_tail, zr->jpg_dma_head); From patchwork Mon Sep 21 10:19:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789125 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id BE1996CA for ; Mon, 21 Sep 2020 10:23:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A46FC205F4 for ; Mon, 21 Sep 2020 10:23:56 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="g2ZZiy2u" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727238AbgIUKXz (ORCPT ); Mon, 21 Sep 2020 06:23:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59046 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726821AbgIUKUs (ORCPT ); Mon, 21 Sep 2020 06:20:48 -0400 Received: from mail-wm1-x344.google.com (mail-wm1-x344.google.com [IPv6:2a00:1450:4864:20::344]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AF650C0613DB for ; Mon, 21 Sep 2020 03:20:45 -0700 (PDT) Received: by mail-wm1-x344.google.com with SMTP id e17so11564356wme.0 for ; Mon, 21 Sep 2020 03:20:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=3+BODOaAXA+uCGmzHO/lJ88Q7uOk7/VYMBsUUN6E7FI=; b=g2ZZiy2uI7gbXpoEi2F50flRdFq1ECigCJz6wdUdIQYHcawsArICTGRu5VXPUhOqxz BKklg6BeS6jJvIh+HoVfJXRi8BO/7K7HR8DMlVXNXZiaiTpd8Vf1g+VJUWo2dJNys2MP KfN6zqWB/n+twqGa3g2MQtq79oAG83WTdYf5fzoD57GbX5gkesP+a0Zyd67xb95IAMo6 xvWjKG8RsNkwGzxB/9ePE0g6f+Kp7UZVlgx/W4P925AP4tRS9nVSY8uJ6+r8NnWUnrxL KTrWooeGuI7+C4tZZ15K21pC+JofulEB+fYRSxWvKx4GuoWuqd9MMu1wTECKEvOturnL wzUg== 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; bh=3+BODOaAXA+uCGmzHO/lJ88Q7uOk7/VYMBsUUN6E7FI=; b=TNkqcSnQ8Cyj155b9rB+W9SnlINbsF8W8TNulnMI1KNigj5a23LhMqDGNlnRS6fBAo 8HlMWLf1MgPFf6IMPeO3QTdwFPvfU0zcLTDqwhTcqNLizxiasMK4J79jkQeuSER8ndDQ oI3PLAZy17DvpxCS7pGSi+zL0WzWDAxH22m8P2Sjf1NEIckMMEUWFbFT7prnbeSg63Ux 6EjekVKPfoSHbirf1v2EhnaHGaJMjkyKLN6AvujiVtowyFAcqZU8uXNLU3lpRwDUsW8G UTBI82JLHPEN8DEvQ4Un/OhF1ziytwMms+Iq8vLj8wp+C2yTsaHRoPPSzPNyGXb0S4oT DrGg== X-Gm-Message-State: AOAM531djTgMslJqwG6dppxAo7JLr8/jH49ntwKN97MVzXQHR7c5gK+r 9Dl1C3+H8joZCdP6i77ltvyuZw== X-Google-Smtp-Source: ABdhPJx/OW+rrphaBSknMg7GqCDSQ46jnMDP5ojIonXfLVvVb0RNJxHTiZB4zTGsRPyjTGtIWxph7w== X-Received: by 2002:a1c:4943:: with SMTP id w64mr28400063wma.62.1600683644388; Mon, 21 Sep 2020 03:20:44 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.20.43 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:20:43 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 12/49] staging: media: zoran: zoran_device.c: convert pr_x to pci_x Date: Mon, 21 Sep 2020 10:19:47 +0000 Message-Id: <1600683624-5863-13-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran_device.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/drivers/staging/media/zoran/zoran_device.c b/drivers/staging/media/zoran/zoran_device.c index 516a7f18ce7a..03ad3562a807 100644 --- a/drivers/staging/media/zoran/zoran_device.c +++ b/drivers/staging/media/zoran/zoran_device.c @@ -162,7 +162,7 @@ static void dump_guests(struct zoran *zr) for (i = 1; i < 8; i++) /* Don't read jpeg codec here */ guest[i] = post_office_read(zr, i, 0); - pr_info("%s: Guests: %*ph\n", ZR_DEVNAME(zr), 8, guest); + pci_info(zr->pci_dev, "Guests: %*ph\n", 8, guest); } } @@ -172,7 +172,7 @@ void detect_guest_activity(struct zoran *zr) ktime_t t0, t1; dump_guests(zr); - pr_info("%s: Detecting guests activity, please wait...\n", ZR_DEVNAME(zr)); + pci_info(zr->pci_dev, "Detecting guests activity, please wait...\n"); for (i = 1; i < 8; i++) /* Don't read jpeg codec here */ guest0[i] = guest[i] = post_office_read(zr, i, 0); @@ -198,15 +198,14 @@ void detect_guest_activity(struct zoran *zr) break; } - pr_info("%s: Guests: %*ph\n", ZR_DEVNAME(zr), 8, guest0); + pci_info(zr->pci_dev, "Guests: %*ph\n", 8, guest0); if (j == 0) { - pr_info("%s: No activity detected.\n", ZR_DEVNAME(zr)); + pci_info(zr->pci_dev, "No activity detected.\n"); return; } for (i = 0; i < j; i++) - pr_info("%s: %6d: %d => 0x%02x\n", ZR_DEVNAME(zr), - change[i][0], change[i][1], change[i][2]); + pci_info(zr->pci_dev, "%6d: %d => 0x%02x\n", change[i][0], change[i][1], change[i][2]); } /* From patchwork Mon Sep 21 10:19:48 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789127 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A3FED59D for ; Mon, 21 Sep 2020 10:23:58 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7E9A42193E for ; Mon, 21 Sep 2020 10:23:58 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="cl2IeTkO" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727248AbgIUKX4 (ORCPT ); Mon, 21 Sep 2020 06:23:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59048 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726822AbgIUKUs (ORCPT ); Mon, 21 Sep 2020 06:20:48 -0400 Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com [IPv6:2a00:1450:4864:20::336]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C2BFBC0613DC for ; Mon, 21 Sep 2020 03:20:46 -0700 (PDT) Received: by mail-wm1-x336.google.com with SMTP id z9so12016149wmk.1 for ; Mon, 21 Sep 2020 03:20:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=TIEqgyl+ADDMjFEaTAbzqzyE88oPhcPFCjvc5oofbcQ=; b=cl2IeTkOiCupJvlZaG/O8k0rtYcZl1U0/BOSTLDOYCY7xIRu30jRG9GqIbsxeXcljB MKvqFfRYL6NrVmW9hv3HOSZvGY84FPwOu6d+mTr6pva8jHGPWK+F8zqAITcCcic8RNcr mndJnmAPVL+mVgEr46+S8Zo19ywObUMECTUY1vbcP2mul78we6L1FRdj09xov5ERQidQ Ir+TMX7Kopxuc4oX1zgI5Hq8MoithDoxUOAdNEh+NugcQwZMkTe/CFKQpvrhKoElkogR 0ROt5mHgjvUXISFuhmIvwP6BfgFXMfQXVENOScU/Vsi5QncmPVovuMufm/LXh6pPi3Sx 5+vQ== 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; bh=TIEqgyl+ADDMjFEaTAbzqzyE88oPhcPFCjvc5oofbcQ=; b=h2KEQzsXFudSzMD78BXJ806OchwKqdt3hZEgErRvttU7/ojLlL9MHWJWKUhn8TmSF/ P76niAYwrgn+2tRr62+W042OQU2Hdpwt6LOm4h670lGSCoL242VHwj7VTbkK5/HsBZ+C RlNWEJ67L8yBcfXME+VnUQ7SYXx+Blca/ibhqmnPpb+TPKZEcpf7mvzfE4ltUaMgNjGs tP7Qvrr3e1nKqMvr2iSerMx8qZWdSn7mRBN0apM+2Dz4+tJKwr9GQ8F/WhFSLhvtF7Fy UWCM/jSjHX8WbQeGsy+/4FAafYkNGZvD7YG6pLBE3kwc/Iu2yMjzDuw7tA66VYFrG4ns T4DQ== X-Gm-Message-State: AOAM533cw0CilO5+PBI7KiEmuu3IBPugAA/jVc0OXy+YYwtCZtR18Iv+ Vg3YQNg5Fzk8n9Wpcd4GXis6aA== X-Google-Smtp-Source: ABdhPJxDHJykzwRYiaONPu1NNXHO6hrwhRomAUY0bJDEQg8n6PANH8+pU3cClKrbweUwkGHXiWIpBg== X-Received: by 2002:a1c:800f:: with SMTP id b15mr28032317wmd.114.1600683645367; Mon, 21 Sep 2020 03:20:45 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.20.44 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:20:44 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 13/49] staging: media: zoran: remove proc_fs Date: Mon, 21 Sep 2020 10:19:48 +0000 Message-Id: <1600683624-5863-14-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org The zoran driver give some debug information in procfs, but this is not the right place. So let's remove them, we will use debugfs later. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/Makefile | 2 +- drivers/staging/media/zoran/zoran.h | 5 - drivers/staging/media/zoran/zoran_card.c | 6 - drivers/staging/media/zoran/zoran_device.c | 1 - drivers/staging/media/zoran/zoran_driver.c | 1 - drivers/staging/media/zoran/zoran_procfs.c | 213 --------------------- drivers/staging/media/zoran/zoran_procfs.h | 32 ---- 7 files changed, 1 insertion(+), 259 deletions(-) delete mode 100644 drivers/staging/media/zoran/zoran_procfs.c delete mode 100644 drivers/staging/media/zoran/zoran_procfs.h diff --git a/drivers/staging/media/zoran/Makefile b/drivers/staging/media/zoran/Makefile index 21ac29a71458..7023158e3892 100644 --- a/drivers/staging/media/zoran/Makefile +++ b/drivers/staging/media/zoran/Makefile @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-2.0 -zr36067-objs := zoran_procfs.o zoran_device.o \ +zr36067-objs := zoran_device.o \ zoran_driver.o zoran_card.o obj-$(CONFIG_VIDEO_ZORAN) += zr36067.o videocodec.o diff --git a/drivers/staging/media/zoran/zoran.h b/drivers/staging/media/zoran/zoran.h index eac8e49a080f..1b3eceaead5a 100644 --- a/drivers/staging/media/zoran/zoran.h +++ b/drivers/staging/media/zoran/zoran.h @@ -346,11 +346,6 @@ struct zoran { struct zoran_buffer_col jpg_buffers; /* MJPEG buffers' info */ /* Additional stuff for testing */ -#ifdef CONFIG_PROC_FS - struct proc_dir_entry *zoran_proc; -#else - void *zoran_proc; -#endif int testing; int jpeg_error; int intr_counter_GIRQ1; diff --git a/drivers/staging/media/zoran/zoran_card.c b/drivers/staging/media/zoran/zoran_card.c index 5a3fa5fe32b1..02af426cf94e 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -18,7 +18,6 @@ #include #include -#include #include #include #include @@ -38,7 +37,6 @@ #include "zoran.h" #include "zoran_card.h" #include "zoran_device.h" -#include "zoran_procfs.h" extern const struct zoran_format zoran_formats[]; @@ -973,7 +971,6 @@ static int zr36057_init(struct zoran *zr) encoder_call(zr, video, s_routing, 2, 0, 0); } - zr->zoran_proc = NULL; zr->initialized = 1; return 0; @@ -1014,7 +1011,6 @@ static void zoran_remove(struct pci_dev *pdev) free_irq(zr->pci_dev->irq, zr); /* unmap and free memory */ kfree(zr->stat_com); - zoran_proc_cleanup(zr); iounmap(zr->zr36057_mem); pci_disable_device(zr->pci_dev); video_unregister_device(zr->video_dev); @@ -1271,8 +1267,6 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) if (zr36057_init(zr) < 0) goto zr_detach_vfe; - zoran_proc_init(zr); - return 0; zr_detach_vfe: diff --git a/drivers/staging/media/zoran/zoran_device.c b/drivers/staging/media/zoran/zoran_device.c index 03ad3562a807..0fb65fa4a3dd 100644 --- a/drivers/staging/media/zoran/zoran_device.c +++ b/drivers/staging/media/zoran/zoran_device.c @@ -17,7 +17,6 @@ #include #include -#include #include #include #include diff --git a/drivers/staging/media/zoran/zoran_driver.c b/drivers/staging/media/zoran/zoran_driver.c index 2f6ef995927a..31ed36906204 100644 --- a/drivers/staging/media/zoran/zoran_driver.c +++ b/drivers/staging/media/zoran/zoran_driver.c @@ -53,7 +53,6 @@ #include #include #include -#include #include #include "zoran.h" diff --git a/drivers/staging/media/zoran/zoran_procfs.c b/drivers/staging/media/zoran/zoran_procfs.c deleted file mode 100644 index 98f9e0103d83..000000000000 --- a/drivers/staging/media/zoran/zoran_procfs.c +++ /dev/null @@ -1,213 +0,0 @@ -/* - * Zoran zr36057/zr36067 PCI controller driver, for the - * Pinnacle/Miro DC10/DC10+/DC30/DC30+, Iomega Buz, Linux - * Media Labs LML33/LML33R10. - * - * This part handles the procFS entries (/proc/ZORAN[%d]) - * - * Copyright (C) 2000 Serguei Miridonov - * - * Currently maintained by: - * Ronald Bultje - * Laurent Pinchart - * Mailinglist - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include "videocodec.h" -#include "zoran.h" -#include "zoran_procfs.h" -#include "zoran_card.h" - -#ifdef CONFIG_PROC_FS -struct procfs_params_zr36067 { - char *name; - short reg; - u32 mask; - short bit; -}; - -static const struct procfs_params_zr36067 zr67[] = { - {"HSPol", 0x000, 1, 30}, - {"HStart", 0x000, 0x3ff, 10}, - {"HEnd", 0x000, 0x3ff, 0}, - - {"VSPol", 0x004, 1, 30}, - {"VStart", 0x004, 0x3ff, 10}, - {"VEnd", 0x004, 0x3ff, 0}, - - {"ExtFl", 0x008, 1, 26}, - {"TopField", 0x008, 1, 25}, - {"VCLKPol", 0x008, 1, 24}, - {"DupFld", 0x008, 1, 20}, - {"LittleEndian", 0x008, 1, 0}, - - {"HsyncStart", 0x10c, 0xffff, 16}, - {"LineTot", 0x10c, 0xffff, 0}, - - {"NAX", 0x110, 0xffff, 16}, - {"PAX", 0x110, 0xffff, 0}, - - {"NAY", 0x114, 0xffff, 16}, - {"PAY", 0x114, 0xffff, 0}, - - /* {"",,,}, */ - - {NULL, 0, 0, 0}, -}; - -static void setparam(struct zoran *zr, char *name, char *sval) -{ - int i = 0, reg0, reg, val; - - while (zr67[i].name) { - if (!strncmp(name, zr67[i].name, strlen(zr67[i].name))) { - reg = reg0 = btread(zr67[i].reg); - reg &= ~(zr67[i].mask << zr67[i].bit); - if (!isdigit(sval[0])) - break; - val = simple_strtoul(sval, NULL, 0); - if ((val & ~zr67[i].mask)) - break; - reg |= (val & zr67[i].mask) << zr67[i].bit; - dprintk(4, - KERN_INFO - "%s: setparam: setting ZR36067 register 0x%03x: 0x%08x=>0x%08x %s=%d\n", - ZR_DEVNAME(zr), zr67[i].reg, reg0, reg, - zr67[i].name, val); - btwrite(reg, zr67[i].reg); - break; - } - i++; - } -} - -static int zoran_show(struct seq_file *p, void *v) -{ - struct zoran *zr = p->private; - int i; - - seq_printf(p, "ZR36067 registers:\n"); - for (i = 0; i < 0x130; i += 16) - seq_printf(p, "%03X %08X %08X %08X %08X\n", i, - btread(i), btread(i + 4), btread(i + 8), btread(i + 12)); - return 0; -} - -static int zoran_open(struct inode *inode, struct file *file) -{ - struct zoran *data = PDE_DATA(inode); - - return single_open(file, zoran_show, data); -} - -static ssize_t zoran_write(struct file *file, const char __user *buffer, - size_t count, loff_t *ppos) -{ - struct zoran *zr = PDE_DATA(file_inode(file)); - char *string, *sp; - char *line, *ldelim, *varname, *svar, *tdelim; - - if (count > 32768) /* Stupidity filter */ - return -EINVAL; - - string = sp = vmalloc(count + 1); - if (!string) { - return -ENOMEM; - } - if (copy_from_user(string, buffer, count)) { - vfree(string); - return -EFAULT; - } - string[count] = 0; - dprintk(4, KERN_INFO "%s: write_proc: name=%pD count=%zu zr=%p\n", - ZR_DEVNAME(zr), file, count, zr); - ldelim = " \t\n"; - tdelim = "="; - line = strpbrk(sp, ldelim); - while (line) { - *line = 0; - svar = strpbrk(sp, tdelim); - if (svar) { - *svar = 0; - varname = sp; - svar++; - setparam(zr, varname, svar); - } - sp = line + 1; - line = strpbrk(sp, ldelim); - } - vfree(string); - - return count; -} - -static const struct file_operations zoran_operations = { - .owner = THIS_MODULE, - .open = zoran_open, - .read = seq_read, - .write = zoran_write, - .llseek = seq_lseek, - .release = single_release, -}; -#endif - -int zoran_proc_init(struct zoran *zr) -{ -#ifdef CONFIG_PROC_FS - char name[8]; - - snprintf(name, 7, "zoran%d", zr->id); - zr->zoran_proc = proc_create_data(name, 0, NULL, &zoran_operations, zr); - if (zr->zoran_proc) { - dprintk(2, - KERN_INFO - "%s: procfs entry /proc/%s allocated. data=%p\n", - ZR_DEVNAME(zr), name, zr); - } else { - pr_err("%s: Unable to initialise /proc/%s\n", ZR_DEVNAME(zr), name); - return 1; - } -#endif - return 0; -} - -void zoran_proc_cleanup(struct zoran *zr) -{ -#ifdef CONFIG_PROC_FS - char name[8]; - - snprintf(name, 7, "zoran%d", zr->id); - if (zr->zoran_proc) - remove_proc_entry(name, NULL); - zr->zoran_proc = NULL; -#endif -} diff --git a/drivers/staging/media/zoran/zoran_procfs.h b/drivers/staging/media/zoran/zoran_procfs.h deleted file mode 100644 index 0ac7cb0011f2..000000000000 --- a/drivers/staging/media/zoran/zoran_procfs.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Zoran zr36057/zr36067 PCI controller driver, for the - * Pinnacle/Miro DC10/DC10+/DC30/DC30+, Iomega Buz, Linux - * Media Labs LML33/LML33R10. - * - * This part handles card-specific data and detection - * - * Copyright (C) 2000 Serguei Miridonov - * - * Currently maintained by: - * Ronald Bultje - * Laurent Pinchart - * Mailinglist - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#ifndef __ZORAN_PROCFS_H__ -#define __ZORAN_PROCFS_H__ - -extern int zoran_proc_init(struct zoran *zr); -extern void zoran_proc_cleanup(struct zoran *zr); - -#endif /* __ZORAN_PROCFS_H__ */ From patchwork Mon Sep 21 10:19:49 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789131 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 3763A59D for ; Mon, 21 Sep 2020 10:24:24 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 15F0B207BC for ; Mon, 21 Sep 2020 10:24:24 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="HuZV4z/a" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726961AbgIUKYC (ORCPT ); Mon, 21 Sep 2020 06:24:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59052 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726824AbgIUKUs (ORCPT ); Mon, 21 Sep 2020 06:20:48 -0400 Received: from mail-wm1-x342.google.com (mail-wm1-x342.google.com [IPv6:2a00:1450:4864:20::342]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 80256C0613DE for ; Mon, 21 Sep 2020 03:20:47 -0700 (PDT) Received: by mail-wm1-x342.google.com with SMTP id e17so11564431wme.0 for ; Mon, 21 Sep 2020 03:20:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=d+cq9oU9Ma9PInvC8Tn3Mmy1QNY/EmZQ8V6ofB5bAgs=; b=HuZV4z/aX5wQwktepBLxIaWp4Yua59yuPHG4i1pRHYu5zWrhN6JbZt6XBHolFvoph1 AGJKWr3LxB2xHduo0DMKAlTMuLT6QQB4sxpj05Nk1jZcwHCqAXrMuTpLw6i7jmTww344 M7YshZYYHApDueyyL+n+z1JwwFJnMqsEbbITkEQf+TrFw7ktx4RMPXlZI6U/3qKVjkVE +OlMHSBX4sOClJoqZimOJvv2dtYQOuj97gkYJ/TU60o4YbzlJVMOPL12pSJ6q3GiTdFp aaRh7jtdDmnsG4ffnrCfP+gZz9TfavAGqvD3EMR4TB+nd6REzA3wUQJKFtB1Mls2Q/9a lZSA== 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; bh=d+cq9oU9Ma9PInvC8Tn3Mmy1QNY/EmZQ8V6ofB5bAgs=; b=SSlb7duEcqoYw81Fg0ApeClQCDbD5DQdqYgi6x6rXfFPcYetIh7EjA7UYs3zU4yZGl WI4tSUbhOiP5QeH+W3I6audXfwy+QTsNAO9YxvAVxP37y0LWOKK6lFfuZC/lJFdizetz 1UAjaGUvoMNp4RRc7OgNBX9L+ZM+K1lUCKSEqOXJXWPLA4gYwdtasK3YPUk9FtJF8+G+ xbNalj3LMqWh/Bwsi5Y7LQyqLWk8DF5hlQYFNGNFnS/bnuWdKpwWqugDAZmCC4atS9fB Ngy3wj61+vsVZHrYKHA8X2ciHIAQRbZbtVW5Rmc2+0BYyhS0dLqqCBacvfeDhx+AnPf2 qT7g== X-Gm-Message-State: AOAM533OC3sS+eCvFyoag05jnowDxl/Re6ifqgnLoAXGP52H08w7Henx mgSYKzw2/6OjZKIRXP+EvZ76zg== X-Google-Smtp-Source: ABdhPJzh07AdoC79L31ogzqdfpLSo8Vo99PgY8VHgWZwSZisNeA806uMbcHsomMmjB2Z+5Zfy8pl9A== X-Received: by 2002:a1c:4381:: with SMTP id q123mr28356129wma.108.1600683646253; Mon, 21 Sep 2020 03:20:46 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.20.45 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:20:45 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 14/49] staging: media: zoran: use VFL_TYPE_VIDEO Date: Mon, 21 Sep 2020 10:19:49 +0000 Message-Id: <1600683624-5863-15-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org The VFL_TYPE_GRABBER type was removed, so let's use the new type. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran_card.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/staging/media/zoran/zoran_card.c b/drivers/staging/media/zoran/zoran_card.c index 02af426cf94e..34841c12c224 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -957,7 +957,7 @@ static int zr36057_init(struct zoran *zr) * another day. */ zr->video_dev->vfl_dir = VFL_DIR_M2M; - err = video_register_device(zr->video_dev, VFL_TYPE_GRABBER, video_nr[zr->id]); + err = video_register_device(zr->video_dev, VFL_TYPE_VIDEO, video_nr[zr->id]); if (err < 0) goto exit_free; video_set_drvdata(zr->video_dev, zr); From patchwork Mon Sep 21 10:19:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789053 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 1375359D for ; Mon, 21 Sep 2020 10:20:59 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id EF8CF21D43 for ; Mon, 21 Sep 2020 10:20:58 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="I9A+ozHb" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726841AbgIUKUu (ORCPT ); Mon, 21 Sep 2020 06:20:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59048 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726828AbgIUKUs (ORCPT ); Mon, 21 Sep 2020 06:20:48 -0400 Received: from mail-wm1-x344.google.com (mail-wm1-x344.google.com [IPv6:2a00:1450:4864:20::344]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5A3E1C0613CF for ; Mon, 21 Sep 2020 03:20:48 -0700 (PDT) Received: by mail-wm1-x344.google.com with SMTP id s13so11552011wmh.4 for ; Mon, 21 Sep 2020 03:20:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=7hg4hkt0xKc+u3OMG6BJG4ab1Qlz/YPXWuTo+eYO1gA=; b=I9A+ozHbjj5JIKiaEWlISCq0H27Pvji2tPH9MWl/bJlBO/XHBY+M9xbil5zUFwme8r RopHc97gNGKXhpYPb2FtNbXH6YJVWex7q8flecpw+CgjEZoGmYW2dFWs3e28zn2RcW8W u0BqgrDL6rfkc5QCTixqui4vUZ9hvKw6oCy5eL5XvLxrzk7xqLe0X3DgrPbLTJ3OyJJu Da7lRhMZXm50cMBW5GS5yE2f5MzK/dNRVh8YnNwIuk8Zh2oa2OGELlicuASRb1HUGg1H xEiveZMZmDXPoJsly6mRcaMfuDoNyFsBP+Bft/kd1lhQArcgu6n7mKb+Ar0zuFmIopv+ vMiw== 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; bh=7hg4hkt0xKc+u3OMG6BJG4ab1Qlz/YPXWuTo+eYO1gA=; b=ATRbwVWlTQlryZx/6yIKI4InvjQFxnNuRDywUs/Y8tQDtNZVZRNiD9iRXP+Z2Ma1gT 9ZLDxLFotRZnt2QTjZN/sXsIg1W/NGV/2rGSOohOCjonCDoj5M9UU7hGbZ0ugG9IH3Jy cLSVjqRc1c7mwGsf5JbRR1VRh5KRb7m/IRKpmDadsgJPBma6+kuD2WrOew9BfXS7oNgU ec+lEP1NAJGD7UPyHxY9IWXLlRb2nGHt0a9PHpM4LpATgGj5L7oWGitDq+dInDzTPAqZ Sun8IZ40+tfdaj1oFR/O/URqG+5c6ZV0pS4GU8znj4O1PRf08OpC3KeIHHPTeQZOL44N 6Fyg== X-Gm-Message-State: AOAM531MbJ0G3VA4Q/cSCypfHXgZltqKwlIq2ztt11ofEKUwiE4IfVn0 T5o9VFK6AEBncr0fgaJMOygxuQ== X-Google-Smtp-Source: ABdhPJwJJAhkkByBZiA+u9aw9ZaL1S/4JSy8xlyXdLg6vqMKmmptWk2OW3Tnk20GbyYqMkxkQjAz+w== X-Received: by 2002:a7b:c4d9:: with SMTP id g25mr29201004wmk.15.1600683647080; Mon, 21 Sep 2020 03:20:47 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.20.46 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:20:46 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 15/49] staging: media: zoran: use v4l2_buffer_set_timestamp Date: Mon, 21 Sep 2020 10:19:50 +0000 Message-Id: <1600683624-5863-16-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org The ns_to_timeval function is removed, so replace it with v4l2_buffer_set_timestamp(). Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran_driver.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/staging/media/zoran/zoran_driver.c b/drivers/staging/media/zoran/zoran_driver.c index 31ed36906204..a996161cb276 100644 --- a/drivers/staging/media/zoran/zoran_driver.c +++ b/drivers/staging/media/zoran/zoran_driver.c @@ -1197,7 +1197,7 @@ static int zoran_v4l2_buffer_status(struct zoran_fh *fh, fh->buffers.buffer[num].state == BUZ_STATE_USER) { buf->sequence = fh->buffers.buffer[num].bs.seq; buf->flags |= V4L2_BUF_FLAG_DONE; - buf->timestamp = ns_to_timeval(fh->buffers.buffer[num].bs.ts); + v4l2_buffer_set_timestamp(buf, fh->buffers.buffer[num].bs.ts); } else { buf->flags |= V4L2_BUF_FLAG_QUEUED; } @@ -1228,7 +1228,7 @@ static int zoran_v4l2_buffer_status(struct zoran_fh *fh, if (fh->buffers.buffer[num].state == BUZ_STATE_DONE || fh->buffers.buffer[num].state == BUZ_STATE_USER) { buf->sequence = fh->buffers.buffer[num].bs.seq; - buf->timestamp = ns_to_timeval(fh->buffers.buffer[num].bs.ts); + v4l2_buffer_set_timestamp(buf, fh->buffers.buffer[num].bs.ts); buf->bytesused = fh->buffers.buffer[num].bs.length; buf->flags |= V4L2_BUF_FLAG_DONE; } else { From patchwork Mon Sep 21 10:19:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789123 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D36AE59D for ; Mon, 21 Sep 2020 10:23:44 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id BABBA218AC for ; Mon, 21 Sep 2020 10:23:44 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="WW3lHzJn" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727217AbgIUKXe (ORCPT ); Mon, 21 Sep 2020 06:23:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59062 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726835AbgIUKUt (ORCPT ); Mon, 21 Sep 2020 06:20:49 -0400 Received: from mail-wm1-x344.google.com (mail-wm1-x344.google.com [IPv6:2a00:1450:4864:20::344]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4E29EC0613CF for ; Mon, 21 Sep 2020 03:20:49 -0700 (PDT) Received: by mail-wm1-x344.google.com with SMTP id l15so11152681wmh.1 for ; Mon, 21 Sep 2020 03:20:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=XMf3TGfVECo8Ilq9E4yjhSEImTvnZ2dPgYfGTLgv0bk=; b=WW3lHzJn1qFTVR/w8nO2yUlxfSGExVtBeCWl6A36zih+tm7tGih+Mcp4mtuKNDRonA gEPCgPMmuLejb7S03ZvfayZwcGaM95eEtfWew1p4LADy4On0TJ52XS//VuL53Xsi44TI DEnPm8YPWL4S0ahxJFbSGQgq/GxjQc+u1j1TPjN8qVkPWQ13yY+1QaR2lcpmjYh+FIRl mAjkJOusuU65FsFqfG9f5pH5CXGfg+Nt6/kfD/MebtmgALFkMBNfiPMGwWKKXBDYznWA AKXZsFgHkRYHUbSpviarblJUweMi5vVU7vzMo6UE9kLxwTgK7RYnnT7+oUsrNb17XJNV oU6g== 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; bh=XMf3TGfVECo8Ilq9E4yjhSEImTvnZ2dPgYfGTLgv0bk=; b=HeUR2A/eck5Utcw39yg2Z9zgGgogFt2z0A0BhP4+j2XrE0oWO/KuF1TbjMaC/2hxRA uSOH/0WLynw46/bGP6krxBdLbXzAIkuJVitq2ZOAlS2rtEGLk1Ju5cJlqV/oaJpqp7lQ /Huc0D3p45GTr/q8w3aHRZXOLlsjtG6gO4IVFUStZflaKHXNnx2CFO/sz7pO6erQjU0c MR2cfJlwG+bAcPbG4vxXBOtYdkWPTaSgvydGAJJiWb5TuFFULRXPLTXDHIOKkqGMeV+e Sg1zfi3hrVKwgQ3HG9oT+p5RxTKE+fGS2zbDVWtyKVLjoM1Q8tsHrNsYhl+JfrW7Uo9V qcWg== X-Gm-Message-State: AOAM530Ku1nH4EAICU5xjusv61Vtqs5NyMs0/oauqtOf+n3fmvFzDcjf miaFfp1a2Tr+WkdgDxp6FKKedQ== X-Google-Smtp-Source: ABdhPJwLscV9pUAHVogHsXkwlXM0rs5yG9Zg1ezU4BZ8Y6KrmJb+etsGRk4200Pum4t0A/qFIxDRSQ== X-Received: by 2002:a7b:c76d:: with SMTP id x13mr15271283wmk.10.1600683648002; Mon, 21 Sep 2020 03:20:48 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.20.47 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:20:47 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 16/49] staging: media: zoran: do not print random guest 0 Date: Mon, 21 Sep 2020 10:19:51 +0000 Message-Id: <1600683624-5863-17-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org The slot 0 of guest is never initialized and so we print later random data. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran_device.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/staging/media/zoran/zoran_device.c b/drivers/staging/media/zoran/zoran_device.c index 0fb65fa4a3dd..a33de61a5e9b 100644 --- a/drivers/staging/media/zoran/zoran_device.c +++ b/drivers/staging/media/zoran/zoran_device.c @@ -158,6 +158,9 @@ static void dump_guests(struct zoran *zr) if (zr36067_debug > 2) { int i, guest[8]; + /* do not print random data */ + guest[0] = 0; + for (i = 1; i < 8; i++) /* Don't read jpeg codec here */ guest[i] = post_office_read(zr, i, 0); @@ -170,6 +173,10 @@ void detect_guest_activity(struct zoran *zr) int timeout, i, j, res, guest[8], guest0[8], change[8][3]; ktime_t t0, t1; + /* do not print random data */ + guest[0] = 0; + guest0[0] = 0; + dump_guests(zr); pci_info(zr->pci_dev, "Detecting guests activity, please wait...\n"); for (i = 1; i < 8; i++) /* Don't read jpeg codec here */ From patchwork Mon Sep 21 10:19:52 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789113 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id E9C0459D for ; Mon, 21 Sep 2020 10:23:30 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C33C2207BC for ; Mon, 21 Sep 2020 10:23:30 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="COEGfMiF" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727211AbgIUKXZ (ORCPT ); Mon, 21 Sep 2020 06:23:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59068 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726844AbgIUKUu (ORCPT ); Mon, 21 Sep 2020 06:20:50 -0400 Received: from mail-wm1-x341.google.com (mail-wm1-x341.google.com [IPv6:2a00:1450:4864:20::341]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 73620C061755 for ; Mon, 21 Sep 2020 03:20:50 -0700 (PDT) Received: by mail-wm1-x341.google.com with SMTP id q9so11566560wmj.2 for ; Mon, 21 Sep 2020 03:20:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=XUCRDH6iHP/B7aPgUO/p342/Ws8bKasBR0X3UR3PF+I=; b=COEGfMiFZniPYReKLoWfHR9tS+laqXb9erzlYjDHLUnLrwz0wv6itTpod8UALUjn9i CckJCm4NK0/nwWiIdp21MpKvskhvcuxTfpzCeaKWybxDA1xUfz4ogGR2IHS9lVpJzsLu wBsBnWZjkJ4tuUcprvJ1RNy4PtuDMMX3uKdOUvJ4M27IFjBUWxXgFfI+QJHCayQsJO3s SMwlXUIXP9bViMENlKKWaLnfb4Nk4fPJ5/hbXU3gjfB8jXH0vg5sYs3WPIRDchrcKWsc dAYMUnZbfBg3bbLcVxi++zEhfwgUNOWHxxjDF/IQ25Q6twqzEJjQ6C7ULa6IGDtzOZqr 0/ZQ== 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; bh=XUCRDH6iHP/B7aPgUO/p342/Ws8bKasBR0X3UR3PF+I=; b=LToZ06Dy8/+DYrXKd34h0EkhPKi6PNyqzbbJ9yzxJqLd3fsPlmicdHx8VgVCm/J+6A kCVfblsXUul8+31RDTdgMUYba/fisvXdNK40WPN0FogOZiSeiE8c+vctG+b+H5ibnTsi XL/uH1oAbEuOhBc24KKmPNljvG4UznSWg19TlACrBNpPdEp/B7FshNVuH9JG6k432ZR1 3jDPoQmU++aXKUi6L19ufGMJenb81XnjFF9/WrQoYu3P9NGUApUWhhTV71sL4Mm9Hbih BIXpQxgSEvewTUkJfSTImc698PnyHmkwXdN7YxnctVK8eWG01MpQGos9zFAfJY2nrMTl CCYg== X-Gm-Message-State: AOAM5330PaCavDRMTHzMV4/uY3aIeSP65TIh4fBE0GWND94nb62HZNJE 63UvnPrRKDblVb1oaRa+XkB7ZQ== X-Google-Smtp-Source: ABdhPJww3+HOO9uP4NbpSoCHegjIzTUgjpnk7lEmGXSWSZ+qbnX+IR0Tn9nDi7Xvljaj39CspqSQgw== X-Received: by 2002:a7b:c1d4:: with SMTP id a20mr29620554wmj.30.1600683649047; Mon, 21 Sep 2020 03:20:49 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.20.48 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:20:48 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 17/49] staging: media: zoran: move buffer_size out of zoran_fh Date: Mon, 21 Sep 2020 10:19:52 +0000 Message-Id: <1600683624-5863-18-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org We need to get rid of zoran_fh, so move the buffer_size directly in the zoran structure. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran.h | 3 +- drivers/staging/media/zoran/zoran_device.c | 3 +- drivers/staging/media/zoran/zoran_driver.c | 62 +++++++++++----------- 3 files changed, 35 insertions(+), 33 deletions(-) diff --git a/drivers/staging/media/zoran/zoran.h b/drivers/staging/media/zoran/zoran.h index 1b3eceaead5a..97933c550113 100644 --- a/drivers/staging/media/zoran/zoran.h +++ b/drivers/staging/media/zoran/zoran.h @@ -195,7 +195,7 @@ enum zoran_lock_activity { /* buffer collections */ struct zoran_buffer_col { enum zoran_lock_activity active; /* feature currently in use? */ - unsigned int num_buffers, buffer_size; + unsigned int num_buffers; struct zoran_buffer buffer[MAX_FRAME]; /* buffers */ u8 allocated; /* Flag if buffers are allocated */ u8 need_contiguous; /* Flag if contiguous buffers are needed */ @@ -292,6 +292,7 @@ struct zoran { v4l2_std_id norm; /* Current buffer params */ + unsigned int buffer_size; void *vbuf_base; int vbuf_height, vbuf_width; int vbuf_depth; diff --git a/drivers/staging/media/zoran/zoran_device.c b/drivers/staging/media/zoran/zoran_device.c index a33de61a5e9b..4f9b28e63ac0 100644 --- a/drivers/staging/media/zoran/zoran_device.c +++ b/drivers/staging/media/zoran/zoran_device.c @@ -882,8 +882,7 @@ void jpeg_start(struct zoran *zr) void zr36057_enable_jpg(struct zoran *zr, enum zoran_codec_mode mode) { struct vfe_settings cap; - int field_size = - zr->jpg_buffers.buffer_size / zr->jpg_settings.field_per_buff; + int field_size = zr->buffer_size / zr->jpg_settings.field_per_buff; zr->codec_mode = mode; diff --git a/drivers/staging/media/zoran/zoran_driver.c b/drivers/staging/media/zoran/zoran_driver.c index a996161cb276..a97faf54e19d 100644 --- a/drivers/staging/media/zoran/zoran_driver.c +++ b/drivers/staging/media/zoran/zoran_driver.c @@ -178,15 +178,18 @@ static void jpg_fbuffer_free(struct zoran_fh *fh); /* Set mapping mode */ static void map_mode_raw(struct zoran_fh *fh) { + struct zoran *zr = fh->zr; fh->map_mode = ZORAN_MAP_MODE_RAW; - fh->buffers.buffer_size = v4l_bufsize; + zr->buffer_size = v4l_bufsize; fh->buffers.num_buffers = v4l_nbufs; } static void map_mode_jpg(struct zoran_fh *fh, int play) { + struct zoran *zr = fh->zr; + fh->map_mode = play ? ZORAN_MAP_MODE_JPG_PLAY : ZORAN_MAP_MODE_JPG_REC; - fh->buffers.buffer_size = jpg_bufsize; + zr->buffer_size = jpg_bufsize; fh->buffers.num_buffers = jpg_nbufs; } @@ -212,7 +215,7 @@ static int v4l_fbuffer_alloc(struct zoran_fh *fh) pci_warn(zr->pci_dev, "%s - buffer %d already allocated!?\n", __func__, i); //udelay(20); - mem = kmalloc(fh->buffers.buffer_size, GFP_KERNEL | __GFP_NOWARN); + mem = kmalloc(zr->buffer_size, GFP_KERNEL | __GFP_NOWARN); if (!mem) { pci_err(zr->pci_dev, "%s - kmalloc for V4L buf %d failed\n", __func__, i); v4l_fbuffer_free(fh); @@ -221,7 +224,7 @@ static int v4l_fbuffer_alloc(struct zoran_fh *fh) fh->buffers.buffer[i].v4l.fbuffer = mem; fh->buffers.buffer[i].v4l.fbuffer_phys = virt_to_phys(mem); fh->buffers.buffer[i].v4l.fbuffer_bus = virt_to_bus(mem); - for (off = 0; off < fh->buffers.buffer_size; + for (off = 0; off < zr->buffer_size; off += PAGE_SIZE) SetPageReserved(virt_to_page(mem + off)); pci_info(zr->pci_dev, "%s - V4L frame %d mem %p (bus: 0x%llx)\n", __func__, i, mem, @@ -247,7 +250,7 @@ static void v4l_fbuffer_free(struct zoran_fh *fh) continue; mem = fh->buffers.buffer[i].v4l.fbuffer; - for (off = 0; off < fh->buffers.buffer_size; + for (off = 0; off < zr->buffer_size; off += PAGE_SIZE) ClearPageReserved(virt_to_page(mem + off)); kfree(fh->buffers.buffer[i].v4l.fbuffer); @@ -307,7 +310,7 @@ static int jpg_fbuffer_alloc(struct zoran_fh *fh) fh->buffers.buffer[i].jpg.frag_tab_bus = virt_to_bus(mem); if (fh->buffers.need_contiguous) { - mem = kmalloc(fh->buffers.buffer_size, GFP_KERNEL); + mem = kmalloc(zr->buffer_size, GFP_KERNEL); if (!mem) { pci_err(zr->pci_dev, "%s - kmalloc failed for buffer %d\n", __func__, i); jpg_fbuffer_free(fh); @@ -316,12 +319,12 @@ static int jpg_fbuffer_alloc(struct zoran_fh *fh) fh->buffers.buffer[i].jpg.frag_tab[0] = cpu_to_le32(virt_to_bus(mem)); fh->buffers.buffer[i].jpg.frag_tab[1] = - cpu_to_le32((fh->buffers.buffer_size >> 1) | 1); - for (off = 0; off < fh->buffers.buffer_size; off += PAGE_SIZE) + cpu_to_le32((zr->buffer_size >> 1) | 1); + for (off = 0; off < zr->buffer_size; off += PAGE_SIZE) SetPageReserved(virt_to_page(mem + off)); } else { /* jpg_bufsize is already page aligned */ - for (j = 0; j < fh->buffers.buffer_size / PAGE_SIZE; j++) { + for (j = 0; j < zr->buffer_size / PAGE_SIZE; j++) { mem = (void *)get_zeroed_page(GFP_KERNEL); if (!mem) { pci_err(zr->pci_dev, "%s - get_zeroed_page failed for buffer %d\n", __func__, i); @@ -341,7 +344,7 @@ static int jpg_fbuffer_alloc(struct zoran_fh *fh) } pci_dbg(zr->pci_dev, "%s - %d KB allocated\n", __func__, - (fh->buffers.num_buffers * fh->buffers.buffer_size) >> 10); + (fh->buffers.num_buffers * zr->buffer_size) >> 10); fh->buffers.allocated = 1; @@ -369,14 +372,14 @@ static void jpg_fbuffer_free(struct zoran_fh *fh) if (frag_tab) { mem = bus_to_virt(le32_to_cpu(frag_tab)); - for (off = 0; off < fh->buffers.buffer_size; off += PAGE_SIZE) + for (off = 0; off < zr->buffer_size; off += PAGE_SIZE) ClearPageReserved(virt_to_page(mem + off)); kfree(mem); buffer->jpg.frag_tab[0] = 0; buffer->jpg.frag_tab[1] = 0; } } else { - for (j = 0; j < fh->buffers.buffer_size / PAGE_SIZE; j++) { + for (j = 0; j < zr->buffer_size / PAGE_SIZE; j++) { frag_tab = buffer->jpg.frag_tab[2 * j]; if (!frag_tab) @@ -416,9 +419,9 @@ static int zoran_v4l_set_format(struct zoran_fh *fh, int width, int height, bpp = (format->depth + 7) / 8; /* Check against available buffer size */ - if (height * width * bpp > fh->buffers.buffer_size) { + if (height * width * bpp > zr->buffer_size) { pci_err(zr->pci_dev, "%s - video buffer size (%d kB) is too small\n", - __func__, fh->buffers.buffer_size >> 10); + __func__, zr->buffer_size >> 10); return -EINVAL; } @@ -1189,7 +1192,7 @@ static int zoran_v4l2_buffer_status(struct zoran_fh *fh, spin_unlock_irqrestore(&zr->spinlock, flags); buf->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - buf->length = fh->buffers.buffer_size; + buf->length = zr->buffer_size; /* get buffer */ buf->bytesused = fh->buffers.buffer[num].bs.length; @@ -1222,7 +1225,7 @@ static int zoran_v4l2_buffer_status(struct zoran_fh *fh, buf->type = (fh->map_mode == ZORAN_MAP_MODE_JPG_REC) ? V4L2_BUF_TYPE_VIDEO_CAPTURE : V4L2_BUF_TYPE_VIDEO_OUTPUT; - buf->length = fh->buffers.buffer_size; + buf->length = zr->buffer_size; /* these variables are only written after frame has been captured */ if (fh->buffers.buffer[num].state == BUZ_STATE_DONE || @@ -1634,7 +1637,7 @@ static int zoran_s_fmt_vid_out(struct file *file, void *__fh, struct v4l2_format fh->jpg_settings = settings; map_mode_jpg(fh, fmt->type == V4L2_BUF_TYPE_VIDEO_OUTPUT); - fh->buffers.buffer_size = zoran_v4l2_calc_bufsize(&fh->jpg_settings); + zr->buffer_size = zoran_v4l2_calc_bufsize(&fh->jpg_settings); /* tell the user what we actually did */ fmt->fmt.pix.width = settings.img_width / settings.HorDcm; @@ -1646,7 +1649,7 @@ static int zoran_s_fmt_vid_out(struct file *file, void *__fh, struct v4l2_format fmt->fmt.pix.field = (fh->jpg_settings.odd_even ? V4L2_FIELD_TOP : V4L2_FIELD_BOTTOM); fmt->fmt.pix.bytesperline = 0; - fmt->fmt.pix.sizeimage = fh->buffers.buffer_size; + fmt->fmt.pix.sizeimage = zr->buffer_size; fmt->fmt.pix.colorspace = V4L2_COLORSPACE_SMPTE170M; return res; } @@ -1798,7 +1801,7 @@ static int zoran_reqbufs(struct file *file, void *__fh, struct v4l2_requestbuffe /* The next mmap will map the MJPEG buffers */ map_mode_jpg(fh, req->type == V4L2_BUF_TYPE_VIDEO_OUTPUT); fh->buffers.num_buffers = req->count; - fh->buffers.buffer_size = zoran_v4l2_calc_bufsize(&fh->jpg_settings); + zr->buffer_size = zoran_v4l2_calc_bufsize(&fh->jpg_settings); if (jpg_fbuffer_alloc(fh)) { res = -ENOMEM; @@ -2270,8 +2273,7 @@ static int zoran_s_jpegcomp(struct file *file, void *__fh, if (res) return res; if (!fh->buffers.allocated) - fh->buffers.buffer_size = - zoran_v4l2_calc_bufsize(&fh->jpg_settings); + zr->buffer_size = zoran_v4l2_calc_bufsize(&fh->jpg_settings); fh->jpg_settings.jpg_comp = settings.jpg_comp; return res; } @@ -2437,15 +2439,15 @@ static int zoran_mmap(struct file *file, struct vm_area_struct *vma) return res; } - first = offset / fh->buffers.buffer_size; - last = first - 1 + size / fh->buffers.buffer_size; - if (offset % fh->buffers.buffer_size != 0 || - size % fh->buffers.buffer_size != 0 || first < 0 || + first = offset / zr->buffer_size; + last = first - 1 + size / zr->buffer_size; + if (offset % zr->buffer_size != 0 || + size % zr->buffer_size != 0 || first < 0 || last < 0 || first >= fh->buffers.num_buffers || - last >= fh->buffers.buffer_size) { + last >= zr->buffer_size) { pci_err(zr->pci_dev, "%s(%s) - offset=%lu or size=%lu invalid for bufsize=%d and numbufs=%d\n", __func__, mode_name(fh->map_mode), offset, size, - fh->buffers.buffer_size, + zr->buffer_size, fh->buffers.num_buffers); res = -EINVAL; return res; @@ -2476,8 +2478,8 @@ static int zoran_mmap(struct file *file, struct vm_area_struct *vma) if (fh->map_mode == ZORAN_MAP_MODE_RAW) { for (i = first; i <= last; i++) { todo = size; - if (todo > fh->buffers.buffer_size) - todo = fh->buffers.buffer_size; + if (todo > zr->buffer_size) + todo = zr->buffer_size; page = fh->buffers.buffer[i].v4l.fbuffer_phys; if (remap_pfn_range(vma, start, page >> PAGE_SHIFT, todo, PAGE_SHARED)) { @@ -2494,7 +2496,7 @@ static int zoran_mmap(struct file *file, struct vm_area_struct *vma) } else { for (i = first; i <= last; i++) { for (j = 0; - j < fh->buffers.buffer_size / PAGE_SIZE; + j < zr->buffer_size / PAGE_SIZE; j++) { fraglen = (le32_to_cpu(fh->buffers.buffer[i].jpg. From patchwork Mon Sep 21 10:19:53 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789115 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B03396CA for ; Mon, 21 Sep 2020 10:23:31 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 93D0A20EDD for ; Mon, 21 Sep 2020 10:23:31 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="WFgjWee5" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726601AbgIUKXY (ORCPT ); Mon, 21 Sep 2020 06:23:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59072 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726334AbgIUKUv (ORCPT ); Mon, 21 Sep 2020 06:20:51 -0400 Received: from mail-wm1-x344.google.com (mail-wm1-x344.google.com [IPv6:2a00:1450:4864:20::344]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 242E4C0613D0 for ; Mon, 21 Sep 2020 03:20:51 -0700 (PDT) Received: by mail-wm1-x344.google.com with SMTP id s13so11552144wmh.4 for ; Mon, 21 Sep 2020 03:20:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=vl6OTebBvkB4fdbT234fIR/40NpEOt314dUuABCDll4=; b=WFgjWee5tAmAd1qRQcGAeSltT4caQXzjsAIKam+mcOztmDIR83/XyI3xW+hXWmc6H0 ztufoQ/FW87bsXe5I6eEUk1UBdzW9NNXvu88hj2PAD0A910DzQRTUL/YH6pf0dpFJ69H T/KUelScDdiGNe5f7t1pMOUXoFiKeLOYsh2xyadC2FRSol4vbOSdF8EBNy0uKGDprvOB ous2BtfSAcG8bFn2fNBVMbFAweBvfuwxeLBTgE5qs+hlGVovIhwnsxwN2ZK4CQ0OLIYP jvNgSM5S1JIMOA9pjBOjLl1rbZlbtun2DfWZxl+DlBzCuSgRZVz2Sc/Q5IQTvdVhZXXL 49Ow== 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; bh=vl6OTebBvkB4fdbT234fIR/40NpEOt314dUuABCDll4=; b=b3dFfSkmf/wE4EC3707y9xg3mpZkIQRoUZx8AVslqWKuBst/2KfZG2egAQz3bqT8Pj iwES5kbCvcn2JU341jQg98uSseSdEFbasV5tJPfFs9VNF2hTdH97BiBf1bjAIxEQ02lB 2Gr+XR3lxZy9uPAgfJh7mYOOZjrrxnxvnGcU05hmm433RLwbt5lNe/4qjpXesg5DAFyU XIzG04+/RlIBpiOtUgZp/HBojmnMseJNkMySDNWzQe6iCZMyhFob+URIlc2W5Hnrycxz tjOHlIrmReBuGe808inqezSaNXRBXhYBlEIVCCKh/o6f2YdT/420nCZGRz9RDDzekLjo iOyw== X-Gm-Message-State: AOAM533B8El5u7EINHrSS3yZQOuICfMc6WceF+FvZtxNtveKVbHSOHZr w6qaTNllLpiPy5Zq5OzLul9mZg== X-Google-Smtp-Source: ABdhPJxEoI9cVv901ZdVCjiPjzQzjnNTltkT1xg7WUelID5zgl2gGP6kyipgnMsU1MRU7KUyfpLjFA== X-Received: by 2002:a05:600c:220f:: with SMTP id z15mr16338168wml.87.1600683649861; Mon, 21 Sep 2020 03:20:49 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.20.49 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:20:49 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 18/49] staging: media: zoran: move v4l_settings out of zoran_fh Date: Mon, 21 Sep 2020 10:19:53 +0000 Message-Id: <1600683624-5863-19-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org We need to get rid of zoran_fh, so move the v4l_settings directly in the zoran structure. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran.h | 1 - drivers/staging/media/zoran/zoran_driver.c | 38 ++++++++++------------ 2 files changed, 17 insertions(+), 22 deletions(-) diff --git a/drivers/staging/media/zoran/zoran.h b/drivers/staging/media/zoran/zoran.h index 97933c550113..a529b49888c6 100644 --- a/drivers/staging/media/zoran/zoran.h +++ b/drivers/staging/media/zoran/zoran.h @@ -217,7 +217,6 @@ struct zoran_fh { struct zoran_buffer_col buffers; /* buffers' info */ - struct zoran_v4l_settings v4l_settings; /* structure with a lot of things to play with */ struct zoran_jpg_settings jpg_settings; /* structure with a lot of things to play with */ }; diff --git a/drivers/staging/media/zoran/zoran_driver.c b/drivers/staging/media/zoran/zoran_driver.c index a97faf54e19d..984f1dde99d2 100644 --- a/drivers/staging/media/zoran/zoran_driver.c +++ b/drivers/staging/media/zoran/zoran_driver.c @@ -432,10 +432,10 @@ static int zoran_v4l_set_format(struct zoran_fh *fh, int width, int height, return -EINVAL; } - fh->v4l_settings.width = width; - fh->v4l_settings.height = height; - fh->v4l_settings.format = format; - fh->v4l_settings.bytesperline = bpp * fh->v4l_settings.width; + zr->v4l_settings.width = width; + zr->v4l_settings.height = height; + zr->v4l_settings.format = format; + zr->v4l_settings.bytesperline = bpp * zr->v4l_settings.width; return 0; } @@ -489,7 +489,7 @@ static int zoran_v4l_queue_frame(struct zoran_fh *fh, int num) zr->v4l_pend[zr->v4l_pend_head++ & V4L_MASK_FRAME] = num; zr->v4l_buffers.buffer[num].state = BUZ_STATE_PEND; zr->v4l_buffers.buffer[num].bs.length = - fh->v4l_settings.bytesperline * + zr->v4l_settings.bytesperline * zr->v4l_settings.height; fh->buffers.buffer[num] = zr->v4l_buffers.buffer[num]; break; @@ -751,8 +751,6 @@ static void zoran_open_init_session(struct zoran_fh *fh) fh->overlay_settings.format = zr->overlay_settings.format; fh->overlay_active = ZORAN_FREE; - /* v4l settings */ - fh->v4l_settings = zr->v4l_settings; /* jpg settings */ fh->jpg_settings = zr->jpg_settings; @@ -1205,7 +1203,7 @@ static int zoran_v4l2_buffer_status(struct zoran_fh *fh, buf->flags |= V4L2_BUF_FLAG_QUEUED; } - if (fh->v4l_settings.height <= BUZ_MAX_HEIGHT / 2) + if (zr->v4l_settings.height <= BUZ_MAX_HEIGHT / 2) buf->field = V4L2_FIELD_TOP; else buf->field = V4L2_FIELD_INTERLACED; @@ -1418,14 +1416,13 @@ static int zoran_g_fmt_vid_cap(struct file *file, void *__fh, struct v4l2_format if (fh->map_mode != ZORAN_MAP_MODE_RAW) return zoran_g_fmt_vid_out(file, fh, fmt); - fmt->fmt.pix.width = fh->v4l_settings.width; - fmt->fmt.pix.height = fh->v4l_settings.height; - fmt->fmt.pix.sizeimage = fh->v4l_settings.bytesperline * - fh->v4l_settings.height; - fmt->fmt.pix.pixelformat = fh->v4l_settings.format->fourcc; - fmt->fmt.pix.colorspace = fh->v4l_settings.format->colorspace; - fmt->fmt.pix.bytesperline = fh->v4l_settings.bytesperline; - if (BUZ_MAX_HEIGHT < (fh->v4l_settings.height * 2)) + fmt->fmt.pix.width = zr->v4l_settings.width; + fmt->fmt.pix.height = zr->v4l_settings.height; + fmt->fmt.pix.sizeimage = zr->v4l_settings.bytesperline * zr->v4l_settings.height; + fmt->fmt.pix.pixelformat = zr->v4l_settings.format->fourcc; + fmt->fmt.pix.colorspace = zr->v4l_settings.format->colorspace; + fmt->fmt.pix.bytesperline = zr->v4l_settings.bytesperline; + if (BUZ_MAX_HEIGHT < (zr->v4l_settings.height * 2)) fmt->fmt.pix.field = V4L2_FIELD_INTERLACED; else fmt->fmt.pix.field = V4L2_FIELD_TOP; @@ -1691,10 +1688,10 @@ static int zoran_s_fmt_vid_cap(struct file *file, void *__fh, struct v4l2_format return res; /* tell the user the results/missing stuff */ - fmt->fmt.pix.bytesperline = fh->v4l_settings.bytesperline; - fmt->fmt.pix.sizeimage = fh->v4l_settings.height * fh->v4l_settings.bytesperline; - fmt->fmt.pix.colorspace = fh->v4l_settings.format->colorspace; - if (BUZ_MAX_HEIGHT < (fh->v4l_settings.height * 2)) + fmt->fmt.pix.bytesperline = zr->v4l_settings.bytesperline; + fmt->fmt.pix.sizeimage = zr->v4l_settings.height * zr->v4l_settings.bytesperline; + fmt->fmt.pix.colorspace = zr->v4l_settings.format->colorspace; + if (BUZ_MAX_HEIGHT < (zr->v4l_settings.height * 2)) fmt->fmt.pix.field = V4L2_FIELD_INTERLACED; else fmt->fmt.pix.field = V4L2_FIELD_TOP; @@ -1961,7 +1958,6 @@ static int zoran_streamon(struct file *file, void *__fh, enum v4l2_buf_type type } zr->v4l_buffers.active = fh->buffers.active = ZORAN_LOCKED; - zr->v4l_settings = fh->v4l_settings; zr->v4l_sync_tail = zr->v4l_pend_tail; if (!zr->v4l_memgrab_active && From patchwork Mon Sep 21 10:19:54 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789055 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id BB2AE59D for ; Mon, 21 Sep 2020 10:21:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 88E4C21BE5 for ; Mon, 21 Sep 2020 10:21:01 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="WOAHMWOn" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726898AbgIUKVA (ORCPT ); Mon, 21 Sep 2020 06:21:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59098 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726454AbgIUKU6 (ORCPT ); Mon, 21 Sep 2020 06:20:58 -0400 Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com [IPv6:2a00:1450:4864:20::441]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 301E6C0613D3 for ; Mon, 21 Sep 2020 03:20:52 -0700 (PDT) Received: by mail-wr1-x441.google.com with SMTP id z1so12137790wrt.3 for ; Mon, 21 Sep 2020 03:20:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=WbLdbCFFX9H/4tk9cPHCjm3oFnAaEXbZXA9/HfChnUA=; b=WOAHMWOnrWAaxpW+HjgdPUb2Lek9ffD3Khhk3iCttrEAjpwMk+5b0Jtd7cYshFhFGr v5qXV1LqDVy3LiaC0byTnDhdXPW9u+vGSb5qqmbcb1ysPBogRJT8vNFN9EWawYHxpQy0 eyZ/POQwaG8/CCFxE+7tDOpg0wq4yfiArWTkNmIoA/I8P7xGdSkuz92GQ1wdwkpbik4a xcw/uAkpipD+GJmktYAka8dPIDZ9//FfbrG7AXK2uKFsAXaYub08YnOprhlzSc7UulfM P/F0U6nbRapN1XaGc60W5XpG3W9IbYXulIhQUQy/5Cp+BQcJzsmSQ2+DHKweQAwkhHwj rHFw== 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; bh=WbLdbCFFX9H/4tk9cPHCjm3oFnAaEXbZXA9/HfChnUA=; b=S9XnLCNvbfIUr7liO4xNUwOs7B9+GCpg2JcR5MDcr/7w7+j3kj5ZKTKrlYf2gFJlIy xNPZ4OczBzUWs3ir/Y8i/8nhg/T7hlY6fhacX4DM+RBhXm+idtQrdea5MSfMSAVhDd2d bQ2kmXmLeyd7b1/lIX79kudFCrVuGCihI0W8DHwGW0FDIKPQEhwUFTu1hfl0gHOX+cfG Nv+nvgWnV3MUp+kXIt4JEP/9LkAybAVc8kqhjGiLhH5QDqXzpuo2Hid7zaSXWG6mKM2J Cxs9oEJwtw7oZ13ehLGDC09NoYGcquclm9XZEcTgmnF4dzg3McJFBOtOc24aE85daokC hM4A== X-Gm-Message-State: AOAM533HYuKJeWHhFX6dFuljV8KB5YuEGBeF5kHRPlA0fSX7PvyGQ4l8 Gzqf2i6k56b5Oi2v6y7o93TPZA== X-Google-Smtp-Source: ABdhPJwU7haxnxB+0U7u65gtoF/0p6meObcC123E3lmUNE6zdJgB5swqrh/6omxrLHOcw41agcFznA== X-Received: by 2002:adf:fd90:: with SMTP id d16mr51954940wrr.52.1600683650758; Mon, 21 Sep 2020 03:20:50 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.20.49 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:20:50 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 19/49] staging: media: zoran: move jpg_settings out of zoran_fh Date: Mon, 21 Sep 2020 10:19:54 +0000 Message-Id: <1600683624-5863-20-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org We need to get rid of zoran_fh, so move the jpg_settings directly in the zoran structure. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran.h | 2 - drivers/staging/media/zoran/zoran_driver.c | 103 ++++++++++----------- 2 files changed, 47 insertions(+), 58 deletions(-) diff --git a/drivers/staging/media/zoran/zoran.h b/drivers/staging/media/zoran/zoran.h index a529b49888c6..7e6e03563a2a 100644 --- a/drivers/staging/media/zoran/zoran.h +++ b/drivers/staging/media/zoran/zoran.h @@ -216,8 +216,6 @@ struct zoran_fh { enum zoran_lock_activity overlay_active;/* feature currently in use? */ struct zoran_buffer_col buffers; /* buffers' info */ - - struct zoran_jpg_settings jpg_settings; /* structure with a lot of things to play with */ }; struct card_info { diff --git a/drivers/staging/media/zoran/zoran_driver.c b/drivers/staging/media/zoran/zoran_driver.c index 984f1dde99d2..f0ceda9a3d44 100644 --- a/drivers/staging/media/zoran/zoran_driver.c +++ b/drivers/staging/media/zoran/zoran_driver.c @@ -587,9 +587,7 @@ static int zoran_jpg_queue_frame(struct zoran_fh *fh, int num, } /* what is the codec mode right now? */ - if (zr->codec_mode == BUZ_MODE_IDLE) { - zr->jpg_settings = fh->jpg_settings; - } else if (zr->codec_mode != mode) { + if (zr->codec_mode != BUZ_MODE_IDLE && zr->codec_mode != mode) { /* wrong codec mode active - invalid */ pci_err(zr->pci_dev, "%s - codec in wrong mode\n", __func__); return -EINVAL; @@ -751,9 +749,6 @@ static void zoran_open_init_session(struct zoran_fh *fh) fh->overlay_settings.format = zr->overlay_settings.format; fh->overlay_active = ZORAN_FREE; - /* jpg settings */ - fh->jpg_settings = zr->jpg_settings; - /* buffers */ memset(&fh->buffers, 0, sizeof(fh->buffers)); for (i = 0; i < MAX_FRAME; i++) { @@ -1237,11 +1232,11 @@ static int zoran_v4l2_buffer_status(struct zoran_fh *fh, } /* which fields are these? */ - if (fh->jpg_settings.TmpDcm != 1) - buf->field = fh->jpg_settings.odd_even ? + if (zr->jpg_settings.TmpDcm != 1) + buf->field = zr->jpg_settings.odd_even ? V4L2_FIELD_TOP : V4L2_FIELD_BOTTOM; else - buf->field = fh->jpg_settings.odd_even ? + buf->field = zr->jpg_settings.odd_even ? V4L2_FIELD_SEQ_TB : V4L2_FIELD_SEQ_BT; break; @@ -1389,18 +1384,18 @@ static int zoran_enum_fmt_vid_overlay(struct file *file, void *__fh, static int zoran_g_fmt_vid_out(struct file *file, void *__fh, struct v4l2_format *fmt) { - struct zoran_fh *fh = __fh; + struct zoran *zr = video_drvdata(file); - fmt->fmt.pix.width = fh->jpg_settings.img_width / fh->jpg_settings.HorDcm; - fmt->fmt.pix.height = fh->jpg_settings.img_height * 2 / - (fh->jpg_settings.VerDcm * fh->jpg_settings.TmpDcm); - fmt->fmt.pix.sizeimage = zoran_v4l2_calc_bufsize(&fh->jpg_settings); + fmt->fmt.pix.width = zr->jpg_settings.img_width / zr->jpg_settings.HorDcm; + fmt->fmt.pix.height = zr->jpg_settings.img_height * 2 / + (zr->jpg_settings.VerDcm * zr->jpg_settings.TmpDcm); + fmt->fmt.pix.sizeimage = zoran_v4l2_calc_bufsize(&zr->jpg_settings); fmt->fmt.pix.pixelformat = V4L2_PIX_FMT_MJPEG; - if (fh->jpg_settings.TmpDcm == 1) - fmt->fmt.pix.field = (fh->jpg_settings.odd_even ? + if (zr->jpg_settings.TmpDcm == 1) + fmt->fmt.pix.field = (zr->jpg_settings.odd_even ? V4L2_FIELD_SEQ_TB : V4L2_FIELD_SEQ_BT); else - fmt->fmt.pix.field = (fh->jpg_settings.odd_even ? + fmt->fmt.pix.field = (zr->jpg_settings.odd_even ? V4L2_FIELD_TOP : V4L2_FIELD_BOTTOM); fmt->fmt.pix.bytesperline = 0; fmt->fmt.pix.colorspace = V4L2_COLORSPACE_SMPTE170M; @@ -1468,15 +1463,14 @@ static int zoran_try_fmt_vid_overlay(struct file *file, void *__fh, static int zoran_try_fmt_vid_out(struct file *file, void *__fh, struct v4l2_format *fmt) { - struct zoran_fh *fh = __fh; - struct zoran *zr = fh->zr; + struct zoran *zr = video_drvdata(file); struct zoran_jpg_settings settings; int res = 0; if (fmt->fmt.pix.pixelformat != V4L2_PIX_FMT_MJPEG) return -EINVAL; - settings = fh->jpg_settings; + settings = zr->jpg_settings; /* we actually need to set 'real' parameters now */ if ((fmt->fmt.pix.height * 2) > BUZ_MAX_HEIGHT) @@ -1484,13 +1478,13 @@ static int zoran_try_fmt_vid_out(struct file *file, void *__fh, else settings.TmpDcm = 2; settings.decimation = 0; - if (fmt->fmt.pix.height <= fh->jpg_settings.img_height / 2) + if (fmt->fmt.pix.height <= zr->jpg_settings.img_height / 2) settings.VerDcm = 2; else settings.VerDcm = 1; - if (fmt->fmt.pix.width <= fh->jpg_settings.img_width / 4) + if (fmt->fmt.pix.width <= zr->jpg_settings.img_width / 4) settings.HorDcm = 4; - else if (fmt->fmt.pix.width <= fh->jpg_settings.img_width / 2) + else if (fmt->fmt.pix.width <= zr->jpg_settings.img_width / 2) settings.HorDcm = 2; else settings.HorDcm = 1; @@ -1517,10 +1511,10 @@ static int zoran_try_fmt_vid_out(struct file *file, void *__fh, fmt->fmt.pix.height = settings.img_height * 2 / (settings.TmpDcm * settings.VerDcm); if (settings.TmpDcm == 1) - fmt->fmt.pix.field = (fh->jpg_settings.odd_even ? + fmt->fmt.pix.field = (zr->jpg_settings.odd_even ? V4L2_FIELD_SEQ_TB : V4L2_FIELD_SEQ_BT); else - fmt->fmt.pix.field = (fh->jpg_settings.odd_even ? + fmt->fmt.pix.field = (zr->jpg_settings.odd_even ? V4L2_FIELD_TOP : V4L2_FIELD_BOTTOM); fmt->fmt.pix.sizeimage = zoran_v4l2_calc_bufsize(&settings); @@ -1594,7 +1588,7 @@ static int zoran_s_fmt_vid_out(struct file *file, void *__fh, struct v4l2_format return res; } - settings = fh->jpg_settings; + settings = zr->jpg_settings; /* we actually need to set 'real' parameters now */ if (fmt->fmt.pix.height * 2 > BUZ_MAX_HEIGHT) @@ -1602,13 +1596,13 @@ static int zoran_s_fmt_vid_out(struct file *file, void *__fh, struct v4l2_format else settings.TmpDcm = 2; settings.decimation = 0; - if (fmt->fmt.pix.height <= fh->jpg_settings.img_height / 2) + if (fmt->fmt.pix.height <= zr->jpg_settings.img_height / 2) settings.VerDcm = 2; else settings.VerDcm = 1; - if (fmt->fmt.pix.width <= fh->jpg_settings.img_width / 4) + if (fmt->fmt.pix.width <= zr->jpg_settings.img_width / 4) settings.HorDcm = 4; - else if (fmt->fmt.pix.width <= fh->jpg_settings.img_width / 2) + else if (fmt->fmt.pix.width <= zr->jpg_settings.img_width / 2) settings.HorDcm = 2; else settings.HorDcm = 1; @@ -1631,19 +1625,19 @@ static int zoran_s_fmt_vid_out(struct file *file, void *__fh, struct v4l2_format return res; /* it's ok, so set them */ - fh->jpg_settings = settings; + zr->jpg_settings = settings; map_mode_jpg(fh, fmt->type == V4L2_BUF_TYPE_VIDEO_OUTPUT); - zr->buffer_size = zoran_v4l2_calc_bufsize(&fh->jpg_settings); + zr->buffer_size = zoran_v4l2_calc_bufsize(&zr->jpg_settings); /* tell the user what we actually did */ fmt->fmt.pix.width = settings.img_width / settings.HorDcm; fmt->fmt.pix.height = settings.img_height * 2 / (settings.TmpDcm * settings.VerDcm); if (settings.TmpDcm == 1) - fmt->fmt.pix.field = (fh->jpg_settings.odd_even ? + fmt->fmt.pix.field = (zr->jpg_settings.odd_even ? V4L2_FIELD_SEQ_TB : V4L2_FIELD_SEQ_BT); else - fmt->fmt.pix.field = (fh->jpg_settings.odd_even ? + fmt->fmt.pix.field = (zr->jpg_settings.odd_even ? V4L2_FIELD_TOP : V4L2_FIELD_BOTTOM); fmt->fmt.pix.bytesperline = 0; fmt->fmt.pix.sizeimage = zr->buffer_size; @@ -1798,7 +1792,7 @@ static int zoran_reqbufs(struct file *file, void *__fh, struct v4l2_requestbuffe /* The next mmap will map the MJPEG buffers */ map_mode_jpg(fh, req->type == V4L2_BUF_TYPE_VIDEO_OUTPUT); fh->buffers.num_buffers = req->count; - zr->buffer_size = zoran_v4l2_calc_bufsize(&fh->jpg_settings); + zr->buffer_size = zoran_v4l2_calc_bufsize(&zr->jpg_settings); if (jpg_fbuffer_alloc(fh)) { res = -ENOMEM; @@ -2162,10 +2156,10 @@ static int zoran_g_selection(struct file *file, void *__fh, struct v4l2_selectio switch (sel->target) { case V4L2_SEL_TGT_CROP: - sel->r.top = fh->jpg_settings.img_y; - sel->r.left = fh->jpg_settings.img_x; - sel->r.width = fh->jpg_settings.img_width; - sel->r.height = fh->jpg_settings.img_height; + sel->r.top = zr->jpg_settings.img_y; + sel->r.left = zr->jpg_settings.img_x; + sel->r.width = zr->jpg_settings.img_width; + sel->r.height = zr->jpg_settings.img_height; break; case V4L2_SEL_TGT_CROP_DEFAULT: sel->r.top = sel->r.left = 0; @@ -2202,7 +2196,7 @@ static int zoran_s_selection(struct file *file, void *__fh, struct v4l2_selectio return -EINVAL; } - settings = fh->jpg_settings; + settings = zr->jpg_settings; if (fh->buffers.allocated) { pci_err(zr->pci_dev, "VIDIOC_S_SELECTION - cannot change settings while active\n"); @@ -2221,28 +2215,25 @@ static int zoran_s_selection(struct file *file, void *__fh, struct v4l2_selectio return res; /* accept */ - fh->jpg_settings = settings; + zr->jpg_settings = settings; return res; } static int zoran_g_jpegcomp(struct file *file, void *__fh, struct v4l2_jpegcompression *params) { - struct zoran_fh *fh = __fh; + struct zoran *zr = video_drvdata(file); memset(params, 0, sizeof(*params)); - params->quality = fh->jpg_settings.jpg_comp.quality; - params->APPn = fh->jpg_settings.jpg_comp.APPn; - memcpy(params->APP_data, - fh->jpg_settings.jpg_comp.APP_data, - fh->jpg_settings.jpg_comp.APP_len); - params->APP_len = fh->jpg_settings.jpg_comp.APP_len; - memcpy(params->COM_data, - fh->jpg_settings.jpg_comp.COM_data, - fh->jpg_settings.jpg_comp.COM_len); - params->COM_len = fh->jpg_settings.jpg_comp.COM_len; - params->jpeg_markers = - fh->jpg_settings.jpg_comp.jpeg_markers; + params->quality = zr->jpg_settings.jpg_comp.quality; + params->APPn = zr->jpg_settings.jpg_comp.APPn; + memcpy(params->APP_data, zr->jpg_settings.jpg_comp.APP_data, + zr->jpg_settings.jpg_comp.APP_len); + params->APP_len = zr->jpg_settings.jpg_comp.APP_len; + memcpy(params->COM_data, zr->jpg_settings.jpg_comp.COM_data, + zr->jpg_settings.jpg_comp.COM_len); + params->COM_len = zr->jpg_settings.jpg_comp.COM_len; + params->jpeg_markers = zr->jpg_settings.jpg_comp.jpeg_markers; return 0; } @@ -2255,7 +2246,7 @@ static int zoran_s_jpegcomp(struct file *file, void *__fh, int res = 0; struct zoran_jpg_settings settings; - settings = fh->jpg_settings; + settings = zr->jpg_settings; settings.jpg_comp = *params; @@ -2269,8 +2260,8 @@ static int zoran_s_jpegcomp(struct file *file, void *__fh, if (res) return res; if (!fh->buffers.allocated) - zr->buffer_size = zoran_v4l2_calc_bufsize(&fh->jpg_settings); - fh->jpg_settings.jpg_comp = settings.jpg_comp; + zr->buffer_size = zoran_v4l2_calc_bufsize(&zr->jpg_settings); + zr->jpg_settings.jpg_comp = settings.jpg_comp; return res; } From patchwork Mon Sep 21 10:19:55 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789105 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id AD07E59D for ; Mon, 21 Sep 2020 10:22:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8D28A20EDD for ; Mon, 21 Sep 2020 10:22:51 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="MFapb0WZ" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726890AbgIUKVA (ORCPT ); Mon, 21 Sep 2020 06:21:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59100 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726483AbgIUKU6 (ORCPT ); Mon, 21 Sep 2020 06:20:58 -0400 Received: from mail-wr1-x442.google.com (mail-wr1-x442.google.com [IPv6:2a00:1450:4864:20::442]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 08C56C0613D4 for ; Mon, 21 Sep 2020 03:20:53 -0700 (PDT) Received: by mail-wr1-x442.google.com with SMTP id g4so12117098wrs.5 for ; Mon, 21 Sep 2020 03:20:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=acYsfKeNEhwhXW64kid3uQVciTvV530pHLdvT4EkhOs=; b=MFapb0WZTnmZYxo/+ryk7zdccjz6X8FBC93cC1U5HlCKki9ha2cSi3/VTHvApm0A9F wfiYdm4LoJZpmcdspQW5rXIUp4KdTf24gG6LCv8QKR/eDOQU/hM68PeLcOP7Jnz4myiY tLTQzBsHQ0aBLHl8ns3/1xf4IyCPx1erDnQFt/OJef4UL2mifCBtZaVEYvrXL6H7w3mU TgpwpaEo+eoBKjQ2AbiGiz7tbTI2JU+whjLg8pNMCWxQUdLtcpthYcVUK5H4KCwLpKdC D0sJhAmn4Dm1mKQEVY+WDIm7ki/+8fIIr9UVktSVOCuQv/WjtWty1dre9WaZGWug3QVg 0CYA== 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; bh=acYsfKeNEhwhXW64kid3uQVciTvV530pHLdvT4EkhOs=; b=eegFmWVcr6ti5bQ2+hewTkoVqkSTZgZ+3ywYHWDAOAOOK0DAaci3+a+ZHrQFI9rhEt KOHgphUMVIgtoVPGQja9zMWANb9zShyVLJwMP6vn59JKbxBBb/YjSMHuBPP8HrZtgmK/ cNX4gwVvHTRkzY3dDhxJIOKlx+XcZnk80UZD6hqQS6dkzlb7GJW/guOCBDm0mUZYwQ36 ag3G4QEB+PPHSPhjCOLvLmGHAa1NalDPghfK452DrkXhWA35327KOV1uhOf9vUy91WyG TZHwAwKV9607jLPB0A5QGmGP2W2QZhAQ81R1SLguE9uYQ6EH6KQrsasUAgeoGPLKnmKx BMzA== X-Gm-Message-State: AOAM531mNqY9CCfBuBpTjy9QFOiZ6OjkS/v7HjPZKlaUwyvbvbsnxDsU C3Hajd3fg5axnJ+/GLdiN4VBvA== X-Google-Smtp-Source: ABdhPJwOqwj2DdxlPUUYHqY5YZyaVArlb2cPryKJCMnUYXsMB4+IKBo3UJpF0CE4yHthYegYqPMXLQ== X-Received: by 2002:a5d:630a:: with SMTP id i10mr50490903wru.137.1600683651707; Mon, 21 Sep 2020 03:20:51 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.20.50 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:20:51 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 20/49] staging: media: zoran: move overlay_settings out of zoran_fh Date: Mon, 21 Sep 2020 10:19:55 +0000 Message-Id: <1600683624-5863-21-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org We need to get rid of zoran_fh, so move the overlay_settings directly in the zoran structure. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran.h | 1 - drivers/staging/media/zoran/zoran_device.c | 8 ++--- drivers/staging/media/zoran/zoran_driver.c | 40 +++++++++------------- 3 files changed, 21 insertions(+), 28 deletions(-) diff --git a/drivers/staging/media/zoran/zoran.h b/drivers/staging/media/zoran/zoran.h index 7e6e03563a2a..e9fef23a720c 100644 --- a/drivers/staging/media/zoran/zoran.h +++ b/drivers/staging/media/zoran/zoran.h @@ -211,7 +211,6 @@ struct zoran_fh { enum zoran_map_mode map_mode; /* Flag which bufferset will map by next mmap() */ - struct zoran_overlay_settings overlay_settings; u32 *overlay_mask; /* overlay mask */ enum zoran_lock_activity overlay_active;/* feature currently in use? */ diff --git a/drivers/staging/media/zoran/zoran_device.c b/drivers/staging/media/zoran/zoran_device.c index 4f9b28e63ac0..e81316ac6521 100644 --- a/drivers/staging/media/zoran/zoran_device.c +++ b/drivers/staging/media/zoran/zoran_device.c @@ -508,10 +508,10 @@ void write_overlay_mask(struct zoran_fh *fh, struct v4l2_clip *vp, int count) height += y; y = 0; } - if (x + width > fh->overlay_settings.width) - width = fh->overlay_settings.width - x; - if (y + height > fh->overlay_settings.height) - height = fh->overlay_settings.height - y; + if (x + width > zr->overlay_settings.width) + width = zr->overlay_settings.width - x; + if (y + height > zr->overlay_settings.height) + height = zr->overlay_settings.height - y; /* ignore degenerate clips */ if (height <= 0) diff --git a/drivers/staging/media/zoran/zoran_driver.c b/drivers/staging/media/zoran/zoran_driver.c index f0ceda9a3d44..77cd2c07c394 100644 --- a/drivers/staging/media/zoran/zoran_driver.c +++ b/drivers/staging/media/zoran/zoran_driver.c @@ -744,9 +744,7 @@ static void zoran_open_init_session(struct zoran_fh *fh) map_mode_raw(fh); /* take over the card's current settings */ - fh->overlay_settings = zr->overlay_settings; - fh->overlay_settings.is_set = 0; - fh->overlay_settings.format = zr->overlay_settings.format; + zr->overlay_settings.is_set = 0; fh->overlay_active = ZORAN_FREE; /* buffers */ @@ -1005,7 +1003,7 @@ static int setup_window(struct zoran_fh *fh, int x, int y, int width, int height return -EINVAL; } - if (!fh->overlay_settings.format) { + if (!zr->overlay_settings.format) { pci_err(zr->pci_dev, "%s - no overlay format set\n", __func__); return -EINVAL; } @@ -1043,11 +1041,11 @@ static int setup_window(struct zoran_fh *fh, int x, int y, int width, int height return -EINVAL; } - fh->overlay_settings.x = x; - fh->overlay_settings.y = y; - fh->overlay_settings.width = width; - fh->overlay_settings.height = height; - fh->overlay_settings.clipcount = clipcount; + zr->overlay_settings.x = x; + zr->overlay_settings.y = y; + zr->overlay_settings.width = width; + zr->overlay_settings.height = height; + zr->overlay_settings.clipcount = clipcount; /* * If an overlay is running, we have to switch it off @@ -1069,7 +1067,7 @@ static int setup_window(struct zoran_fh *fh, int x, int y, int width, int height */ if (bitmap) { /* fake value - it just means we want clips */ - fh->overlay_settings.clipcount = 1; + zr->overlay_settings.clipcount = 1; if (copy_from_user(fh->overlay_mask, bitmap, (width * height + 7) / 8)) { @@ -1091,10 +1089,7 @@ static int setup_window(struct zoran_fh *fh, int x, int y, int width, int height vfree(vcp); } - fh->overlay_settings.is_set = 1; - if (fh->overlay_active != ZORAN_FREE && - zr->overlay_active != ZORAN_FREE) - zr->overlay_settings = fh->overlay_settings; + zr->overlay_settings.is_set = 1; if (on) zr36057_overlay(zr, 1); @@ -1135,18 +1130,17 @@ static int setup_overlay(struct zoran_fh *fh, int on) zr36057_overlay(zr, 0); zr->overlay_mask = NULL; } else { - if (!zr->vbuf_base || !fh->overlay_settings.is_set) { + if (!zr->vbuf_base || !zr->overlay_settings.is_set) { pci_err(zr->pci_dev, "%s - buffer or window not set\n", __func__); return -EINVAL; } - if (!fh->overlay_settings.format) { + if (!zr->overlay_settings.format) { pci_err(zr->pci_dev, "%s - no overlay format set\n", __func__); return -EINVAL; } zr->overlay_active = fh->overlay_active = ZORAN_LOCKED; zr->v4l_overlay_active = 1; zr->overlay_mask = fh->overlay_mask; - zr->overlay_settings = fh->overlay_settings; if (!zr->v4l_memgrab_active) zr36057_overlay(zr, 1); /* @@ -1430,11 +1424,11 @@ static int zoran_g_fmt_vid_overlay(struct file *file, void *__fh, struct zoran_fh *fh = __fh; struct zoran *zr = fh->zr; - fmt->fmt.win.w.left = fh->overlay_settings.x; - fmt->fmt.win.w.top = fh->overlay_settings.y; - fmt->fmt.win.w.width = fh->overlay_settings.width; - fmt->fmt.win.w.height = fh->overlay_settings.height; - if (fh->overlay_settings.width * 2 > BUZ_MAX_HEIGHT) + fmt->fmt.win.w.left = zr->overlay_settings.x; + fmt->fmt.win.w.top = zr->overlay_settings.y; + fmt->fmt.win.w.width = zr->overlay_settings.width; + fmt->fmt.win.w.height = zr->overlay_settings.height; + if (zr->overlay_settings.width * 2 > BUZ_MAX_HEIGHT) fmt->fmt.win.field = V4L2_FIELD_INTERLACED; else fmt->fmt.win.field = V4L2_FIELD_TOP; @@ -1703,7 +1697,7 @@ static int zoran_g_fbuf(struct file *file, void *__fh, fb->fmt.width = zr->vbuf_width; fb->fmt.height = zr->vbuf_height; if (zr->overlay_settings.format) - fb->fmt.pixelformat = fh->overlay_settings.format->fourcc; + fb->fmt.pixelformat = zr->overlay_settings.format->fourcc; fb->fmt.bytesperline = zr->vbuf_bytesperline; fb->fmt.colorspace = V4L2_COLORSPACE_SRGB; fb->fmt.field = V4L2_FIELD_INTERLACED; From patchwork Mon Sep 21 10:19:56 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789109 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id EC56D6CA for ; Mon, 21 Sep 2020 10:23:22 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id CE3B020EDD for ; Mon, 21 Sep 2020 10:23:22 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="Du24+tm/" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727189AbgIUKXL (ORCPT ); Mon, 21 Sep 2020 06:23:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59104 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726487AbgIUKU6 (ORCPT ); Mon, 21 Sep 2020 06:20:58 -0400 Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com [IPv6:2a00:1450:4864:20::441]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 08CCDC0613D6 for ; Mon, 21 Sep 2020 03:20:54 -0700 (PDT) Received: by mail-wr1-x441.google.com with SMTP id t10so12133483wrv.1 for ; Mon, 21 Sep 2020 03:20:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=65FXJqBuVDUzxD7doK++gxysr5EY6cSmpC745+zOXJs=; b=Du24+tm/QhmhZ5IVy7r2qPHUeCurWcwjdhxfvUmy4+7fplJwd3mtGQfOB8MZgTqFl1 vbavMjLPVGU5vW1vR8Ms6EEpiDMFdTbMx6KzdLWgyGxAGWyJ9l3IJo+b51zvZfdlaWRo IgYhmvKycQsZFysfm9I7u+CkXkCTVxIy6D/955vSwybNxK5FpllxCk+uP/W68dKwvAhH t/Cv7GX9cr5h5PmH2L6acNNPIQNFtM9K0joVNuxFlS65+lOOCrjn7Ia5FfRHY7nCHeTt BT/0zrRLOTDyGVt4Wh2NawrP8Tl3/QtEXp9E9Y1Xrgx0Zm5VP3P4SCeTC7G59H/yNTtC 3F4A== 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; bh=65FXJqBuVDUzxD7doK++gxysr5EY6cSmpC745+zOXJs=; b=BxqMoQDamNys4YIZza6PohM3lYy9T8596cH8YDV9nHiIeM9nfP2VxvlcXWWsvhYNmS MNP8s2BIxHHQenT3NIT0SApwtA7N1IDSS9z/dHxeFhGKbGQqUdxRVT2b00OJ83qfvnT0 ltNDzaY5sUHMg9eD69MSgbnzOCXXPIzU08BTPEnIsZOqyfTOlkAnj8a3+tdUVXDyFdcd pIjCNyhLHaOSEbYjQpT0w0I+NDuhyrUskLM3OALGCL2rrH6IlgR9I96zL1b5i+RP2EUM dsrq+u/GSBn2ZyE5uYYepAO07zO4kP3MsafNIeHn2OGIyNE9xox+F6oNW2JNTZ4CezZt FTGw== X-Gm-Message-State: AOAM530QXyoEVR8/Co0sMwmvrdBiUBjoa67WklfdXWVDjYSQInrULy7v KpuQMLMhyTwjPH3auVpdyJHA1A== X-Google-Smtp-Source: ABdhPJwk1tGudOVy78cc5atd6bTRWuBVMmN4LKzZfKPwxptMUejJSagxk3DjbhP5ecTDndV98Boo8A== X-Received: by 2002:a05:6000:85:: with SMTP id m5mr22915576wrx.160.1600683652749; Mon, 21 Sep 2020 03:20:52 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.20.51 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:20:51 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 21/49] staging: media: zoran: Use video_drvdata to get struct zoran Date: Mon, 21 Sep 2020 10:19:56 +0000 Message-Id: <1600683624-5863-22-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Using video_drvdata() is proper and shorter than using directly fh pointers. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran_driver.c | 40 ++++++++-------------- 1 file changed, 14 insertions(+), 26 deletions(-) diff --git a/drivers/staging/media/zoran/zoran_driver.c b/drivers/staging/media/zoran/zoran_driver.c index 77cd2c07c394..9d39e98c9af1 100644 --- a/drivers/staging/media/zoran/zoran_driver.c +++ b/drivers/staging/media/zoran/zoran_driver.c @@ -1320,8 +1320,7 @@ static int zoran_set_input(struct zoran *zr, int input) static int zoran_querycap(struct file *file, void *__fh, struct v4l2_capability *cap) { - struct zoran_fh *fh = __fh; - struct zoran *zr = fh->zr; + struct zoran *zr = video_drvdata(file); strscpy(cap->card, ZR_DEVNAME(zr), sizeof(cap->card)); strscpy(cap->driver, "zoran", sizeof(cap->driver)); @@ -1352,8 +1351,7 @@ static int zoran_enum_fmt(struct zoran *zr, struct v4l2_fmtdesc *fmt, int flag) static int zoran_enum_fmt_vid_cap(struct file *file, void *__fh, struct v4l2_fmtdesc *f) { - struct zoran_fh *fh = __fh; - struct zoran *zr = fh->zr; + struct zoran *zr = video_drvdata(file); return zoran_enum_fmt(zr, f, ZORAN_FORMAT_CAPTURE); } @@ -1361,8 +1359,7 @@ static int zoran_enum_fmt_vid_cap(struct file *file, void *__fh, static int zoran_enum_fmt_vid_out(struct file *file, void *__fh, struct v4l2_fmtdesc *f) { - struct zoran_fh *fh = __fh; - struct zoran *zr = fh->zr; + struct zoran *zr = video_drvdata(file); return zoran_enum_fmt(zr, f, ZORAN_FORMAT_PLAYBACK); } @@ -1370,8 +1367,7 @@ static int zoran_enum_fmt_vid_out(struct file *file, void *__fh, static int zoran_enum_fmt_vid_overlay(struct file *file, void *__fh, struct v4l2_fmtdesc *f) { - struct zoran_fh *fh = __fh; - struct zoran *zr = fh->zr; + struct zoran *zr = video_drvdata(file); return zoran_enum_fmt(zr, f, ZORAN_FORMAT_OVERLAY); } @@ -1421,8 +1417,7 @@ static int zoran_g_fmt_vid_cap(struct file *file, void *__fh, struct v4l2_format static int zoran_g_fmt_vid_overlay(struct file *file, void *__fh, struct v4l2_format *fmt) { - struct zoran_fh *fh = __fh; - struct zoran *zr = fh->zr; + struct zoran *zr = video_drvdata(file); fmt->fmt.win.w.left = zr->overlay_settings.x; fmt->fmt.win.w.top = zr->overlay_settings.y; @@ -1439,8 +1434,7 @@ static int zoran_g_fmt_vid_overlay(struct file *file, void *__fh, static int zoran_try_fmt_vid_overlay(struct file *file, void *__fh, struct v4l2_format *fmt) { - struct zoran_fh *fh = __fh; - struct zoran *zr = fh->zr; + struct zoran *zr = video_drvdata(file); if (fmt->fmt.win.w.width > BUZ_MAX_WIDTH) fmt->fmt.win.w.width = BUZ_MAX_WIDTH; @@ -1641,8 +1635,8 @@ static int zoran_s_fmt_vid_out(struct file *file, void *__fh, struct v4l2_format static int zoran_s_fmt_vid_cap(struct file *file, void *__fh, struct v4l2_format *fmt) { + struct zoran *zr = video_drvdata(file); struct zoran_fh *fh = __fh; - struct zoran *zr = fh->zr; int i; int res = 0; @@ -1689,8 +1683,7 @@ static int zoran_s_fmt_vid_cap(struct file *file, void *__fh, struct v4l2_format static int zoran_g_fbuf(struct file *file, void *__fh, struct v4l2_framebuffer *fb) { - struct zoran_fh *fh = __fh; - struct zoran *zr = fh->zr; + struct zoran *zr = video_drvdata(file); memset(fb, 0, sizeof(*fb)); fb->base = zr->vbuf_base; @@ -1709,8 +1702,8 @@ static int zoran_g_fbuf(struct file *file, void *__fh, static int zoran_s_fbuf(struct file *file, void *__fh, const struct v4l2_framebuffer *fb) { + struct zoran *zr = video_drvdata(file); struct zoran_fh *fh = __fh; - struct zoran *zr = fh->zr; int i, res = 0; __le32 printformat = __cpu_to_le32(fb->fmt.pixelformat); @@ -2042,8 +2035,7 @@ static int zoran_streamoff(struct file *file, void *__fh, enum v4l2_buf_type typ static int zoran_g_std(struct file *file, void *__fh, v4l2_std_id *std) { - struct zoran_fh *fh = __fh; - struct zoran *zr = fh->zr; + struct zoran *zr = video_drvdata(file); *std = zr->norm; return 0; @@ -2051,8 +2043,7 @@ static int zoran_g_std(struct file *file, void *__fh, v4l2_std_id *std) static int zoran_s_std(struct file *file, void *__fh, v4l2_std_id std) { - struct zoran_fh *fh = __fh; - struct zoran *zr = fh->zr; + struct zoran *zr = video_drvdata(file); int res = 0; res = zoran_set_norm(zr, std); @@ -2065,8 +2056,7 @@ static int zoran_s_std(struct file *file, void *__fh, v4l2_std_id std) static int zoran_enum_input(struct file *file, void *__fh, struct v4l2_input *inp) { - struct zoran_fh *fh = __fh; - struct zoran *zr = fh->zr; + struct zoran *zr = video_drvdata(file); if (inp->index >= zr->card.inputs) return -EINVAL; @@ -2082,8 +2072,7 @@ static int zoran_enum_input(struct file *file, void *__fh, struct v4l2_input *in static int zoran_g_input(struct file *file, void *__fh, unsigned int *input) { - struct zoran_fh *fh = __fh; - struct zoran *zr = fh->zr; + struct zoran *zr = video_drvdata(file); *input = zr->input; @@ -2092,8 +2081,7 @@ static int zoran_g_input(struct file *file, void *__fh, unsigned int *input) static int zoran_s_input(struct file *file, void *__fh, unsigned int input) { - struct zoran_fh *fh = __fh; - struct zoran *zr = fh->zr; + struct zoran *zr = video_drvdata(file); int res; res = zoran_set_input(zr, input); From patchwork Mon Sep 21 10:19:57 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789117 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 00FE86CA for ; Mon, 21 Sep 2020 10:23:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D78B5207BC for ; Mon, 21 Sep 2020 10:23:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="iqAWoqv5" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726782AbgIUKXX (ORCPT ); Mon, 21 Sep 2020 06:23:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59106 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726862AbgIUKU6 (ORCPT ); Mon, 21 Sep 2020 06:20:58 -0400 Received: from mail-wm1-x341.google.com (mail-wm1-x341.google.com [IPv6:2a00:1450:4864:20::341]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F1DF1C0613D9 for ; Mon, 21 Sep 2020 03:20:54 -0700 (PDT) Received: by mail-wm1-x341.google.com with SMTP id d4so11562080wmd.5 for ; Mon, 21 Sep 2020 03:20:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=W9l+Ys/sZM3d6xhrHezcVkS5bzDQH0s3RIYh871x9x4=; b=iqAWoqv5mek5bGr8V+7R0brhUWGzYzXqVnoTLGANdKVfzIASu5Ltfsvs/4QvSr1bUj W13DByuHiY/QO33bU9WbKnRQIveOUq9DnzlbCwj/k9Wb0sXc6xN/r7a24sY5Mr5fmlW9 fehkIyJ/btG4MOLjcvxxxBmQsEuU8/+Q77ItYkW1vYAZuYW8Hgcj1G7tbGddUM6yjBoc 2f5+DJ7tggv8b7IlDjP2SRf7gJRqMLVtiFedDbDt3ktarlkUN64pGtcv0lmwGrAQQM74 73MCe6ygzcqb+xnEfU1jGZgwFmrKtVHDR4cuOOXIN60VVQH6n14jNbvOSWLyWMYFWQxx m06A== 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; bh=W9l+Ys/sZM3d6xhrHezcVkS5bzDQH0s3RIYh871x9x4=; b=dmM50tdolhvW5F/xjVr9wItTIphWCT/JJZVjVxXy15a6fmoqubg8AfSjwoolKXR4pK Y0qRvwn5TRba6R/DFPcY69ZyBJXIgM9u47ik7uTfm4AnGfjauVfhm5D0UeSMBAYJSKdv qSXSwWPKw9fc8u5tyK80Ao/8dzgamX1/sEo5DTdgyWy5Yy8hzxGGT15GMYoYK8FLnRee B3VjH52dZgCLa/7+iSHJurcp74SkT+rSA9aTplqgdsBymxp+D+mDW+17krAf06qMNHet xJ/iQQmKmbdj8tZqwpAq1SYnKLXtzRZ3v4iLAD3HHIUoh3btkS9C886vHPfeWra3bZn2 aOqQ== X-Gm-Message-State: AOAM533WQ+vZ6I3h+SfnqkRuIrAS5tmAM1tSAEk13ECpov6kbkRl/4mF NpPF7eOBe8vU49T/X1WvEiNs5g== X-Google-Smtp-Source: ABdhPJx+Jio63BI97Ba3xgqm05G+Ycj9Xis82lW+zvFdcZtzfep2WU/z7PUICZIkSF0z6EKAwYAVtw== X-Received: by 2002:a1c:6187:: with SMTP id v129mr29088035wmb.35.1600683653663; Mon, 21 Sep 2020 03:20:53 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.20.52 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:20:53 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 22/49] staging: media: zoran: Change zoran_v4l_set_format parameter from zoran_fh to zoran Date: Mon, 21 Sep 2020 10:19:57 +0000 Message-Id: <1600683624-5863-23-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org We need to get rid of zoran_fh, so let's change function arguments. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran_driver.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/staging/media/zoran/zoran_driver.c b/drivers/staging/media/zoran/zoran_driver.c index 9d39e98c9af1..078575334b5d 100644 --- a/drivers/staging/media/zoran/zoran_driver.c +++ b/drivers/staging/media/zoran/zoran_driver.c @@ -401,11 +401,9 @@ static void jpg_fbuffer_free(struct zoran_fh *fh) /* * V4L Buffer grabbing */ - -static int zoran_v4l_set_format(struct zoran_fh *fh, int width, int height, +static int zoran_v4l_set_format(struct zoran *zr, int width, int height, const struct zoran_format *format) { - struct zoran *zr = fh->zr; int bpp; /* Check size and format of the grab wanted */ @@ -1665,7 +1663,7 @@ static int zoran_s_fmt_vid_cap(struct file *file, void *__fh, struct v4l2_format map_mode_raw(fh); - res = zoran_v4l_set_format(fh, fmt->fmt.pix.width, fmt->fmt.pix.height, &zoran_formats[i]); + res = zoran_v4l_set_format(zr, fmt->fmt.pix.width, fmt->fmt.pix.height, &zoran_formats[i]); if (res) return res; From patchwork Mon Sep 21 10:19:58 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789119 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7206759D for ; Mon, 21 Sep 2020 10:23:34 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4B4E320EDD for ; Mon, 21 Sep 2020 10:23:34 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="kCj7U9O7" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726746AbgIUKXX (ORCPT ); Mon, 21 Sep 2020 06:23:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59112 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726827AbgIUKU6 (ORCPT ); Mon, 21 Sep 2020 06:20:58 -0400 Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com [IPv6:2a00:1450:4864:20::32a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0C096C0613DA for ; Mon, 21 Sep 2020 03:20:56 -0700 (PDT) Received: by mail-wm1-x32a.google.com with SMTP id e17so11564822wme.0 for ; Mon, 21 Sep 2020 03:20:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ZohYJvIsJC31BNCOTSqfkt5qk6W1FSkaodmuzZ243PI=; b=kCj7U9O7WWWVcT8qH/8APnvqMuyuREj3/FJSQA7VwvBto76w0FJSHWCq33yHBBwkbO 9ct0HsJg8ETgx1DnD1MW4HHIR9J9XFznWXheQ6f7DhK4XZ5MTfFwEuHs0ewVyqVI9+Qe YyT3EXD+WJnh14hz/mUiTnDJnH2Q8FQoGKFU9hKg69Rp/2CSSSOjgeRG63rfgat0Uabx aYZkCEugIwAv+cGTx3ER0SqWZLlAtoun+Fdt02izVganUryo0kAsX7kFwjebPcIj+PKM lVA7QIKiKHXBHMITWxIcPoYWIa4UJ9OJS/7GM5DdEB319PJPSvePkfikNHVE8ua4mFvC dWKA== 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; bh=ZohYJvIsJC31BNCOTSqfkt5qk6W1FSkaodmuzZ243PI=; b=Nv+Pcsr2bIjTNt/YGjdKEZdx/5cj/LVtOYAEXOkYUsdDkUaAQBJw2qXY7Aj+rlqG76 x0qJbP2iuH9bLu3CpKZRiv04qeUb/+y5V3efA22i7IAHzkL3/0b7XouAS4sAjxpsx3sx oFFqj6mNOKQhfLgyBdmfyFkVxs5mquBvfUAyZ8S0rLmXmVZHyAA/n04554jJejHnFt99 QAqDakhENOqQccqFJoZE1yTesFftVHrE3dM+vaeN/D2k+lq+PFPw+zPt9K/65E9O+d2a aGHvzbpaNxG2XGFYwLNfkE77bJ27e3crV27mHWnkus9ATkLuuCIdBXeLiqHehcV/9h61 Pu/g== X-Gm-Message-State: AOAM5337y/+bXJ4JwVi/l9YKQHsha2DqyG+7RJVsQLw3FTgtdro7kfPY 47+L1vJLC0BJIlUgFN9TfkqOYg== X-Google-Smtp-Source: ABdhPJxr/p/JHO2w8Oeovijrwvhr8sP0j/6P5O7HvqEo/RILy4MbSQEElTRm+6Xea/CcNXeIqoXiZg== X-Received: by 2002:a1c:4455:: with SMTP id r82mr29268258wma.60.1600683654581; Mon, 21 Sep 2020 03:20:54 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.20.53 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:20:54 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 23/49] staging: media: zoran: remove overlay Date: Mon, 21 Sep 2020 10:19:58 +0000 Message-Id: <1600683624-5863-24-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Supporting overlay is not necessary today, so let's reduce the code size by removing it. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran.h | 16 - drivers/staging/media/zoran/zoran_card.c | 6 - drivers/staging/media/zoran/zoran_device.c | 143 +-------- drivers/staging/media/zoran/zoran_driver.c | 337 +-------------------- 4 files changed, 12 insertions(+), 490 deletions(-) diff --git a/drivers/staging/media/zoran/zoran.h b/drivers/staging/media/zoran/zoran.h index e9fef23a720c..aa2a8f688a01 100644 --- a/drivers/staging/media/zoran/zoran.h +++ b/drivers/staging/media/zoran/zoran.h @@ -139,14 +139,6 @@ struct zoran_format { #define ZORAN_FORMAT_CAPTURE BIT(2) #define ZORAN_FORMAT_PLAYBACK BIT(3) -/* overlay-settings */ -struct zoran_overlay_settings { - int is_set; - int x, y, width, height; /* position */ - int clipcount; /* position and number of clips */ - const struct zoran_format *format; /* overlay format */ -}; - /* v4l-capture settings */ struct zoran_v4l_settings { int width, height, bytesperline; /* capture size */ @@ -211,9 +203,6 @@ struct zoran_fh { enum zoran_map_mode map_mode; /* Flag which bufferset will map by next mmap() */ - u32 *overlay_mask; /* overlay mask */ - enum zoran_lock_activity overlay_active;/* feature currently in use? */ - struct zoran_buffer_col buffers; /* buffers' info */ }; @@ -294,13 +283,8 @@ struct zoran { int vbuf_depth; int vbuf_bytesperline; - struct zoran_overlay_settings overlay_settings; - u32 *overlay_mask; /* overlay mask */ - enum zoran_lock_activity overlay_active; /* feature currently in use? */ - wait_queue_head_t v4l_capq; - int v4l_overlay_active; /* Overlay grab is activated */ int v4l_memgrab_active; /* Memory grab is activated */ int v4l_grab_frame; /* Frame number being currently grabbed */ diff --git a/drivers/staging/media/zoran/zoran_card.c b/drivers/staging/media/zoran/zoran_card.c index 34841c12c224..3a7895be3341 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -812,13 +812,7 @@ void zoran_open_init_params(struct zoran *zr) { int i; - /* User must explicitly set a window */ - zr->overlay_settings.is_set = 0; - zr->overlay_mask = NULL; - zr->overlay_active = ZORAN_FREE; - zr->v4l_memgrab_active = 0; - zr->v4l_overlay_active = 0; zr->v4l_grab_frame = NO_GRAB_ACTIVE; zr->v4l_grab_seq = 0; zr->v4l_settings.width = 192; diff --git a/drivers/staging/media/zoran/zoran_device.c b/drivers/staging/media/zoran/zoran_device.c index e81316ac6521..e3104b534471 100644 --- a/drivers/staging/media/zoran/zoran_device.c +++ b/drivers/staging/media/zoran/zoran_device.c @@ -300,7 +300,6 @@ static void zr36057_set_vfe(struct zoran *zr, int video_width, int video_height, unsigned int Wa, We, Ha, He; unsigned int X, Y, HorDcm, VerDcm; u32 reg; - unsigned int mask_line_size; tvn = zr->timing; @@ -395,143 +394,9 @@ static void zr36057_set_vfe(struct zoran *zr, int video_width, int video_height, reg |= ZR36057_VDCR_Triton; btwrite(reg, ZR36057_VDCR); - /* (Ronald) don't write this if overlay_mask = NULL */ - if (zr->overlay_mask) { - /* Write overlay clipping mask data, but don't enable overlay clipping */ - /* RJ: since this makes only sense on the screen, we use - * zr->overlay_settings.width instead of video_width */ - - mask_line_size = (BUZ_MAX_WIDTH + 31) / 32; - reg = virt_to_bus(zr->overlay_mask); - btwrite(reg, ZR36057_MMTR); - reg = virt_to_bus(zr->overlay_mask + mask_line_size); - btwrite(reg, ZR36057_MMBR); - reg = - mask_line_size - (zr->overlay_settings.width + - 31) / 32; - if (DispMode == 0) - reg += mask_line_size; - reg <<= ZR36057_OCR_MaskStride; - btwrite(reg, ZR36057_OCR); - } - zr36057_adjust_vfe(zr, zr->codec_mode); } -/* - * Switch overlay on or off - */ - -void zr36057_overlay(struct zoran *zr, int on) -{ - u32 reg; - - if (on) { - /* do the necessary settings ... */ - btand(~ZR36057_VDCR_VidEn, ZR36057_VDCR); /* switch it off first */ - - zr36057_set_vfe(zr, - zr->overlay_settings.width, - zr->overlay_settings.height, - zr->overlay_settings.format); - - /* Start and length of each line MUST be 4-byte aligned. - * This should be already checked before the call to this routine. - * All error messages are internal driver checking only! */ - - /* video display top and bottom registers */ - reg = (long)zr->vbuf_base + - zr->overlay_settings.x * - ((zr->overlay_settings.format->depth + 7) / 8) + - zr->overlay_settings.y * - zr->vbuf_bytesperline; - btwrite(reg, ZR36057_VDTR); - if (reg & 3) - pci_err(zr->pci_dev, "zr36057_overlay() - video_address not aligned\n"); - if (zr->overlay_settings.height > BUZ_MAX_HEIGHT / 2) - reg += zr->vbuf_bytesperline; - btwrite(reg, ZR36057_VDBR); - - /* video stride, status, and frame grab register */ - reg = zr->vbuf_bytesperline - - zr->overlay_settings.width * - ((zr->overlay_settings.format->depth + 7) / 8); - if (zr->overlay_settings.height > BUZ_MAX_HEIGHT / 2) - reg += zr->vbuf_bytesperline; - if (reg & 3) - pci_err(zr->pci_dev, "zr36057_overlay() - video_stride not aligned\n"); - reg = (reg << ZR36057_VSSFGR_DispStride); - reg |= ZR36057_VSSFGR_VidOvf; /* clear overflow status */ - btwrite(reg, ZR36057_VSSFGR); - - /* Set overlay clipping */ - if (zr->overlay_settings.clipcount > 0) - btor(ZR36057_OCR_OvlEnable, ZR36057_OCR); - - /* ... and switch it on */ - btor(ZR36057_VDCR_VidEn, ZR36057_VDCR); - } else { - /* Switch it off */ - btand(~ZR36057_VDCR_VidEn, ZR36057_VDCR); - } -} - -/* - * The overlay mask has one bit for each pixel on a scan line, - * and the maximum window size is BUZ_MAX_WIDTH * BUZ_MAX_HEIGHT pixels. - */ - -void write_overlay_mask(struct zoran_fh *fh, struct v4l2_clip *vp, int count) -{ - struct zoran *zr = fh->zr; - unsigned int mask_line_size = (BUZ_MAX_WIDTH + 31) / 32; - u32 *mask; - int x, y, width, height; - unsigned int i, j, k; - - /* fill mask with one bits */ - memset(fh->overlay_mask, ~0, mask_line_size * 4 * BUZ_MAX_HEIGHT); - - for (i = 0; i < count; ++i) { - /* pick up local copy of clip */ - x = vp[i].c.left; - y = vp[i].c.top; - width = vp[i].c.width; - height = vp[i].c.height; - - /* trim clips that extend beyond the window */ - if (x < 0) { - width += x; - x = 0; - } - if (y < 0) { - height += y; - y = 0; - } - if (x + width > zr->overlay_settings.width) - width = zr->overlay_settings.width - x; - if (y + height > zr->overlay_settings.height) - height = zr->overlay_settings.height - y; - - /* ignore degenerate clips */ - if (height <= 0) - continue; - if (width <= 0) - continue; - - /* apply clip for each scan line */ - for (j = 0; j < height; ++j) { - /* reset bit for each pixel */ - /* this can be optimized later if need be */ - mask = fh->overlay_mask + (y + j) * mask_line_size; - for (k = 0; k < width; ++k) { - mask[(x + k) / 32] &= - ~((u32)1 << (x + k) % 32); - } - } - } -} - /* Enable/Disable uncompressed memory grabbing of the 36057 */ void zr36057_set_memgrab(struct zoran *zr, int mode) { @@ -567,12 +432,8 @@ void zr36057_set_memgrab(struct zoran *zr, int mode) zr->v4l_grab_frame = NO_GRAB_ACTIVE; /* re-enable grabbing to screen if it was running */ - if (zr->v4l_overlay_active) { - zr36057_overlay(zr, 1); - } else { - btand(~ZR36057_VDCR_VidEn, ZR36057_VDCR); - btand(~ZR36057_VSSFGR_SnapShot, ZR36057_VSSFGR); - } + btand(~ZR36057_VDCR_VidEn, ZR36057_VDCR); + btand(~ZR36057_VSSFGR_SnapShot, ZR36057_VSSFGR); } } diff --git a/drivers/staging/media/zoran/zoran_driver.c b/drivers/staging/media/zoran/zoran_driver.c index 078575334b5d..8724b0ad855e 100644 --- a/drivers/staging/media/zoran/zoran_driver.c +++ b/drivers/staging/media/zoran/zoran_driver.c @@ -65,8 +65,7 @@ const struct zoran_format zoran_formats[] = { .fourcc = V4L2_PIX_FMT_RGB555, .colorspace = V4L2_COLORSPACE_SRGB, .depth = 15, - .flags = ZORAN_FORMAT_CAPTURE | - ZORAN_FORMAT_OVERLAY, + .flags = ZORAN_FORMAT_CAPTURE, .vfespfr = ZR36057_VFESPFR_RGB555 | ZR36057_VFESPFR_ErrDif | ZR36057_VFESPFR_LittleEndian, }, { @@ -74,16 +73,14 @@ const struct zoran_format zoran_formats[] = { .fourcc = V4L2_PIX_FMT_RGB555X, .colorspace = V4L2_COLORSPACE_SRGB, .depth = 15, - .flags = ZORAN_FORMAT_CAPTURE | - ZORAN_FORMAT_OVERLAY, + .flags = ZORAN_FORMAT_CAPTURE, .vfespfr = ZR36057_VFESPFR_RGB555 | ZR36057_VFESPFR_ErrDif, }, { .name = "16-bit RGB LE", .fourcc = V4L2_PIX_FMT_RGB565, .colorspace = V4L2_COLORSPACE_SRGB, .depth = 16, - .flags = ZORAN_FORMAT_CAPTURE | - ZORAN_FORMAT_OVERLAY, + .flags = ZORAN_FORMAT_CAPTURE, .vfespfr = ZR36057_VFESPFR_RGB565 | ZR36057_VFESPFR_ErrDif | ZR36057_VFESPFR_LittleEndian, }, { @@ -91,48 +88,42 @@ const struct zoran_format zoran_formats[] = { .fourcc = V4L2_PIX_FMT_RGB565X, .colorspace = V4L2_COLORSPACE_SRGB, .depth = 16, - .flags = ZORAN_FORMAT_CAPTURE | - ZORAN_FORMAT_OVERLAY, + .flags = ZORAN_FORMAT_CAPTURE, .vfespfr = ZR36057_VFESPFR_RGB565 | ZR36057_VFESPFR_ErrDif, }, { .name = "24-bit RGB", .fourcc = V4L2_PIX_FMT_BGR24, .colorspace = V4L2_COLORSPACE_SRGB, .depth = 24, - .flags = ZORAN_FORMAT_CAPTURE | - ZORAN_FORMAT_OVERLAY, + .flags = ZORAN_FORMAT_CAPTURE, .vfespfr = ZR36057_VFESPFR_RGB888 | ZR36057_VFESPFR_Pack24, }, { .name = "32-bit RGB LE", .fourcc = V4L2_PIX_FMT_BGR32, .colorspace = V4L2_COLORSPACE_SRGB, .depth = 32, - .flags = ZORAN_FORMAT_CAPTURE | - ZORAN_FORMAT_OVERLAY, + .flags = ZORAN_FORMAT_CAPTURE, .vfespfr = ZR36057_VFESPFR_RGB888 | ZR36057_VFESPFR_LittleEndian, }, { .name = "32-bit RGB BE", .fourcc = V4L2_PIX_FMT_RGB32, .colorspace = V4L2_COLORSPACE_SRGB, .depth = 32, - .flags = ZORAN_FORMAT_CAPTURE | - ZORAN_FORMAT_OVERLAY, + .flags = ZORAN_FORMAT_CAPTURE, .vfespfr = ZR36057_VFESPFR_RGB888, }, { .name = "4:2:2, packed, YUYV", .fourcc = V4L2_PIX_FMT_YUYV, .colorspace = V4L2_COLORSPACE_SMPTE170M, .depth = 16, - .flags = ZORAN_FORMAT_CAPTURE | - ZORAN_FORMAT_OVERLAY, + .flags = ZORAN_FORMAT_CAPTURE, .vfespfr = ZR36057_VFESPFR_YUV422, }, { .name = "4:2:2, packed, UYVY", .fourcc = V4L2_PIX_FMT_UYVY, .colorspace = V4L2_COLORSPACE_SMPTE170M, .depth = 16, - .flags = ZORAN_FORMAT_CAPTURE | - ZORAN_FORMAT_OVERLAY, + .flags = ZORAN_FORMAT_CAPTURE, .vfespfr = ZR36057_VFESPFR_YUV422 | ZR36057_VFESPFR_LittleEndian, }, { .name = "Hardware-encoded Motion-JPEG", @@ -736,15 +727,10 @@ static int jpg_sync(struct zoran_fh *fh, struct zoran_sync *bs) static void zoran_open_init_session(struct zoran_fh *fh) { int i; - struct zoran *zr = fh->zr; /* Per default, map the V4L Buffers */ map_mode_raw(fh); - /* take over the card's current settings */ - zr->overlay_settings.is_set = 0; - fh->overlay_active = ZORAN_FREE; - /* buffers */ memset(&fh->buffers, 0, sizeof(fh->buffers)); for (i = 0; i < MAX_FRAME; i++) { @@ -759,15 +745,6 @@ static void zoran_close_end_session(struct zoran_fh *fh) { struct zoran *zr = fh->zr; - /* overlay */ - if (fh->overlay_active != ZORAN_FREE) { - fh->overlay_active = zr->overlay_active = ZORAN_FREE; - zr->v4l_overlay_active = 0; - if (!zr->v4l_memgrab_active) - zr36057_overlay(zr, 0); - zr->overlay_mask = NULL; - } - if (fh->map_mode == ZORAN_MAP_MODE_RAW) { /* v4l capture */ if (fh->buffers.active != ZORAN_FREE) { @@ -825,16 +802,6 @@ static int zoran_open(struct file *file) } v4l2_fh_init(&fh->fh, video_devdata(file)); - /* - * used to be BUZ_MAX_WIDTH/HEIGHT, but that gives overflows - * on norm-change! - */ - fh->overlay_mask = kmalloc(array3_size((768 + 31) / 32, 576, 4), GFP_KERNEL); - if (!fh->overlay_mask) { - res = -ENOMEM; - goto fail_fh; - } - if (zr->user++ == 0) first_open = 1; @@ -856,9 +823,6 @@ static int zoran_open(struct file *file) return 0; -fail_fh: - v4l2_fh_exit(&fh->fh); - kfree(fh); fail_unlock: mutex_unlock(&zr->lock); @@ -894,11 +858,6 @@ static int zoran_close(struct file *file) if (zr36067_debug > 1) print_interrupts(zr); - /* Overlay off */ - zr->v4l_overlay_active = 0; - zr36057_overlay(zr, 0); - zr->overlay_mask = NULL; - /* capture off */ wake_up_interruptible(&zr->v4l_capq); zr36057_set_memgrab(zr, 0); @@ -915,7 +874,6 @@ static int zoran_close(struct file *file) v4l2_fh_del(&fh->fh); v4l2_fh_exit(&fh->fh); - kfree(fh->overlay_mask); kfree(fh); pci_dbg(zr->pci_dev, "%s done\n", __func__); @@ -945,26 +903,6 @@ static int setup_fbuffer(struct zoran_fh *fh, void *base, const struct zoran_for if (!bytesperline) bytesperline = width * ((fmt->depth + 7) & ~7) / 8; -#if 0 - if (zr->overlay_active) { - /* dzjee... stupid users... don't even bother to turn off - * overlay before changing the memory location... - * normally, we would return errors here. However, one of - * the tools that does this is... xawtv! and since xawtv - * is used by +/- 99% of the users, we'd rather be user- - * friendly and silently do as if nothing went wrong */ - dprintk(3, - KERN_ERR - "%s: %s - forced overlay turnoff because framebuffer changed\n", - ZR_DEVNAME(zr), __func__); - zr36057_overlay(zr, 0); - } -#endif - - if (!(fmt->flags & ZORAN_FORMAT_OVERLAY)) { - pci_err(zr->pci_dev, "%s - no valid overlay format given\n", __func__); - return -EINVAL; - } if (height <= 0 || width <= 0 || bytesperline <= 0) { pci_err(zr->pci_dev, "%s - invalid height/width/bpl value (%d|%d|%d)\n", __func__, width, height, bytesperline); @@ -980,177 +918,11 @@ static int setup_fbuffer(struct zoran_fh *fh, void *base, const struct zoran_for zr->vbuf_height = height; zr->vbuf_width = width; zr->vbuf_depth = fmt->depth; - zr->overlay_settings.format = fmt; zr->vbuf_bytesperline = bytesperline; - /* The user should set new window parameters */ - zr->overlay_settings.is_set = 0; - return 0; } -static int setup_window(struct zoran_fh *fh, int x, int y, int width, int height, - struct v4l2_clip __user *clips, unsigned int clipcount, void __user *bitmap) -{ - struct zoran *zr = fh->zr; - struct v4l2_clip *vcp = NULL; - int on, end; - - if (!zr->vbuf_base) { - pci_err(zr->pci_dev, "%s - frame buffer has to be set first\n", __func__); - return -EINVAL; - } - - if (!zr->overlay_settings.format) { - pci_err(zr->pci_dev, "%s - no overlay format set\n", __func__); - return -EINVAL; - } - - if (clipcount > 2048) { - pci_err(zr->pci_dev, "%s - invalid clipcount\n", __func__); - return -EINVAL; - } - - /* - * The video front end needs 4-byte alinged line sizes, we correct that - * silently here if necessary - */ - if (zr->vbuf_depth == 15 || zr->vbuf_depth == 16) { - end = (x + width) & ~1; /* round down */ - x = (x + 1) & ~1; /* round up */ - width = end - x; - } - - if (zr->vbuf_depth == 24) { - end = (x + width) & ~3; /* round down */ - x = (x + 3) & ~3; /* round up */ - width = end - x; - } - - if (width > BUZ_MAX_WIDTH) - width = BUZ_MAX_WIDTH; - if (height > BUZ_MAX_HEIGHT) - height = BUZ_MAX_HEIGHT; - - /* Check for invalid parameters */ - if (width < BUZ_MIN_WIDTH || height < BUZ_MIN_HEIGHT || - width > BUZ_MAX_WIDTH || height > BUZ_MAX_HEIGHT) { - pci_err(zr->pci_dev, "%s - width = %d or height = %d invalid\n", __func__, width, height); - return -EINVAL; - } - - zr->overlay_settings.x = x; - zr->overlay_settings.y = y; - zr->overlay_settings.width = width; - zr->overlay_settings.height = height; - zr->overlay_settings.clipcount = clipcount; - - /* - * If an overlay is running, we have to switch it off - * and switch it on again in order to get the new settings in effect. - * - * We also want to avoid that the overlay mask is written - * when an overlay is running. - */ - - on = zr->v4l_overlay_active && !zr->v4l_memgrab_active && - zr->overlay_active != ZORAN_FREE && - fh->overlay_active != ZORAN_FREE; - if (on) - zr36057_overlay(zr, 0); - - /* - * Write the overlay mask if clips are wanted. - * We prefer a bitmap. - */ - if (bitmap) { - /* fake value - it just means we want clips */ - zr->overlay_settings.clipcount = 1; - - if (copy_from_user(fh->overlay_mask, bitmap, - (width * height + 7) / 8)) { - return -EFAULT; - } - } else if (clipcount) { - /* write our own bitmap from the clips */ - vcp = vmalloc(array_size(sizeof(struct v4l2_clip), - clipcount + 4)); - if (!vcp) { - return -ENOMEM; - } - if (copy_from_user - (vcp, clips, sizeof(struct v4l2_clip) * clipcount)) { - vfree(vcp); - return -EFAULT; - } - write_overlay_mask(fh, vcp, clipcount); - vfree(vcp); - } - - zr->overlay_settings.is_set = 1; - - if (on) - zr36057_overlay(zr, 1); - - /* Make sure the changes come into effect */ - return wait_grab_pending(zr); -} - -static int setup_overlay(struct zoran_fh *fh, int on) -{ - struct zoran *zr = fh->zr; - - /* If there is nothing to do, return immediately */ - if ((on && fh->overlay_active != ZORAN_FREE) || - (!on && fh->overlay_active == ZORAN_FREE)) - return 0; - - /* check whether we're touching someone else's overlay */ - if (on && zr->overlay_active != ZORAN_FREE && - fh->overlay_active == ZORAN_FREE) { - pci_err(zr->pci_dev, "%s - overlay is already active for another session\n", __func__); - return -EBUSY; - } - if (!on && zr->overlay_active != ZORAN_FREE && - fh->overlay_active == ZORAN_FREE) { - pci_err(zr->pci_dev, "%s - you cannot cancel someone else's session\n", __func__); - return -EPERM; - } - - if (on == 0) { - zr->overlay_active = fh->overlay_active = ZORAN_FREE; - zr->v4l_overlay_active = 0; - /* - * When a grab is running, the video simply - * won't be switched on any more - */ - if (!zr->v4l_memgrab_active) - zr36057_overlay(zr, 0); - zr->overlay_mask = NULL; - } else { - if (!zr->vbuf_base || !zr->overlay_settings.is_set) { - pci_err(zr->pci_dev, "%s - buffer or window not set\n", __func__); - return -EINVAL; - } - if (!zr->overlay_settings.format) { - pci_err(zr->pci_dev, "%s - no overlay format set\n", __func__); - return -EINVAL; - } - zr->overlay_active = fh->overlay_active = ZORAN_LOCKED; - zr->v4l_overlay_active = 1; - zr->overlay_mask = fh->overlay_mask; - if (!zr->v4l_memgrab_active) - zr36057_overlay(zr, 1); - /* - * When a grab is running, the video will be - * switched on when grab is finished - */ - } - - /* Make sure the changes come into effect */ - return wait_grab_pending(zr); -} - /* get the status of a buffer in the clients buffer queue */ static int zoran_v4l2_buffer_status(struct zoran_fh *fh, struct v4l2_buffer *buf, int num) @@ -1249,8 +1021,6 @@ static int zoran_v4l2_buffer_status(struct zoran_fh *fh, static int zoran_set_norm(struct zoran *zr, v4l2_std_id norm) { - int on; - if (zr->v4l_buffers.active != ZORAN_FREE || zr->jpg_buffers.active != ZORAN_FREE) { pr_warn("%s: %s called while in playback/capture mode\n", ZR_DEVNAME(zr), __func__); @@ -1269,20 +1039,9 @@ static int zoran_set_norm(struct zoran *zr, v4l2_std_id norm) else zr->timing = zr->card.tvn[0]; - /* - * We switch overlay off and on since a change in the - * norm needs different VFE settings - */ - on = zr->overlay_active && !zr->v4l_memgrab_active; - if (on) - zr36057_overlay(zr, 0); - decoder_call(zr, video, s_std, norm); encoder_call(zr, video, s_std_output, norm); - if (on) - zr36057_overlay(zr, 1); - /* Make sure the changes come into effect */ zr->norm = norm; @@ -1324,7 +1083,7 @@ static int zoran_querycap(struct file *file, void *__fh, struct v4l2_capability strscpy(cap->driver, "zoran", sizeof(cap->driver)); snprintf(cap->bus_info, sizeof(cap->bus_info), "PCI:%s", pci_name(zr->pci_dev)); cap->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_CAPTURE | - V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_VIDEO_OVERLAY; + V4L2_CAP_VIDEO_OUTPUT; cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS; return 0; } @@ -1362,14 +1121,6 @@ static int zoran_enum_fmt_vid_out(struct file *file, void *__fh, return zoran_enum_fmt(zr, f, ZORAN_FORMAT_PLAYBACK); } -static int zoran_enum_fmt_vid_overlay(struct file *file, void *__fh, - struct v4l2_fmtdesc *f) -{ - struct zoran *zr = video_drvdata(file); - - return zoran_enum_fmt(zr, f, ZORAN_FORMAT_OVERLAY); -} - static int zoran_g_fmt_vid_out(struct file *file, void *__fh, struct v4l2_format *fmt) { struct zoran *zr = video_drvdata(file); @@ -1412,40 +1163,6 @@ static int zoran_g_fmt_vid_cap(struct file *file, void *__fh, struct v4l2_format return 0; } -static int zoran_g_fmt_vid_overlay(struct file *file, void *__fh, - struct v4l2_format *fmt) -{ - struct zoran *zr = video_drvdata(file); - - fmt->fmt.win.w.left = zr->overlay_settings.x; - fmt->fmt.win.w.top = zr->overlay_settings.y; - fmt->fmt.win.w.width = zr->overlay_settings.width; - fmt->fmt.win.w.height = zr->overlay_settings.height; - if (zr->overlay_settings.width * 2 > BUZ_MAX_HEIGHT) - fmt->fmt.win.field = V4L2_FIELD_INTERLACED; - else - fmt->fmt.win.field = V4L2_FIELD_TOP; - - return 0; -} - -static int zoran_try_fmt_vid_overlay(struct file *file, void *__fh, - struct v4l2_format *fmt) -{ - struct zoran *zr = video_drvdata(file); - - if (fmt->fmt.win.w.width > BUZ_MAX_WIDTH) - fmt->fmt.win.w.width = BUZ_MAX_WIDTH; - if (fmt->fmt.win.w.width < BUZ_MIN_WIDTH) - fmt->fmt.win.w.width = BUZ_MIN_WIDTH; - if (fmt->fmt.win.w.height > BUZ_MAX_HEIGHT) - fmt->fmt.win.w.height = BUZ_MAX_HEIGHT; - if (fmt->fmt.win.w.height < BUZ_MIN_HEIGHT) - fmt->fmt.win.w.height = BUZ_MIN_HEIGHT; - - return 0; -} - static int zoran_try_fmt_vid_out(struct file *file, void *__fh, struct v4l2_format *fmt) { @@ -1533,26 +1250,6 @@ static int zoran_try_fmt_vid_cap(struct file *file, void *__fh, return 0; } -static int zoran_s_fmt_vid_overlay(struct file *file, void *__fh, - struct v4l2_format *fmt) -{ - struct zoran_fh *fh = __fh; - struct zoran *zr = fh->zr; - int res; - - pci_dbg(zr->pci_dev, "x=%d, y=%d, w=%d, h=%d, cnt=%d, map=0x%p\n", - fmt->fmt.win.w.left, fmt->fmt.win.w.top, - fmt->fmt.win.w.width, - fmt->fmt.win.w.height, - fmt->fmt.win.clipcount, - fmt->fmt.win.bitmap); - res = setup_window(fh, fmt->fmt.win.w.left, fmt->fmt.win.w.top, - fmt->fmt.win.w.width, fmt->fmt.win.w.height, - (struct v4l2_clip __user *)fmt->fmt.win.clips, - fmt->fmt.win.clipcount, fmt->fmt.win.bitmap); - return res; -} - static int zoran_s_fmt_vid_out(struct file *file, void *__fh, struct v4l2_format *fmt) { struct zoran_fh *fh = __fh; @@ -1687,8 +1384,6 @@ static int zoran_g_fbuf(struct file *file, void *__fh, fb->base = zr->vbuf_base; fb->fmt.width = zr->vbuf_width; fb->fmt.height = zr->vbuf_height; - if (zr->overlay_settings.format) - fb->fmt.pixelformat = zr->overlay_settings.format->fourcc; fb->fmt.bytesperline = zr->vbuf_bytesperline; fb->fmt.colorspace = V4L2_COLORSPACE_SRGB; fb->fmt.field = V4L2_FIELD_INTERLACED; @@ -1721,13 +1416,6 @@ static int zoran_s_fbuf(struct file *file, void *__fh, return res; } -static int zoran_overlay(struct file *file, void *__fh, unsigned int on) -{ - struct zoran_fh *fh = __fh; - - return setup_overlay(fh, on); -} - static int zoran_streamoff(struct file *file, void *__fh, enum v4l2_buf_type type); static int zoran_reqbufs(struct file *file, void *__fh, struct v4l2_requestbuffers *req) @@ -2515,7 +2203,6 @@ static const struct v4l2_ioctl_ops zoran_ioctl_ops = { .vidioc_s_std = zoran_s_std, .vidioc_g_jpegcomp = zoran_g_jpegcomp, .vidioc_s_jpegcomp = zoran_s_jpegcomp, - .vidioc_overlay = zoran_overlay, .vidioc_reqbufs = zoran_reqbufs, .vidioc_querybuf = zoran_querybuf, .vidioc_qbuf = zoran_qbuf, @@ -2524,16 +2211,12 @@ static const struct v4l2_ioctl_ops zoran_ioctl_ops = { .vidioc_streamoff = zoran_streamoff, .vidioc_enum_fmt_vid_cap = zoran_enum_fmt_vid_cap, .vidioc_enum_fmt_vid_out = zoran_enum_fmt_vid_out, - .vidioc_enum_fmt_vid_overlay = zoran_enum_fmt_vid_overlay, .vidioc_g_fmt_vid_cap = zoran_g_fmt_vid_cap, .vidioc_g_fmt_vid_out = zoran_g_fmt_vid_out, - .vidioc_g_fmt_vid_overlay = zoran_g_fmt_vid_overlay, .vidioc_s_fmt_vid_cap = zoran_s_fmt_vid_cap, .vidioc_s_fmt_vid_out = zoran_s_fmt_vid_out, - .vidioc_s_fmt_vid_overlay = zoran_s_fmt_vid_overlay, .vidioc_try_fmt_vid_cap = zoran_try_fmt_vid_cap, .vidioc_try_fmt_vid_out = zoran_try_fmt_vid_out, - .vidioc_try_fmt_vid_overlay = zoran_try_fmt_vid_overlay, .vidioc_subscribe_event = v4l2_ctrl_subscribe_event, .vidioc_unsubscribe_event = v4l2_event_unsubscribe, }; From patchwork Mon Sep 21 10:19:59 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789111 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 45D9D112E for ; Mon, 21 Sep 2020 10:23:23 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2768020EDD for ; Mon, 21 Sep 2020 10:23:23 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="0gkErDhe" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726722AbgIUKXK (ORCPT ); Mon, 21 Sep 2020 06:23:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59106 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726874AbgIUKU7 (ORCPT ); Mon, 21 Sep 2020 06:20:59 -0400 Received: from mail-wm1-x343.google.com (mail-wm1-x343.google.com [IPv6:2a00:1450:4864:20::343]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C8ED8C0613DD for ; Mon, 21 Sep 2020 03:20:56 -0700 (PDT) Received: by mail-wm1-x343.google.com with SMTP id y15so12016108wmi.0 for ; Mon, 21 Sep 2020 03:20:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=AP/XqtDTUKt4yJ0ASxePcyGSZvxUdYkBiARpAfmeNO4=; b=0gkErDheeGjztlrRvZ/Es3bFNzrJNLgywBc/bMxB79jS5SuFqExN763HDwrpjfawAW /tK97cTawr7pTm7w6amKyxAyBW7VaPFzdor19W6x7hIN7b/K0betYlvkXPGjBqfw0cj8 XASuvPHYNaxO/uitvF6UIEpyDMnCKngyZo383TckofuE53Nfmag/XAyg1uDVBJGGBGjt 0yWCgamzV0yYSZ79iZLGgu39s0Bzfc/pP1B1mKNWVKQOGME2TDxL0VghAdxOrgM7cvAW 2nw7djGo6Z7WfonsQBvYu4V5jnXw3UpadepGhNLHx2xR8hTzGjgUzKaNXGUH4/9XtCOo yIQQ== 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; bh=AP/XqtDTUKt4yJ0ASxePcyGSZvxUdYkBiARpAfmeNO4=; b=gOOLQON0Vcm5M0c7ztbCI1IrteV79ecG1MzPWRWkG7klAzLOWshakkPm2rjks+zOCP aY0tRG5rdHvmc1l7kNwk3TQ4nveEuHIN7BNd4DnoDQG5A/H43BQw16k0i7RxqLZugUcF trB3NYhnB1+W7dIee64l0a7ImLvqih9UYF3n1hJbNaW6cAruZNVckSAKmxeIknNgxXkr VCW0lT5YR1CjTdPF4DQADJE9VNO3lbU/23ZoZpulvRTwQs4sPgPUlvv8/MU90y2jQfp/ dSR52Ra1oSo4/4PS1V1azd2WPFljtnDyigPlGtoT75jzfbm1EP4bmWn7QOJDR4YX6gWP x8Hw== X-Gm-Message-State: AOAM533sO8W5D6PPsKTO4JWUXFxZqivCimcU6GA8B6JGYAlSsSZ0ji2e 4ZR4r5X9dxOn+tqPcuUNM92y7A== X-Google-Smtp-Source: ABdhPJxlYgiJf9kz7Mv2tj9VbWR0BjfFaLonl0Gw6TmnDDV//GmMsjbTozmNdlfGxUXxY32DmOQYdA== X-Received: by 2002:a7b:c103:: with SMTP id w3mr28044636wmi.24.1600683655521; Mon, 21 Sep 2020 03:20:55 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.20.54 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:20:54 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 24/49] staging: media: zoran: Use DMA coherent for stat_com Date: Mon, 21 Sep 2020 10:19:59 +0000 Message-Id: <1600683624-5863-25-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Instead of using a fragile virt_to_bus, let's use proper DMA coherent for the stat_com entry. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran.h | 2 ++ drivers/staging/media/zoran/zoran_card.c | 20 +++++++++++++------- drivers/staging/media/zoran/zoran_device.c | 3 +-- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/drivers/staging/media/zoran/zoran.h b/drivers/staging/media/zoran/zoran.h index aa2a8f688a01..8f3faa4eb60f 100644 --- a/drivers/staging/media/zoran/zoran.h +++ b/drivers/staging/media/zoran/zoran.h @@ -351,6 +351,8 @@ struct zoran { unsigned long frame_num; wait_queue_head_t test_q; + + dma_addr_t p_sc; }; static inline struct zoran *to_zoran(struct v4l2_device *v4l2_dev) diff --git a/drivers/staging/media/zoran/zoran_card.c b/drivers/staging/media/zoran/zoran_card.c index 3a7895be3341..a8d23bf126c3 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -931,11 +931,15 @@ static int zr36057_init(struct zoran *zr) zoran_open_init_params(zr); /* allocate memory *before* doing anything to the hardware in case allocation fails */ - zr->stat_com = kzalloc(BUZ_NUM_STAT_COM * 4, GFP_KERNEL); zr->video_dev = video_device_alloc(); - if (!zr->stat_com || !zr->video_dev) { + if (!zr->video_dev) { err = -ENOMEM; - goto exit_free; + goto exit; + } + zr->stat_com = dma_alloc_coherent(&zr->pci_dev->dev, BUZ_NUM_STAT_COM * sizeof(u32), &zr->p_sc, GFP_KERNEL); + if (!zr->stat_com) { + err = -ENOMEM; + goto exit_video; } for (j = 0; j < BUZ_NUM_STAT_COM; j++) zr->stat_com[j] = cpu_to_le32(1); /* mark as unavailable to zr36057 */ @@ -953,7 +957,7 @@ static int zr36057_init(struct zoran *zr) zr->video_dev->vfl_dir = VFL_DIR_M2M; err = video_register_device(zr->video_dev, VFL_TYPE_VIDEO, video_nr[zr->id]); if (err < 0) - goto exit_free; + goto exit_statcom; video_set_drvdata(zr->video_dev, zr); zoran_init_hardware(zr); @@ -968,9 +972,11 @@ static int zr36057_init(struct zoran *zr) zr->initialized = 1; return 0; -exit_free: - kfree(zr->stat_com); +exit_statcom: + dma_free_coherent(&zr->pci_dev->dev, BUZ_NUM_STAT_COM * sizeof(u32), zr->stat_com, zr->p_sc); +exit_video: kfree(zr->video_dev); +exit: return err; } @@ -1004,7 +1010,7 @@ static void zoran_remove(struct pci_dev *pdev) btwrite(0, ZR36057_SPGPPCR); free_irq(zr->pci_dev->irq, zr); /* unmap and free memory */ - kfree(zr->stat_com); + dma_free_coherent(&zr->pci_dev->dev, BUZ_NUM_STAT_COM * sizeof(u32), zr->stat_com, zr->p_sc); iounmap(zr->zr36057_mem); pci_disable_device(zr->pci_dev); video_unregister_device(zr->video_dev); diff --git a/drivers/staging/media/zoran/zoran_device.c b/drivers/staging/media/zoran/zoran_device.c index e3104b534471..3a353130afb9 100644 --- a/drivers/staging/media/zoran/zoran_device.c +++ b/drivers/staging/media/zoran/zoran_device.c @@ -576,8 +576,7 @@ static void zr36057_set_jpg(struct zoran *zr, enum zoran_codec_mode mode) //btor(ZR36057_VFESPFR_VCLKPol, ZR36057_VFESPFR); /* code base address */ - reg = virt_to_bus(zr->stat_com); - btwrite(reg, ZR36057_JCBA); + btwrite(zr->p_sc, ZR36057_JCBA); /* FIFO threshold (FIFO is 160. double words) */ /* NOTE: decimal values here */ From patchwork Mon Sep 21 10:20:00 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789107 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 1CF8659D for ; Mon, 21 Sep 2020 10:23:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 02D79205F4 for ; Mon, 21 Sep 2020 10:22:59 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="C49J6LS6" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726915AbgIUKWw (ORCPT ); Mon, 21 Sep 2020 06:22:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59116 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726877AbgIUKU7 (ORCPT ); Mon, 21 Sep 2020 06:20:59 -0400 Received: from mail-wm1-x343.google.com (mail-wm1-x343.google.com [IPv6:2a00:1450:4864:20::343]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B4A9EC0613DF for ; Mon, 21 Sep 2020 03:20:57 -0700 (PDT) Received: by mail-wm1-x343.google.com with SMTP id w2so11565668wmi.1 for ; Mon, 21 Sep 2020 03:20:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=QA8TCJgASc+mrJ6x1w1qH0mxGnf3/+EHhd8oJ9n9Jp0=; b=C49J6LS6XfHTVMcifSQO4pi1K9ZW9D7UvLHUiB3vlE5YDmLRE6XCicTJFZeih3qMiq BLB0ftBYrr04EnXsTgApYt4tOimQeoYnG1bOebAFzBO+2wQviRTK71qzXFDYWl4Pm6Lv c+hd8TRTBZNJofb8UxyuI2Xw5A0q584ibUaVrMv0QIRIFBsSLmkuIwccyGP5Mu+bFrjY TZp/Y1BVn1tIn2pWLV8wDVWA+nCVQUZC2Vx6PMn5cVtKdMdSQfkBClQZrntGsz6IbiO7 LNCmO5eyyY1fCl1MuERF1NavuTRMX0Y0VRCzqPH/t4Us8I06UE3sarvSjpV2c4MNy1Jj QRyA== 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; bh=QA8TCJgASc+mrJ6x1w1qH0mxGnf3/+EHhd8oJ9n9Jp0=; b=Eh1HNAELz61znM37ULj49M8Y2v+ibKsoOvFP2PSaQjNADpnxAsx4gFGFISGfazHiTl 2g78WESOm64M4opMtqpesVL5hYIUDEYqGIwuzE62F/zLtQVf3aLv/ZmSMlkODXf4lf4z OvwBvoBpmOS/tNAGQGDapbo24sa4spXvIgywtawzKKLYZ9W2e6hz3GxjPuBbXx8rVaIs owOqXSaW2JlNDL89cdSOz+HPcDd3JQCQXp1oWqsn8/4HwYmxREL4Sc0QAcgaA6rLJjbC L/yFwV19QXPFwEeP6YiJqIX2IUde9O7go3hKrNQOabAU+2Y1PpyhUXotEcdtADjl/tka /ghg== X-Gm-Message-State: AOAM530AzzxRtPIeSocbS2socgb1nUA8tezuUxAmYODXVE9KzteSH9IG PQHpBPO1JnJUKQ7hyrVFK6ne6A== X-Google-Smtp-Source: ABdhPJwM+LQagXIvdSHxKOsRPII3JPsY7uqMRc4MbUi63rKYiqCH7XGQ4PGXad4MX8gvOEA5Pbta0Q== X-Received: by 2002:a05:600c:2146:: with SMTP id v6mr28742891wml.159.1600683656401; Mon, 21 Sep 2020 03:20:56 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.20.55 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:20:55 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 25/49] staging: media: zoran: use ZR_NORM Date: Mon, 21 Sep 2020 10:20:00 +0000 Message-Id: <1600683624-5863-26-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Instead of using hardcoded numbers, let's use some define for ZR NORM. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran.h | 4 ++++ drivers/staging/media/zoran/zoran_card.c | 8 ++++---- drivers/staging/media/zoran/zoran_driver.c | 6 +++--- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/drivers/staging/media/zoran/zoran.h b/drivers/staging/media/zoran/zoran.h index 8f3faa4eb60f..87ca324f6ec2 100644 --- a/drivers/staging/media/zoran/zoran.h +++ b/drivers/staging/media/zoran/zoran.h @@ -22,6 +22,10 @@ #include #include +#define ZR_NORM_PAL 0 +#define ZR_NORM_NTSC 1 +#define ZR_NORM_SECAM 2 + struct zoran_sync { unsigned long frame; /* number of buffer that has been free'd */ unsigned long length; /* number of code bytes in buffer (capture only) */ diff --git a/drivers/staging/media/zoran/zoran_card.c b/drivers/staging/media/zoran/zoran_card.c index a8d23bf126c3..1c587ce0d8c0 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -906,18 +906,18 @@ static int zr36057_init(struct zoran *zr) default_norm = 0; if (default_norm == 0) { zr->norm = V4L2_STD_PAL; - zr->timing = zr->card.tvn[0]; + zr->timing = zr->card.tvn[ZR_NORM_PAL]; } else if (default_norm == 1) { zr->norm = V4L2_STD_NTSC; - zr->timing = zr->card.tvn[1]; + zr->timing = zr->card.tvn[ZR_NORM_NTSC]; } else { zr->norm = V4L2_STD_SECAM; - zr->timing = zr->card.tvn[2]; + zr->timing = zr->card.tvn[ZR_NORM_SECAM]; } if (!zr->timing) { pci_warn(zr->pci_dev, "%s - default TV standard not supported by hardware. PAL will be used.\n", __func__); zr->norm = V4L2_STD_PAL; - zr->timing = zr->card.tvn[0]; + zr->timing = zr->card.tvn[ZR_NORM_PAL]; } if (default_input > zr->card.inputs - 1) { diff --git a/drivers/staging/media/zoran/zoran_driver.c b/drivers/staging/media/zoran/zoran_driver.c index 8724b0ad855e..b1351455690f 100644 --- a/drivers/staging/media/zoran/zoran_driver.c +++ b/drivers/staging/media/zoran/zoran_driver.c @@ -1033,11 +1033,11 @@ static int zoran_set_norm(struct zoran *zr, v4l2_std_id norm) } if (norm & V4L2_STD_SECAM) - zr->timing = zr->card.tvn[2]; + zr->timing = zr->card.tvn[ZR_NORM_SECAM]; else if (norm & V4L2_STD_NTSC) - zr->timing = zr->card.tvn[1]; + zr->timing = zr->card.tvn[ZR_NORM_NTSC]; else - zr->timing = zr->card.tvn[0]; + zr->timing = zr->card.tvn[ZR_NORM_PAL]; decoder_call(zr, video, s_std, norm); encoder_call(zr, video, s_std_output, norm); From patchwork Mon Sep 21 10:20:01 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789103 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B70E66CA for ; Mon, 21 Sep 2020 10:22:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9D8FF20EDD for ; Mon, 21 Sep 2020 10:22:45 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="vBugCVnW" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726902AbgIUKVB (ORCPT ); Mon, 21 Sep 2020 06:21:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59110 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726873AbgIUKU7 (ORCPT ); Mon, 21 Sep 2020 06:20:59 -0400 Received: from mail-wm1-x342.google.com (mail-wm1-x342.google.com [IPv6:2a00:1450:4864:20::342]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 96570C0613E1 for ; Mon, 21 Sep 2020 03:20:58 -0700 (PDT) Received: by mail-wm1-x342.google.com with SMTP id l9so12024201wme.3 for ; Mon, 21 Sep 2020 03:20:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=6FJQXqYTGnFs6xSsNBr+hoN1yvRXs/bBrFwOES8jAPM=; b=vBugCVnWSbwdACUQOFN1afCvzNLAXk3a/HYAl9BSIGDqalr4HiI9zq9sL1JffA/cXj I+aMWvpMTWmSbWktvHGsFmqVeVDH0FOkqfAUtv+95mDhX0mrurF7aMZLjxoVjzY9nNlq Trjcq4QJGV/Ot/YRkBmxzdFXcpVV9lFC85qSkjbn+ur77n8A+ZjQCPCCU+l71S6GgTj8 fAINR+cQ109GY2vq6DpAowfEdEyLC0pOxMoljjMwyVxXp2cJEiLQX82deZwEnRS3JJVJ cDz3OMypYhxfAXmQoP15C7j6ztzvAdfu66/u2BgcxFbKdKe45TBJf5IlQP6cnqsMAPMi Sejw== 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; bh=6FJQXqYTGnFs6xSsNBr+hoN1yvRXs/bBrFwOES8jAPM=; b=p9+NIE2KPP3g0XpVFvJQpgugqd1AJeDjC3VriC2esxsvEoJldl8Ve+burTYdBl2muu vj/SdwuyQ/j+jEkMs9BcQA/Q2H75aJlJSNGlNeLWgk1ST6kaIZh1FJ1WYt8lX7PW5ttW cdb+LqokEa8Rgatan9Eyv7v4FjiBasiUs0tHgpOWvCrpPSqY7ZL+1JKYG3pX1l5LHHCz UlXJZbSp6GNUKyI8UvH4hTYF1kVwPqNrz8CWNhT3Jl4qMdC1Yv/iynyGd9onCrqtpGG3 sdw0p0HPZKbnVkoyTCtvkXXi0Q92lsxYX4BFVDB1mI23fGiaN64s3f8ctoHWjODif+bC NpQg== X-Gm-Message-State: AOAM531n2TyFGTNwFi07Wqck4n2RSNSkuFwA5VLBLlIj3HAOuZsjmNBu wDgM1//vdBXYeWWGDdRjPYA7Ug== X-Google-Smtp-Source: ABdhPJy3JBJ82nITRQW7FeoI40pOMOYIUsRJiPlCUX5btahKih+LxvcRkcN8s7fkMOe/G2lzsTOaBw== X-Received: by 2002:a7b:c8cc:: with SMTP id f12mr28551976wml.169.1600683657343; Mon, 21 Sep 2020 03:20:57 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.20.56 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:20:56 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 26/49] staging: media: zoran: zoran does not support STD_ALL Date: Mon, 21 Sep 2020 10:20:01 +0000 Message-Id: <1600683624-5863-27-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org In fact, zoran does not support V4L2_STD_ALL, so let's enumerate what we support. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran_driver.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/staging/media/zoran/zoran_driver.c b/drivers/staging/media/zoran/zoran_driver.c index b1351455690f..6e95fbf5c7ea 100644 --- a/drivers/staging/media/zoran/zoran_driver.c +++ b/drivers/staging/media/zoran/zoran_driver.c @@ -1749,7 +1749,7 @@ static int zoran_enum_input(struct file *file, void *__fh, struct v4l2_input *in strscpy(inp->name, zr->card.input[inp->index].name, sizeof(inp->name)); inp->type = V4L2_INPUT_TYPE_CAMERA; - inp->std = V4L2_STD_ALL; + inp->std = V4L2_STD_NTSC | V4L2_STD_PAL | V4L2_STD_SECAM; /* Get status of video decoder */ decoder_call(zr, video, g_input_status, &inp->status); From patchwork Mon Sep 21 10:20:02 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789101 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id CA5CD59D for ; Mon, 21 Sep 2020 10:22:40 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id ADD88207BC for ; Mon, 21 Sep 2020 10:22:40 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="OLmZzc/r" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726912AbgIUKVC (ORCPT ); Mon, 21 Sep 2020 06:21:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59122 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726885AbgIUKU7 (ORCPT ); Mon, 21 Sep 2020 06:20:59 -0400 Received: from mail-wm1-x344.google.com (mail-wm1-x344.google.com [IPv6:2a00:1450:4864:20::344]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 79A09C061755 for ; Mon, 21 Sep 2020 03:20:59 -0700 (PDT) Received: by mail-wm1-x344.google.com with SMTP id k18so12017824wmj.5 for ; Mon, 21 Sep 2020 03:20:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=14WJj/RqQjb5y9fKAYpp9xKxfwW/Mh3U1gqbae/yMEI=; b=OLmZzc/r2Nu25RC4agP9sFqGyGE70U4vF6jpgeTe/Ld9FCKI9UNwkO38fJLJpnZ1aT FCuiWAZQldH0H9H4eu33pQfeCK9MCtMtlQWhCWnWnB8wVDF+c3MNEupsagEPgbtYXDGt AOCBnJ7YKYP+Ed+Put7CP4VxKa0/l9MZaoJu94G23aW6gCRaY/wfw2obNAKsxpVXqAkY yq161oDjhmqwoRa0Frx1xjgajGOtn/IoFgdh4OVkXJ8DE9Vuc8TfMMwKIW06d6KwjPNL XFV2lOzn/RhtqaZ/CYpyLbt42ZFLL4f17M0TrKTSlEHOnmNe+2ZA4PkmVDmyVcJ0IwzU NW3w== 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; bh=14WJj/RqQjb5y9fKAYpp9xKxfwW/Mh3U1gqbae/yMEI=; b=naFWWov12gX1ck0lW2RbkXjumMbEGlvkssMnW29j50g40Wns2O+ivDdqCOGuwaV4cm PG/4bTRQTF0vXtZIUtzrjImKnZIW25ZoKVEaTo72dsT7aNwYDDFsNXCpnWF/Qy9w1KbM mtepMMwUo6bjur94thywN6BkETrROGqFvx8MEEePWHXQcs2WR4LHQZ32LqeKzWzg6u67 ysNAWK/fDlTbqjUxxG1ua8aOIpvs9EUJtuITIzOXLMJ2+oh/YnIwOnDSOnz1Xt9lDAHt mXBcADDfq5dUghmosY0XgBgh4pVA4FuSlBUGmeFKtQcc8Fn2xmLm/4/KaQZ/V9DGkned cIHQ== X-Gm-Message-State: AOAM532pjzd5w0nMSz2MeBZeFNXnkZ1xEE+Sms+JUaTNSu4MPn9/z4ao 6rouIy+slH9Tphl+350AQnq/Ww== X-Google-Smtp-Source: ABdhPJx1Ryc9pfX4wBErhIyfQ0T8KkhSO1BIqse9FMAU5+1kMZdMdiuOXHzz3wNhtql/XUvTWjWShw== X-Received: by 2002:a1c:7508:: with SMTP id o8mr28218460wmc.127.1600683658224; Mon, 21 Sep 2020 03:20:58 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.20.57 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:20:57 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 27/49] staging: media: zoran: convert irq to pci irq Date: Mon, 21 Sep 2020 10:20:02 +0000 Message-Id: <1600683624-5863-28-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org This patch convert zoran to pci_irq functions. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran_card.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/staging/media/zoran/zoran_card.c b/drivers/staging/media/zoran/zoran_card.c index 1c587ce0d8c0..fe4d34e388b4 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -1008,7 +1008,7 @@ static void zoran_remove(struct pci_dev *pdev) zoran_set_pci_master(zr, 0); /* put chip into reset */ btwrite(0, ZR36057_SPGPPCR); - free_irq(zr->pci_dev->irq, zr); + pci_free_irq(zr->pci_dev, 0, zr); /* unmap and free memory */ dma_free_coherent(&zr->pci_dev->dev, BUZ_NUM_STAT_COM * sizeof(u32), zr->stat_com, zr->p_sc); iounmap(zr->zr36057_mem); @@ -1166,8 +1166,7 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) goto zr_unreg; } - result = request_irq(zr->pci_dev->irq, zoran_irq, - IRQF_SHARED, ZR_DEVNAME(zr), zr); + result = pci_request_irq(pdev, 0, zoran_irq, NULL, zr, ZR_DEVNAME(zr)); if (result < 0) { if (result == -EINVAL) { pci_err(pdev, "%s - bad IRQ number or handler\n", __func__); @@ -1281,7 +1280,7 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) zoran_unregister_i2c(zr); zr_free_irq: btwrite(0, ZR36057_SPGPPCR); - free_irq(zr->pci_dev->irq, zr); + pci_free_irq(zr->pci_dev, 0, zr); zr_unmap: iounmap(zr->zr36057_mem); zr_unreg: From patchwork Mon Sep 21 10:20:03 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789099 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 0EF2E6CA for ; Mon, 21 Sep 2020 10:22:40 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E64F120EDD for ; Mon, 21 Sep 2020 10:22:39 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="rxZwjV6H" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726920AbgIUKVD (ORCPT ); Mon, 21 Sep 2020 06:21:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59130 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726896AbgIUKVA (ORCPT ); Mon, 21 Sep 2020 06:21:00 -0400 Received: from mail-wr1-x444.google.com (mail-wr1-x444.google.com [IPv6:2a00:1450:4864:20::444]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5C85CC061755 for ; Mon, 21 Sep 2020 03:21:00 -0700 (PDT) Received: by mail-wr1-x444.google.com with SMTP id z4so12125556wrr.4 for ; Mon, 21 Sep 2020 03:21:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=9ZBjuGtlIQ8oulJMUmpkUNjlWYvzKi6Grt0GpSmmusw=; b=rxZwjV6HY9LG0dpHkUso3xgcTJu7kAviAeubkz4/JVYFg/pNiT7Mv0ja6GhsRuMgYB j5RydFDHDpcj6AtcVzbq+tBHf9E7bBVCehrc22Be6rCJ31ARmygdsxWk0KKPLR0isLzF GZtcCPBa0cphp7RHnHGfOaYKgli39BOriDPuBFnO2HQO36mlrtoowEm7ZGzf7Y+pZyV1 c5x80CK8sJiPuomKofPU/1tkVzdpjtpuCmWUpkFJ53ZMwsWwuevTyvmwGe3ezPDykPjg PKVRYplwuhfbBoF6bsfRI+4BbOEA/7K7BRVlQa8NOLvjAY42SPCmJa6qmBHkkI9BW5rR lONQ== 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; bh=9ZBjuGtlIQ8oulJMUmpkUNjlWYvzKi6Grt0GpSmmusw=; b=C6XFPoNP5ErsyXiZic3bRUJlGtwRF5KfpJ14LmZMMSslj1UXeJbRPrCzq0ubVi0HwS yFMxQHXnqlJNY+QPPkpGJydB78yE3ojUSxRtn4R72nCxDfpunYEqQbH5tq7pgIU5F1Vb iO72jdj+Zs3BkJwU+rLinHmyydjJqnIh2iZ/iVZHVcUo2LXLJDTA6LUzgL026loIsYBy 3Yx59kpQFPcoAFJV7tdv0RY/Ew8TQ3i/+IP8WbA/H8gNf7Xg/GpZeKEr7m85dxLrcVhK ucMsTotjAKaq5i3hOUp0LXzB4GXHv8TvZ1Fzsb2sCESckEJnl4HpJtDqIBMKiuLN5Rld j/aQ== X-Gm-Message-State: AOAM530M1WlTaIFrXAM6mQMRI+WnIZNR2KAc5NhvsTCCWFk8Q4x4w6kn Ez4UZzsPyN+HtN7I1rUeAqM/fA== X-Google-Smtp-Source: ABdhPJyzfzbEKklN94+4S73Qh+VMGuoEabkAmSVR1mVdTjh3TG+GaY08+ACfViEVCb5X17IIx6vMRg== X-Received: by 2002:adf:9405:: with SMTP id 5mr28243151wrq.51.1600683659111; Mon, 21 Sep 2020 03:20:59 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.20.58 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:20:58 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 28/49] staging: media: zoran: convert zoran alloc to devm Date: Mon, 21 Sep 2020 10:20:03 +0000 Message-Id: <1600683624-5863-29-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Allocate the zoran structure with devm_ functions permit to simplify code. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran_card.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/staging/media/zoran/zoran_card.c b/drivers/staging/media/zoran/zoran_card.c index fe4d34e388b4..62e63804ae14 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -1017,7 +1017,6 @@ static void zoran_remove(struct pci_dev *pdev) exit_free: v4l2_ctrl_handler_free(&zr->hdl); v4l2_device_unregister(&zr->v4l2_dev); - kfree(zr); } void zoran_vdev_release(struct video_device *vdev) @@ -1101,7 +1100,7 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) return -ENOENT; } - zr = kzalloc(sizeof(*zr), GFP_KERNEL); + zr = devm_kzalloc(&pdev->dev, sizeof(*zr), GFP_KERNEL); if (!zr) return -ENOMEM; @@ -1287,7 +1286,6 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) v4l2_ctrl_handler_free(&zr->hdl); v4l2_device_unregister(&zr->v4l2_dev); zr_free_mem: - kfree(zr); return -ENODEV; } From patchwork Mon Sep 21 10:20:04 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789097 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 1C88B59D for ; Mon, 21 Sep 2020 10:22:34 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id F38C3218AC for ; Mon, 21 Sep 2020 10:22:33 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="SPcgfzwx" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726928AbgIUKVD (ORCPT ); Mon, 21 Sep 2020 06:21:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59136 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726906AbgIUKVB (ORCPT ); Mon, 21 Sep 2020 06:21:01 -0400 Received: from mail-wr1-x444.google.com (mail-wr1-x444.google.com [IPv6:2a00:1450:4864:20::444]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 463FDC0613CF for ; Mon, 21 Sep 2020 03:21:01 -0700 (PDT) Received: by mail-wr1-x444.google.com with SMTP id k15so12116476wrn.10 for ; Mon, 21 Sep 2020 03:21:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Phn676ck9fxFNj85BpKV8apw8QC3TViwDCE0eTe2lKw=; b=SPcgfzwxG+7TAk0IVdcJAFHhW8FgtzKodBdFxADUrLFsEGadjF7vCav7EEu+lU0+GP NoSmoxIDJ3mjicDERBPfRbNj0tsMIMvrPFRtjvcX38BcDEyPZ+/MtRLdkL1pEoHeC0J+ gXrEKMhnbxYg66roPjpaq84u95xIeiKLqFwr6gZRgbMVE1Ejz55JtyaTrEwjb4KbTcfG PpIGABEtexnVZHJNYqRPwi+RilJspBYCpSHEv7rBDHbghA1z5RyiTEM2DE/c619SP3FJ TbuHDmkJTLnNPptMWYqQEXm86UexWo+n/qwGjWsOL0TI/mnhmAyDZPYrSSrudAVE9pX/ XHFA== 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; bh=Phn676ck9fxFNj85BpKV8apw8QC3TViwDCE0eTe2lKw=; b=lrSsfNt3CW7AMFuOT3xuzGU1iJj/CDcc5WIpzbFuIXN2DKzpZ/GHJy8CqjqvcxMq6n Is49BCv8Iz7FvYXh525wr3i6rz6hjJilKnSvJiXv8cnrhGsLF7qjuOdLMyUpquLwJm/M 0SljNoW/8ArOffl4gk241q5hDEWJKt4ABYkJ54uOtizL/pN5Nb3s87Go81oyYUnTjpmo iJyk58iJL9TY8M/4uVQcqZ50RoNxhmsjK+Oqty1aDjFDHhDFQByQBdCD6iwfTARkco1L 58c3t5bo/Dg2RBOxCfE7ADKK5tFdpSOH2rsdtExttmOOAo5XnznBKJ2Or53TBcqgdyAa sTxw== X-Gm-Message-State: AOAM531VrWoXUUPaqs5Bf7hu2Po0Jfa67rjYGSqAKdqYJMMiQPjmF18j eO15XOQzW8vrYa+JXPm5vcmy/Q== X-Google-Smtp-Source: ABdhPJzidbt0pzET/EtSowQUwY6EY9mSfVSCXN4I8uUlbcM+UuJ2gQy4RnxaDKlVsybR+D7AZPvq9A== X-Received: by 2002:a5d:668b:: with SMTP id l11mr50274670wru.89.1600683660027; Mon, 21 Sep 2020 03:21:00 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.20.59 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:20:59 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 29/49] staging: media: zoran: convert mdelay to udelay Date: Mon, 21 Sep 2020 10:20:04 +0000 Message-Id: <1600683624-5863-30-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org As asked by checkpath, let's use udelay. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran_device.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/staging/media/zoran/zoran_device.c b/drivers/staging/media/zoran/zoran_device.c index 3a353130afb9..82d522c1a528 100644 --- a/drivers/staging/media/zoran/zoran_device.c +++ b/drivers/staging/media/zoran/zoran_device.c @@ -1315,9 +1315,9 @@ void zoran_init_hardware(struct zoran *zr) void zr36057_restart(struct zoran *zr) { btwrite(0, ZR36057_SPGPPCR); - mdelay(1); + udelay(1000); btor(ZR36057_SPGPPCR_SoftReset, ZR36057_SPGPPCR); - mdelay(1); + udelay(1000); /* assert P_Reset */ btwrite(0, ZR36057_JPC); From patchwork Mon Sep 21 10:20:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789095 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 49AD759D for ; Mon, 21 Sep 2020 10:22:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2EF9E207BC for ; Mon, 21 Sep 2020 10:22:33 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="YjR+2ZxA" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726931AbgIUKVD (ORCPT ); Mon, 21 Sep 2020 06:21:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59140 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726917AbgIUKVC (ORCPT ); Mon, 21 Sep 2020 06:21:02 -0400 Received: from mail-wr1-x442.google.com (mail-wr1-x442.google.com [IPv6:2a00:1450:4864:20::442]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 303B6C0613D1 for ; Mon, 21 Sep 2020 03:21:02 -0700 (PDT) Received: by mail-wr1-x442.google.com with SMTP id o5so12105504wrn.13 for ; Mon, 21 Sep 2020 03:21:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=1urHh7daH3LoOqNIcatz+V8D8QIxpgJB7hMXIZZ34x8=; b=YjR+2ZxADZaysP7sw04FPhYP3YPw21PgBstXPTe3UwIIsIvxSdaRgWBLUKrGCbw56r KSmiVKdsOVv0Z9mDW82UCgPiG8NptXiVwiymXb+AEp7VChMnFw8+uo2GanEjEhXIZSu9 AVdIcAPCng8oQxUttO4d0ogtZ32GGoyueYSG11AHhkpx94Ij4JrMlGEjxHwJu/G0POdK DGHzJ8X8OyWo3mgdsN/donCalFVhbAISMXlqC3dS0+ZNTyRMhi8mR6rJGTkcsFPaEBUo lUpa50VSd70ObhfzKgtAUjCX1Pqcj8jBfKzQQDx34YlFyJwYzKEbN6E6CiVN5yi7NBer 9xkw== 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; bh=1urHh7daH3LoOqNIcatz+V8D8QIxpgJB7hMXIZZ34x8=; b=eMUMHrrycKZsgNJ0HyKKlN0x3+C/1IdBO9IFx6T/d/b/4Dz8CdGOP1g8yN6aTQSBIZ hGvcBvDX+W/9OLpvoMZ83ehqcUJhp195yPuQl+rvutLThR4DncYY4CY51GICrbKnmk8Y o8otFEn34SZelCfm9VzzIE19H338f/iMgeAh3aWrvrCs4jEsJrwVwozlSaV1rGQYAbjR isBdA91regWf0q5EWIi+iLh50HVrpMaVQfDBOxQb+YHQH6C4BYkGvZkKwSXt2IYGAraa swtFGctdxhgQ8v+AftNk4EJQr1hGu8F7ojqPWORoTH9dWPE87/YOeqlel/sDrhzajdAz z0Jg== X-Gm-Message-State: AOAM5325C62lWBuI63vzaLaaJp2yJDDLJNarQBXaz0sAPig6PzpLyjDH qjEhtqZfoz9RgH/cCc8k4v26bg== X-Google-Smtp-Source: ABdhPJw4Md6NhAxXg8ikwFgPuyNgrFboC/5yIDUW7lgrPEHwO6yzae/wCh2FO6LosU8a+MYU2KltVA== X-Received: by 2002:adf:f984:: with SMTP id f4mr51635137wrr.102.1600683660854; Mon, 21 Sep 2020 03:21:00 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.21.00 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:21:00 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 30/49] staging: media: zoran: use devm for videocodec_master alloc Date: Mon, 21 Sep 2020 10:20:05 +0000 Message-Id: <1600683624-5863-31-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Let's use devm allocations for videocodec, this simplify code. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran_card.c | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/drivers/staging/media/zoran/zoran_card.c b/drivers/staging/media/zoran/zoran_card.c index 62e63804ae14..756b9a339f7e 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -989,18 +989,10 @@ static void zoran_remove(struct pci_dev *pdev) goto exit_free; /* unregister videocodec bus */ - if (zr->codec) { - struct videocodec_master *master = zr->codec->master_data; - + if (zr->codec) videocodec_detach(zr->codec); - kfree(master); - } - if (zr->vfe) { - struct videocodec_master *master = zr->vfe->master_data; - + if (zr->vfe) videocodec_detach(zr->vfe); - kfree(master); - } /* unregister i2c bus */ zoran_unregister_i2c(zr); @@ -1028,7 +1020,7 @@ static struct videocodec_master *zoran_setup_videocodec(struct zoran *zr, int ty { struct videocodec_master *m = NULL; - m = kmalloc(sizeof(*m), GFP_KERNEL); + m = devm_kmalloc(&zr->pci_dev->dev, sizeof(*m), GFP_KERNEL); if (!m) return m; @@ -1234,7 +1226,7 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) zr->codec = videocodec_attach(master_codec); if (!zr->codec) { pci_err(pdev, "%s - no codec found\n", __func__); - goto zr_free_codec; + goto zr_unreg_i2c; } if (zr->codec->type != zr->card.video_codec) { pci_err(pdev, "%s - wrong codec\n", __func__); @@ -1248,7 +1240,7 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) zr->vfe = videocodec_attach(master_vfe); if (!zr->vfe) { pci_err(pdev, "%s - no VFE found\n", __func__); - goto zr_free_vfe; + goto zr_detach_codec; } if (zr->vfe->type != zr->card.video_vfe) { pci_err(pdev, "%s = wrong VFE\n", __func__); @@ -1269,12 +1261,8 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) zr_detach_vfe: videocodec_detach(zr->vfe); -zr_free_vfe: - kfree(master_vfe); zr_detach_codec: videocodec_detach(zr->codec); -zr_free_codec: - kfree(master_codec); zr_unreg_i2c: zoran_unregister_i2c(zr); zr_free_irq: From patchwork Mon Sep 21 10:20:06 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789057 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D19246CA for ; Mon, 21 Sep 2020 10:21:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B650421BE5 for ; Mon, 21 Sep 2020 10:21:06 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="aTvoD3hF" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726935AbgIUKVE (ORCPT ); Mon, 21 Sep 2020 06:21:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59146 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726924AbgIUKVD (ORCPT ); Mon, 21 Sep 2020 06:21:03 -0400 Received: from mail-wr1-x443.google.com (mail-wr1-x443.google.com [IPv6:2a00:1450:4864:20::443]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 15F2AC061755 for ; Mon, 21 Sep 2020 03:21:03 -0700 (PDT) Received: by mail-wr1-x443.google.com with SMTP id m6so12148248wrn.0 for ; Mon, 21 Sep 2020 03:21:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=r85oKelmSxCT/ytNZb+5lrzckUj7jOhmVdpf8jChvhQ=; b=aTvoD3hFXs3POFwDeGWyKdJ5WNaRfIUoDo3FLhNdWtwLbIgWIC+y8D//me7P05cZBL mfqi8yRRUNP+A+ONA5XfI1lgHoVeBeNXWHk5SSAMd16oikUA9+mXSWxN59qqQFpaay5b E4OMN3iLZWjyBf5dDc10VlinaR7+6JQxh70cO0U67K2ebbOl7dnA8Sclvv8pVR/DrUSE 7pKvEwaEZIJVn6INdPJJUaRGV/EfIBQbc9iDoi9dOsvxPbeJ2wL1Gg5kVd4ygIYDcDll h0SUVJSqhd5JcaZbo1RzpE0k3mDwR0oj2gFfoDKAEIVWFUMG+I1JHA0TrocC9yg4/yIs RbrQ== 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; bh=r85oKelmSxCT/ytNZb+5lrzckUj7jOhmVdpf8jChvhQ=; b=iieUMNOMtNUmIFmf52GKxeC8NdtQox9aUXKDM6I21O9bpZczW9z5a5DOVln0f5Ho7a UH1xBOhUoTpuk2m0Vt8CjxwYEaOq6VYB3ceKEruW9/TwFje7GvxqgKvdkaOfBdbvJOZn zcS/3b55ceXH5hOLDBwLzi9X/kkAbSe/pM0e4iVAp0AOFRuoGGD1TIrCFXqU+S0pbGqW 2287WJT6sv3pmRvysjO2hgd0lhB5+5kf1nMwEJ2dTCkmZJSR5IrjWFoAjCFWfBnPmkxV WCgYiB9eT6bbpGGTMo8oCTQ5N181ElLQOEsm6Pk2C3jR8wJLCN1TcRmTLvMxx8yPYCz7 JiUQ== X-Gm-Message-State: AOAM530i0IoSH64gcl1Thno7xpqstEmvcy4pGWFf6hWmDARgo8IGdh2o 1Gr6ftNz80/zBsAaeddo+J1z9Q== X-Google-Smtp-Source: ABdhPJx3vSrvmd5LQMjT6ohRvSlIA6LBabrT+xHJ+GrgKpx5lmH4iadrY/KQb8lY1YMKMr3HjkoCDw== X-Received: by 2002:a5d:6291:: with SMTP id k17mr51139822wru.130.1600683661822; Mon, 21 Sep 2020 03:21:01 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.21.00 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:21:01 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 31/49] staging: media: zoran: use pci_request_regions Date: Mon, 21 Sep 2020 10:20:06 +0000 Message-Id: <1600683624-5863-32-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Use pci_request_regions so now we can see zoran in /proc/iomem. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran_card.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/staging/media/zoran/zoran_card.c b/drivers/staging/media/zoran/zoran_card.c index 756b9a339f7e..ed4ecf92c040 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -1004,6 +1004,7 @@ static void zoran_remove(struct pci_dev *pdev) /* unmap and free memory */ dma_free_coherent(&zr->pci_dev->dev, BUZ_NUM_STAT_COM * sizeof(u32), zr->stat_com, zr->p_sc); iounmap(zr->zr36057_mem); + pci_release_regions(pdev); pci_disable_device(zr->pci_dev); video_unregister_device(zr->video_dev); exit_free: @@ -1151,10 +1152,14 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) zr->card = zoran_cards[card_num]; snprintf(ZR_DEVNAME(zr), sizeof(ZR_DEVNAME(zr)), "%s[%u]", zr->card.name, zr->id); + err = pci_request_regions(pdev, ZR_DEVNAME(zr)); + if (err) + goto zr_unreg; + zr->zr36057_mem = pci_ioremap_bar(zr->pci_dev, 0); if (!zr->zr36057_mem) { pci_err(pdev, "%s() - ioremap failed\n", __func__); - goto zr_unreg; + goto zr_pci_release; } result = pci_request_irq(pdev, 0, zoran_irq, NULL, zr, ZR_DEVNAME(zr)); @@ -1270,6 +1275,8 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) pci_free_irq(zr->pci_dev, 0, zr); zr_unmap: iounmap(zr->zr36057_mem); +zr_pci_release: + pci_release_regions(pdev); zr_unreg: v4l2_ctrl_handler_free(&zr->hdl); v4l2_device_unregister(&zr->v4l2_dev); From patchwork Mon Sep 21 10:20:07 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789059 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 4E6326CA for ; Mon, 21 Sep 2020 10:21:08 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 33A322193E for ; Mon, 21 Sep 2020 10:21:08 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="o+JBpv0k" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726956AbgIUKVH (ORCPT ); Mon, 21 Sep 2020 06:21:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59154 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726942AbgIUKVE (ORCPT ); Mon, 21 Sep 2020 06:21:04 -0400 Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com [IPv6:2a00:1450:4864:20::441]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DCC8FC0613CF for ; Mon, 21 Sep 2020 03:21:03 -0700 (PDT) Received: by mail-wr1-x441.google.com with SMTP id o5so12105589wrn.13 for ; Mon, 21 Sep 2020 03:21:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=UDXBjt8jfu/oMGNat+F4S9FWffFRkNYldF9fojbA7xU=; b=o+JBpv0kgXUgHSjx+7mwoy9hBdUZxyTnq88Z4pn5acM1mUZcgFy3Vf49rvzEVzeR4t 6PCl/uBUIYl3AXto4vLB4dnsY09c7oLxzwJa05cAqiugtodeTRdbHyhXSAGrGIHsiESP +lysMoTF/HyZGBxFAxsCjZvAuEvLXviGGJPXj2vxaOsxJbj71NQVEs5CuXXacXv0PV2B FTF6+MefhdS9Ro5JYYxpp+xjWlc7NWxow8mE3GGbdMej/DFhO5RFQCRIhDGzt9pnKSxV gS42EYx7MYaNVgUEGs4XkVeFH5FnE5oRtC5dvsvuW9GnHOK1jN2VfLMJX/UuuoGpTiOo kmjA== 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; bh=UDXBjt8jfu/oMGNat+F4S9FWffFRkNYldF9fojbA7xU=; b=rkwvouPKHb8JEe3faWgYygri5xvGpevuy/21/oB4VDODeR8gVdVmjbK6W0KqLe/BxO 03eE/xhj3E3kW+wCEW6t5Yw3M11y0k0vKjfObLksIbPGKCj98WBd92Fw7WTTLGQeIFut eLwSgKkkn3kGYop99crAPyYV/b30DtJmuoPllcUkVfsh0ueV8EYHk/JyHrA0c+Zrx32y u7S+vBpPFqDMxR/tJ0ZJtdBz6HRTScd+l+Guy8ChG4RI6ns7O0B1+eDjZbW7hSmi2B3W J49c+/DxV0kAVkNv/1O7I0w08OAlUoqpOO10EasoS1ApAOaIfOh/r84EyEVxsMTNLSBc neEg== X-Gm-Message-State: AOAM532b82HAmQqxCoeNaUQa2F696LWvUOfB7ANBhLyTcIQgu5Ch4MRQ BoGQSftLNIj4biJsjK4MRwrhAw== X-Google-Smtp-Source: ABdhPJyERdYp2AsyAKmPFvJF44cYROI3W+/g17UZsOuGZCzLex69SCmZaq065/gaT2X6isrvK4RBOA== X-Received: by 2002:a5d:56cd:: with SMTP id m13mr50724441wrw.261.1600683662637; Mon, 21 Sep 2020 03:21:02 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.21.01 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:21:02 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 32/49] staging: media: zoran: use devm_ioremap Date: Mon, 21 Sep 2020 10:20:07 +0000 Message-Id: <1600683624-5863-33-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Using devm_ioremap simplify code. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran_card.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/drivers/staging/media/zoran/zoran_card.c b/drivers/staging/media/zoran/zoran_card.c index ed4ecf92c040..36305aaabd7d 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -1003,7 +1003,6 @@ static void zoran_remove(struct pci_dev *pdev) pci_free_irq(zr->pci_dev, 0, zr); /* unmap and free memory */ dma_free_coherent(&zr->pci_dev->dev, BUZ_NUM_STAT_COM * sizeof(u32), zr->stat_com, zr->p_sc); - iounmap(zr->zr36057_mem); pci_release_regions(pdev); pci_disable_device(zr->pci_dev); video_unregister_device(zr->video_dev); @@ -1156,7 +1155,7 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) if (err) goto zr_unreg; - zr->zr36057_mem = pci_ioremap_bar(zr->pci_dev, 0); + zr->zr36057_mem = devm_ioremap(&pdev->dev, pci_resource_start(pdev, 0), pci_resource_len(pdev, 0)); if (!zr->zr36057_mem) { pci_err(pdev, "%s() - ioremap failed\n", __func__); goto zr_pci_release; @@ -1172,7 +1171,7 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) } else { pci_err(pdev, "%s - cannot assign IRQ, error code %d\n", __func__, result); } - goto zr_unmap; + goto zr_pci_release; } /* set PCI latency timer */ @@ -1273,8 +1272,6 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) zr_free_irq: btwrite(0, ZR36057_SPGPPCR); pci_free_irq(zr->pci_dev, 0, zr); -zr_unmap: - iounmap(zr->zr36057_mem); zr_pci_release: pci_release_regions(pdev); zr_unreg: From patchwork Mon Sep 21 10:20:08 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789091 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A33866CA for ; Mon, 21 Sep 2020 10:22:27 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 87832205F4 for ; Mon, 21 Sep 2020 10:22:27 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="tduwWF0N" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726506AbgIUKVG (ORCPT ); Mon, 21 Sep 2020 06:21:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59160 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726897AbgIUKVF (ORCPT ); Mon, 21 Sep 2020 06:21:05 -0400 Received: from mail-wr1-x444.google.com (mail-wr1-x444.google.com [IPv6:2a00:1450:4864:20::444]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C2CA6C061755 for ; Mon, 21 Sep 2020 03:21:04 -0700 (PDT) Received: by mail-wr1-x444.google.com with SMTP id g4so12117687wrs.5 for ; Mon, 21 Sep 2020 03:21:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=fZV35x1Iz2E43SPidCPc9QQFeH1eHhufPHV6/Pg1brc=; b=tduwWF0NtI3cn20DkNi9IESemUfiGeLBLMBfv0DPvHLkobph7WNzojhd59us8p09ZB zjK7P5nC4xgxT5ywKK7G3V0K6G2nDZfWvqGsMTmwT4XFLRcwBvTs5NEXzr3+oq9aJePj PThFY0Zyv9HP4Oaf/fb00JGfj19WkQXnS0Y/NP2m4PtU9gs6d9GJLawogoqLfUZw7hVb fEi5SS4XNtT83PnqsbU/q5pXWnjUzvq5euMg+rdyB1fqMzq1DEFnkfA7+uVg5yOvDPjL ER6SBAHKGXt5Qi++YmjJ3KlbprPmuQKQPaZ5mz+QFiGVDQxfpL0+FBN5TiogzU7bZ7ta vzpQ== 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; bh=fZV35x1Iz2E43SPidCPc9QQFeH1eHhufPHV6/Pg1brc=; b=WtldyX+vlwMQussoLO7UFgWVtb4t1pjMF4qb6AR9J7NGU5ggPMCNAeJBjrf/flDP7D 0pjQr8+U8M9o734vypDCWuqVZTtzZGre7noGtflXdQn5aeFd+ezoNJisgxSn6tnSxK8G i7h7yNyLBZyJvDbou4jjeKbHRzwm9HS110brdmc2UWdlg5+sg1ejS+Ym4g8ME6HWdHGx JI2sAUsXeMIxEvcyN5ONiuAe+jbTxDSl1GO6kEO9vSN06Iu7gEH4d2UBRQgKi+yykVOR dQPZIEfWjxFBIDErtRKvkcFHtAsiGszdk0mIA/12kqzTUaiqATWYMoUVkjYWTwcE+/zL gbww== X-Gm-Message-State: AOAM530RHRK50Jm8v13W882n2pyNLpxnKhkndkvDxzlf9gvCf9vUVU3z 7/TtwPK09rfDLcVTd+JqpyEVoQ== X-Google-Smtp-Source: ABdhPJzkPKV30xQ7dnOo7B95UCRnoif+Ufxh0naKl1mhkBaiRw4uyZ9JrUV/tYWZKK0s6aP/1XkYSQ== X-Received: by 2002:adf:9405:: with SMTP id 5mr28243515wrq.51.1600683663492; Mon, 21 Sep 2020 03:21:03 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.21.02 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:21:02 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 33/49] staging: media: zoran: add stat_com buffer Date: Mon, 21 Sep 2020 10:20:08 +0000 Message-Id: <1600683624-5863-34-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org This patch adds the allocation of the stat_com buffer which be used later. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran.h | 2 ++ drivers/staging/media/zoran/zoran_card.c | 11 ++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/staging/media/zoran/zoran.h b/drivers/staging/media/zoran/zoran.h index 87ca324f6ec2..c73b7e7fd5e1 100644 --- a/drivers/staging/media/zoran/zoran.h +++ b/drivers/staging/media/zoran/zoran.h @@ -357,6 +357,8 @@ struct zoran { wait_queue_head_t test_q; dma_addr_t p_sc; + __le32 *stat_comb; + dma_addr_t p_scb; }; static inline struct zoran *to_zoran(struct v4l2_device *v4l2_dev) diff --git a/drivers/staging/media/zoran/zoran_card.c b/drivers/staging/media/zoran/zoran_card.c index 36305aaabd7d..b841f532e6bb 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -944,6 +944,12 @@ static int zr36057_init(struct zoran *zr) for (j = 0; j < BUZ_NUM_STAT_COM; j++) zr->stat_com[j] = cpu_to_le32(1); /* mark as unavailable to zr36057 */ + zr->stat_comb = dma_alloc_coherent(&zr->pci_dev->dev, BUZ_NUM_STAT_COM * sizeof(u32) * 2, &zr->p_scb, GFP_KERNEL); + if (!zr->stat_comb) { + err = -ENOMEM; + goto exit_statcom; + } + /* Now add the template and register the device unit. */ *zr->video_dev = zoran_template; zr->video_dev->v4l2_dev = &zr->v4l2_dev; @@ -957,7 +963,7 @@ static int zr36057_init(struct zoran *zr) zr->video_dev->vfl_dir = VFL_DIR_M2M; err = video_register_device(zr->video_dev, VFL_TYPE_VIDEO, video_nr[zr->id]); if (err < 0) - goto exit_statcom; + goto exit_statcomb; video_set_drvdata(zr->video_dev, zr); zoran_init_hardware(zr); @@ -972,6 +978,8 @@ static int zr36057_init(struct zoran *zr) zr->initialized = 1; return 0; +exit_statcomb: + dma_free_coherent(&zr->pci_dev->dev, BUZ_NUM_STAT_COM * sizeof(u32) * 2, zr->stat_comb, zr->p_scb); exit_statcom: dma_free_coherent(&zr->pci_dev->dev, BUZ_NUM_STAT_COM * sizeof(u32), zr->stat_com, zr->p_sc); exit_video: @@ -1003,6 +1011,7 @@ static void zoran_remove(struct pci_dev *pdev) pci_free_irq(zr->pci_dev, 0, zr); /* unmap and free memory */ dma_free_coherent(&zr->pci_dev->dev, BUZ_NUM_STAT_COM * sizeof(u32), zr->stat_com, zr->p_sc); + dma_free_coherent(&zr->pci_dev->dev, BUZ_NUM_STAT_COM * sizeof(u32) * 2, zr->stat_comb, zr->p_scb); pci_release_regions(pdev); pci_disable_device(zr->pci_dev); video_unregister_device(zr->video_dev); From patchwork Mon Sep 21 10:20:09 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789093 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id CD7BE112E for ; Mon, 21 Sep 2020 10:22:27 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B10B2218AC for ; Mon, 21 Sep 2020 10:22:27 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="JCcu8rOS" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726640AbgIUKW1 (ORCPT ); Mon, 21 Sep 2020 06:22:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59164 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726948AbgIUKVG (ORCPT ); Mon, 21 Sep 2020 06:21:06 -0400 Received: from mail-wm1-x342.google.com (mail-wm1-x342.google.com [IPv6:2a00:1450:4864:20::342]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DDCBBC061755 for ; Mon, 21 Sep 2020 03:21:05 -0700 (PDT) Received: by mail-wm1-x342.google.com with SMTP id b79so12013232wmb.4 for ; Mon, 21 Sep 2020 03:21:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=OuktUbzogSgMnm6tl68bM64IlyF+ws6MaXPokPAQRHg=; b=JCcu8rOSnPInqXXKrkjuF8aGuowsFaGAbtpYyb+vQHU7NqPENDa9PW1qv8sAfKG1f3 7ntQVJJZGoBUND9z+U/AAht1eWh5G/xaHd+Ojy86mTkXkHqGrfpq7cQIUJHHomFT7ait tQhT432OntImygVT+KMUCebXRrIC9w2Ex4czSug9xHx6W3wOUR4Ef7v3Q+7KZVsJJVQw whoqxIl+7pkUT/u242X0EMAD1q4tcn6lHU5Uoh+PWv4P0ZhaV9iJ9lZ2XHdY3BJoTpDY G0O6Ocfbz+qG86kxfAb2iXxcQs+zspSw5+4QSCm5c8SIZiGLBT/rd2BjisiuKUO605hA OZkA== 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; bh=OuktUbzogSgMnm6tl68bM64IlyF+ws6MaXPokPAQRHg=; b=HSFfKL+uNYoBQX7xigBUL49SUtxb4RMmL6fwriu9SfWTLN66lF4aYxMPUGlPV0KkNc tR9u9m/zYPltK4011MD/qbPliy+6LfcRUKFi7wNoqZHrvBiHYNXOHhP/53MYu9EptGc3 oQqDPaz6qVDRsDD6hFGEvqf61Gul4IAskvBUvwZWPRU/nUEeMY0FASHlZFQFga8vwrbL C19BtPbv1MzDOW9dLzWH5Uq2LTRGYvM8Uh3ozTgSun2CPXUVKU3PT/2/wGv6m5xO0h9w b9ZaoiHLtLcqyaDniEC/8TvdkbtPR/DHVhjNaNG+TWohpcSBjvORSg+D6wzUYTUEJzL4 dG6Q== X-Gm-Message-State: AOAM531I6C4BvUq0Lgw6SNURzkB8zgUOiv6D+08Fh3rsqA4o0LiXIfwA fwL3+74D+VmfhgxR7IYbcSChHw== X-Google-Smtp-Source: ABdhPJz9qluklEwv8ciov73f9EFAyhxDpwQwXye4ZaFDhhVRjgzehOstV5sBL1dsX8CAEJIsF5SddQ== X-Received: by 2002:a05:600c:220f:: with SMTP id z15mr16339258wml.87.1600683664607; Mon, 21 Sep 2020 03:21:04 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.21.03 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:21:03 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 34/49] staging: media: zoran: constify struct tvnorm Date: Mon, 21 Sep 2020 10:20:09 +0000 Message-Id: <1600683624-5863-35-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org The structure tvnorm could be consified. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/videocodec.h | 2 +- drivers/staging/media/zoran/zoran.h | 4 ++-- drivers/staging/media/zoran/zoran_card.c | 24 +++++++++++----------- drivers/staging/media/zoran/zoran_device.c | 4 ++-- drivers/staging/media/zoran/zr36016.c | 4 ++-- drivers/staging/media/zoran/zr36050.c | 4 ++-- drivers/staging/media/zoran/zr36060.c | 2 +- 7 files changed, 22 insertions(+), 22 deletions(-) diff --git a/drivers/staging/media/zoran/videocodec.h b/drivers/staging/media/zoran/videocodec.h index 553af4ad431e..a049f3c2c68a 100644 --- a/drivers/staging/media/zoran/videocodec.h +++ b/drivers/staging/media/zoran/videocodec.h @@ -256,7 +256,7 @@ struct videocodec { // set compression or decompression (or freeze, stop, standby, etc) int (*set_mode)(struct videocodec *codec, int mode); // setup picture size and norm (for the codec's video frontend) - int (*set_video)(struct videocodec *codec, struct tvnorm *norm, + int (*set_video)(struct videocodec *codec, const struct tvnorm *norm, struct vfe_settings *cap, struct vfe_polarity *pol); // other control commands, also mmap setup etc. int (*control)(struct videocodec *codec, int type, int size, void *data); diff --git a/drivers/staging/media/zoran/zoran.h b/drivers/staging/media/zoran/zoran.h index c73b7e7fd5e1..727ba67afd56 100644 --- a/drivers/staging/media/zoran/zoran.h +++ b/drivers/staging/media/zoran/zoran.h @@ -227,7 +227,7 @@ struct card_info { } input[BUZ_MAX_INPUT]; v4l2_std_id norms; - struct tvnorm *tvn[3]; /* supported TV norms */ + const struct tvnorm *tvn[3]; /* supported TV norms */ u32 jpeg_int; /* JPEG interrupt */ u32 vsync_int; /* VSYNC interrupt */ @@ -266,7 +266,7 @@ struct zoran { u8 initialized; /* flag if zoran has been correctly initialized */ int user; /* number of current users */ struct card_info card; - struct tvnorm *timing; + const struct tvnorm *timing; unsigned short id; /* number of this device */ char name[32]; /* name of this device */ diff --git a/drivers/staging/media/zoran/zoran_card.c b/drivers/staging/media/zoran/zoran_card.c index b841f532e6bb..176ce8a355ba 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -277,24 +277,24 @@ static char *codecid_to_modulename(u16 codecid) // u16 Wt, Wa, HStart, HSyncStart, Ht, Ha, VStart; // }; -static struct tvnorm f50sqpixel = { 944, 768, 83, 880, 625, 576, 16 }; -static struct tvnorm f60sqpixel = { 780, 640, 51, 716, 525, 480, 12 }; -static struct tvnorm f50ccir601 = { 864, 720, 75, 804, 625, 576, 18 }; -static struct tvnorm f60ccir601 = { 858, 720, 57, 788, 525, 480, 16 }; +static const struct tvnorm f50sqpixel = { 944, 768, 83, 880, 625, 576, 16 }; +static const struct tvnorm f60sqpixel = { 780, 640, 51, 716, 525, 480, 12 }; +static const struct tvnorm f50ccir601 = { 864, 720, 75, 804, 625, 576, 18 }; +static const struct tvnorm f60ccir601 = { 858, 720, 57, 788, 525, 480, 16 }; -static struct tvnorm f50ccir601_lml33 = { 864, 720, 75 + 34, 804, 625, 576, 18 }; -static struct tvnorm f60ccir601_lml33 = { 858, 720, 57 + 34, 788, 525, 480, 16 }; +static const struct tvnorm f50ccir601_lml33 = { 864, 720, 75 + 34, 804, 625, 576, 18 }; +static const struct tvnorm f60ccir601_lml33 = { 858, 720, 57 + 34, 788, 525, 480, 16 }; /* The DC10 (57/16/50) uses VActive as HSync, so HStart must be 0 */ -static struct tvnorm f50sqpixel_dc10 = { 944, 768, 0, 880, 625, 576, 0 }; -static struct tvnorm f60sqpixel_dc10 = { 780, 640, 0, 716, 525, 480, 12 }; +static const struct tvnorm f50sqpixel_dc10 = { 944, 768, 0, 880, 625, 576, 0 }; +static const struct tvnorm f60sqpixel_dc10 = { 780, 640, 0, 716, 525, 480, 12 }; /* * FIXME: I cannot swap U and V in saa7114, so i do one pixel left shift in zoran (75 -> 74) * (Maxim Yevtyushkin ) */ -static struct tvnorm f50ccir601_lm33r10 = { 864, 720, 74 + 54, 804, 625, 576, 18 }; -static struct tvnorm f60ccir601_lm33r10 = { 858, 720, 56 + 54, 788, 525, 480, 16 }; +static const struct tvnorm f50ccir601_lm33r10 = { 864, 720, 74 + 54, 804, 625, 576, 18 }; +static const struct tvnorm f60ccir601_lm33r10 = { 858, 720, 56 + 54, 788, 525, 480, 16 }; /* * FIXME: The ks0127 seem incapable of swapping U and V, too, which is why I copy Maxim's left @@ -303,8 +303,8 @@ static struct tvnorm f60ccir601_lm33r10 = { 858, 720, 56 + 54, 788, 525, 480, 16 * Christer's driver used the unshifted norms, though... * /Sam */ -static struct tvnorm f50ccir601_avs6eyes = { 864, 720, 74, 804, 625, 576, 18 }; -static struct tvnorm f60ccir601_avs6eyes = { 858, 720, 56, 788, 525, 480, 16 }; +static const struct tvnorm f50ccir601_avs6eyes = { 864, 720, 74, 804, 625, 576, 18 }; +static const struct tvnorm f60ccir601_avs6eyes = { 858, 720, 56, 788, 525, 480, 16 }; static const unsigned short vpx3220_addrs[] = { 0x43, 0x47, I2C_CLIENT_END }; static const unsigned short saa7110_addrs[] = { 0x4e, 0x4f, I2C_CLIENT_END }; diff --git a/drivers/staging/media/zoran/zoran_device.c b/drivers/staging/media/zoran/zoran_device.c index 82d522c1a528..9558bafdde7d 100644 --- a/drivers/staging/media/zoran/zoran_device.c +++ b/drivers/staging/media/zoran/zoran_device.c @@ -292,7 +292,7 @@ static void zr36057_adjust_vfe(struct zoran *zr, enum zoran_codec_mode mode) static void zr36057_set_vfe(struct zoran *zr, int video_width, int video_height, const struct zoran_format *format) { - struct tvnorm *tvn; + const struct tvnorm *tvn; unsigned int HStart, HEnd, VStart, VEnd; unsigned int DispMode; unsigned int VidWinWid, VidWinHt; @@ -510,7 +510,7 @@ static void init_jpeg_queue(struct zoran *zr) static void zr36057_set_jpg(struct zoran *zr, enum zoran_codec_mode mode) { - struct tvnorm *tvn; + const struct tvnorm *tvn; u32 reg; tvn = zr->timing; diff --git a/drivers/staging/media/zoran/zr36016.c b/drivers/staging/media/zoran/zr36016.c index a8190005bc4d..046cffb92f5f 100644 --- a/drivers/staging/media/zoran/zr36016.c +++ b/drivers/staging/media/zoran/zr36016.c @@ -238,8 +238,8 @@ static int zr36016_set_mode(struct videocodec *codec, int mode) } /* set picture size */ -static int zr36016_set_video(struct videocodec *codec, struct tvnorm *norm, - struct vfe_settings *cap, struct vfe_polarity *pol) +static int zr36016_set_video(struct videocodec *codec, const struct tvnorm *norm, + struct vfe_settings *cap, struct vfe_polarity *pol) { struct zr36016 *ptr = (struct zr36016 *)codec->data; diff --git a/drivers/staging/media/zoran/zr36050.c b/drivers/staging/media/zoran/zr36050.c index f551631c18cd..348b9f0ab74c 100644 --- a/drivers/staging/media/zoran/zr36050.c +++ b/drivers/staging/media/zoran/zr36050.c @@ -554,8 +554,8 @@ static int zr36050_set_mode(struct videocodec *codec, int mode) } /* set picture size (norm is ignored as the codec doesn't know about it) */ -static int zr36050_set_video(struct videocodec *codec, struct tvnorm *norm, - struct vfe_settings *cap, struct vfe_polarity *pol) +static int zr36050_set_video(struct videocodec *codec, const struct tvnorm *norm, + struct vfe_settings *cap, struct vfe_polarity *pol) { struct zr36050 *ptr = (struct zr36050 *)codec->data; int size; diff --git a/drivers/staging/media/zoran/zr36060.c b/drivers/staging/media/zoran/zr36060.c index 0a0916f5f8cd..773de0e64daf 100644 --- a/drivers/staging/media/zoran/zr36060.c +++ b/drivers/staging/media/zoran/zr36060.c @@ -477,7 +477,7 @@ static int zr36060_set_mode(struct videocodec *codec, int mode) } /* set picture size (norm is ignored as the codec doesn't know about it) */ -static int zr36060_set_video(struct videocodec *codec, struct tvnorm *norm, +static int zr36060_set_video(struct videocodec *codec, const struct tvnorm *norm, struct vfe_settings *cap, struct vfe_polarity *pol) { struct zr36060 *ptr = (struct zr36060 *)codec->data; From patchwork Mon Sep 21 10:20:10 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789089 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8D43159D for ; Mon, 21 Sep 2020 10:22:23 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6DC662220C for ; Mon, 21 Sep 2020 10:22:21 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="H6312PE+" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727119AbgIUKWS (ORCPT ); Mon, 21 Sep 2020 06:22:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59174 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726952AbgIUKVH (ORCPT ); Mon, 21 Sep 2020 06:21:07 -0400 Received: from mail-wm1-x342.google.com (mail-wm1-x342.google.com [IPv6:2a00:1450:4864:20::342]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E32B3C0613D1 for ; Mon, 21 Sep 2020 03:21:06 -0700 (PDT) Received: by mail-wm1-x342.google.com with SMTP id l9so12024674wme.3 for ; Mon, 21 Sep 2020 03:21:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=dGPy5ojL0a12oJizSoTZbHP5FGaftfAgkoEVHs65l4s=; b=H6312PE+010ywJeFOg4lNE3sW8va0OwgWJcvpBLNSV2n4oQ/q8IOwKVpE4MsPUnCeQ 3lpyvqzzokBMxsB7SmGe6P7LXw7OeHq5WbZxslzvA9P2yo0fJ0pTvlMWXOzRQzKv5LJn qREcus9oypZcllMr4npr7tiYPVtXo8D4b/UiQDXlaqafrU8hDph/dIUwP1h0id/08Tut nUn/Tp0o6OCDVI6BX+DecGAk9Tm39IxMfe171qbtAJ/dmDpitBnqim6npCnJjDUAFKSK CjHDaVPZuxwdAuBXj+rNfxl9txyLroSy6dhuekiskmcVACAtl8XF5cgwVLhIWBxO1Pp3 58Bw== 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; bh=dGPy5ojL0a12oJizSoTZbHP5FGaftfAgkoEVHs65l4s=; b=Z1WKqLp8M+y8ijKt/v6NLYoFsP5qXoqW6rzCC/3IlgjRvPGwTBSjtDHunw3GnlWVcJ PRTXmHyP9M4wWbNV5nmay/RnMFVJ3+HvA+x/gLfciEb6aIgSgtwDSA4xt5axasvlytdh A1fMRNeFp+wRwG9ziHDl8FEoHFUdZt7Yx8PtRQmd/SIsF9/v+zcyq84lJ+q45yP4NFBy E5WRX6yjx8cP3AExXffAhDDZXXtavcaP7tThuXhYqDxTllIDwTCfevYOq7Od6DRrpHHL xmNpAeHrvvuKddMge2jzNO0ycbMRkepWDNOXzM0mxKb5I5/HXNIczklU7mIt4qLfYKsx 8qtQ== X-Gm-Message-State: AOAM531O9KYp6fvKsNw5mtn90dIGImAWqY3lYJFE7AkyLLBNDEi6KyLe AFBuwxojcXA0dGdbZDS8lwV2dNMTIfe3Rg== X-Google-Smtp-Source: ABdhPJzNjyNJHKBehOtbtsaCLPkzNr95oSX2JPP9UpbfgavliKvqivJ0H/6ycjsOjh8/p3Iea3rfVg== X-Received: by 2002:a7b:c0ca:: with SMTP id s10mr29336977wmh.103.1600683665592; Mon, 21 Sep 2020 03:21:05 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.21.04 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:21:04 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 35/49] staging: media: zoran: constify codec_name Date: Mon, 21 Sep 2020 10:20:10 +0000 Message-Id: <1600683624-5863-36-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org The codec_name could be const. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran_card.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/staging/media/zoran/zoran_card.c b/drivers/staging/media/zoran/zoran_card.c index 176ce8a355ba..d956bd45194f 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -254,9 +254,9 @@ static void avs6eyes_init(struct zoran *zr) GPIO(zr, 7, mux & 4); /* MUX S2 */ } -static char *codecid_to_modulename(u16 codecid) +static const char *codecid_to_modulename(u16 codecid) { - char *name = NULL; + const char *name = NULL; switch (codecid) { case CODEC_TYPE_ZR36060: @@ -1092,7 +1092,7 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) struct videocodec_master *master_vfe = NULL; struct videocodec_master *master_codec = NULL; int card_num; - char *codec_name, *vfe_name; + const char *codec_name, *vfe_name; unsigned int nr; nr = zoran_num++; From patchwork Mon Sep 21 10:20:11 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789087 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 423296CA for ; Mon, 21 Sep 2020 10:22:14 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2614C207BC for ; Mon, 21 Sep 2020 10:22:14 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="JzNiLwHc" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726631AbgIUKWN (ORCPT ); Mon, 21 Sep 2020 06:22:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59178 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726945AbgIUKVI (ORCPT ); Mon, 21 Sep 2020 06:21:08 -0400 Received: from mail-wm1-x341.google.com (mail-wm1-x341.google.com [IPv6:2a00:1450:4864:20::341]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C1CC6C0613D2 for ; Mon, 21 Sep 2020 03:21:07 -0700 (PDT) Received: by mail-wm1-x341.google.com with SMTP id w2so11566128wmi.1 for ; Mon, 21 Sep 2020 03:21:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=jZ72PUAOAY/v7UQdoKSs5wvFASOODli3K4iY5mQPSSc=; b=JzNiLwHcQymY9+D/8+E4uv3VRe59dhgHJ1I8p9xqMKjrsJVLWChfAftBdMYaX/YAz1 fkM9a1DXMC7+keldbhrkRFeGSLWb/FiMr2vpJvweYAJJuH5EZbY4nFU1KtcmCP/S7CDW hVzfBX9rGmO43vL6nDTmBwTZTQHkQ3DhdgWQQ6KadYIZT/ohDGARClZ2tTmWJdeei9Gf tfXsZ1XmRQC6gMZPu2dDt6vUBPc6DwLSSr2G9PHReMknSJmiXBPScSsmdaJWUhUcREjv yNEHAFFLVSuYW6OJDbwxxEfcqIlmtwRZEiFE1+jX19/NpTzXCsrFi+7X8k4QCKa6ZC8K aiDA== 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; bh=jZ72PUAOAY/v7UQdoKSs5wvFASOODli3K4iY5mQPSSc=; b=Q3PkjzdgzYpj9AFMnioGZpARf+7L5UQmm29NFqzZR1m2RZLC6PlBNAWtu8EtHP4n9n iDWp0ur9g/Ep3JV4Ki+Lj1FV7ucBJvXGVcCcYxrPcHzinN5ptPs0rfcobFE6g9mm1CU8 DH9pOW5GcKFTba71g+pGQsDMhGI6+Ki16oOdEZoSkVaJtK9e9N5xHOOl7zvbf6recOHp 3FjwZ1gJUa5/S0oUYQ4QGuF252EMBCRtrOlDX8kN5w6JeBZoEncByeKdABZhSzKEHzCQ 0c+Rf6JoNtJ+aWiLscsxFne5PfiftzLbTXuJWZXbeaNTcac2oXgCAIBIQbG9qQSqoYS9 rCmQ== X-Gm-Message-State: AOAM532H8vkNvNpONr48tszOBETOQur/5IhRu1YfJ9iHTFywxlK8hOE1 +8b7GUtCfa1H792WcytzvqsvmQ== X-Google-Smtp-Source: ABdhPJz/WEM6jR4u7NBZYYpTXL198YeibOBpadp1+XxIqsxq7O0M1Pi8POlysByw9qPiVubnv0OaMw== X-Received: by 2002:a1c:7d55:: with SMTP id y82mr29496041wmc.100.1600683666523; Mon, 21 Sep 2020 03:21:06 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.21.05 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:21:05 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 36/49] staging: media: zoran: Add more check for compliance Date: Mon, 21 Sep 2020 10:20:11 +0000 Message-Id: <1600683624-5863-37-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org The zoran driver miss some sanity checks, and this made v4l compliance happy. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran_driver.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/drivers/staging/media/zoran/zoran_driver.c b/drivers/staging/media/zoran/zoran_driver.c index 6e95fbf5c7ea..a326c0a16e0c 100644 --- a/drivers/staging/media/zoran/zoran_driver.c +++ b/drivers/staging/media/zoran/zoran_driver.c @@ -1092,6 +1092,11 @@ static int zoran_enum_fmt(struct zoran *zr, struct v4l2_fmtdesc *fmt, int flag) { unsigned int num, i; + if (fmt->index >= ARRAY_SIZE(zoran_formats)) + return -EINVAL; + if (fmt->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) + return -EINVAL; + for (num = i = 0; i < NUM_FORMATS; i++) { if (zoran_formats[i].flags & flag && num++ == fmt->index) { strscpy(fmt->description, zoran_formats[i].name, sizeof(fmt->description)); @@ -1244,6 +1249,12 @@ static int zoran_try_fmt_vid_cap(struct file *file, void *__fh, if (i == NUM_FORMATS) return -EINVAL; + fmt->fmt.pix.colorspace = zoran_formats[i].colorspace; + if (BUZ_MAX_HEIGHT < (fmt->fmt.pix.height * 2)) + fmt->fmt.pix.field = V4L2_FIELD_INTERLACED; + else + fmt->fmt.pix.field = V4L2_FIELD_TOP; + bpp = DIV_ROUND_UP(zoran_formats[i].depth, 8); v4l_bound_align_image(&fmt->fmt.pix.width, BUZ_MIN_WIDTH, BUZ_MAX_WIDTH, bpp == 2 ? 1 : 2, &fmt->fmt.pix.height, BUZ_MIN_HEIGHT, BUZ_MAX_HEIGHT, 0, 0); @@ -1271,6 +1282,9 @@ static int zoran_s_fmt_vid_out(struct file *file, void *__fh, struct v4l2_format return res; } + if (!fmt->fmt.pix.height || !fmt->fmt.pix.width) + return -EINVAL; + settings = zr->jpg_settings; /* we actually need to set 'real' parameters now */ @@ -1856,6 +1870,9 @@ static int zoran_s_selection(struct file *file, void *__fh, struct v4l2_selectio sel->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) return -EINVAL; + if (!sel->r.width || !sel->r.height) + return -EINVAL; + if (sel->target != V4L2_SEL_TGT_CROP) return -EINVAL; From patchwork Mon Sep 21 10:20:12 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789079 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 2A1E159D for ; Mon, 21 Sep 2020 10:22:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0F99D20EDD for ; Mon, 21 Sep 2020 10:22:00 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="HaZ/lnL8" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726988AbgIUKVM (ORCPT ); Mon, 21 Sep 2020 06:21:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59188 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726970AbgIUKVJ (ORCPT ); Mon, 21 Sep 2020 06:21:09 -0400 Received: from mail-wm1-x342.google.com (mail-wm1-x342.google.com [IPv6:2a00:1450:4864:20::342]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AD0E4C0613D5 for ; Mon, 21 Sep 2020 03:21:08 -0700 (PDT) Received: by mail-wm1-x342.google.com with SMTP id z9so12017393wmk.1 for ; Mon, 21 Sep 2020 03:21:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=V00Hnz28PjN932GfSBJm8Se5vmkXoiml45tpc3tFwpc=; b=HaZ/lnL8xJwtzBDX7pkXbgDeboSMizBazK0gCzI0dHsYPLpLlyswsfVyhdQp3u2Jmz 9l1oYpu73SdXGgeI4g5u5+/oH8VBWUwqUjhlwCmw43vV7kCJ16lsrIXzuFOOZt46QCY9 TVfzlCIcadcAg1/roRpMneGR78Okpyu4AwGgfBgUGxru63ojmPPGxpmO+JT8GfnOWCx3 jRx0CV/A+wlAK+xxdGWEitQgZLe4Mjontmac8ve/2H3v2ZXKqYmqUNpiA2lAMLOqLHfK XWablPnh2HrJbQB/rPMfrEKiuajAd0h1jZtfQcLhD47NNA8MQm945AS/Ttxlu7gbGzCT wupA== 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; bh=V00Hnz28PjN932GfSBJm8Se5vmkXoiml45tpc3tFwpc=; b=EifMCOcDUGNLVpjU8S+pPKRswufulDzJXourXEZ5yqIVozGah3LsWFULfO73BM3hrU RLU/nMoSevDggcpItHJ7mqkliritDZOEofp+b9KaCA02HBe1IqrilKmhm5h0al/me6bl zuv1lBSWsozYfmETtEH8IEmIDRo2Do1qGiCLPcAMvn0DO2AywdrgpxSWKpe/NYgfEkFJ fVr/uqP10np5MOp1PsLFE37i2m3vht5jbcb+oZprE2OygE4CTNSCm0/WlEPLAkVtCkNk /BE6GUGRSjV4MTNlVJxBUnTmGkkYnSeKcIMJZaQQp3ZZ0couI8eWXwIKHadO2JXwVOQv CRGA== X-Gm-Message-State: AOAM530BObD5cjZm+YsC1rtBbKzWyzQyY88RXRx8KbfRLL6/6QhGoLhu HY+Yh8BpMbGqaXhTSp1VLkLxVg== X-Google-Smtp-Source: ABdhPJwgbOyt3t2adMreBLWgBuOoAAdmy21xZ4x6cRhVH9rCZOfEVvotb2s8zR7J8LnaMYhvehXlog== X-Received: by 2002:a7b:c317:: with SMTP id k23mr28412728wmj.44.1600683667440; Mon, 21 Sep 2020 03:21:07 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.21.06 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:21:06 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 37/49] staging: media: zoran: add fallthrough keyword Date: Mon, 21 Sep 2020 10:20:12 +0000 Message-Id: <1600683624-5863-38-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org This patch adds fallthrough keyword where appropriate. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran_device.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/staging/media/zoran/zoran_device.c b/drivers/staging/media/zoran/zoran_device.c index 9558bafdde7d..7634d94f9359 100644 --- a/drivers/staging/media/zoran/zoran_device.c +++ b/drivers/staging/media/zoran/zoran_device.c @@ -268,7 +268,9 @@ static void zr36057_adjust_vfe(struct zoran *zr, enum zoran_codec_mode mode) btwrite(reg, ZR36057_VFEHCR); break; case BUZ_MODE_MOTION_COMPRESS: + fallthrough; case BUZ_MODE_IDLE: + fallthrough; default: if ((zr->norm & V4L2_STD_NTSC) || (zr->card.type == LML33R10 && @@ -521,6 +523,7 @@ static void zr36057_set_jpg(struct zoran *zr, enum zoran_codec_mode mode) /* MJPEG compression mode */ switch (mode) { case BUZ_MODE_MOTION_COMPRESS: + fallthrough; default: reg = ZR36057_JMC_MJPGCmpMode; break; @@ -582,6 +585,7 @@ static void zr36057_set_jpg(struct zoran *zr, enum zoran_codec_mode mode) /* NOTE: decimal values here */ switch (mode) { case BUZ_MODE_STILL_COMPRESS: + fallthrough; case BUZ_MODE_MOTION_COMPRESS: if (zr->card.type != BUZ) reg = 140; @@ -590,6 +594,7 @@ static void zr36057_set_jpg(struct zoran *zr, enum zoran_codec_mode mode) break; case BUZ_MODE_STILL_DECOMPRESS: + fallthrough; case BUZ_MODE_MOTION_DECOMPRESS: reg = 20; break; @@ -827,6 +832,7 @@ void zr36057_enable_jpg(struct zoran *zr, enum zoran_codec_mode mode) break; case BUZ_MODE_IDLE: + fallthrough; default: /* shut down processing */ btand(~(zr->card.jpeg_int | ZR36057_ICR_JPEGRepIRQ), ZR36057_ICR); From patchwork Mon Sep 21 10:20:13 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789061 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 352AD6CA for ; Mon, 21 Sep 2020 10:21:15 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0EBB1207BC for ; Mon, 21 Sep 2020 10:21:15 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="zR38c7Se" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727001AbgIUKVN (ORCPT ); Mon, 21 Sep 2020 06:21:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59196 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726983AbgIUKVL (ORCPT ); Mon, 21 Sep 2020 06:21:11 -0400 Received: from mail-wm1-x342.google.com (mail-wm1-x342.google.com [IPv6:2a00:1450:4864:20::342]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B10D1C0613CF for ; Mon, 21 Sep 2020 03:21:09 -0700 (PDT) Received: by mail-wm1-x342.google.com with SMTP id l15so11153248wmh.1 for ; Mon, 21 Sep 2020 03:21:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=sIJI1VmfT4UQyJ8L1vQhQ3LXVu1W40LxciQOzXqhnFQ=; b=zR38c7SeOoxikufCUp8OwDGZoe3jI7qvWTUwzIXCtaY0y4YHuj7D/new/NRF4AUw5e /vOBrsHoFiIk+KJlVSNhiem+g2/WcFDBG7UbnE48F0Re3pmGozxroae5AcpNencz9E/f 09C63vnRrOYjnW8uXRcuLCL9X3BDWvEibTqsAXyqQ4SkqCir4Ok7NRXACIc2qZzKje7l Ur3S6NOgIm1e7IFyLSs6gFWon0O5mw1ffh1O4158Qf3AloIwzBytEfI2TCEyanxo0Nn0 8y71NQ/BKj58S2KmqxQalJ+pAMa0AGVkgT4RozMrLdlJwvNfbf76Yqy29aA0ha6dKgxI IfaQ== 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; bh=sIJI1VmfT4UQyJ8L1vQhQ3LXVu1W40LxciQOzXqhnFQ=; b=FGdiBoezg+545r8PxVDYsb+VA4igtGzB/7PpLTnwsrgD4uUmzZfxm8Lyw+qzzGbNnX bTHOtB6sqObFajobI1POXhtEFjmPxEOoIeOf50Ja9SjG6V+W4v74xSLcqv4wLAXrt7Fy mOJbohrSg4+aUvkaqovF3Pb4c3X7qpqVxWQOqi+ZEGAvzfDRU7Yosf2SROL6rJe67q3x qHHeJvY1Rj+YdM9/vL/52yhwiRxWQYhjSXaeVQKU1X+xCo1lrsbTdoXhPrW5XCE3eIe4 dKWyoSrt3epeATvXiE69HxYDrE7NjhpxGifA2hBvMRQ+RdmwOEAxiaU+e4Ej3kD4Pg6N jpJQ== X-Gm-Message-State: AOAM533AQ8UbMKQDRdLAVVIh6IMPkLcII20xvgicewK+n2UoRh/CpqgS M5O4+WF9lkhz53JBM0RDesVuKQ== X-Google-Smtp-Source: ABdhPJx2gYuKZb+y0TS5XFiEyqCrjEpoW+LpkvCqGkFYyjvD+J8jfUk6sj2b5WUr+4M5kREALWUhaA== X-Received: by 2002:a1c:800f:: with SMTP id b15mr28034106wmd.114.1600683668382; Mon, 21 Sep 2020 03:21:08 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.21.07 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:21:07 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 38/49] staging: media: zoran: Add vb_queue Date: Mon, 21 Sep 2020 10:20:13 +0000 Message-Id: <1600683624-5863-39-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org This patchs adds a vb_queue without using it. This reduce the final VB2 conversion patch. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/Kconfig | 1 + drivers/staging/media/zoran/zoran.h | 30 +++ drivers/staging/media/zoran/zoran_card.c | 7 + drivers/staging/media/zoran/zoran_driver.c | 233 +++++++++++++++++++++ 4 files changed, 271 insertions(+) diff --git a/drivers/staging/media/zoran/Kconfig b/drivers/staging/media/zoran/Kconfig index 34a18135ede0..ddf38a931c01 100644 --- a/drivers/staging/media/zoran/Kconfig +++ b/drivers/staging/media/zoran/Kconfig @@ -2,6 +2,7 @@ config VIDEO_ZORAN tristate "Zoran ZR36057/36067 Video For Linux (Deprecated)" depends on PCI && I2C_ALGOBIT && VIDEO_V4L2 && VIRT_TO_BUS depends on !ALPHA + select VIDEOBUF2_DMA_CONTIG help Say Y for support for MJPEG capture cards based on the Zoran 36057/36067 PCI controller chipset. This includes the Iomega diff --git a/drivers/staging/media/zoran/zoran.h b/drivers/staging/media/zoran/zoran.h index 727ba67afd56..294e52d78e1b 100644 --- a/drivers/staging/media/zoran/zoran.h +++ b/drivers/staging/media/zoran/zoran.h @@ -21,6 +21,9 @@ #include #include #include +#include +#include +#include #define ZR_NORM_PAL 0 #define ZR_NORM_NTSC 1 @@ -33,6 +36,18 @@ struct zoran_sync { u64 ts; /* timestamp */ }; +struct zr_buffer { + /* common v4l buffer stuff -- must be first */ + struct vb2_v4l2_buffer vbuf; + struct list_head queue; +}; + +static inline struct zr_buffer *vb2_to_zr_buffer(struct vb2_buffer *vb) +{ + struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb); + + return container_of(vbuf, struct zr_buffer, vbuf); +} #define ZORAN_NAME "ZORAN" /* name of the device */ @@ -104,6 +119,7 @@ enum zoran_buffer_state { }; enum zoran_map_mode { + ZORAN_MAP_MODE_NONE, ZORAN_MAP_MODE_RAW, ZORAN_MAP_MODE_JPG_REC, #define ZORAN_MAP_MODE_JPG ZORAN_MAP_MODE_JPG_REC @@ -250,6 +266,7 @@ struct zoran { struct v4l2_device v4l2_dev; struct v4l2_ctrl_handler hdl; struct video_device *video_dev; + struct vb2_queue vq; struct i2c_adapter i2c_adapter; /* */ struct i2c_algo_bit_data i2c_algo; /* */ @@ -320,6 +337,7 @@ struct zoran { unsigned long jpg_err_seq; /* last seq_num before error */ unsigned long jpg_err_shift; unsigned long jpg_queued_num; /* count of frames queued since grab/play started */ + unsigned long vbseq; /* zr36057's code buffer table */ __le32 *stat_com; /* stat_com[i] is indexed by dma_head/tail & BUZ_MASK_STAT_COM */ @@ -350,15 +368,23 @@ struct zoran { int num_errors; int JPEG_max_missed; int JPEG_min_missed; + unsigned int prepared; + unsigned int queued; u32 last_isr; unsigned long frame_num; + int running; + int buf_in_reserve; wait_queue_head_t test_q; dma_addr_t p_sc; __le32 *stat_comb; dma_addr_t p_scb; + enum zoran_map_mode map_mode; + struct list_head queued_bufs; + spinlock_t queued_bufs_lock; /* Protects queued_bufs */ + struct zr_buffer *inuse[BUZ_NUM_STAT_COM * 2]; }; static inline struct zoran *to_zoran(struct v4l2_device *v4l2_dev) @@ -376,3 +402,7 @@ static inline struct zoran *to_zoran(struct v4l2_device *v4l2_dev) #define btaor(dat, mask, adr) btwrite((dat) | ((mask) & btread(adr)), adr) #endif + +int zoran_queue_init(struct zoran *zr, struct vb2_queue *vq); +void zoran_queue_exit(struct zoran *zr); +int zr_set_buf(struct zoran *zr); diff --git a/drivers/staging/media/zoran/zoran_card.c b/drivers/staging/media/zoran/zoran_card.c index d956bd45194f..93318ae1803a 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -961,6 +961,9 @@ static int zr36057_init(struct zoran *zr) * another day. */ zr->video_dev->vfl_dir = VFL_DIR_M2M; + + zoran_queue_init(zr, &zr->vq); + err = video_register_device(zr->video_dev, VFL_TYPE_VIDEO, video_nr[zr->id]); if (err < 0) goto exit_statcomb; @@ -996,6 +999,8 @@ static void zoran_remove(struct pci_dev *pdev) if (!zr->initialized) goto exit_free; + zoran_queue_exit(zr); + /* unregister videocodec bus */ if (zr->codec) videocodec_detach(zr->codec); @@ -1270,6 +1275,8 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) if (zr36057_init(zr) < 0) goto zr_detach_vfe; + zr->map_mode = ZORAN_MAP_MODE_RAW; + return 0; zr_detach_vfe: diff --git a/drivers/staging/media/zoran/zoran_driver.c b/drivers/staging/media/zoran/zoran_driver.c index a326c0a16e0c..2c1e70cf2f0c 100644 --- a/drivers/staging/media/zoran/zoran_driver.c +++ b/drivers/staging/media/zoran/zoran_driver.c @@ -2255,3 +2255,236 @@ const struct video_device zoran_template = { .tvnorms = V4L2_STD_NTSC | V4L2_STD_PAL | V4L2_STD_SECAM, }; +static int zr_vb2_queue_setup(struct vb2_queue *vq, unsigned int *nbuffers, unsigned int *nplanes, + unsigned int sizes[], struct device *alloc_devs[]) +{ + struct zoran *zr = vb2_get_drv_priv(vq); + unsigned int size = zr->buffer_size; + + pci_dbg(zr->pci_dev, "%s nbuf=%u nplanes=%u", __func__, *nbuffers, *nplanes); + + zr->buf_in_reserve = 0; + + if (*nbuffers < vq->min_buffers_needed) + *nbuffers = vq->min_buffers_needed; + + if (*nplanes) + if (sizes[0] < size) + return -EINVAL; + else + return 0; + *nplanes = 1; + sizes[0] = size; + + return 0; +} + +static void zr_vb2_queue(struct vb2_buffer *vb) +{ + struct zoran *zr = vb2_get_drv_priv(vb->vb2_queue); + struct zr_buffer *buf = vb2_to_zr_buffer(vb); + unsigned long flags; + + spin_lock_irqsave(&zr->queued_bufs_lock, flags); + list_add_tail(&buf->queue, &zr->queued_bufs); + zr->buf_in_reserve++; + spin_unlock_irqrestore(&zr->queued_bufs_lock, flags); + if (zr->running == ZORAN_MAP_MODE_JPG_REC) + zoran_feed_stat_com(zr); + zr->queued++; +} + +static int zr_vb2_prepare(struct vb2_buffer *vb) +{ + struct zoran *zr = vb2_get_drv_priv(vb->vb2_queue); + + zr->prepared++; + return 0; +} + +int zr_set_buf(struct zoran *zr) +{ + struct zr_buffer *buf; + struct vb2_v4l2_buffer *vbuf; + dma_addr_t phys_addr; + unsigned long flags; + u32 reg; + + if (zr->running == ZORAN_MAP_MODE_NONE) + return 0; + + if (zr->inuse[0]) { + buf = zr->inuse[0]; + buf->vbuf.vb2_buf.timestamp = ktime_get_ns(); + buf->vbuf.sequence = zr->vbseq++; + vbuf = &buf->vbuf; + + buf->vbuf.field = V4L2_FIELD_INTERLACED; + vb2_set_plane_payload(&buf->vbuf.vb2_buf, 0, zr->buffer_size); + vb2_buffer_done(&buf->vbuf.vb2_buf, VB2_BUF_STATE_DONE); + zr->inuse[0] = NULL; + } + + spin_lock_irqsave(&zr->queued_bufs_lock, flags); + if (list_empty(&zr->queued_bufs)) { + btand(~ZR36057_ICR_IntPinEn, ZR36057_ICR); + vb2_queue_error(zr->video_dev->queue); + spin_unlock_irqrestore(&zr->queued_bufs_lock, flags); + return -EINVAL; + } + buf = list_first_entry_or_null(&zr->queued_bufs, struct zr_buffer, queue); + if (!buf) { + btand(~ZR36057_ICR_IntPinEn, ZR36057_ICR); + vb2_queue_error(zr->video_dev->queue); + spin_unlock_irqrestore(&zr->queued_bufs_lock, flags); + return -EINVAL; + } + list_del(&buf->queue); + spin_unlock_irqrestore(&zr->queued_bufs_lock, flags); + + vbuf = &buf->vbuf; + vbuf->vb2_buf.state = VB2_BUF_STATE_ACTIVE; + phys_addr = vb2_dma_contig_plane_dma_addr(&vbuf->vb2_buf, 0); + + if (!phys_addr) + return -EINVAL; + + zr->inuse[0] = buf; + + reg = phys_addr; + btwrite(reg, ZR36057_VDTR); + if (zr->v4l_settings.height > BUZ_MAX_HEIGHT / 2) + reg += zr->v4l_settings.bytesperline; + btwrite(reg, ZR36057_VDBR); + + reg = 0; + if (zr->v4l_settings.height > BUZ_MAX_HEIGHT / 2) + reg += zr->v4l_settings.bytesperline; + reg = (reg << ZR36057_VSSFGR_DispStride); + reg |= ZR36057_VSSFGR_VidOvf; + reg |= ZR36057_VSSFGR_SnapShot; + reg |= ZR36057_VSSFGR_FrameGrab; + btwrite(reg, ZR36057_VSSFGR); + + btor(ZR36057_VDCR_VidEn, ZR36057_VDCR); + return 0; +} + +static int zr_vb2_start_streaming(struct vb2_queue *vq, unsigned int count) +{ + struct zoran *zr = vq->drv_priv; + int j; + + for (j = 0; j < BUZ_NUM_STAT_COM; j++) { + zr->stat_com[j] = cpu_to_le32(1); + zr->inuse[j] = NULL; + } + + if (zr->map_mode != ZORAN_MAP_MODE_RAW) { + pci_info(zr->pci_dev, "START JPG\n"); + zr36057_restart(zr); + zoran_init_hardware(zr); + if (zr->map_mode == ZORAN_MAP_MODE_JPG_REC) + zr36057_enable_jpg(zr, BUZ_MODE_MOTION_DECOMPRESS); + else + zr36057_enable_jpg(zr, BUZ_MODE_MOTION_COMPRESS); + zoran_feed_stat_com(zr); + jpeg_start(zr); + zr->running = zr->map_mode; + btor(ZR36057_ICR_IntPinEn, ZR36057_ICR); + return 0; + } + + pci_info(zr->pci_dev, "START RAW\n"); + zr36057_restart(zr); + zoran_init_hardware(zr); + + zr36057_enable_jpg(zr, BUZ_MODE_IDLE); + zr36057_set_memgrab(zr, 1); + zr->running = zr->map_mode; + btor(ZR36057_ICR_IntPinEn, ZR36057_ICR); + return 0; +} + +static void zr_vb2_stop_streaming(struct vb2_queue *vq) +{ + struct zoran *zr = vq->drv_priv; + struct zr_buffer *buf; + unsigned long flags; + int j; + + btand(~ZR36057_ICR_IntPinEn, ZR36057_ICR); + if (zr->map_mode != ZORAN_MAP_MODE_RAW) + zr36057_enable_jpg(zr, BUZ_MODE_IDLE); + zr36057_set_memgrab(zr, 0); + zr->running = ZORAN_MAP_MODE_NONE; + + zoran_set_pci_master(zr, 0); + + if (!pass_through) { /* Switch to color bar */ + decoder_call(zr, video, s_stream, 0); + encoder_call(zr, video, s_routing, 2, 0, 0); + } + + for (j = 0; j < BUZ_NUM_STAT_COM; j++) { + zr->stat_com[j] = cpu_to_le32(1); + if (!zr->inuse[j]) + continue; + buf = zr->inuse[j]; + pci_dbg(zr->pci_dev, "%s clean buf %d\n", __func__, j); + vb2_buffer_done(&buf->vbuf.vb2_buf, VB2_BUF_STATE_ERROR); + zr->inuse[j] = NULL; + } + + spin_lock_irqsave(&zr->queued_bufs_lock, flags); + while (!list_empty(&zr->queued_bufs)) { + buf = list_entry(zr->queued_bufs.next, struct zr_buffer, queue); + list_del(&buf->queue); + vb2_buffer_done(&buf->vbuf.vb2_buf, VB2_BUF_STATE_ERROR); + zr->buf_in_reserve--; + } + spin_unlock_irqrestore(&zr->queued_bufs_lock, flags); + if (zr->buf_in_reserve) + pci_err(zr->pci_dev, "Buffer remaining %d\n", zr->buf_in_reserve); + zr->map_mode = ZORAN_MAP_MODE_RAW; +} + +static const struct vb2_ops zr_video_qops = { + .queue_setup = zr_vb2_queue_setup, + .buf_queue = zr_vb2_queue, + .buf_prepare = zr_vb2_prepare, + .start_streaming = zr_vb2_start_streaming, + .stop_streaming = zr_vb2_stop_streaming, + .wait_prepare = vb2_ops_wait_prepare, + .wait_finish = vb2_ops_wait_finish, +}; + +int zoran_queue_init(struct zoran *zr, struct vb2_queue *vq) +{ + int err; + + spin_lock_init(&zr->queued_bufs_lock); + INIT_LIST_HEAD(&zr->queued_bufs); + + vq->dev = &zr->pci_dev->dev; + vq->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + vq->io_modes = VB2_USERPTR | VB2_DMABUF | VB2_MMAP | VB2_READ | VB2_WRITE; + vq->drv_priv = zr; + vq->buf_struct_size = sizeof(struct zr_buffer); + vq->ops = &zr_video_qops; + vq->mem_ops = &vb2_dma_contig_memops; + vq->gfp_flags = GFP_DMA32, + vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC; + vq->min_buffers_needed = 9; + vq->lock = &zr->lock; + err = vb2_queue_init(vq); + if (err) + return err; + zr->video_dev->queue = vq; + return 0; +} + +void zoran_queue_exit(struct zoran *zr) +{ + vb2_queue_release(zr->video_dev->queue); +} From patchwork Mon Sep 21 10:20:14 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789085 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 763A959D for ; Mon, 21 Sep 2020 10:22:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 58EAF20EDD for ; Mon, 21 Sep 2020 10:22:06 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="hsFrcDBi" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727101AbgIUKWE (ORCPT ); Mon, 21 Sep 2020 06:22:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59200 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726934AbgIUKVL (ORCPT ); Mon, 21 Sep 2020 06:21:11 -0400 Received: from mail-wm1-x341.google.com (mail-wm1-x341.google.com [IPv6:2a00:1450:4864:20::341]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 80DF1C0613D1 for ; Mon, 21 Sep 2020 03:21:10 -0700 (PDT) Received: by mail-wm1-x341.google.com with SMTP id d4so11562783wmd.5 for ; Mon, 21 Sep 2020 03:21:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=uDkkWNM0rHPx30WBJ9RYyqITIKCjYLog+rU9zqKzxvE=; b=hsFrcDBiXN61Z9d04dj5g+ouWOEmK2VyMDvFapjJe1DUDa08wnRo5XTxjQPuQ999wW 49LL96NcTSaVmoRUZsnyVxCZ85I+f1W0jwvPuNJ/CTPC1tYoPvRVa3U5d5ysmebuj5Kz m0Uj8YhGjdHI/c/ihKVYEno9U9fLfDkyxO5sXVSJM6qISfaaCjGb8egyruLYPwYxF2NK fblQWKEWwMuEp+AAbL0hxAXCdA8hER/GnDU0rQ3+e8aObv8aGq5DTv+Hzt4HfI0SLgsr r2W8OEp9y3qdHVY1TRHJ1UPWNU+hF3/OvfbbWKtM+8QpS6iVepUalojmrcC8CO/RIzW2 Eebg== 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; bh=uDkkWNM0rHPx30WBJ9RYyqITIKCjYLog+rU9zqKzxvE=; b=MSdpJ78NR9k/kC/2hrbRzYdOtwiyzYb7G/FAlFo9SPy2Puf/Fb/L9iAM8/EVS8zZn3 hXltSGk7bfSLB3bfwRsxqQxxyLmaBpk3Yj9S+ZFIFXRaPG428DQAIcIuRAQ+PH5kkC6a xmpD1FJOMF6mDhA+5ZAVLOUZlZ5s+vF5XDxuaof8SHBD9nB/IZUbR3OSTXiJlI22yiHM XW7cdV9RrQMa/Ki9JE5HeihUTTKfimIlJ98YAQaXG8RcTjmDRScOzeC2dJtvBvGayrd6 sj6vWy/GtGZDjLeT5VdLs3T+86NPJvLKvNpM5o1+5+10MICXYrhEhEGyWKM81WhYSubF ZSew== X-Gm-Message-State: AOAM5322599YLonDYCkG8+MddRplZ9kW53ThK32FpkA6w5yrIszSZjei vxEvR1bthDis3ZXqMk+4SDU8Bw== X-Google-Smtp-Source: ABdhPJzWXxqw72kvusYKTW95fuGlXzwUmj6ka2u4TTLGkffH+FdJpwHQKoa69Ob7+uHu9Y8yhALwsg== X-Received: by 2002:a1c:4381:: with SMTP id q123mr28357827wma.108.1600683669228; Mon, 21 Sep 2020 03:21:09 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.21.08 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:21:08 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 39/49] staging: media: zoran: disable output Date: Mon, 21 Sep 2020 10:20:14 +0000 Message-Id: <1600683624-5863-40-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Zoran is picky about jpeg data it accepts. At least it seems to not support COM and APPn. So until a way to filter data will be done, disable output. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran_card.c | 2 ++ drivers/staging/media/zoran/zoran_driver.c | 20 ++++++++++++-------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/drivers/staging/media/zoran/zoran_card.c b/drivers/staging/media/zoran/zoran_card.c index 93318ae1803a..864196e7acae 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -954,6 +954,8 @@ static int zr36057_init(struct zoran *zr) *zr->video_dev = zoran_template; zr->video_dev->v4l2_dev = &zr->v4l2_dev; zr->video_dev->lock = &zr->lock; + zr->video_dev->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_CAPTURE; + strscpy(zr->video_dev->name, ZR_DEVNAME(zr), sizeof(zr->video_dev->name)); /* * It's not a mem2mem device, but you can both capture and output from one and the same diff --git a/drivers/staging/media/zoran/zoran_driver.c b/drivers/staging/media/zoran/zoran_driver.c index 2c1e70cf2f0c..1efec2edd72f 100644 --- a/drivers/staging/media/zoran/zoran_driver.c +++ b/drivers/staging/media/zoran/zoran_driver.c @@ -1082,8 +1082,7 @@ static int zoran_querycap(struct file *file, void *__fh, struct v4l2_capability strscpy(cap->card, ZR_DEVNAME(zr), sizeof(cap->card)); strscpy(cap->driver, "zoran", sizeof(cap->driver)); snprintf(cap->bus_info, sizeof(cap->bus_info), "PCI:%s", pci_name(zr->pci_dev)); - cap->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_CAPTURE | - V4L2_CAP_VIDEO_OUTPUT; + cap->device_caps = zr->video_dev->device_caps; cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS; return 0; } @@ -2204,6 +2203,11 @@ static int zoran_mmap(struct file *file, struct vm_area_struct *vma) return res; } +/* + * Output is disabled temporarily + * Zoran is picky about jpeg data it accepts. At least it seems to unsupport COM and APPn. + * So until a way to filter data will be done, disable output. + */ static const struct v4l2_ioctl_ops zoran_ioctl_ops = { .vidioc_querycap = zoran_querycap, .vidioc_s_selection = zoran_s_selection, @@ -2211,9 +2215,9 @@ static const struct v4l2_ioctl_ops zoran_ioctl_ops = { .vidioc_enum_input = zoran_enum_input, .vidioc_g_input = zoran_g_input, .vidioc_s_input = zoran_s_input, - .vidioc_enum_output = zoran_enum_output, +/* .vidioc_enum_output = zoran_enum_output, .vidioc_g_output = zoran_g_output, - .vidioc_s_output = zoran_s_output, + .vidioc_s_output = zoran_s_output,*/ .vidioc_g_fbuf = zoran_g_fbuf, .vidioc_s_fbuf = zoran_s_fbuf, .vidioc_g_std = zoran_g_std, @@ -2227,13 +2231,13 @@ static const struct v4l2_ioctl_ops zoran_ioctl_ops = { .vidioc_streamon = zoran_streamon, .vidioc_streamoff = zoran_streamoff, .vidioc_enum_fmt_vid_cap = zoran_enum_fmt_vid_cap, - .vidioc_enum_fmt_vid_out = zoran_enum_fmt_vid_out, +/* .vidioc_enum_fmt_vid_out = zoran_enum_fmt_vid_out,*/ .vidioc_g_fmt_vid_cap = zoran_g_fmt_vid_cap, - .vidioc_g_fmt_vid_out = zoran_g_fmt_vid_out, +/* .vidioc_g_fmt_vid_out = zoran_g_fmt_vid_out,*/ .vidioc_s_fmt_vid_cap = zoran_s_fmt_vid_cap, - .vidioc_s_fmt_vid_out = zoran_s_fmt_vid_out, +/* .vidioc_s_fmt_vid_out = zoran_s_fmt_vid_out,*/ .vidioc_try_fmt_vid_cap = zoran_try_fmt_vid_cap, - .vidioc_try_fmt_vid_out = zoran_try_fmt_vid_out, +/* .vidioc_try_fmt_vid_out = zoran_try_fmt_vid_out,*/ .vidioc_subscribe_event = v4l2_ctrl_subscribe_event, .vidioc_unsubscribe_event = v4l2_event_unsubscribe, }; From patchwork Mon Sep 21 10:20:15 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789081 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8471B6CA for ; Mon, 21 Sep 2020 10:22:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 686ED207BC for ; Mon, 21 Sep 2020 10:22:01 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="cNOdhewY" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726606AbgIUKWA (ORCPT ); Mon, 21 Sep 2020 06:22:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59210 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726989AbgIUKVM (ORCPT ); Mon, 21 Sep 2020 06:21:12 -0400 Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com [IPv6:2a00:1450:4864:20::441]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 60BE6C0613D3 for ; Mon, 21 Sep 2020 03:21:11 -0700 (PDT) Received: by mail-wr1-x441.google.com with SMTP id t10so12134484wrv.1 for ; Mon, 21 Sep 2020 03:21:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=X+rFpG4vvom05OvyshLNJdJ8kwgKGSpX9C8YhBuxe5o=; b=cNOdhewYGKl2YXjKJURDIdKsQu8ZURzvDXtycD++ZmmwaT+J5kQ3pbSlKC1ljvk1rb 7c9mM7lwiacjgzmwvAgZqpm1kttbtMjT/I+1RArtwZZzP+BmSylpv0oayqX6TuxbD1AL YtAxB3UvYq7EPNfCtQPdFX+CqsLux1DiX9RG77Qg6/2jtASmro4jYFwhX5ZSnlwr8eJ3 5rwMXXBdln8bHX4yjru65FoT9fcu0bCqi5LVbEND7/ih/YnZo4HF33N3w8aem5HtqdAd XH7qB8d4UKF8a5zjD2c4Zpu3TiAUisMPK5kiY48tVI0NvfXrE+ArvVK9tY0QmZ4spCa/ M4Yg== 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; bh=X+rFpG4vvom05OvyshLNJdJ8kwgKGSpX9C8YhBuxe5o=; b=NsSsnNv2YFbcRvrb+aVGQb980luvU5fN4PjZf7Iw3y50Xr/7CPwzO7Bo+jjjWerUlL iK7fbC9GzNGl4emdKEH+248c0b/y8OdXGmdMqE+TFMEpjnILgIdzm9/vVR61QsgUabg0 PV9747VL5EgAAdyoBRMSSel/PZIJXylY8vm8G2MNi1SGwbJ4Gh6agshst5DNDiSKoeMN xPaX5VSLTQyev7Na+4Rr9zKS53IFYWm5ZIM3v/vww0tKzhVWu259pSR4avpLIXXfvy1y bNeHEDM0LoLYxJu5sLe7u4YtdulYVaL0DQBaGP8oMzEhWrjEbnceiGrjjAc1ZgnxlQH3 CLnw== X-Gm-Message-State: AOAM5300UwwkMDyIbL9nIlfInUcKO4bgBeOB1W4qUyly9xSDNkBAXQfX n1s+8cFFuQXbabv1fzcrJHa79g== X-Google-Smtp-Source: ABdhPJx5/I5MOZQ6v+bndDYnz6frgD0KgYbwoj30CpffrluyW6RiigjRwAq0J2375zGKyZudwb/chw== X-Received: by 2002:a5d:60cc:: with SMTP id x12mr51120033wrt.84.1600683670104; Mon, 21 Sep 2020 03:21:10 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.21.09 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:21:09 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 40/49] staging: media: zoran: device support only 32bit DMA address Date: Mon, 21 Sep 2020 10:20:15 +0000 Message-Id: <1600683624-5863-41-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org The zoran device only supports 32bit DMA address. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran_card.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/staging/media/zoran/zoran_card.c b/drivers/staging/media/zoran/zoran_card.c index 864196e7acae..ab16a70a7451 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -1101,6 +1101,12 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) int card_num; const char *codec_name, *vfe_name; unsigned int nr; + int err; + + err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32)); + if (err) + return -ENODEV; + vb2_dma_contig_set_max_seg_size(&pdev->dev, DMA_BIT_MASK(32)); nr = zoran_num++; if (nr >= BUZ_MAX) { From patchwork Mon Sep 21 10:20:16 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789083 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 75A3E6CA for ; Mon, 21 Sep 2020 10:22:04 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 59137207BC for ; Mon, 21 Sep 2020 10:22:04 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="Lw9bQeNt" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727092AbgIUKV7 (ORCPT ); Mon, 21 Sep 2020 06:21:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59214 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726991AbgIUKVM (ORCPT ); Mon, 21 Sep 2020 06:21:12 -0400 Received: from mail-wr1-x442.google.com (mail-wr1-x442.google.com [IPv6:2a00:1450:4864:20::442]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3EAB2C0613D5 for ; Mon, 21 Sep 2020 03:21:12 -0700 (PDT) Received: by mail-wr1-x442.google.com with SMTP id x14so12097665wrl.12 for ; Mon, 21 Sep 2020 03:21:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=/tLZJac8Ffn37A7WxCGBPX2NFTEQpF30SJ7IB/uL5Ro=; b=Lw9bQeNtWzONKIvulMFjqZHVSIBJ+YzkdscnghB6hFyde4iXLIzLYP1EH06krH95mx qWKW+RACGF499CYTQYQltWRp5KikOm05rdE4iWUWESguLaMIbqIQVQ/hXQffI+c887uJ e80o9Du+VecLUlF7azvUsuv5ZIMhZagcb+sN4uzNxipodcf4W+pHvU20pU86nrJRrV45 +glL7EqH15veYuWY1d9TCz/Mkt3vlXIAbsBf05s1sqgIUC7BsamzrMUrYbN2lagI0idX +qOabI1hNMHz3JKC1YSr6GsuMrlqbhrpHJFszkVbVpPvX+Aa2wOp8/gxmk8UGYk7Im/f jpeg== 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; bh=/tLZJac8Ffn37A7WxCGBPX2NFTEQpF30SJ7IB/uL5Ro=; b=R1RDO+k248gdLrgcyyv163TOpCzAyS0Ot1oW/qEG01lG+C8d/6JlYsIwyP07l1fuLW vNm43ivvuBe0dZ/RPlffDEvCmceu+Q+pC0Ar54sqmYWYSzetP/5nXJukGDexMzN1kHj0 Ajq5ft2cWDx+tBjaHraUEAjLAUhZazUyiXWZ47kTITa1/DsjFsXUE8Xc64ieRIgOkDu/ KOubuhxZsIDa4wmZU7SfNCaiWYumzHaqNJS6xWbB7Bf7gauGHEQ0HIu1H2preujhgheS aqoTiquyEHSVEpkMYqykgoiEsFacpYNYXFkreWQsq+l1Zfj+N9z7750JsI2n34qltlTz VVbw== X-Gm-Message-State: AOAM530z7VbB52HdR8JHll/KqMxN674R0j0gBo1a+Uy5yLqVPbJeNvUW yNDlhdSqSaVYE90qRxP7Et8S6g== X-Google-Smtp-Source: ABdhPJwSumtffxKSLF97N4tc6ojqM+H7kM2XB8Kv/SA4FWEXUIxHjZRiLLW+NqoyuVtvuhn1JfNBQA== X-Received: by 2002:a5d:668b:: with SMTP id l11mr50275532wru.89.1600683670944; Mon, 21 Sep 2020 03:21:10 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.21.10 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:21:10 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 41/49] staging: media: zoran: enable makefile Date: Mon, 21 Sep 2020 10:20:16 +0000 Message-Id: <1600683624-5863-42-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org This patch enables compilation of the zoran driver. Signed-off-by: Corentin Labbe --- drivers/staging/media/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/staging/media/Makefile b/drivers/staging/media/Makefile index 25910221b100..965a8b0e6cf2 100644 --- a/drivers/staging/media/Makefile +++ b/drivers/staging/media/Makefile @@ -12,3 +12,4 @@ obj-$(CONFIG_VIDEO_HANTRO) += hantro/ obj-$(CONFIG_VIDEO_IPU3_IMGU) += ipu3/ obj-$(CONFIG_PHY_ROCKCHIP_DPHY_RX0) += phy-rockchip-dphy-rx0/ obj-$(CONFIG_VIDEO_ROCKCHIP_ISP1) += rkisp1/ +obj-$(CONFIG_VIDEO_ZORAN) += zoran/ From patchwork Mon Sep 21 10:20:17 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789077 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 611656CA for ; Mon, 21 Sep 2020 10:21:57 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 41CC0207BC for ; Mon, 21 Sep 2020 10:21:57 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="YY36+18N" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727075AbgIUKVu (ORCPT ); Mon, 21 Sep 2020 06:21:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59218 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727000AbgIUKVN (ORCPT ); Mon, 21 Sep 2020 06:21:13 -0400 Received: from mail-wr1-x444.google.com (mail-wr1-x444.google.com [IPv6:2a00:1450:4864:20::444]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3920AC0613CF for ; Mon, 21 Sep 2020 03:21:13 -0700 (PDT) Received: by mail-wr1-x444.google.com with SMTP id t10so12134578wrv.1 for ; Mon, 21 Sep 2020 03:21:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=mJHxmatwliiILb7dsJ+xU9dZGkpFAiokQ09uJSwZTko=; b=YY36+18NrSi43hiI1GypE3L3g7YkZYC4dvqcoG7y95SOj1DcWqwIToU6gOxxryf9q8 aXDMUATQCVAArDmi3knlOtzdjOhVud7zU1UPPGGZlBStGw/sDaSo2uRZUQ1izWMJ+w7S lsJnR06Z4Y8Y+aa8LX/PXD0W4IvLdrLpfAaeW3R19RfP536Wke1u2HSxxqjNC0hF5NVt t2QKRUmmeD3UAhu1FJ+i77IN9m+MF9l+VGp7G0ThCesVk4TBYgJ+DLCznQ+LJdeYQ0HC WVS8QATv415OnmoScSh8oUTMTzFcJI2mDyUkzVqgJ8GxzVAv2R3W8PQNKcsaHLNWk6Y1 YMqQ== 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; bh=mJHxmatwliiILb7dsJ+xU9dZGkpFAiokQ09uJSwZTko=; b=KHL9nb8yVpkA9BAe4Jp6BOoSw1MjNlzIK9wPtK0FrDkxGMJYaSxpVwWHhCjR+FOBEg 2ciyARrK4vAtRekOKG3kCqdnIqKjk+keedCs8ugq5UAbN58JClwMtU+fvSKzBND80w7d vNpbvYme48Rz/RFVB3KkEZFKOnRzhoAMBFGV01ltJ/V/4mg3gxQb4ZXI+xUB4bNkJVyC QGakkFePDEqhujxeH//kXaRbA7QxytGlY0DsF1lB7yF1287mIKU7mKxRVsfCbgfu/IOI 4FtjDPvx4Cas9L66a+SHNyZgbcygq0b5A/B3A9ZMXojKZIa3QhUoSf1XpWyCdRlAvmhW LLAQ== X-Gm-Message-State: AOAM5312YBJcaDSguPzogyn5kEDpQL8phdZyxycq/e7FVzuVzZfZsMR7 mFjfQrGpuWzJQl1zbi4thUrb4w== X-Google-Smtp-Source: ABdhPJwtsP6qs8zegG7/DtdHTKeW1KXJsBuEqLj+EEMBeNJc/0krxjR0o43Of5KJoFWEVdN8Jioegw== X-Received: by 2002:adf:ef45:: with SMTP id c5mr49998455wrp.37.1600683671890; Mon, 21 Sep 2020 03:21:11 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.21.11 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:21:11 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 42/49] staging: media: zoran: remove framebuffer support Date: Mon, 21 Sep 2020 10:20:17 +0000 Message-Id: <1600683624-5863-43-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org The framebuffer support is obsolete, so let's reduce code size. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran.h | 4 - drivers/staging/media/zoran/zoran_card.c | 6 -- drivers/staging/media/zoran/zoran_driver.c | 85 ---------------------- 3 files changed, 95 deletions(-) diff --git a/drivers/staging/media/zoran/zoran.h b/drivers/staging/media/zoran/zoran.h index 294e52d78e1b..0246635e0eac 100644 --- a/drivers/staging/media/zoran/zoran.h +++ b/drivers/staging/media/zoran/zoran.h @@ -299,10 +299,6 @@ struct zoran { /* Current buffer params */ unsigned int buffer_size; - void *vbuf_base; - int vbuf_height, vbuf_width; - int vbuf_depth; - int vbuf_bytesperline; wait_queue_head_t v4l_capq; diff --git a/drivers/staging/media/zoran/zoran_card.c b/drivers/staging/media/zoran/zoran_card.c index ab16a70a7451..530dd326ad94 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -895,12 +895,6 @@ static int zr36057_init(struct zoran *zr) zr->jpg_buffers.allocated = 0; zr->v4l_buffers.allocated = 0; - zr->vbuf_base = (void *)vidmem; - zr->vbuf_width = 0; - zr->vbuf_height = 0; - zr->vbuf_depth = 0; - zr->vbuf_bytesperline = 0; - /* Avoid nonsense settings from user for default input/norm */ if (default_norm < 0 || default_norm > 2) default_norm = 0; diff --git a/drivers/staging/media/zoran/zoran_driver.c b/drivers/staging/media/zoran/zoran_driver.c index 1efec2edd72f..0b4bfc184b57 100644 --- a/drivers/staging/media/zoran/zoran_driver.c +++ b/drivers/staging/media/zoran/zoran_driver.c @@ -881,48 +881,6 @@ static int zoran_close(struct file *file) return 0; } -static int setup_fbuffer(struct zoran_fh *fh, void *base, const struct zoran_format *fmt, - int width, int height, int bytesperline) -{ - struct zoran *zr = fh->zr; - - /* (Ronald) v4l/v4l2 guidelines */ - if (!capable(CAP_SYS_ADMIN) && !capable(CAP_SYS_RAWIO)) - return -EPERM; - - /* - * Don't allow frame buffer overlay if PCI or AGP is buggy, or on - ALi Magik (that needs very low latency while the card needs a - higher value always) - */ - - if (pci_pci_problems & (PCIPCI_FAIL | PCIAGP_FAIL | PCIPCI_ALIMAGIK)) - return -ENXIO; - - /* we need a bytesperline value, even if not given */ - if (!bytesperline) - bytesperline = width * ((fmt->depth + 7) & ~7) / 8; - - if (height <= 0 || width <= 0 || bytesperline <= 0) { - pci_err(zr->pci_dev, "%s - invalid height/width/bpl value (%d|%d|%d)\n", - __func__, width, height, bytesperline); - return -EINVAL; - } - if (bytesperline & 3) { - pci_err(zr->pci_dev, "%s - bytesperline (%d) must be 4-byte aligned\n", - __func__, bytesperline); - return -EINVAL; - } - - zr->vbuf_base = (void *)((unsigned long)base & ~3); - zr->vbuf_height = height; - zr->vbuf_width = width; - zr->vbuf_depth = fmt->depth; - zr->vbuf_bytesperline = bytesperline; - - return 0; -} - /* get the status of a buffer in the clients buffer queue */ static int zoran_v4l2_buffer_status(struct zoran_fh *fh, struct v4l2_buffer *buf, int num) @@ -1388,47 +1346,6 @@ static int zoran_s_fmt_vid_cap(struct file *file, void *__fh, struct v4l2_format return res; } -static int zoran_g_fbuf(struct file *file, void *__fh, - struct v4l2_framebuffer *fb) -{ - struct zoran *zr = video_drvdata(file); - - memset(fb, 0, sizeof(*fb)); - fb->base = zr->vbuf_base; - fb->fmt.width = zr->vbuf_width; - fb->fmt.height = zr->vbuf_height; - fb->fmt.bytesperline = zr->vbuf_bytesperline; - fb->fmt.colorspace = V4L2_COLORSPACE_SRGB; - fb->fmt.field = V4L2_FIELD_INTERLACED; - fb->capability = V4L2_FBUF_CAP_LIST_CLIPPING; - - return 0; -} - -static int zoran_s_fbuf(struct file *file, void *__fh, - const struct v4l2_framebuffer *fb) -{ - struct zoran *zr = video_drvdata(file); - struct zoran_fh *fh = __fh; - int i, res = 0; - __le32 printformat = __cpu_to_le32(fb->fmt.pixelformat); - - for (i = 0; i < NUM_FORMATS; i++) - if (zoran_formats[i].fourcc == fb->fmt.pixelformat) - break; - if (i == NUM_FORMATS) { - pci_err(zr->pci_dev, "VIDIOC_S_FBUF - format=0x%x (%4.4s) not allowed\n", - fb->fmt.pixelformat, - (char *)&printformat); - return -EINVAL; - } - - res = setup_fbuffer(fh, fb->base, &zoran_formats[i], fb->fmt.width, - fb->fmt.height, fb->fmt.bytesperline); - - return res; -} - static int zoran_streamoff(struct file *file, void *__fh, enum v4l2_buf_type type); static int zoran_reqbufs(struct file *file, void *__fh, struct v4l2_requestbuffers *req) @@ -2218,8 +2135,6 @@ static const struct v4l2_ioctl_ops zoran_ioctl_ops = { /* .vidioc_enum_output = zoran_enum_output, .vidioc_g_output = zoran_g_output, .vidioc_s_output = zoran_s_output,*/ - .vidioc_g_fbuf = zoran_g_fbuf, - .vidioc_s_fbuf = zoran_s_fbuf, .vidioc_g_std = zoran_g_std, .vidioc_s_std = zoran_s_std, .vidioc_g_jpegcomp = zoran_g_jpegcomp, From patchwork Mon Sep 21 10:20:18 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789071 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 90BEA112E for ; Mon, 21 Sep 2020 10:21:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7201120EDD for ; Mon, 21 Sep 2020 10:21:38 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="B0KJNIuj" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727015AbgIUKVP (ORCPT ); Mon, 21 Sep 2020 06:21:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59222 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727005AbgIUKVO (ORCPT ); Mon, 21 Sep 2020 06:21:14 -0400 Received: from mail-wm1-x343.google.com (mail-wm1-x343.google.com [IPv6:2a00:1450:4864:20::343]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2387FC0613D1 for ; Mon, 21 Sep 2020 03:21:14 -0700 (PDT) Received: by mail-wm1-x343.google.com with SMTP id y15so12017119wmi.0 for ; Mon, 21 Sep 2020 03:21:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Go04h4cBZb8oManNnBUCEv0xT9mbFOVFD/8tb3hzAWA=; b=B0KJNIujqWSJKiTDeZnTlqwipUX6r3YfWEvq0cg/FTY1nbvCf44+V12zE/P+TK8yc4 IYJMTjR653cKibE9xcUEnJXi/bcA6biRg626F6nkeixexu3kBXmM+EaMFJ7ex+L6QatM IMdqzflT53PYZViuhqE9bVztQ959JmLH6cbkK6lnMv5ayh0JId6a+5gowWauFiivSiPq LQsMn/hJtPZ8+hjrO8OVN6MYO+bZNdCWBU43/2biQSM9VxjIutjMrg2pwXkyWM8nP2e0 lm0zNJTdizABDmwyy6uVAeNjkv6/+HHrAYJi1/rQMyEkxI713J6IcqvUykAl/OR2KR8c /BVw== 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; bh=Go04h4cBZb8oManNnBUCEv0xT9mbFOVFD/8tb3hzAWA=; b=SGuxGA2iXgZQCUT4jTTkBRj1h/nxskNsIwuKsxOMvuiCMvP93hhcRMeI2G1r+iZRgt ZMgly/yaigvisCyhhHQXklbNwpsC8ARP90Hjw0bYSh2UW7rhcjFfdF3rSo70gxFO0khZ JLuvwVvQdFC+LXF8Gn7h8jzuBf28QhlxjY0zh9vQe/y8NrqNIzYIau+R+9ALGRJv+3Ey eyt/7Mvjj2aBaZJEwnpSKJarnVHpf3mqh1+9HPp97qoeOm4tgGfXBUsWFDkpDGVa06Gz d+hCfAjjEtYhe47uqg68LoXfOVnymnDfzCnIMiRc+FeDkurC6lMd/FeYjERFa4MrnEF6 A13g== X-Gm-Message-State: AOAM533vaICSoDIZS02zSpCpby2NXUs9tnx/CIshhHDrvRKXB+Fv+ioy cQcQQDpA2PQ/ui88N8Pflbl9vA== X-Google-Smtp-Source: ABdhPJznbbQ885WNgPecxK2K2Os4ZRphFdWauz9bE1BZIsLl7gLHwuQXxk1MFKHFhYL5ZQZwL9U6/w== X-Received: by 2002:a7b:c0ca:: with SMTP id s10mr29337577wmh.103.1600683672894; Mon, 21 Sep 2020 03:21:12 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.21.11 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:21:12 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 43/49] staging: media: zoran: add vidioc_g_parm Date: Mon, 21 Sep 2020 10:20:18 +0000 Message-Id: <1600683624-5863-44-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Adding vidioc_g_parm made v4l compliance happy. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran_driver.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/staging/media/zoran/zoran_driver.c b/drivers/staging/media/zoran/zoran_driver.c index 0b4bfc184b57..46bf8b32d57a 100644 --- a/drivers/staging/media/zoran/zoran_driver.c +++ b/drivers/staging/media/zoran/zoran_driver.c @@ -2120,6 +2120,14 @@ static int zoran_mmap(struct file *file, struct vm_area_struct *vma) return res; } +static int zoran_g_parm(struct file *file, void *priv, struct v4l2_streamparm *parm) +{ + if (parm->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) + return -EINVAL; + + return 0; +} + /* * Output is disabled temporarily * Zoran is picky about jpeg data it accepts. At least it seems to unsupport COM and APPn. @@ -2127,6 +2135,7 @@ static int zoran_mmap(struct file *file, struct vm_area_struct *vma) */ static const struct v4l2_ioctl_ops zoran_ioctl_ops = { .vidioc_querycap = zoran_querycap, + .vidioc_g_parm = zoran_g_parm, .vidioc_s_selection = zoran_s_selection, .vidioc_g_selection = zoran_g_selection, .vidioc_enum_input = zoran_enum_input, From patchwork Mon Sep 21 10:20:19 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789075 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id BEFCA59D for ; Mon, 21 Sep 2020 10:21:44 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A5494207BC for ; Mon, 21 Sep 2020 10:21:44 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="LwiurPKO" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726582AbgIUKVn (ORCPT ); Mon, 21 Sep 2020 06:21:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59230 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727013AbgIUKVP (ORCPT ); Mon, 21 Sep 2020 06:21:15 -0400 Received: from mail-wr1-x444.google.com (mail-wr1-x444.google.com [IPv6:2a00:1450:4864:20::444]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 348CDC0613D6 for ; Mon, 21 Sep 2020 03:21:15 -0700 (PDT) Received: by mail-wr1-x444.google.com with SMTP id z1so12138979wrt.3 for ; Mon, 21 Sep 2020 03:21:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=sOh/fuRlI8qlQg+fgdSuZVy6p6bRoxDpMLJTeOc7Koo=; b=LwiurPKOmEqXhztg9TMFEyI242yu+8OFMUyjAYGsQZPDPImkPtTxgpYAAVr2HBuVJ/ UGCshQPhRNLV9rYayy+AX9660EnfMnGMbKOWXSeFfVJJSI0GQCMKZr1b/AyyDWoaqHQo XU3ee+W0R2SuKCu8ocweH4Qd4AZRNxkVtSzEdQ6kK7Mr7u+A5eFIHxl2aOyAVj8Te+RP YYkRQFcFiFniXJRAdbYMbC+5o5Mj0lQBOe/wadRjo9twvQ/RSS9ECstG6RoHdoef+AoD tSd8d929TY08MFValWTPwoDcrIN07zTblp0P2TYx0+ikQyG8w+kmFwKgWD23oisU9rjm 6tLg== 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; bh=sOh/fuRlI8qlQg+fgdSuZVy6p6bRoxDpMLJTeOc7Koo=; b=GffPimlNPizxXYlS5jU/KEBgg/Bpoff8wiz5tkJvb9jHDzwh7TVP4axoQR1RkU6Vyv Rq8V12ZhRoMY3300/CwR7adkUl6R44o5ZXag9qv4C8zo2UtZ4K5z/r3u52kVQ28TOwnb JKiBmlMKAd+Dk8GRZ6zlqMx52Yxua1j1FEOrQqGZQ80CPTR1EyzlVCY1zBfbvlDA+OjV 96Aj6o/nLPsNULW4C2eBal0ShoC8NXeeHqa86l/tYfAl0fQ/nUhNaVwJ6uDgvBFKVr6i UGSdtf2weTgQvLDaiKSlmxrcoTvo+EVc2SNYSruseU1xKIDX/hVGBSopX9+uFAscSGM1 0oqg== X-Gm-Message-State: AOAM532TPHdXfI2qc1MfBMSdt5KEw6bubnr71bkb4QJ6WzB7nM6+u1Jb dx+MSD3msAd2XS/biUHea9+Zbg== X-Google-Smtp-Source: ABdhPJymLhcwt/2MaCggWT4sUMlRzaTZDXU6fyW9fB7vZR+MvUkylpjPXPgY+UtH5DO/P4oPhHw2PQ== X-Received: by 2002:a5d:4c52:: with SMTP id n18mr50621581wrt.267.1600683673869; Mon, 21 Sep 2020 03:21:13 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.21.12 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:21:13 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 44/49] staging: media: zoran: remove test_interrupts Date: Mon, 21 Sep 2020 10:20:19 +0000 Message-Id: <1600683624-5863-45-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org The test_interrupts function is useless, remove it. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran.h | 3 --- drivers/staging/media/zoran/zoran_card.c | 27 ---------------------- drivers/staging/media/zoran/zoran_device.c | 16 ------------- 3 files changed, 46 deletions(-) diff --git a/drivers/staging/media/zoran/zoran.h b/drivers/staging/media/zoran/zoran.h index 0246635e0eac..fd27d1968e60 100644 --- a/drivers/staging/media/zoran/zoran.h +++ b/drivers/staging/media/zoran/zoran.h @@ -345,7 +345,6 @@ struct zoran { struct zoran_buffer_col jpg_buffers; /* MJPEG buffers' info */ /* Additional stuff for testing */ - int testing; int jpeg_error; int intr_counter_GIRQ1; int intr_counter_GIRQ0; @@ -372,8 +371,6 @@ struct zoran { int running; int buf_in_reserve; - wait_queue_head_t test_q; - dma_addr_t p_sc; __le32 *stat_comb; dma_addr_t p_scb; diff --git a/drivers/staging/media/zoran/zoran_card.c b/drivers/staging/media/zoran/zoran_card.c index 530dd326ad94..3bfeb1e00563 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -853,31 +853,6 @@ void zoran_open_init_params(struct zoran *zr) pci_err(zr->pci_dev, "%s internal error\n", __func__); clear_interrupt_counters(zr); - zr->testing = 0; -} - -static void test_interrupts(struct zoran *zr) -{ - DEFINE_WAIT(wait); - int timeout, icr; - - clear_interrupt_counters(zr); - - zr->testing = 1; - icr = btread(ZR36057_ICR); - btwrite(0x78000000 | ZR36057_ICR_IntPinEn, ZR36057_ICR); - prepare_to_wait(&zr->test_q, &wait, TASK_INTERRUPTIBLE); - timeout = schedule_timeout(HZ); - finish_wait(&zr->test_q, &wait); - btwrite(0, ZR36057_ICR); - btwrite(0x78000000, ZR36057_ISR); - zr->testing = 0; - pci_info(zr->pci_dev, "Testing interrupts...\n"); - if (timeout) - pci_info(zr->pci_dev, ": time spent: %d\n", 1 * HZ - timeout); - if (zr36067_debug > 1) - print_interrupts(zr); - btwrite(icr, ZR36057_ICR); } static int zr36057_init(struct zoran *zr) @@ -891,7 +866,6 @@ static int zr36057_init(struct zoran *zr) init_waitqueue_head(&zr->v4l_capq); init_waitqueue_head(&zr->jpg_capq); - init_waitqueue_head(&zr->test_q); zr->jpg_buffers.allocated = 0; zr->v4l_buffers.allocated = 0; @@ -968,7 +942,6 @@ static int zr36057_init(struct zoran *zr) zoran_init_hardware(zr); if (zr36067_debug > 2) detect_guest_activity(zr); - test_interrupts(zr); if (!pass_through) { decoder_call(zr, video, s_stream, 0); encoder_call(zr, video, s_routing, 2, 0, 0); diff --git a/drivers/staging/media/zoran/zoran_device.c b/drivers/staging/media/zoran/zoran_device.c index 7634d94f9359..ae4abf8ffa36 100644 --- a/drivers/staging/media/zoran/zoran_device.c +++ b/drivers/staging/media/zoran/zoran_device.c @@ -1099,22 +1099,6 @@ irqreturn_t zoran_irq(int irq, void *dev_id) struct zoran *zr = dev_id; unsigned long flags; - if (zr->testing) { - /* Testing interrupts */ - spin_lock_irqsave(&zr->spinlock, flags); - while ((stat = count_reset_interrupt(zr))) { - if (count++ > 100) { - btand(~ZR36057_ICR_IntPinEn, ZR36057_ICR); - pci_err(zr->pci_dev, "IRQ lockup while testing, isr=0x%08x, cleared int mask\n", - stat); - wake_up_interruptible(&zr->test_q); - } - } - zr->last_isr = stat; - spin_unlock_irqrestore(&zr->spinlock, flags); - return IRQ_HANDLED; - } - spin_lock_irqsave(&zr->spinlock, flags); while (1) { /* get/clear interrupt status bits */ From patchwork Mon Sep 21 10:20:20 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789063 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 5EC1B6CA for ; Mon, 21 Sep 2020 10:21:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 45251207BC for ; Mon, 21 Sep 2020 10:21:18 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="tuGiHope" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727021AbgIUKVR (ORCPT ); Mon, 21 Sep 2020 06:21:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59234 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727019AbgIUKVQ (ORCPT ); Mon, 21 Sep 2020 06:21:16 -0400 Received: from mail-wm1-x343.google.com (mail-wm1-x343.google.com [IPv6:2a00:1450:4864:20::343]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 25CBDC061755 for ; Mon, 21 Sep 2020 03:21:16 -0700 (PDT) Received: by mail-wm1-x343.google.com with SMTP id l15so11153419wmh.1 for ; Mon, 21 Sep 2020 03:21:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=GuupeKfcO/+rf9Qb6r8f2KQJXgchvtoxnNFe6M9/a1Y=; b=tuGiHopegBqrIUp8HpoCeuXo5y5bglOeDyrrrfZ4Tzuh9U6lqCJj5fXQgy9gzZfIPm Jw4YULN3OQk6sfQjCoMYyu5tVlL2tYnotZQgDONkBlgCqkIb4AhNP3X0AOl7eUv0Z2jl o2z1CC2zmeBOl2meNu+J+6u5Us1CMuzlG9sdM50i75y3fZUHRNnbclBHy+Jg0CeDlEcD 5iBiCB8zjIBZ1ORIsNPQ+CrFmBBcfzagv/J1U1g85HIeFeuV9iXHtqKiqoSoTqAj1Rjb idMoqYHxE1jLGDP9DOthGbMEi8+gvkkB/cx/HsgkwS181mW4GGcxEE1mBbCR2jW3U0+h EBbw== 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; bh=GuupeKfcO/+rf9Qb6r8f2KQJXgchvtoxnNFe6M9/a1Y=; b=NMveSMhnTKjue/wGat6p05R4wKxeUWz6y10Z7E4Zkh7bjtaODkyvotSVYlqyGPql9U KoA2qTfRSKsfugOVfXMxJUAXUoT2smopY66ddkdbfWvClGzJtTwFp3DuPRBpVgN11/As 0lseu9QSEFDl1Rx4QTTNhgYVGQ+JXbrPe7Um9ww2V3IIK9uQfBApnkVG7N5R3R9isSUS RKjT8K0SuH8A4xr+ykxLX1b9CcH4/u+hZA+RdgcEy/ob0Blj2/t5DJS9HfmkvpT5aSZH JGCEY0eJBUZmhYw7JJLVRl7otsS76R3yOdwsoIDcrz16hh2+iYOkwzci2dw1V95F2Cg1 ugDw== X-Gm-Message-State: AOAM531ZNcAA65hj/GJiXIXTgeMn47/TapNUNsvyp5v+/PEeiwwLsiu5 KhZfXgSzGd02u+t6in4RcUYU8w== X-Google-Smtp-Source: ABdhPJxwp9O9hoZ+3in9xQ4Y1T0r6FX0PptcT7wQM++3JiwL83ORl7DTznIAAiqeYXT/IUV9yd/l7A== X-Received: by 2002:a1c:bdc4:: with SMTP id n187mr29267185wmf.109.1600683674831; Mon, 21 Sep 2020 03:21:14 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.21.13 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:21:14 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 45/49] staging: media: zoran: fix use of buffer_size and sizeimage Date: Mon, 21 Sep 2020 10:20:20 +0000 Message-Id: <1600683624-5863-46-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org buffer_size was not set when it should be. Furthermore, use it instead of recalculate it. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran_card.c | 2 ++ drivers/staging/media/zoran/zoran_driver.c | 9 ++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/staging/media/zoran/zoran_card.c b/drivers/staging/media/zoran/zoran_card.c index 3bfeb1e00563..e4688891d307 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -852,6 +852,8 @@ void zoran_open_init_params(struct zoran *zr) if (i) pci_err(zr->pci_dev, "%s internal error\n", __func__); + zr->buffer_size = zr->v4l_settings.bytesperline * zr->v4l_settings.height; + clear_interrupt_counters(zr); } diff --git a/drivers/staging/media/zoran/zoran_driver.c b/drivers/staging/media/zoran/zoran_driver.c index 46bf8b32d57a..47f397ff190f 100644 --- a/drivers/staging/media/zoran/zoran_driver.c +++ b/drivers/staging/media/zoran/zoran_driver.c @@ -407,6 +407,8 @@ static int zoran_v4l_set_format(struct zoran *zr, int width, int height, bpp = (format->depth + 7) / 8; + zr->buffer_size = height * width * bpp; + /* Check against available buffer size */ if (height * width * bpp > zr->buffer_size) { pci_err(zr->pci_dev, "%s - video buffer size (%d kB) is too small\n", @@ -1090,7 +1092,7 @@ static int zoran_g_fmt_vid_out(struct file *file, void *__fh, struct v4l2_format fmt->fmt.pix.width = zr->jpg_settings.img_width / zr->jpg_settings.HorDcm; fmt->fmt.pix.height = zr->jpg_settings.img_height * 2 / (zr->jpg_settings.VerDcm * zr->jpg_settings.TmpDcm); - fmt->fmt.pix.sizeimage = zoran_v4l2_calc_bufsize(&zr->jpg_settings); + fmt->fmt.pix.sizeimage = zr->buffer_size; fmt->fmt.pix.pixelformat = V4L2_PIX_FMT_MJPEG; if (zr->jpg_settings.TmpDcm == 1) fmt->fmt.pix.field = (zr->jpg_settings.odd_even ? @@ -1114,7 +1116,7 @@ static int zoran_g_fmt_vid_cap(struct file *file, void *__fh, struct v4l2_format fmt->fmt.pix.width = zr->v4l_settings.width; fmt->fmt.pix.height = zr->v4l_settings.height; - fmt->fmt.pix.sizeimage = zr->v4l_settings.bytesperline * zr->v4l_settings.height; + fmt->fmt.pix.sizeimage = zr->buffer_size; fmt->fmt.pix.pixelformat = zr->v4l_settings.format->fourcc; fmt->fmt.pix.colorspace = zr->v4l_settings.format->colorspace; fmt->fmt.pix.bytesperline = zr->v4l_settings.bytesperline; @@ -1183,6 +1185,7 @@ static int zoran_try_fmt_vid_out(struct file *file, void *__fh, V4L2_FIELD_TOP : V4L2_FIELD_BOTTOM); fmt->fmt.pix.sizeimage = zoran_v4l2_calc_bufsize(&settings); + zr->buffer_size = fmt->fmt.pix.sizeimage; fmt->fmt.pix.bytesperline = 0; fmt->fmt.pix.colorspace = V4L2_COLORSPACE_SMPTE170M; return res; @@ -1337,7 +1340,7 @@ static int zoran_s_fmt_vid_cap(struct file *file, void *__fh, struct v4l2_format /* tell the user the results/missing stuff */ fmt->fmt.pix.bytesperline = zr->v4l_settings.bytesperline; - fmt->fmt.pix.sizeimage = zr->v4l_settings.height * zr->v4l_settings.bytesperline; + fmt->fmt.pix.sizeimage = zr->buffer_size; fmt->fmt.pix.colorspace = zr->v4l_settings.format->colorspace; if (BUZ_MAX_HEIGHT < (zr->v4l_settings.height * 2)) fmt->fmt.pix.field = V4L2_FIELD_INTERLACED; From patchwork Mon Sep 21 10:20:21 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789069 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 45BD259D for ; Mon, 21 Sep 2020 10:21:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2C0862193E for ; Mon, 21 Sep 2020 10:21:38 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="kkgqvr4w" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727026AbgIUKVS (ORCPT ); Mon, 21 Sep 2020 06:21:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59242 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727022AbgIUKVR (ORCPT ); Mon, 21 Sep 2020 06:21:17 -0400 Received: from mail-wr1-x443.google.com (mail-wr1-x443.google.com [IPv6:2a00:1450:4864:20::443]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 15F47C061755 for ; Mon, 21 Sep 2020 03:21:17 -0700 (PDT) Received: by mail-wr1-x443.google.com with SMTP id w5so12118727wrp.8 for ; Mon, 21 Sep 2020 03:21:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=pJYZMlRu+8oQA/EIZAQFePFUOgqonaLTxBSJ9QI8wUU=; b=kkgqvr4wSg1oA/tAod4PBJeP+Sa5+sT0bCecTAqpNi2QvT5/ftglSujMJ/OijhuAVh NweHDQRZ+0eqxK5Xul9Xk23FBkH8wriuqXCWtud0RKmUsw6w9qjSNl7Cm1S78syECJcR nU9VenHt/Yr1Vm9D65mXdsJzZf4dVjIjFC26q7m6nv1pN3gpSLcnpnPhAdIYCq2lMdHt Ow0RVD2OUUhJaGD7Q4osvdVKkPZ+5SURUlnZmS/6tohRNWKcfJXC0Fh4nFtlE4tKlfiY k+JSJwXo8CoXWDwUGtg4XKHmukpgv+K4lAhiMQESnU5o1zxLEJNMPpIbZq5fhUAN1EhP twEg== 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; bh=pJYZMlRu+8oQA/EIZAQFePFUOgqonaLTxBSJ9QI8wUU=; b=gIMr45pR7asPw7Uy8aQSBgOs+GtyQruDBAhbVZedBHg/RFPtiKt50j+oy+19HAqhwW A6Np0M3E1aeCMof865DWGhYBc4iZeZ3MUQlsONdVK5kyPWTAHeYk6bXd2OgXKsCrWzO+ 3mkz+3CRbdHkuOIxgASI4OIvt4odHCWFgxzY0+mh8xbcDN5s7bgxoj+O+upybb8nL8Am iFopJTfUvE0c/g9MI05imK10SLmKgzohk7zraQa3UGY/8VHyyQdK9kOSWE7xYrmocQ4p QMka4RmaE1YdmfewcQpmn95Mg1iS2lhZPHhEfO+CFYjABN6d5WYumrkL/Ue+e9T1JlPR 0edA== X-Gm-Message-State: AOAM532xM6vIODlIirxw6zmAA3sVrkYtfRU99PLO2reBHVnQVsvqDpYv ZnWooGF9UhSzG0FXJMitZXtHjg== X-Google-Smtp-Source: ABdhPJz16X1uCIJdhDJDadI4Sw0QdewJNAkUb4ZoiDOllk9GkQZ8DXmQGWKncpp4djpXEc//OafjiQ== X-Received: by 2002:a5d:56cd:: with SMTP id m13mr50725470wrw.261.1600683675812; Mon, 21 Sep 2020 03:21:15 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.21.14 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:21:15 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 46/49] staging: media: zoran: fix some compliance test Date: Mon, 21 Sep 2020 10:20:21 +0000 Message-Id: <1600683624-5863-47-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Add TODO for "TRY_FMT cannot handle an invalid pixelformat" We need to set pixelformat in some case. We should also handle some minimum requirement. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran_driver.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/staging/media/zoran/zoran_driver.c b/drivers/staging/media/zoran/zoran_driver.c index 47f397ff190f..4299578c9bb5 100644 --- a/drivers/staging/media/zoran/zoran_driver.c +++ b/drivers/staging/media/zoran/zoran_driver.c @@ -1206,9 +1206,12 @@ static int zoran_try_fmt_vid_cap(struct file *file, void *__fh, if (zoran_formats[i].fourcc == fmt->fmt.pix.pixelformat) break; - if (i == NUM_FORMATS) + if (i == NUM_FORMATS) { + /* TODO do not return here to fix the TRY_FMT cannot handle an invalid pixelformat*/ return -EINVAL; + } + fmt->fmt.pix.pixelformat = zoran_formats[i].fourcc; fmt->fmt.pix.colorspace = zoran_formats[i].colorspace; if (BUZ_MAX_HEIGHT < (fmt->fmt.pix.height * 2)) fmt->fmt.pix.field = V4L2_FIELD_INTERLACED; @@ -1318,6 +1321,7 @@ static int zoran_s_fmt_vid_cap(struct file *file, void *__fh, struct v4l2_format if (i == NUM_FORMATS) { pci_err(zr->pci_dev, "VIDIOC_S_FMT - unknown/unsupported format 0x%x\n", fmt->fmt.pix.pixelformat); + /* TODO do not return here to fix the TRY_FMT cannot handle an invalid pixelformat*/ return -EINVAL; } @@ -1327,10 +1331,16 @@ static int zoran_s_fmt_vid_cap(struct file *file, void *__fh, struct v4l2_format res = -EBUSY; return res; } + + fmt->fmt.pix.pixelformat = zoran_formats[i].fourcc; if (fmt->fmt.pix.height > BUZ_MAX_HEIGHT) fmt->fmt.pix.height = BUZ_MAX_HEIGHT; if (fmt->fmt.pix.width > BUZ_MAX_WIDTH) fmt->fmt.pix.width = BUZ_MAX_WIDTH; + if (fmt->fmt.pix.height < BUZ_MIN_HEIGHT) + fmt->fmt.pix.height = BUZ_MIN_HEIGHT; + if (fmt->fmt.pix.width < BUZ_MIN_WIDTH) + fmt->fmt.pix.width = BUZ_MIN_WIDTH; map_mode_raw(fh); From patchwork Mon Sep 21 10:20:22 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789073 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id BD3866CA for ; Mon, 21 Sep 2020 10:21:39 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A47CB207BC for ; Mon, 21 Sep 2020 10:21:39 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="WzyPNmX2" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726573AbgIUKVj (ORCPT ); Mon, 21 Sep 2020 06:21:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59248 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727029AbgIUKVS (ORCPT ); Mon, 21 Sep 2020 06:21:18 -0400 Received: from mail-wr1-x442.google.com (mail-wr1-x442.google.com [IPv6:2a00:1450:4864:20::442]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EC50AC0613CF for ; Mon, 21 Sep 2020 03:21:17 -0700 (PDT) Received: by mail-wr1-x442.google.com with SMTP id a17so12111839wrn.6 for ; Mon, 21 Sep 2020 03:21:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=RIxqrjQzxmUx/C1l9QN0BxpXdxp1TQXVDUqwtk+yQg0=; b=WzyPNmX2N6lGDLueSv/Dd9pbNEM61dj6yDxgkEftcUB5YxQdfw9BUboU1XrvPU/VEB mXN19NlYobOb2LCgz4qd8ogID8bM2Gp+jssDpbM3tlEPXKJGz5vowuIJ9eO4eaNpCIuo Be8vh2fcJchmuhEE5/i47NGAeTVMdz35h01BEFAetiQ4Md4CUJGq9EK2iEpb74p1xe15 RnTRTrjCxdbF/X3Hbu7DHW41FE1BfO11hjd+Bz6SyDs1rU3gW2wcDT/ww42Sl4xxhveB WRQzA08eozi665ypWwfQRQK1uRJLmVu2HxCRpjpSFNZ1IiiafkgWsjld1X7gU+jwj2dW MVYA== 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; bh=RIxqrjQzxmUx/C1l9QN0BxpXdxp1TQXVDUqwtk+yQg0=; b=AqswTBYtqRIhnE3BZTvEHiyakKfdnrCxNYmjncp0vfTgbhv8/OiaN5aIcEYHZp/zqW pN5IUCWpiXE2LIGN3PvRkrnTYg/JyqmMvyfl7x1Ef/7n+AdWPQtjEiLxRxueEVXa8QkK HyQcEKgJT0a0LHggqrsO/bm8UnMhPOVf/C1f458ojYJq8qSHfQTfEi0Pq+Bas9rWLyEo znCGNDSba7tcEB+SHLdLwrUJDuP48xg12K1h6dZxrOOFQasewlO2Dj03eABChvkqil+e TWHEL1b685nxS7fF9h6DUEEqpAtYiSx0rRNaETMRoClgtFzhWZ1wcW+o4JZLoIVrbDYX OD8Q== X-Gm-Message-State: AOAM532fIajbmWNpwWggKsWycx3lRVAgW4bzickgzSCrNDa93hl0d+EW Z143iE1MUp/mpQbNVmdJGfkjLQ== X-Google-Smtp-Source: ABdhPJyvum4Tk1XTQ5wzxOPoCoiJUJN8cULOoE6NPn8uIjvz4mHVGpfVrzTq26Dandr2et7c0pUeOg== X-Received: by 2002:adf:f586:: with SMTP id f6mr51499931wro.299.1600683676695; Mon, 21 Sep 2020 03:21:16 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.21.15 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:21:16 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 47/49] staging: media: zoran: remove deprecated .vidioc_g_jpegcomp Date: Mon, 21 Sep 2020 10:20:22 +0000 Message-Id: <1600683624-5863-48-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org This patchs removed the deprecated .vidioc_g_jpegcomp and replace it with corresponding v4l2_ctrl_ops code. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran_card.c | 22 ++++++++++ drivers/staging/media/zoran/zoran_driver.c | 48 ---------------------- 2 files changed, 22 insertions(+), 48 deletions(-) diff --git a/drivers/staging/media/zoran/zoran_card.c b/drivers/staging/media/zoran/zoran_card.c index e4688891d307..ca998f0000c2 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -1056,6 +1056,25 @@ static void zoran_subdev_notify(struct v4l2_subdev *sd, unsigned int cmd, void * GPIO(zr, 7, 1); } +static int zoran_video_set_ctrl(struct v4l2_ctrl *ctrl) +{ + struct zoran *zr = container_of(ctrl->handler, struct zoran, hdl); + + switch (ctrl->id) { + case V4L2_CID_JPEG_COMPRESSION_QUALITY: + zr->jpg_settings.jpg_comp.quality = ctrl->val; + return zoran_check_jpg_settings(zr, &zr->jpg_settings, 0); + default: + return -EINVAL; + } + + return 0; +} + +static const struct v4l2_ctrl_ops zoran_video_ctrl_ops = { + .s_ctrl = zoran_video_set_ctrl, +}; + /* * Scan for a Buz card (actually for the PCI controller ZR36057), * request the irq and map the io memory @@ -1096,6 +1115,9 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) if (v4l2_ctrl_handler_init(&zr->hdl, 10)) goto zr_unreg; zr->v4l2_dev.ctrl_handler = &zr->hdl; + v4l2_ctrl_new_std(&zr->hdl, &zoran_video_ctrl_ops, + V4L2_CID_JPEG_COMPRESSION_QUALITY, 0, + 100, 1, 50); spin_lock_init(&zr->spinlock); mutex_init(&zr->lock); if (pci_enable_device(pdev)) diff --git a/drivers/staging/media/zoran/zoran_driver.c b/drivers/staging/media/zoran/zoran_driver.c index 4299578c9bb5..8c23bb4f6b71 100644 --- a/drivers/staging/media/zoran/zoran_driver.c +++ b/drivers/staging/media/zoran/zoran_driver.c @@ -1833,52 +1833,6 @@ static int zoran_s_selection(struct file *file, void *__fh, struct v4l2_selectio return res; } -static int zoran_g_jpegcomp(struct file *file, void *__fh, struct v4l2_jpegcompression *params) -{ - struct zoran *zr = video_drvdata(file); - - memset(params, 0, sizeof(*params)); - - params->quality = zr->jpg_settings.jpg_comp.quality; - params->APPn = zr->jpg_settings.jpg_comp.APPn; - memcpy(params->APP_data, zr->jpg_settings.jpg_comp.APP_data, - zr->jpg_settings.jpg_comp.APP_len); - params->APP_len = zr->jpg_settings.jpg_comp.APP_len; - memcpy(params->COM_data, zr->jpg_settings.jpg_comp.COM_data, - zr->jpg_settings.jpg_comp.COM_len); - params->COM_len = zr->jpg_settings.jpg_comp.COM_len; - params->jpeg_markers = zr->jpg_settings.jpg_comp.jpeg_markers; - - return 0; -} - -static int zoran_s_jpegcomp(struct file *file, void *__fh, - const struct v4l2_jpegcompression *params) -{ - struct zoran_fh *fh = __fh; - struct zoran *zr = fh->zr; - int res = 0; - struct zoran_jpg_settings settings; - - settings = zr->jpg_settings; - - settings.jpg_comp = *params; - - if (fh->buffers.active != ZORAN_FREE) { - pci_warn(zr->pci_dev, "VIDIOC_S_JPEGCOMP called while in playback/capture mode\n"); - res = -EBUSY; - return res; - } - - res = zoran_check_jpg_settings(zr, &settings, 0); - if (res) - return res; - if (!fh->buffers.allocated) - zr->buffer_size = zoran_v4l2_calc_bufsize(&zr->jpg_settings); - zr->jpg_settings.jpg_comp = settings.jpg_comp; - return res; -} - static __poll_t zoran_poll(struct file *file, poll_table *wait) { struct zoran_fh *fh = file->private_data; @@ -2159,8 +2113,6 @@ static const struct v4l2_ioctl_ops zoran_ioctl_ops = { .vidioc_s_output = zoran_s_output,*/ .vidioc_g_std = zoran_g_std, .vidioc_s_std = zoran_s_std, - .vidioc_g_jpegcomp = zoran_g_jpegcomp, - .vidioc_s_jpegcomp = zoran_s_jpegcomp, .vidioc_reqbufs = zoran_reqbufs, .vidioc_querybuf = zoran_querybuf, .vidioc_qbuf = zoran_qbuf, From patchwork Mon Sep 21 10:20:23 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789067 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 6F52559D for ; Mon, 21 Sep 2020 10:21:35 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 349FF20EDD for ; Mon, 21 Sep 2020 10:21:35 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="Wk9BZ5Px" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727028AbgIUKV0 (ORCPT ); Mon, 21 Sep 2020 06:21:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59260 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727037AbgIUKVU (ORCPT ); Mon, 21 Sep 2020 06:21:20 -0400 Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com [IPv6:2a00:1450:4864:20::441]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B0EB5C061755 for ; Mon, 21 Sep 2020 03:21:19 -0700 (PDT) Received: by mail-wr1-x441.google.com with SMTP id j2so12127466wrx.7 for ; Mon, 21 Sep 2020 03:21:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=nfSbga+vAU0kYeCKYqq+VB/e/rXfL1l81Z9vsntVsiY=; b=Wk9BZ5Px9tQsqRYsbQniiT5U6/060Xdtu/okYHCqctemgXBKjGM7jMk8wXTUXRnrCW OeC+obThRy/JXRZKQnohj/Tn2V/4vQ15GWdA8yWlcHyVzQgxIK0KjPWqu+4AZCOQ393E JYWwvURkcIsughrix3/GJmJpDhEEtsHZlNkvu2uv5JAFSgCQiykHv1+fS+rDmPlxXGva sZMvLAc3Lkl0VtuOs0ufvvhF0egjK32J8CsfWikpWWALrjsWY0rGe/38Sl/w7QKytFoM b/YdYiCm/sKeP5Y9FDUMmOr73XBalvUfcMt7UUr9DR+NlWuoBQfX7l5+6nOCEbo0++Ix bK3Q== 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; bh=nfSbga+vAU0kYeCKYqq+VB/e/rXfL1l81Z9vsntVsiY=; b=FKgr4oih5xUa7ppu5fXN66I+X6+/jN/RkJAWmzlu3BVdCJ1DhNextmaQnVuyiuJQZD /Ngh6+GjqmVCpiYdTc8/98JMsK8su8gaCN+m05XlH0/sofzmHfp+RXiytuPxLJCe2EOq UmqGwzb+7bjG1oyeMMrZWTQGImDBmUR4QVEw6Uabphi0c/68JU9NV0bxChjM/DPswbbX HsZ4nPu09ah99GAQgxwF7DT0JMJTOlytUd9irdOin+7/ymDWHVo9jG05oTL5MdiSWmmk SCcHz0OLOPs5CdQ7P38Zpm2ri5ztxMm7+j1a9pIo5MmXuGq+cXAt12MyHu6bZPZVdJNX Vy3A== X-Gm-Message-State: AOAM531DlQSK2NZr9B4P+TBt4WZSM931BNuZsHr+TsHu3IjfQAdPTgCm ziZNnRR1RZVRvTd8HczLKizyQw== X-Google-Smtp-Source: ABdhPJwFraKIV91Qlldqlh3NSxFpmXJqIY+E08b9GRHPud3pL8rF808MRfdDEItFpEmWMwPqbvJ73g== X-Received: by 2002:adf:9405:: with SMTP id 5mr28244604wrq.51.1600683677862; Mon, 21 Sep 2020 03:21:17 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.21.16 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:21:17 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 48/49] staging: media: zoran: convert to vb2 Date: Mon, 21 Sep 2020 10:20:23 +0000 Message-Id: <1600683624-5863-49-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org This is it! the ultimate last step, the vb2 conversion. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/Kconfig | 2 +- drivers/staging/media/zoran/zoran.h | 83 +- drivers/staging/media/zoran/zoran_card.c | 45 +- drivers/staging/media/zoran/zoran_device.c | 488 ++----- drivers/staging/media/zoran/zoran_driver.c | 1453 +------------------- 5 files changed, 137 insertions(+), 1934 deletions(-) diff --git a/drivers/staging/media/zoran/Kconfig b/drivers/staging/media/zoran/Kconfig index ddf38a931c01..492507030276 100644 --- a/drivers/staging/media/zoran/Kconfig +++ b/drivers/staging/media/zoran/Kconfig @@ -1,6 +1,6 @@ config VIDEO_ZORAN tristate "Zoran ZR36057/36067 Video For Linux (Deprecated)" - depends on PCI && I2C_ALGOBIT && VIDEO_V4L2 && VIRT_TO_BUS + depends on PCI && I2C_ALGOBIT && VIDEO_V4L2 depends on !ALPHA select VIDEOBUF2_DMA_CONTIG help diff --git a/drivers/staging/media/zoran/zoran.h b/drivers/staging/media/zoran/zoran.h index fd27d1968e60..372fadfd9a01 100644 --- a/drivers/staging/media/zoran/zoran.h +++ b/drivers/staging/media/zoran/zoran.h @@ -20,7 +20,6 @@ #include #include -#include #include #include #include @@ -29,13 +28,6 @@ #define ZR_NORM_NTSC 1 #define ZR_NORM_SECAM 2 -struct zoran_sync { - unsigned long frame; /* number of buffer that has been free'd */ - unsigned long length; /* number of code bytes in buffer (capture only) */ - unsigned long seq; /* frame sequence number */ - u64 ts; /* timestamp */ -}; - struct zr_buffer { /* common v4l buffer stuff -- must be first */ struct vb2_v4l2_buffer vbuf; @@ -111,18 +103,10 @@ enum zoran_codec_mode { BUZ_MODE_STILL_DECOMPRESS /* still frame conversion */ }; -enum zoran_buffer_state { - BUZ_STATE_USER, /* buffer is owned by application */ - BUZ_STATE_PEND, /* buffer is queued in pend[] ready to feed to I/O */ - BUZ_STATE_DMA, /* buffer is queued in dma[] for I/O */ - BUZ_STATE_DONE /* buffer is ready to return to application */ -}; - enum zoran_map_mode { ZORAN_MAP_MODE_NONE, ZORAN_MAP_MODE_RAW, ZORAN_MAP_MODE_JPG_REC, -#define ZORAN_MAP_MODE_JPG ZORAN_MAP_MODE_JPG_REC ZORAN_MAP_MODE_JPG_PLAY, }; @@ -174,45 +158,6 @@ struct zoran_jpg_settings { struct v4l2_jpegcompression jpg_comp; /* JPEG-specific capture settings */ }; -struct zoran_fh; - -struct zoran_mapping { - struct zoran_fh *fh; - atomic_t count; -}; - -struct zoran_buffer { - struct zoran_mapping *map; - enum zoran_buffer_state state; /* state: unused/pending/dma/done */ - struct zoran_sync bs; /* DONE: info to return to application */ - union { - struct { - __le32 *frag_tab; /* addresses of frag table */ - u32 frag_tab_bus; /* same value cached to save time in ISR */ - } jpg; - struct { - char *fbuffer; /* virtual address of frame buffer */ - unsigned long fbuffer_phys;/* physical address of frame buffer */ - unsigned long fbuffer_bus;/* bus address of frame buffer */ - } v4l; - }; -}; - -enum zoran_lock_activity { - ZORAN_FREE, /* free for use */ - ZORAN_ACTIVE, /* active but unlocked */ - ZORAN_LOCKED, /* locked */ -}; - -/* buffer collections */ -struct zoran_buffer_col { - enum zoran_lock_activity active; /* feature currently in use? */ - unsigned int num_buffers; - struct zoran_buffer buffer[MAX_FRAME]; /* buffers */ - u8 allocated; /* Flag if buffers are allocated */ - u8 need_contiguous; /* Flag if contiguous buffers are needed */ - /* only applies to jpg buffers, raw buffers are always contiguous */ -}; struct zoran; @@ -220,10 +165,6 @@ struct zoran; struct zoran_fh { struct v4l2_fh fh; struct zoran *zr; - - enum zoran_map_mode map_mode; /* Flag which bufferset will map by next mmap() */ - - struct zoran_buffer_col buffers; /* buffers' info */ }; struct card_info { @@ -281,7 +222,6 @@ struct zoran { struct mutex lock; /* file ops serialize lock */ u8 initialized; /* flag if zoran has been correctly initialized */ - int user; /* number of current users */ struct card_info card; const struct tvnorm *timing; @@ -300,28 +240,12 @@ struct zoran { /* Current buffer params */ unsigned int buffer_size; - wait_queue_head_t v4l_capq; - - int v4l_memgrab_active; /* Memory grab is activated */ - - int v4l_grab_frame; /* Frame number being currently grabbed */ -#define NO_GRAB_ACTIVE (-1) - unsigned long v4l_grab_seq; /* Number of frames grabbed */ struct zoran_v4l_settings v4l_settings; /* structure with a lot of things to play with */ - /* V4L grab queue of frames pending */ - unsigned long v4l_pend_head; - unsigned long v4l_pend_tail; - unsigned long v4l_sync_tail; - int v4l_pend[V4L_MAX_FRAME]; - struct zoran_buffer_col v4l_buffers; /* V4L buffers' info */ - /* Buz MJPEG parameters */ enum zoran_codec_mode codec_mode; /* status of codec */ struct zoran_jpg_settings jpg_settings; /* structure with a lot of things to play with */ - wait_queue_head_t jpg_capq; /* wait here for grab to finish */ - /* grab queue counts/indices, mask with BUZ_MASK_STAT_COM before using as index */ /* (dma_head - dma_tail) is number active in DMA, must be <= BUZ_NUM_STAT_COM */ /* (value & BUZ_MASK_STAT_COM) corresponds to index in stat_com table */ @@ -338,13 +262,8 @@ struct zoran { /* zr36057's code buffer table */ __le32 *stat_com; /* stat_com[i] is indexed by dma_head/tail & BUZ_MASK_STAT_COM */ - /* (value & BUZ_MASK_FRAME) corresponds to index in pend[] queue */ - int jpg_pend[BUZ_MAX_FRAME]; - - /* array indexed by frame number */ - struct zoran_buffer_col jpg_buffers; /* MJPEG buffers' info */ - /* Additional stuff for testing */ + unsigned int ghost_int; int jpeg_error; int intr_counter_GIRQ1; int intr_counter_GIRQ0; diff --git a/drivers/staging/media/zoran/zoran_card.c b/drivers/staging/media/zoran/zoran_card.c index ca998f0000c2..302034ec98f1 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -10,25 +10,17 @@ */ #include - -#include #include #include -#include -#include #include #include #include #include #include -#include -#include -#include #include #include -#include #include #include #include @@ -812,29 +804,12 @@ void zoran_open_init_params(struct zoran *zr) { int i; - zr->v4l_memgrab_active = 0; - zr->v4l_grab_frame = NO_GRAB_ACTIVE; - zr->v4l_grab_seq = 0; zr->v4l_settings.width = 192; zr->v4l_settings.height = 144; zr->v4l_settings.format = &zoran_formats[7]; /* YUY2 - YUV-4:2:2 packed */ - zr->v4l_settings.bytesperline = - zr->v4l_settings.width * - ((zr->v4l_settings.format->depth + 7) / 8); - - /* DMA ring stuff for V4L */ - zr->v4l_pend_tail = 0; - zr->v4l_pend_head = 0; - zr->v4l_sync_tail = 0; - zr->v4l_buffers.active = ZORAN_FREE; - for (i = 0; i < VIDEO_MAX_FRAME; i++) - zr->v4l_buffers.buffer[i].state = BUZ_STATE_USER; /* nothing going on */ - zr->v4l_buffers.allocated = 0; - - for (i = 0; i < BUZ_MAX_FRAME; i++) - zr->jpg_buffers.buffer[i].state = BUZ_STATE_USER; /* nothing going on */ - zr->jpg_buffers.active = ZORAN_FREE; - zr->jpg_buffers.allocated = 0; + zr->v4l_settings.bytesperline = zr->v4l_settings.width * + ((zr->v4l_settings.format->depth + 7) / 8); + /* Set necessary params and call zoran_check_jpg_settings to set the defaults */ zr->jpg_settings.decimation = 1; zr->jpg_settings.jpg_comp.quality = 50; /* default compression factor 8 */ @@ -863,14 +838,6 @@ static int zr36057_init(struct zoran *zr) pci_info(zr->pci_dev, "initializing card[%d]\n", zr->id); - /* default setup of all parameters which will persist between opens */ - zr->user = 0; - - init_waitqueue_head(&zr->v4l_capq); - init_waitqueue_head(&zr->jpg_capq); - zr->jpg_buffers.allocated = 0; - zr->v4l_buffers.allocated = 0; - /* Avoid nonsense settings from user for default input/norm */ if (default_norm < 0 || default_norm > 2) default_norm = 0; @@ -942,8 +909,6 @@ static int zr36057_init(struct zoran *zr) video_set_drvdata(zr->video_dev, zr); zoran_init_hardware(zr); - if (zr36067_debug > 2) - detect_guest_activity(zr); if (!pass_through) { decoder_call(zr, video, s_stream, 0); encoder_call(zr, video, s_routing, 2, 0, 0); @@ -1266,10 +1231,8 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) } /* take care of Natoma chipset and a revision 1 zr36057 */ - if ((pci_pci_problems & PCIPCI_NATOMA) && zr->revision <= 1) { - zr->jpg_buffers.need_contiguous = 1; + if ((pci_pci_problems & PCIPCI_NATOMA) && zr->revision <= 1) pci_info(zr->pci_dev, "ZR36057/Natoma bug, max. buffer size is 128K\n"); - } if (zr36057_init(zr) < 0) goto zr_detach_vfe; diff --git a/drivers/staging/media/zoran/zoran_device.c b/drivers/staging/media/zoran/zoran_device.c index ae4abf8ffa36..834f536a9f84 100644 --- a/drivers/staging/media/zoran/zoran_device.c +++ b/drivers/staging/media/zoran/zoran_device.c @@ -12,9 +12,6 @@ #include #include #include -#include -#include -#include #include #include @@ -22,13 +19,12 @@ #include #include #include -#include #include #include #include +#include -#include #include #include "videocodec.h" @@ -54,6 +50,7 @@ static bool lml33dpath; /* default = 0 module_param(lml33dpath, bool, 0644); MODULE_PARM_DESC(lml33dpath, "Use digital path capture mode (on LML33 cards)"); +int zr_set_buf(struct zoran *zr); /* * initialize video front end */ @@ -114,6 +111,7 @@ int post_office_wait(struct zoran *zr) // while (((por = btread(ZR36057_POR)) & (ZR36057_POR_POPen | ZR36057_POR_POTime)) == ZR36057_POR_POPen) { while ((por = btread(ZR36057_POR)) & ZR36057_POR_POPen) { /* wait for something to happen */ + /* TODO add timeout */ } if ((por & ZR36057_POR_POTime) && !zr->card.gws_not_connected) { /* In LML33/BUZ \GWS line is not connected, so it has always timeout set */ @@ -424,42 +422,16 @@ void zr36057_set_memgrab(struct zoran *zr, int mode) zr36057_set_vfe(zr, zr->v4l_settings.width, zr->v4l_settings.height, zr->v4l_settings.format); - - zr->v4l_memgrab_active = 1; } else { /* switch off VSync interrupts */ btand(~zr->card.vsync_int, ZR36057_ICR); // SW - zr->v4l_memgrab_active = 0; - zr->v4l_grab_frame = NO_GRAB_ACTIVE; - /* re-enable grabbing to screen if it was running */ btand(~ZR36057_VDCR_VidEn, ZR36057_VDCR); btand(~ZR36057_VSSFGR_SnapShot, ZR36057_VSSFGR); } } -int wait_grab_pending(struct zoran *zr) -{ - unsigned long flags; - - /* wait until all pending grabs are finished */ - - if (!zr->v4l_memgrab_active) - return 0; - - wait_event_interruptible(zr->v4l_capq, - (zr->v4l_pend_tail == zr->v4l_pend_head)); - if (signal_pending(current)) - return -ERESTARTSYS; - - spin_lock_irqsave(&zr->spinlock, flags); - zr36057_set_memgrab(zr, 0); - spin_unlock_irqrestore(&zr->spinlock, flags); - - return 0; -} - /***************************************************************************** * * * Set up the Buz-specific MJPEG part * @@ -503,9 +475,6 @@ static void init_jpeg_queue(struct zoran *zr) zr->jpg_err_seq = 0; zr->jpg_err_shift = 0; zr->jpg_queued_num = 0; - for (i = 0; i < zr->jpg_buffers.num_buffers; i++) - zr->jpg_buffers.buffer[i].state = BUZ_STATE_USER; /* nothing going on */ - for (i = 0; i < BUZ_NUM_STAT_COM; i++) zr->stat_com[i] = cpu_to_le32(1); /* mark as unavailable to zr36057 */ } @@ -607,50 +576,6 @@ static void zr36057_set_jpg(struct zoran *zr, enum zoran_codec_mode mode) zr36057_adjust_vfe(zr, mode); } -void print_interrupts(struct zoran *zr) -{ - int res, noerr = 0; - - pr_info("%s: interrupts received:", ZR_DEVNAME(zr)); - res = zr->field_counter; - if (res < -1 || res > 1) - printk(KERN_CONT " FD:%d", res); - res = zr->intr_counter_GIRQ1; - if (res != 0) { - printk(KERN_CONT " GIRQ1:%d", res); - noerr++; - } - res = zr->intr_counter_GIRQ0; - if (res != 0) { - printk(KERN_CONT " GIRQ0:%d", res); - noerr++; - } - res = zr->intr_counter_CodRepIRQ; - if (res != 0) { - printk(KERN_CONT " CodRepIRQ:%d", res); - noerr++; - } - res = zr->intr_counter_JPEGRepIRQ; - if (res != 0) { - printk(KERN_CONT " JPEGRepIRQ:%d", res); - noerr++; - } - if (zr->JPEG_max_missed) { - printk(KERN_CONT " JPEG delays: max=%d min=%d", zr->JPEG_max_missed, - zr->JPEG_min_missed); - } - if (zr->END_event_missed) { - printk(KERN_CONT " ENDs missed: %d", zr->END_event_missed); - } - //if (zr->jpg_queued_num) { - printk(KERN_CONT " queue_state=%ld/%ld/%ld/%ld", zr->jpg_que_tail, - zr->jpg_dma_tail, zr->jpg_dma_head, zr->jpg_que_head); - //} - if (!noerr) - printk(KERN_CONT ": no interrupts detected."); - printk(KERN_CONT "\n"); -} - void clear_interrupt_counters(struct zoran *zr) { zr->intr_counter_GIRQ1 = 0; @@ -864,33 +789,57 @@ void zoran_feed_stat_com(struct zoran *zr) { /* move frames from pending queue to DMA */ - int frame, i, max_stat_com; + int i, max_stat_com; + struct zr_buffer *buf; + struct vb2_v4l2_buffer *vbuf; + dma_addr_t phys_addr = 0; + unsigned long flags; + unsigned long payload; max_stat_com = (zr->jpg_settings.TmpDcm == 1) ? BUZ_NUM_STAT_COM : (BUZ_NUM_STAT_COM >> 1); - while ((zr->jpg_dma_head - zr->jpg_dma_tail) < max_stat_com && - zr->jpg_dma_head < zr->jpg_que_head) { - frame = zr->jpg_pend[zr->jpg_dma_head & BUZ_MASK_FRAME]; + spin_lock_irqsave(&zr->queued_bufs_lock, flags); + while ((zr->jpg_dma_head - zr->jpg_dma_tail) < max_stat_com) { + buf = list_first_entry_or_null(&zr->queued_bufs, struct zr_buffer, queue); + if (!buf) { + pci_err(zr->pci_dev, "No buffer available to queue\n"); + spin_unlock_irqrestore(&zr->queued_bufs_lock, flags); + return; + } + list_del(&buf->queue); + zr->buf_in_reserve--; + vbuf = &buf->vbuf; + vbuf->vb2_buf.state = VB2_BUF_STATE_ACTIVE; + phys_addr = vb2_dma_contig_plane_dma_addr(&vbuf->vb2_buf, 0); + payload = vb2_get_plane_payload(&vbuf->vb2_buf, 0); + if (payload == 0) + payload = zr->buffer_size; if (zr->jpg_settings.TmpDcm == 1) { /* fill 1 stat_com entry */ i = (zr->jpg_dma_head - zr->jpg_err_shift) & BUZ_MASK_STAT_COM; if (!(zr->stat_com[i] & cpu_to_le32(1))) break; - zr->stat_com[i] = - cpu_to_le32(zr->jpg_buffers.buffer[frame].jpg.frag_tab_bus); + zr->stat_comb[i * 2] = cpu_to_le32(phys_addr); + zr->stat_comb[i * 2 + 1] = cpu_to_le32((payload >> 1) | 1); + zr->inuse[i] = buf; + zr->stat_com[i] = cpu_to_le32(zr->p_scb + i * 2 * 4); } else { /* fill 2 stat_com entries */ i = ((zr->jpg_dma_head - zr->jpg_err_shift) & 1) * 2; if (!(zr->stat_com[i] & cpu_to_le32(1))) break; - zr->stat_com[i] = - cpu_to_le32(zr->jpg_buffers.buffer[frame].jpg.frag_tab_bus); - zr->stat_com[i + 1] = - cpu_to_le32(zr->jpg_buffers.buffer[frame].jpg.frag_tab_bus); + zr->stat_com[i] = cpu_to_le32(zr->p_scb + i * 2 * 4); + zr->stat_com[i + 1] = cpu_to_le32(zr->p_scb + i * 2 * 4); + + zr->stat_comb[i * 2] = cpu_to_le32(phys_addr); + zr->stat_comb[i * 2 + 1] = cpu_to_le32((payload >> 1) | 1); + + zr->inuse[i] = buf; + zr->inuse[i + 1] = NULL; } - zr->jpg_buffers.buffer[frame].state = BUZ_STATE_DMA; zr->jpg_dma_head++; } + spin_unlock_irqrestore(&zr->queued_bufs_lock, flags); if (zr->codec_mode == BUZ_MODE_MOTION_DECOMPRESS) zr->jpg_queued_num++; } @@ -904,8 +853,10 @@ static void zoran_reap_stat_com(struct zoran *zr) u32 stat_com; unsigned int seq; unsigned int dif; - struct zoran_buffer *buffer; - int frame; + unsigned long flags; + struct zr_buffer *buf; + unsigned int size = 0; + u32 fcnt; /* In motion decompress we don't have a hardware frame counter, * we just count the interrupts here */ @@ -913,347 +864,78 @@ static void zoran_reap_stat_com(struct zoran *zr) if (zr->codec_mode == BUZ_MODE_MOTION_DECOMPRESS) zr->jpg_seq_num++; + spin_lock_irqsave(&zr->queued_bufs_lock, flags); while (zr->jpg_dma_tail < zr->jpg_dma_head) { if (zr->jpg_settings.TmpDcm == 1) - i = (zr->jpg_dma_tail - - zr->jpg_err_shift) & BUZ_MASK_STAT_COM; + i = (zr->jpg_dma_tail - zr->jpg_err_shift) & BUZ_MASK_STAT_COM; else - i = ((zr->jpg_dma_tail - - zr->jpg_err_shift) & 1) * 2 + 1; + i = ((zr->jpg_dma_tail - zr->jpg_err_shift) & 1) * 2 + 1; stat_com = le32_to_cpu(zr->stat_com[i]); - - if ((stat_com & 1) == 0) + if ((stat_com & 1) == 0) { + spin_unlock_irqrestore(&zr->queued_bufs_lock, flags); return; + } + + fcnt = (stat_com & GENMASK(31, 24)) >> 24; + size = (stat_com & GENMASK(22, 1)) >> 1; - frame = zr->jpg_pend[zr->jpg_dma_tail & BUZ_MASK_FRAME]; - buffer = &zr->jpg_buffers.buffer[frame]; - buffer->bs.ts = ktime_get_ns(); + buf = zr->inuse[i]; + buf->vbuf.vb2_buf.timestamp = ktime_get_ns(); if (zr->codec_mode == BUZ_MODE_MOTION_COMPRESS) { - buffer->bs.length = (stat_com & 0x7fffff) >> 1; + vb2_set_plane_payload(&buf->vbuf.vb2_buf, 0, size); /* update sequence number with the help of the counter in stat_com */ - - seq = ((stat_com >> 24) + zr->jpg_err_seq) & 0xff; + seq = (fcnt + zr->jpg_err_seq) & 0xff; dif = (seq - zr->jpg_seq_num) & 0xff; zr->jpg_seq_num += dif; - } else { - buffer->bs.length = 0; } - buffer->bs.seq = - zr->jpg_settings.TmpDcm == + buf->vbuf.sequence = zr->jpg_settings.TmpDcm == 2 ? (zr->jpg_seq_num >> 1) : zr->jpg_seq_num; - buffer->state = BUZ_STATE_DONE; - - zr->jpg_dma_tail++; - } -} - -static void zoran_restart(struct zoran *zr) -{ - /* Now the stat_comm buffer is ready for restart */ - unsigned int status = 0; - int mode; - - if (zr->codec_mode == BUZ_MODE_MOTION_COMPRESS) { - decoder_call(zr, video, g_input_status, &status); - mode = CODEC_DO_COMPRESSION; - } else { - status = V4L2_IN_ST_NO_SIGNAL; - mode = CODEC_DO_EXPANSION; - } - if (zr->codec_mode == BUZ_MODE_MOTION_DECOMPRESS || - !(status & V4L2_IN_ST_NO_SIGNAL)) { - /********** RESTART code *************/ - jpeg_codec_reset(zr); - zr->codec->set_mode(zr->codec, mode); - zr36057_set_jpg(zr, zr->codec_mode); - jpeg_start(zr); - - if (zr->num_errors <= 8) - pci_info(zr->pci_dev, "Restart\n"); - - zr->JPEG_missed = 0; - zr->JPEG_error = 2; - /********** End RESTART code ***********/ - } -} - -static void error_handler(struct zoran *zr, u32 astat, u32 stat) -{ - int i; - - /* This is JPEG error handling part */ - if (zr->codec_mode != BUZ_MODE_MOTION_COMPRESS && - zr->codec_mode != BUZ_MODE_MOTION_DECOMPRESS) { - return; - } - - if ((stat & 1) == 0 && - zr->codec_mode == BUZ_MODE_MOTION_COMPRESS && - zr->jpg_dma_tail - zr->jpg_que_tail >= zr->jpg_buffers.num_buffers) { - /* No free buffers... */ - zoran_reap_stat_com(zr); - zoran_feed_stat_com(zr); - wake_up_interruptible(&zr->jpg_capq); - zr->JPEG_missed = 0; - return; - } - - if (zr->JPEG_error == 1) { - zoran_restart(zr); - return; - } - - /* - * First entry: error just happened during normal operation - * - * In BUZ_MODE_MOTION_COMPRESS: - * - * Possible glitch in TV signal. In this case we should - * stop the codec and wait for good quality signal before - * restarting it to avoid further problems - * - * In BUZ_MODE_MOTION_DECOMPRESS: - * - * Bad JPEG frame: we have to mark it as processed (codec crashed - * and was not able to do it itself), and to remove it from queue. - */ - btand(~ZR36057_JMC_Go_en, ZR36057_JMC); - udelay(1); - stat = stat | (post_office_read(zr, 7, 0) & 3) << 8; - btwrite(0, ZR36057_JPC); - btor(ZR36057_MCTCR_CFlush, ZR36057_MCTCR); - jpeg_codec_reset(zr); - jpeg_codec_sleep(zr, 1); - zr->JPEG_error = 1; - zr->num_errors++; - - /* Report error */ - if (zr36067_debug > 1 && zr->num_errors <= 8) { - long frame; - int j; - - frame = zr->jpg_pend[zr->jpg_dma_tail & BUZ_MASK_FRAME]; - pci_err(zr->pci_dev, "JPEG error stat=0x%08x(0x%08x) queue_state=%ld/%ld/%ld/%ld seq=%ld frame=%ld. Codec stopped. ", - stat, zr->last_isr, - zr->jpg_que_tail, zr->jpg_dma_tail, - zr->jpg_dma_head, zr->jpg_que_head, - zr->jpg_seq_num, frame); - pr_info("stat_com frames:"); - for (j = 0; j < BUZ_NUM_STAT_COM; j++) { - for (i = 0; i < zr->jpg_buffers.num_buffers; i++) { - if (le32_to_cpu(zr->stat_com[j]) == zr->jpg_buffers.buffer[i].jpg.frag_tab_bus) - printk(KERN_CONT "% d->%d", j, i); - } - } - printk(KERN_CONT "\n"); - } - /* Find an entry in stat_com and rotate contents */ - if (zr->jpg_settings.TmpDcm == 1) - i = (zr->jpg_dma_tail - zr->jpg_err_shift) & BUZ_MASK_STAT_COM; - else - i = ((zr->jpg_dma_tail - zr->jpg_err_shift) & 1) * 2; - if (zr->codec_mode == BUZ_MODE_MOTION_DECOMPRESS) { - /* Mimic zr36067 operation */ - zr->stat_com[i] |= cpu_to_le32(1); + zr->inuse[i] = NULL; if (zr->jpg_settings.TmpDcm != 1) - zr->stat_com[i + 1] |= cpu_to_le32(1); - /* Refill */ - zoran_reap_stat_com(zr); - zoran_feed_stat_com(zr); - wake_up_interruptible(&zr->jpg_capq); - /* Find an entry in stat_com again after refill */ - if (zr->jpg_settings.TmpDcm == 1) - i = (zr->jpg_dma_tail - zr->jpg_err_shift) & BUZ_MASK_STAT_COM; + buf->vbuf.field = zr->jpg_settings.odd_even ? + V4L2_FIELD_TOP : V4L2_FIELD_BOTTOM; else - i = ((zr->jpg_dma_tail - zr->jpg_err_shift) & 1) * 2; - } - if (i) { - /* Rotate stat_comm entries to make current entry first */ - int j; - __le32 bus_addr[BUZ_NUM_STAT_COM]; - - /* Here we are copying the stat_com array, which - * is already in little endian format, so - * no endian conversions here - */ - memcpy(bus_addr, zr->stat_com, sizeof(bus_addr)); + buf->vbuf.field = zr->jpg_settings.odd_even ? + V4L2_FIELD_SEQ_TB : V4L2_FIELD_SEQ_BT; + vb2_buffer_done(&buf->vbuf.vb2_buf, VB2_BUF_STATE_DONE); - for (j = 0; j < BUZ_NUM_STAT_COM; j++) - zr->stat_com[j] = bus_addr[(i + j) & BUZ_MASK_STAT_COM]; - - zr->jpg_err_shift += i; - zr->jpg_err_shift &= BUZ_MASK_STAT_COM; + zr->jpg_dma_tail++; } - if (zr->codec_mode == BUZ_MODE_MOTION_COMPRESS) - zr->jpg_err_seq = zr->jpg_seq_num; /* + 1; */ - zoran_restart(zr); + spin_unlock_irqrestore(&zr->queued_bufs_lock, flags); } irqreturn_t zoran_irq(int irq, void *dev_id) { - u32 stat, astat; - int count = 0; struct zoran *zr = dev_id; - unsigned long flags; - - spin_lock_irqsave(&zr->spinlock, flags); - while (1) { - /* get/clear interrupt status bits */ - stat = count_reset_interrupt(zr); - astat = stat & IRQ_MASK; - if (!astat) - break; - pr_debug("%s: astat: 0x%08x, mask: 0x%08x\n", __func__, astat, btread(ZR36057_ICR)); - if (astat & zr->card.vsync_int) { // SW - - if (zr->codec_mode == BUZ_MODE_MOTION_DECOMPRESS || - zr->codec_mode == BUZ_MODE_MOTION_COMPRESS) { - /* count missed interrupts */ - zr->JPEG_missed++; - } - //post_office_read(zr,1,0); - /* - * Interrupts may still happen when - * zr->v4l_memgrab_active is switched off. - * We simply ignore them - */ - - if (zr->v4l_memgrab_active) { - /* A lot more checks should be here ... */ - if ((btread(ZR36057_VSSFGR) & ZR36057_VSSFGR_SnapShot) == 0) - pci_warn(zr->pci_dev, "BuzIRQ with SnapShot off ???\n"); - - if (zr->v4l_grab_frame != NO_GRAB_ACTIVE) { - /* There is a grab on a frame going on, check if it has finished */ - if ((btread(ZR36057_VSSFGR) & ZR36057_VSSFGR_FrameGrab) == 0) { - /* it is finished, notify the user */ - - zr->v4l_buffers.buffer[zr->v4l_grab_frame].state = BUZ_STATE_DONE; - zr->v4l_buffers.buffer[zr->v4l_grab_frame].bs.seq = zr->v4l_grab_seq; - zr->v4l_buffers.buffer[zr->v4l_grab_frame].bs.ts = ktime_get_ns(); - zr->v4l_grab_frame = NO_GRAB_ACTIVE; - zr->v4l_pend_tail++; - } - } - - if (zr->v4l_grab_frame == NO_GRAB_ACTIVE) - wake_up_interruptible(&zr->v4l_capq); - - /* Check if there is another grab queued */ - - if (zr->v4l_grab_frame == NO_GRAB_ACTIVE && - zr->v4l_pend_tail != zr->v4l_pend_head) { - int frame = zr->v4l_pend[zr->v4l_pend_tail & V4L_MASK_FRAME]; - u32 reg; - - zr->v4l_grab_frame = frame; - - /* Set zr36057 video front end and enable video */ - - /* Buffer address */ - - reg = zr->v4l_buffers.buffer[frame].v4l.fbuffer_bus; - btwrite(reg, ZR36057_VDTR); - if (zr->v4l_settings.height > BUZ_MAX_HEIGHT / 2) - reg += zr->v4l_settings.bytesperline; - btwrite(reg, ZR36057_VDBR); - - /* video stride, status, and frame grab register */ - reg = 0; - if (zr->v4l_settings.height > BUZ_MAX_HEIGHT / 2) - reg += zr->v4l_settings.bytesperline; - reg = (reg << ZR36057_VSSFGR_DispStride); - reg |= ZR36057_VSSFGR_VidOvf; - reg |= ZR36057_VSSFGR_SnapShot; - reg |= ZR36057_VSSFGR_FrameGrab; - btwrite(reg, ZR36057_VSSFGR); - - btor(ZR36057_VDCR_VidEn, ZR36057_VDCR); - } - } - - /* - * even if we don't grab, we do want to increment - * the sequence counter to see lost frames - */ - zr->v4l_grab_seq++; - } -#if (IRQ_MASK & ZR36057_ISR_CodRepIRQ) - if (astat & ZR36057_ISR_CodRepIRQ) { - zr->intr_counter_CodRepIRQ++; - IDEBUG(printk(KERN_DEBUG "%s: ZR36057_ISR_CodRepIRQ\n", ZR_DEVNAME(zr))); - btand(~ZR36057_ICR_CodRepIRQ, ZR36057_ICR); - } -#endif /* (IRQ_MASK & ZR36057_ISR_CodRepIRQ) */ - -#if (IRQ_MASK & ZR36057_ISR_JPEGRepIRQ) - if ((astat & ZR36057_ISR_JPEGRepIRQ) && - (zr->codec_mode == BUZ_MODE_MOTION_DECOMPRESS || - zr->codec_mode == BUZ_MODE_MOTION_COMPRESS)) { - if (zr36067_debug > 1 && (!zr->frame_num || zr->JPEG_error)) { - char sv[BUZ_NUM_STAT_COM + 1]; - int i; - - pr_info("%s: first frame ready: state=0x%08x odd_even=%d field_per_buff=%d delay=%d\n", - ZR_DEVNAME(zr), stat, zr->jpg_settings.odd_even, - zr->jpg_settings.field_per_buff, zr->JPEG_missed); - - for (i = 0; i < BUZ_NUM_STAT_COM; i++) - sv[i] = le32_to_cpu(zr->stat_com[i]) & 1 ? '1' : '0'; - sv[BUZ_NUM_STAT_COM] = 0; - pr_info("%s: stat_com=%s queue_state=%ld/%ld/%ld/%ld\n", - ZR_DEVNAME(zr), sv, zr->jpg_que_tail, zr->jpg_dma_tail, - zr->jpg_dma_head, zr->jpg_que_head); - } else { - /* Get statistics */ - if (zr->JPEG_missed > zr->JPEG_max_missed) - zr->JPEG_max_missed = zr->JPEG_missed; - if (zr->JPEG_missed < zr->JPEG_min_missed) - zr->JPEG_min_missed = zr->JPEG_missed; - } - - if (zr36067_debug > 2 && zr->frame_num < 6) { - int i; + u32 stat, astat; - pr_info("%s: seq=%ld stat_com:", ZR_DEVNAME(zr), zr->jpg_seq_num); - for (i = 0; i < 4; i++) - printk(KERN_CONT " %08x", le32_to_cpu(zr->stat_com[i])); - printk(KERN_CONT "\n"); - } - zr->frame_num++; - zr->JPEG_missed = 0; - zr->JPEG_error = 0; - zoran_reap_stat_com(zr); - zoran_feed_stat_com(zr); - wake_up_interruptible(&zr->jpg_capq); + stat = count_reset_interrupt(zr); + astat = stat & IRQ_MASK; + if (astat & zr->card.vsync_int) { + if (zr->running == ZORAN_MAP_MODE_RAW) { + if ((btread(ZR36057_VSSFGR) & ZR36057_VSSFGR_SnapShot) == 0) + pci_warn(zr->pci_dev, "BuzIRQ with SnapShot off ???\n"); + if ((btread(ZR36057_VSSFGR) & ZR36057_VSSFGR_FrameGrab) == 0) + zr_set_buf(zr); + return IRQ_HANDLED; } -#endif /* (IRQ_MASK & ZR36057_ISR_JPEGRepIRQ) */ - - /* DATERR, too many fields missed, error processing */ - if ((astat & zr->card.jpeg_int) || - zr->JPEG_missed > 25 || - zr->JPEG_error == 1 || - ((zr->codec_mode == BUZ_MODE_MOTION_DECOMPRESS) && - (zr->frame_num && (zr->JPEG_missed > zr->jpg_settings.field_per_buff)))) { - error_handler(zr, astat, stat); - } - - count++; - if (count > 10) { - pci_warn(zr->pci_dev, "irq loop %d\n", count); - if (count > 20) { - btand(~ZR36057_ICR_IntPinEn, ZR36057_ICR); - pci_err(zr->pci_dev, "IRQ lockup, cleared int mask\n"); - break; + if (astat & ZR36057_ISR_JPEGRepIRQ) { + if (zr->codec_mode != BUZ_MODE_MOTION_DECOMPRESS && + zr->codec_mode != BUZ_MODE_MOTION_COMPRESS) { + pci_err(zr->pci_dev, "JPG IRQ when not in good mode\n"); + return IRQ_HANDLED; } + zr->frame_num++; + zoran_reap_stat_com(zr); + zoran_feed_stat_com(zr); + return IRQ_HANDLED; } - zr->last_isr = stat; + /* unused interrupts */ } - spin_unlock_irqrestore(&zr->spinlock, flags); - + zr->ghost_int++; return IRQ_HANDLED; } diff --git a/drivers/staging/media/zoran/zoran_driver.c b/drivers/staging/media/zoran/zoran_driver.c index 8c23bb4f6b71..594713b41c0a 100644 --- a/drivers/staging/media/zoran/zoran_driver.c +++ b/drivers/staging/media/zoran/zoran_driver.c @@ -35,7 +35,6 @@ #include #include #include -#include #include #include @@ -50,7 +49,6 @@ #include #include "videocodec.h" -#include #include #include @@ -159,234 +157,8 @@ static __u32 zoran_v4l2_calc_bufsize(struct zoran_jpg_settings *settings) return jpg_bufsize; if (result < 8192) return 8192; - return result; -} - -/* forward references */ -static void v4l_fbuffer_free(struct zoran_fh *fh); -static void jpg_fbuffer_free(struct zoran_fh *fh); - -/* Set mapping mode */ -static void map_mode_raw(struct zoran_fh *fh) -{ - struct zoran *zr = fh->zr; - fh->map_mode = ZORAN_MAP_MODE_RAW; - zr->buffer_size = v4l_bufsize; - fh->buffers.num_buffers = v4l_nbufs; -} - -static void map_mode_jpg(struct zoran_fh *fh, int play) -{ - struct zoran *zr = fh->zr; - - fh->map_mode = play ? ZORAN_MAP_MODE_JPG_PLAY : ZORAN_MAP_MODE_JPG_REC; - zr->buffer_size = jpg_bufsize; - fh->buffers.num_buffers = jpg_nbufs; -} - -static inline const char *mode_name(enum zoran_map_mode mode) -{ - return mode == ZORAN_MAP_MODE_RAW ? "V4L" : "JPG"; -} - -/* - * Allocate the V4L grab buffers - * - * These have to be pysically contiguous. - */ - -static int v4l_fbuffer_alloc(struct zoran_fh *fh) -{ - struct zoran *zr = fh->zr; - int i, off; - unsigned char *mem; - - for (i = 0; i < fh->buffers.num_buffers; i++) { - if (fh->buffers.buffer[i].v4l.fbuffer) - pci_warn(zr->pci_dev, "%s - buffer %d already allocated!?\n", __func__, i); - - //udelay(20); - mem = kmalloc(zr->buffer_size, GFP_KERNEL | __GFP_NOWARN); - if (!mem) { - pci_err(zr->pci_dev, "%s - kmalloc for V4L buf %d failed\n", __func__, i); - v4l_fbuffer_free(fh); - return -ENOBUFS; - } - fh->buffers.buffer[i].v4l.fbuffer = mem; - fh->buffers.buffer[i].v4l.fbuffer_phys = virt_to_phys(mem); - fh->buffers.buffer[i].v4l.fbuffer_bus = virt_to_bus(mem); - for (off = 0; off < zr->buffer_size; - off += PAGE_SIZE) - SetPageReserved(virt_to_page(mem + off)); - pci_info(zr->pci_dev, "%s - V4L frame %d mem %p (bus: 0x%llx)\n", __func__, i, mem, - (unsigned long long)virt_to_bus(mem)); - } - - fh->buffers.allocated = 1; - - return 0; -} - -/* free the V4L grab buffers */ -static void v4l_fbuffer_free(struct zoran_fh *fh) -{ - struct zoran *zr = fh->zr; - int i, off; - unsigned char *mem; - - pci_dbg(zr->pci_dev, "%s\n", __func__); - - for (i = 0; i < fh->buffers.num_buffers; i++) { - if (!fh->buffers.buffer[i].v4l.fbuffer) - continue; - - mem = fh->buffers.buffer[i].v4l.fbuffer; - for (off = 0; off < zr->buffer_size; - off += PAGE_SIZE) - ClearPageReserved(virt_to_page(mem + off)); - kfree(fh->buffers.buffer[i].v4l.fbuffer); - fh->buffers.buffer[i].v4l.fbuffer = NULL; - } - fh->buffers.allocated = 0; -} - -/* - * Allocate the MJPEG grab buffers. - * - * If a Natoma chipset is present and this is a revision 1 zr36057, - * each MJPEG buffer needs to be physically contiguous. - * (RJ: This statement is from Dave Perks' original driver, - * I could never check it because I have a zr36067) - * - * RJ: The contents grab buffers needs never be accessed in the driver. - * Therefore there is no need to allocate them with vmalloc in order - * to get a contiguous virtual memory space. - * I don't understand why many other drivers first allocate them with - * vmalloc (which uses internally also get_zeroed_page, but delivers you - * virtual addresses) and then again have to make a lot of efforts - * to get the physical address. - * - * Ben Capper: - * On big-endian architectures (such as ppc) some extra steps - * are needed. When reading and writing to the stat_com array - * and fragment buffers, the device expects to see little- - * endian values. The use of cpu_to_le32() and le32_to_cpu() - * in this function (and one or two others in zoran_device.c) - * ensure that these values are always stored in little-endian - * form, regardless of architecture. The zr36057 does Very Bad - * Things on big endian architectures if the stat_com array - * and fragment buffers are not little-endian. - */ - -static int jpg_fbuffer_alloc(struct zoran_fh *fh) -{ - struct zoran *zr = fh->zr; - int i, j, off; - u8 *mem; - - for (i = 0; i < fh->buffers.num_buffers; i++) { - if (fh->buffers.buffer[i].jpg.frag_tab) - pci_warn(zr->pci_dev, "%s - buffer %d already allocated!?\n", __func__, i); - - /* Allocate fragment table for this buffer */ - - mem = (void *)get_zeroed_page(GFP_KERNEL); - if (!mem) { - pci_err(zr->pci_dev, "%s - get_zeroed_page (frag_tab) failed for buffer %d\n", __func__, i); - jpg_fbuffer_free(fh); - return -ENOBUFS; - } - fh->buffers.buffer[i].jpg.frag_tab = (__le32 *)mem; - fh->buffers.buffer[i].jpg.frag_tab_bus = virt_to_bus(mem); - - if (fh->buffers.need_contiguous) { - mem = kmalloc(zr->buffer_size, GFP_KERNEL); - if (!mem) { - pci_err(zr->pci_dev, "%s - kmalloc failed for buffer %d\n", __func__, i); - jpg_fbuffer_free(fh); - return -ENOBUFS; - } - fh->buffers.buffer[i].jpg.frag_tab[0] = - cpu_to_le32(virt_to_bus(mem)); - fh->buffers.buffer[i].jpg.frag_tab[1] = - cpu_to_le32((zr->buffer_size >> 1) | 1); - for (off = 0; off < zr->buffer_size; off += PAGE_SIZE) - SetPageReserved(virt_to_page(mem + off)); - } else { - /* jpg_bufsize is already page aligned */ - for (j = 0; j < zr->buffer_size / PAGE_SIZE; j++) { - mem = (void *)get_zeroed_page(GFP_KERNEL); - if (!mem) { - pci_err(zr->pci_dev, "%s - get_zeroed_page failed for buffer %d\n", __func__, i); - jpg_fbuffer_free(fh); - return -ENOBUFS; - } - - fh->buffers.buffer[i].jpg.frag_tab[2 * j] = - cpu_to_le32(virt_to_bus(mem)); - fh->buffers.buffer[i].jpg.frag_tab[2 * j + 1] = - cpu_to_le32((PAGE_SIZE >> 2) << 1); - SetPageReserved(virt_to_page(mem)); - } - - fh->buffers.buffer[i].jpg.frag_tab[2 * j - 1] |= cpu_to_le32(1); - } - } - - pci_dbg(zr->pci_dev, "%s - %d KB allocated\n", __func__, - (fh->buffers.num_buffers * zr->buffer_size) >> 10); - - fh->buffers.allocated = 1; - - return 0; -} - -/* free the MJPEG grab buffers */ -static void jpg_fbuffer_free(struct zoran_fh *fh) -{ - struct zoran *zr = fh->zr; - int i, j, off; - unsigned char *mem; - __le32 frag_tab; - struct zoran_buffer *buffer; - - pci_dbg(zr->pci_dev, "%s\n", __func__); - - for (i = 0, buffer = &fh->buffers.buffer[0]; - i < fh->buffers.num_buffers; i++, buffer++) { - if (!buffer->jpg.frag_tab) - continue; - - if (fh->buffers.need_contiguous) { - frag_tab = buffer->jpg.frag_tab[0]; - - if (frag_tab) { - mem = bus_to_virt(le32_to_cpu(frag_tab)); - for (off = 0; off < zr->buffer_size; off += PAGE_SIZE) - ClearPageReserved(virt_to_page(mem + off)); - kfree(mem); - buffer->jpg.frag_tab[0] = 0; - buffer->jpg.frag_tab[1] = 0; - } - } else { - for (j = 0; j < zr->buffer_size / PAGE_SIZE; j++) { - frag_tab = buffer->jpg.frag_tab[2 * j]; - - if (!frag_tab) - break; - ClearPageReserved(virt_to_page(bus_to_virt(le32_to_cpu(frag_tab)))); - free_page((unsigned long)bus_to_virt(le32_to_cpu(frag_tab))); - buffer->jpg.frag_tab[2 * j] = 0; - buffer->jpg.frag_tab[2 * j + 1] = 0; - } - } - - free_page((unsigned long)buffer->jpg.frag_tab); - buffer->jpg.frag_tab = NULL; - } - - fh->buffers.allocated = 0; + return result; } /* @@ -431,561 +203,8 @@ static int zoran_v4l_set_format(struct zoran *zr, int width, int height, return 0; } -static int zoran_v4l_queue_frame(struct zoran_fh *fh, int num) -{ - struct zoran *zr = fh->zr; - unsigned long flags; - int res = 0; - - if (!fh->buffers.allocated) { - pci_err(zr->pci_dev, "%s - buffers not yet allocated\n", __func__); - res = -ENOMEM; - } - - /* No grabbing outside the buffer range! */ - if (num >= fh->buffers.num_buffers || num < 0) { - pci_err(zr->pci_dev, "%s - buffer %d is out of range\n", __func__, num); - res = -EINVAL; - } - - spin_lock_irqsave(&zr->spinlock, flags); - - if (fh->buffers.active == ZORAN_FREE) { - if (zr->v4l_buffers.active == ZORAN_FREE) { - zr->v4l_buffers = fh->buffers; - fh->buffers.active = ZORAN_ACTIVE; - } else { - pci_err(zr->pci_dev, "%s - another session is already capturing\n", __func__); - res = -EBUSY; - } - } - - /* make sure a grab isn't going on currently with this buffer */ - if (!res) { - switch (zr->v4l_buffers.buffer[num].state) { - default: - case BUZ_STATE_PEND: - if (zr->v4l_buffers.active == ZORAN_FREE) { - fh->buffers.active = ZORAN_FREE; - zr->v4l_buffers.allocated = 0; - } - res = -EBUSY; /* what are you doing? */ - break; - case BUZ_STATE_DONE: - pci_warn(zr->pci_dev, "%s - queueing buffer %d in state DONE!?\n", __func__, num); - /* fallthrough */ - case BUZ_STATE_USER: - /* since there is at least one unused buffer there's room for at least - * one more pend[] entry */ - zr->v4l_pend[zr->v4l_pend_head++ & V4L_MASK_FRAME] = num; - zr->v4l_buffers.buffer[num].state = BUZ_STATE_PEND; - zr->v4l_buffers.buffer[num].bs.length = - zr->v4l_settings.bytesperline * - zr->v4l_settings.height; - fh->buffers.buffer[num] = zr->v4l_buffers.buffer[num]; - break; - } - } - - spin_unlock_irqrestore(&zr->spinlock, flags); - - if (!res && zr->v4l_buffers.active == ZORAN_FREE) - zr->v4l_buffers.active = fh->buffers.active; - - return res; -} - -/* - * Sync on a V4L buffer - */ - -static int v4l_sync(struct zoran_fh *fh, int frame) -{ - struct zoran *zr = fh->zr; - unsigned long flags; - - if (fh->buffers.active == ZORAN_FREE) { - pci_err(zr->pci_dev, "%s - no grab active for this session\n", __func__); - return -EINVAL; - } - - /* check passed-in frame number */ - if (frame >= fh->buffers.num_buffers || frame < 0) { - pci_err(zr->pci_dev, "%s - frame %d is invalid\n", __func__, frame); - return -EINVAL; - } - - /* Check if is buffer was queued at all */ - if (zr->v4l_buffers.buffer[frame].state == BUZ_STATE_USER) { - pci_err(zr->pci_dev, "%s - attempt to sync on a buffer which was not queued?\n", __func__); - return -EPROTO; - } - - mutex_unlock(&zr->lock); - /* wait on this buffer to get ready */ - if (!wait_event_interruptible_timeout(zr->v4l_capq, - (zr->v4l_buffers.buffer[frame].state != BUZ_STATE_PEND), 10 * HZ)) { - mutex_lock(&zr->lock); - return -ETIME; - } - mutex_lock(&zr->lock); - if (signal_pending(current)) - return -ERESTARTSYS; - - /* buffer should now be in BUZ_STATE_DONE */ - if (zr->v4l_buffers.buffer[frame].state != BUZ_STATE_DONE) - pci_err(zr->pci_dev, "%s - internal state error\n", __func__); - - zr->v4l_buffers.buffer[frame].state = BUZ_STATE_USER; - fh->buffers.buffer[frame] = zr->v4l_buffers.buffer[frame]; - - spin_lock_irqsave(&zr->spinlock, flags); - - /* Check if streaming capture has finished */ - if (zr->v4l_pend_tail == zr->v4l_pend_head) { - zr36057_set_memgrab(zr, 0); - if (zr->v4l_buffers.active == ZORAN_ACTIVE) { - fh->buffers.active = zr->v4l_buffers.active = ZORAN_FREE; - zr->v4l_buffers.allocated = 0; - } - } - - spin_unlock_irqrestore(&zr->spinlock, flags); - - return 0; -} - -/* - * Queue a MJPEG buffer for capture/playback - */ -static int zoran_jpg_queue_frame(struct zoran_fh *fh, int num, - enum zoran_codec_mode mode) -{ - struct zoran *zr = fh->zr; - unsigned long flags; - int res = 0; - - /* Check if buffers are allocated */ - if (!fh->buffers.allocated) { - pci_err(zr->pci_dev, "%s - buffers not yet allocated\n", __func__); - return -ENOMEM; - } - - /* No grabbing outside the buffer range! */ - if (num >= fh->buffers.num_buffers || num < 0) { - pci_err(zr->pci_dev, "%s - buffer %d out of range\n", __func__, num); - return -EINVAL; - } - - /* what is the codec mode right now? */ - if (zr->codec_mode != BUZ_MODE_IDLE && zr->codec_mode != mode) { - /* wrong codec mode active - invalid */ - pci_err(zr->pci_dev, "%s - codec in wrong mode\n", __func__); - return -EINVAL; - } - - if (fh->buffers.active == ZORAN_FREE) { - if (zr->jpg_buffers.active == ZORAN_FREE) { - zr->jpg_buffers = fh->buffers; - fh->buffers.active = ZORAN_ACTIVE; - } else { - pci_err(zr->pci_dev, "%s - another session is already capturing\n", __func__); - res = -EBUSY; - } - } - - if (!res && zr->codec_mode == BUZ_MODE_IDLE) { - /* Ok load up the jpeg codec */ - zr36057_enable_jpg(zr, mode); - } - - spin_lock_irqsave(&zr->spinlock, flags); - - if (!res) { - switch (zr->jpg_buffers.buffer[num].state) { - case BUZ_STATE_DONE: - pci_warn(zr->pci_dev, "%s - queuing frame in BUZ_STATE_DONE state!?\n", __func__); - /* fallthrough */ - case BUZ_STATE_USER: - /* since there is at least one unused buffer there's room for at - *least one more pend[] entry */ - zr->jpg_pend[zr->jpg_que_head++ & BUZ_MASK_FRAME] = num; - zr->jpg_buffers.buffer[num].state = BUZ_STATE_PEND; - fh->buffers.buffer[num] = zr->jpg_buffers.buffer[num]; - zoran_feed_stat_com(zr); - break; - default: - case BUZ_STATE_DMA: - case BUZ_STATE_PEND: - if (zr->jpg_buffers.active == ZORAN_FREE) { - fh->buffers.active = ZORAN_FREE; - zr->jpg_buffers.allocated = 0; - } - res = -EBUSY; /* what are you doing? */ - break; - } - } - - spin_unlock_irqrestore(&zr->spinlock, flags); - - if (!res && zr->jpg_buffers.active == ZORAN_FREE) - zr->jpg_buffers.active = fh->buffers.active; - - return res; -} - -static int jpg_qbuf(struct zoran_fh *fh, int frame, enum zoran_codec_mode mode) -{ - struct zoran *zr = fh->zr; - int res = 0; - - /* Does the user want to stop streaming? */ - if (frame < 0) { - if (zr->codec_mode == mode) { - if (fh->buffers.active == ZORAN_FREE) { - pci_err(zr->pci_dev, "%s(-1) - session not active\n", __func__); - return -EINVAL; - } - fh->buffers.active = zr->jpg_buffers.active = ZORAN_FREE; - zr->jpg_buffers.allocated = 0; - zr36057_enable_jpg(zr, BUZ_MODE_IDLE); - return 0; - } else { - pci_err(zr->pci_dev, "%s - stop streaming but not in streaming mode\n", __func__); - return -EINVAL; - } - } - - res = zoran_jpg_queue_frame(fh, frame, mode); - if (res) - return res; - - /* Start the jpeg codec when the first frame is queued */ - if (!res && zr->jpg_que_head == 1) - jpeg_start(zr); - - return res; -} - -/* - * Sync on a MJPEG buffer - */ - -static int jpg_sync(struct zoran_fh *fh, struct zoran_sync *bs) -{ - struct zoran *zr = fh->zr; - unsigned long flags; - int frame; - - if (fh->buffers.active == ZORAN_FREE) { - pci_err(zr->pci_dev, "%s - capture is not currently active\n", __func__); - return -EINVAL; - } - if (zr->codec_mode != BUZ_MODE_MOTION_DECOMPRESS && - zr->codec_mode != BUZ_MODE_MOTION_COMPRESS) { - pci_err(zr->pci_dev, "%s - codec not in streaming mode\n", __func__); - return -EINVAL; - } - mutex_unlock(&zr->lock); - if (!wait_event_interruptible_timeout(zr->jpg_capq, - (zr->jpg_que_tail != zr->jpg_dma_tail || - zr->jpg_dma_tail == zr->jpg_dma_head), - 10 * HZ)) { - int isr; - - btand(~ZR36057_JMC_Go_en, ZR36057_JMC); - udelay(1); - zr->codec->control(zr->codec, CODEC_G_STATUS, sizeof(isr), &isr); - mutex_lock(&zr->lock); - pci_err(zr->pci_dev, "%s - timeout: codec isr=0x%02x\n", __func__, isr); - - return -ETIME; - } - mutex_lock(&zr->lock); - if (signal_pending(current)) - return -ERESTARTSYS; - - spin_lock_irqsave(&zr->spinlock, flags); - - if (zr->jpg_dma_tail != zr->jpg_dma_head) - frame = zr->jpg_pend[zr->jpg_que_tail++ & BUZ_MASK_FRAME]; - else - frame = zr->jpg_pend[zr->jpg_que_tail & BUZ_MASK_FRAME]; - - /* buffer should now be in BUZ_STATE_DONE */ - if (zr->jpg_buffers.buffer[frame].state != BUZ_STATE_DONE) - pci_err(zr->pci_dev, "%s - internal state error\n", __func__); - - *bs = zr->jpg_buffers.buffer[frame].bs; - bs->frame = frame; - zr->jpg_buffers.buffer[frame].state = BUZ_STATE_USER; - fh->buffers.buffer[frame] = zr->jpg_buffers.buffer[frame]; - - spin_unlock_irqrestore(&zr->spinlock, flags); - - return 0; -} - -static void zoran_open_init_session(struct zoran_fh *fh) -{ - int i; - - /* Per default, map the V4L Buffers */ - map_mode_raw(fh); - - /* buffers */ - memset(&fh->buffers, 0, sizeof(fh->buffers)); - for (i = 0; i < MAX_FRAME; i++) { - fh->buffers.buffer[i].state = BUZ_STATE_USER; /* nothing going on */ - fh->buffers.buffer[i].bs.frame = i; - } - fh->buffers.allocated = 0; - fh->buffers.active = ZORAN_FREE; -} - -static void zoran_close_end_session(struct zoran_fh *fh) -{ - struct zoran *zr = fh->zr; - - if (fh->map_mode == ZORAN_MAP_MODE_RAW) { - /* v4l capture */ - if (fh->buffers.active != ZORAN_FREE) { - unsigned long flags; - - spin_lock_irqsave(&zr->spinlock, flags); - zr36057_set_memgrab(zr, 0); - zr->v4l_buffers.allocated = 0; - zr->v4l_buffers.active = fh->buffers.active = ZORAN_FREE; - spin_unlock_irqrestore(&zr->spinlock, flags); - } - - /* v4l buffers */ - if (fh->buffers.allocated) - v4l_fbuffer_free(fh); - } else { - /* jpg capture */ - if (fh->buffers.active != ZORAN_FREE) { - zr36057_enable_jpg(zr, BUZ_MODE_IDLE); - zr->jpg_buffers.allocated = 0; - zr->jpg_buffers.active = fh->buffers.active = ZORAN_FREE; - } - - /* jpg buffers */ - if (fh->buffers.allocated) - jpg_fbuffer_free(fh); - } -} - -/* - * Open a zoran card. Right now the flags stuff is just playing - */ -static int zoran_open(struct file *file) -{ - struct zoran *zr = video_drvdata(file); - struct zoran_fh *fh; - int res, first_open = 0; - - pci_info(zr->pci_dev, "%s(%s, pid=[%d]), users(-)=%d\n", __func__, current->comm, - task_pid_nr(current), zr->user + 1); - - mutex_lock(&zr->lock); - - if (zr->user >= 2048) { - pci_err(zr->pci_dev, "too many users (%d) on device\n", zr->user); - res = -EBUSY; - goto fail_unlock; - } - - /* now, create the open()-specific file_ops struct */ - fh = kzalloc(sizeof(*fh), GFP_KERNEL); - if (!fh) { - res = -ENOMEM; - goto fail_unlock; - } - v4l2_fh_init(&fh->fh, video_devdata(file)); - - if (zr->user++ == 0) - first_open = 1; - - /* default setup - TODO: look at flags */ - if (first_open) { /* First device open */ - zr36057_restart(zr); - zoran_open_init_params(zr); - zoran_init_hardware(zr); - - btor(ZR36057_ICR_IntPinEn, ZR36057_ICR); - } - - /* set file_ops stuff */ - file->private_data = fh; - fh->zr = zr; - zoran_open_init_session(fh); - v4l2_fh_add(&fh->fh); - mutex_unlock(&zr->lock); - - return 0; - -fail_unlock: - mutex_unlock(&zr->lock); - - pci_info(zr->pci_dev, "open failed (%d), users(-)=%d\n", res, zr->user); - - return res; -} - -static int zoran_close(struct file *file) -{ - struct zoran_fh *fh = file->private_data; - struct zoran *zr = fh->zr; - - pci_info(zr->pci_dev, "%s(%s, pid=[%d]), users(+)=%d\n", __func__, current->comm, - task_pid_nr(current), zr->user - 1); - - /* kernel locks (fs/device.c), so don't do that ourselves - * (prevents deadlocks) */ - mutex_lock(&zr->lock); - - zoran_close_end_session(fh); - - if (zr->user-- == 1) { /* Last process */ - /* Clean up JPEG process */ - wake_up_interruptible(&zr->jpg_capq); - zr36057_enable_jpg(zr, BUZ_MODE_IDLE); - zr->jpg_buffers.allocated = 0; - zr->jpg_buffers.active = ZORAN_FREE; - - /* disable interrupts */ - btand(~ZR36057_ICR_IntPinEn, ZR36057_ICR); - - if (zr36067_debug > 1) - print_interrupts(zr); - - /* capture off */ - wake_up_interruptible(&zr->v4l_capq); - zr36057_set_memgrab(zr, 0); - zr->v4l_buffers.allocated = 0; - zr->v4l_buffers.active = ZORAN_FREE; - zoran_set_pci_master(zr, 0); - - if (!pass_through) { /* Switch to color bar */ - decoder_call(zr, video, s_stream, 0); - encoder_call(zr, video, s_routing, 2, 0, 0); - } - } - mutex_unlock(&zr->lock); - - v4l2_fh_del(&fh->fh); - v4l2_fh_exit(&fh->fh); - kfree(fh); - - pci_dbg(zr->pci_dev, "%s done\n", __func__); - - return 0; -} - -/* get the status of a buffer in the clients buffer queue */ -static int zoran_v4l2_buffer_status(struct zoran_fh *fh, - struct v4l2_buffer *buf, int num) -{ - struct zoran *zr = fh->zr; - unsigned long flags; - - buf->flags = V4L2_BUF_FLAG_MAPPED | V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC; - - switch (fh->map_mode) { - case ZORAN_MAP_MODE_RAW: - /* check range */ - if (num < 0 || num >= fh->buffers.num_buffers || - !fh->buffers.allocated) { - pci_err(zr->pci_dev, "%s - wrong number or buffers not allocated\n", __func__); - return -EINVAL; - } - - spin_lock_irqsave(&zr->spinlock, flags); - pci_dbg(zr->pci_dev, "%s() - raw active=%c, buffer %d: state=%c, map=%c\n", __func__, - "FAL"[fh->buffers.active], num, - "UPMD"[zr->v4l_buffers.buffer[num].state], - fh->buffers.buffer[num].map ? 'Y' : 'N'); - spin_unlock_irqrestore(&zr->spinlock, flags); - - buf->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - buf->length = zr->buffer_size; - - /* get buffer */ - buf->bytesused = fh->buffers.buffer[num].bs.length; - if (fh->buffers.buffer[num].state == BUZ_STATE_DONE || - fh->buffers.buffer[num].state == BUZ_STATE_USER) { - buf->sequence = fh->buffers.buffer[num].bs.seq; - buf->flags |= V4L2_BUF_FLAG_DONE; - v4l2_buffer_set_timestamp(buf, fh->buffers.buffer[num].bs.ts); - } else { - buf->flags |= V4L2_BUF_FLAG_QUEUED; - } - - if (zr->v4l_settings.height <= BUZ_MAX_HEIGHT / 2) - buf->field = V4L2_FIELD_TOP; - else - buf->field = V4L2_FIELD_INTERLACED; - - break; - - case ZORAN_MAP_MODE_JPG_REC: - case ZORAN_MAP_MODE_JPG_PLAY: - - /* check range */ - if (num < 0 || num >= fh->buffers.num_buffers || - !fh->buffers.allocated) { - pci_err(zr->pci_dev, "%s - wrong number or buffers not allocated\n", __func__); - return -EINVAL; - } - - buf->type = (fh->map_mode == ZORAN_MAP_MODE_JPG_REC) ? - V4L2_BUF_TYPE_VIDEO_CAPTURE : - V4L2_BUF_TYPE_VIDEO_OUTPUT; - buf->length = zr->buffer_size; - - /* these variables are only written after frame has been captured */ - if (fh->buffers.buffer[num].state == BUZ_STATE_DONE || - fh->buffers.buffer[num].state == BUZ_STATE_USER) { - buf->sequence = fh->buffers.buffer[num].bs.seq; - v4l2_buffer_set_timestamp(buf, fh->buffers.buffer[num].bs.ts); - buf->bytesused = fh->buffers.buffer[num].bs.length; - buf->flags |= V4L2_BUF_FLAG_DONE; - } else { - buf->flags |= V4L2_BUF_FLAG_QUEUED; - } - - /* which fields are these? */ - if (zr->jpg_settings.TmpDcm != 1) - buf->field = zr->jpg_settings.odd_even ? - V4L2_FIELD_TOP : V4L2_FIELD_BOTTOM; - else - buf->field = zr->jpg_settings.odd_even ? - V4L2_FIELD_SEQ_TB : V4L2_FIELD_SEQ_BT; - - break; - - default: - - pci_err(zr->pci_dev, "%s - invalid buffer type|map_mode (%d|%d)\n", - __func__, buf->type, fh->map_mode); - return -EINVAL; - } - - buf->memory = V4L2_MEMORY_MMAP; - buf->index = num; - buf->m.offset = buf->length * num; - - return 0; -} - static int zoran_set_norm(struct zoran *zr, v4l2_std_id norm) { - if (zr->v4l_buffers.active != ZORAN_FREE || - zr->jpg_buffers.active != ZORAN_FREE) { - pr_warn("%s: %s called while in playback/capture mode\n", ZR_DEVNAME(zr), __func__); - return -EBUSY; - } if (!(norm & zr->card.norms)) { pci_err(zr->pci_dev, "%s - unsupported norm %llx\n", __func__, norm); @@ -1013,12 +232,6 @@ static int zoran_set_input(struct zoran *zr, int input) if (input == zr->input) return 0; - if (zr->v4l_buffers.active != ZORAN_FREE || - zr->jpg_buffers.active != ZORAN_FREE) { - pci_warn(zr->pci_dev, "%s called while in playback/capture mode\n", __func__); - return -EBUSY; - } - if (input < 0 || input >= zr->card.inputs) { pci_err(zr->pci_dev, "%s - unsupported input %d\n", __func__, input); return -EINVAL; @@ -1108,12 +321,10 @@ static int zoran_g_fmt_vid_out(struct file *file, void *__fh, struct v4l2_format static int zoran_g_fmt_vid_cap(struct file *file, void *__fh, struct v4l2_format *fmt) { - struct zoran_fh *fh = __fh; - struct zoran *zr = fh->zr; - - if (fh->map_mode != ZORAN_MAP_MODE_RAW) - return zoran_g_fmt_vid_out(file, fh, fmt); + struct zoran *zr = video_drvdata(file); + if (zr->map_mode != ZORAN_MAP_MODE_RAW) + return zoran_g_fmt_vid_out(file, __fh, fmt); fmt->fmt.pix.width = zr->v4l_settings.width; fmt->fmt.pix.height = zr->v4l_settings.height; fmt->fmt.pix.sizeimage = zr->buffer_size; @@ -1194,13 +405,12 @@ static int zoran_try_fmt_vid_out(struct file *file, void *__fh, static int zoran_try_fmt_vid_cap(struct file *file, void *__fh, struct v4l2_format *fmt) { - struct zoran_fh *fh = __fh; - struct zoran *zr = fh->zr; + struct zoran *zr = video_drvdata(file); int bpp; int i; if (fmt->fmt.pix.pixelformat == V4L2_PIX_FMT_MJPEG) - return zoran_try_fmt_vid_out(file, fh, fmt); + return zoran_try_fmt_vid_out(file, __fh, fmt); for (i = 0; i < NUM_FORMATS; i++) if (zoran_formats[i].fourcc == fmt->fmt.pix.pixelformat) @@ -1226,8 +436,7 @@ static int zoran_try_fmt_vid_cap(struct file *file, void *__fh, static int zoran_s_fmt_vid_out(struct file *file, void *__fh, struct v4l2_format *fmt) { - struct zoran_fh *fh = __fh; - struct zoran *zr = fh->zr; + struct zoran *zr = video_drvdata(file); __le32 printformat = __cpu_to_le32(fmt->fmt.pix.pixelformat); struct zoran_jpg_settings settings; int res = 0; @@ -1239,12 +448,6 @@ static int zoran_s_fmt_vid_out(struct file *file, void *__fh, struct v4l2_format if (fmt->fmt.pix.pixelformat != V4L2_PIX_FMT_MJPEG) return -EINVAL; - if (fh->buffers.allocated) { - pci_err(zr->pci_dev, "VIDIOC_S_FMT - cannot change capture mode\n"); - res = -EBUSY; - return res; - } - if (!fmt->fmt.pix.height || !fmt->fmt.pix.width) return -EINVAL; @@ -1287,7 +490,11 @@ static int zoran_s_fmt_vid_out(struct file *file, void *__fh, struct v4l2_format /* it's ok, so set them */ zr->jpg_settings = settings; - map_mode_jpg(fh, fmt->type == V4L2_BUF_TYPE_VIDEO_OUTPUT); + if (fmt->type == V4L2_BUF_TYPE_VIDEO_OUTPUT) + zr->map_mode = ZORAN_MAP_MODE_JPG_REC; + else + zr->map_mode = ZORAN_MAP_MODE_JPG_PLAY; + zr->buffer_size = zoran_v4l2_calc_bufsize(&zr->jpg_settings); /* tell the user what we actually did */ @@ -1325,13 +532,6 @@ static int zoran_s_fmt_vid_cap(struct file *file, void *__fh, struct v4l2_format return -EINVAL; } - if ((fh->map_mode != ZORAN_MAP_MODE_RAW && fh->buffers.allocated) || - fh->buffers.active != ZORAN_FREE) { - pci_err(zr->pci_dev, "VIDIOC_S_FMT - cannot change capture mode\n"); - res = -EBUSY; - return res; - } - fmt->fmt.pix.pixelformat = zoran_formats[i].fourcc; if (fmt->fmt.pix.height > BUZ_MAX_HEIGHT) fmt->fmt.pix.height = BUZ_MAX_HEIGHT; @@ -1342,7 +542,7 @@ static int zoran_s_fmt_vid_cap(struct file *file, void *__fh, struct v4l2_format if (fmt->fmt.pix.width < BUZ_MIN_WIDTH) fmt->fmt.pix.width = BUZ_MIN_WIDTH; - map_mode_raw(fh); + zr->map_mode = ZORAN_MAP_MODE_RAW; res = zoran_v4l_set_format(zr, fmt->fmt.pix.width, fmt->fmt.pix.height, &zoran_formats[i]); if (res) @@ -1359,309 +559,6 @@ static int zoran_s_fmt_vid_cap(struct file *file, void *__fh, struct v4l2_format return res; } -static int zoran_streamoff(struct file *file, void *__fh, enum v4l2_buf_type type); - -static int zoran_reqbufs(struct file *file, void *__fh, struct v4l2_requestbuffers *req) -{ - struct zoran_fh *fh = __fh; - struct zoran *zr = fh->zr; - int res = 0; - - if (req->memory != V4L2_MEMORY_MMAP) { - pci_err(zr->pci_dev, "only MEMORY_MMAP capture is supported, not %d\n", req->memory); - return -EINVAL; - } - - if (req->count == 0) - return zoran_streamoff(file, fh, req->type); - - if (fh->buffers.allocated) { - pr_warn("%s: VIDIOC_REQBUFS - buffers already allocated\n", ZR_DEVNAME(zr)); - res = -EBUSY; - return res; - } - - if (fh->map_mode == ZORAN_MAP_MODE_RAW && - req->type == V4L2_BUF_TYPE_VIDEO_CAPTURE) { - /* control user input */ - if (req->count < 2) - req->count = 2; - if (req->count > v4l_nbufs) - req->count = v4l_nbufs; - - /* The next mmap will map the V4L buffers */ - map_mode_raw(fh); - fh->buffers.num_buffers = req->count; - - if (v4l_fbuffer_alloc(fh)) { - res = -ENOMEM; - return res; - } - } else if (fh->map_mode == ZORAN_MAP_MODE_JPG_REC || - fh->map_mode == ZORAN_MAP_MODE_JPG_PLAY) { - /* we need to calculate size ourselves now */ - if (req->count < 4) - req->count = 4; - if (req->count > jpg_nbufs) - req->count = jpg_nbufs; - - /* The next mmap will map the MJPEG buffers */ - map_mode_jpg(fh, req->type == V4L2_BUF_TYPE_VIDEO_OUTPUT); - fh->buffers.num_buffers = req->count; - zr->buffer_size = zoran_v4l2_calc_bufsize(&zr->jpg_settings); - - if (jpg_fbuffer_alloc(fh)) { - res = -ENOMEM; - return res; - } - } else { - pci_err(zr->pci_dev, "VIDIOC_REQBUFS - unknown type %d\n", req->type); - res = -EINVAL; - return res; - } - return res; -} - -static int zoran_querybuf(struct file *file, void *__fh, struct v4l2_buffer *buf) -{ - struct zoran_fh *fh = __fh; - - return zoran_v4l2_buffer_status(fh, buf, buf->index); -} - -static int zoran_qbuf(struct file *file, void *__fh, struct v4l2_buffer *buf) -{ - struct zoran_fh *fh = __fh; - struct zoran *zr = fh->zr; - int res = 0, codec_mode, buf_type; - - switch (fh->map_mode) { - case ZORAN_MAP_MODE_RAW: - if (buf->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) { - pci_err(zr->pci_dev, "VIDIOC_QBUF - invalid buf->type=%d for map_mode=%d\n", - buf->type, fh->map_mode); - res = -EINVAL; - return res; - } - - res = zoran_v4l_queue_frame(fh, buf->index); - if (res) - return res; - if (!zr->v4l_memgrab_active && fh->buffers.active == ZORAN_LOCKED) - zr36057_set_memgrab(zr, 1); - break; - - case ZORAN_MAP_MODE_JPG_REC: - case ZORAN_MAP_MODE_JPG_PLAY: - if (fh->map_mode == ZORAN_MAP_MODE_JPG_PLAY) { - buf_type = V4L2_BUF_TYPE_VIDEO_OUTPUT; - codec_mode = BUZ_MODE_MOTION_DECOMPRESS; - } else { - buf_type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - codec_mode = BUZ_MODE_MOTION_COMPRESS; - } - - if (buf->type != buf_type) { - pci_err(zr->pci_dev, "VIDIOC_QBUF - invalid buf->type=%d for map_mode=%d\n", - buf->type, fh->map_mode); - res = -EINVAL; - return res; - } - - res = zoran_jpg_queue_frame(fh, buf->index, codec_mode); - if (res != 0) - return res; - if (zr->codec_mode == BUZ_MODE_IDLE && - fh->buffers.active == ZORAN_LOCKED) - zr36057_enable_jpg(zr, codec_mode); - - break; - - default: - pci_err(zr->pci_dev, "VIDIOC_QBUF - unsupported type %d\n", buf->type); - res = -EINVAL; - break; - } - return res; -} - -static int zoran_dqbuf(struct file *file, void *__fh, struct v4l2_buffer *buf) -{ - struct zoran_fh *fh = __fh; - struct zoran *zr = fh->zr; - int res = 0, buf_type, num = -1; /* compiler borks here (?) */ - - switch (fh->map_mode) { - case ZORAN_MAP_MODE_RAW: - if (buf->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) { - pci_err(zr->pci_dev, "VIDIOC_QBUF - invalid buf->type=%d for map_mode=%d\n", - buf->type, fh->map_mode); - res = -EINVAL; - return res; - } - - num = zr->v4l_pend[zr->v4l_sync_tail & V4L_MASK_FRAME]; - if (file->f_flags & O_NONBLOCK && - zr->v4l_buffers.buffer[num].state != BUZ_STATE_DONE) { - res = -EAGAIN; - return res; - } - res = v4l_sync(fh, num); - if (res) - return res; - zr->v4l_sync_tail++; - res = zoran_v4l2_buffer_status(fh, buf, num); - break; - - case ZORAN_MAP_MODE_JPG_REC: - case ZORAN_MAP_MODE_JPG_PLAY: - { - struct zoran_sync bs; - - if (fh->map_mode == ZORAN_MAP_MODE_JPG_PLAY) - buf_type = V4L2_BUF_TYPE_VIDEO_OUTPUT; - else - buf_type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - - if (buf->type != buf_type) { - pci_err(zr->pci_dev, "VIDIOC_QBUF - invalid buf->type=%d for map_mode=%d\n", - buf->type, fh->map_mode); - res = -EINVAL; - return res; - } - - num = zr->jpg_pend[zr->jpg_que_tail & BUZ_MASK_FRAME]; - - if (file->f_flags & O_NONBLOCK && - zr->jpg_buffers.buffer[num].state != BUZ_STATE_DONE) { - res = -EAGAIN; - return res; - } - bs.frame = 0; /* suppress compiler warning */ - res = jpg_sync(fh, &bs); - if (res) - return res; - res = zoran_v4l2_buffer_status(fh, buf, bs.frame); - break; - } - - default: - pci_err(zr->pci_dev, "VIDIOC_DQBUF - unsupported type %d\n", buf->type); - res = -EINVAL; - break; - } - return res; -} - -static int zoran_streamon(struct file *file, void *__fh, enum v4l2_buf_type type) -{ - struct zoran_fh *fh = __fh; - struct zoran *zr = fh->zr; - int res = 0; - - switch (fh->map_mode) { - case ZORAN_MAP_MODE_RAW: /* raw capture */ - if (zr->v4l_buffers.active != ZORAN_ACTIVE || - fh->buffers.active != ZORAN_ACTIVE) { - res = -EBUSY; - return res; - } - - zr->v4l_buffers.active = fh->buffers.active = ZORAN_LOCKED; - - zr->v4l_sync_tail = zr->v4l_pend_tail; - if (!zr->v4l_memgrab_active && - zr->v4l_pend_head != zr->v4l_pend_tail) { - zr36057_set_memgrab(zr, 1); - } - break; - - case ZORAN_MAP_MODE_JPG_REC: - case ZORAN_MAP_MODE_JPG_PLAY: - /* what is the codec mode right now? */ - if (zr->jpg_buffers.active != ZORAN_ACTIVE || - fh->buffers.active != ZORAN_ACTIVE) { - res = -EBUSY; - return res; - } - - zr->jpg_buffers.active = fh->buffers.active = ZORAN_LOCKED; - - if (zr->jpg_que_head != zr->jpg_que_tail) { - /* Start the jpeg codec when the first frame is queued */ - jpeg_start(zr); - } - break; - - default: - pci_err(zr->pci_dev, "VIDIOC_STREAMON - invalid map mode %d\n", fh->map_mode); - res = -EINVAL; - break; - } - return res; -} - -static int zoran_streamoff(struct file *file, void *__fh, enum v4l2_buf_type type) -{ - struct zoran_fh *fh = __fh; - struct zoran *zr = fh->zr; - int i, res = 0; - unsigned long flags; - - switch (fh->map_mode) { - case ZORAN_MAP_MODE_RAW: /* raw capture */ - if (fh->buffers.active == ZORAN_FREE && - zr->v4l_buffers.active != ZORAN_FREE) { - res = -EPERM; /* stay off other's settings! */ - return res; - } - if (zr->v4l_buffers.active == ZORAN_FREE) - return res; - - spin_lock_irqsave(&zr->spinlock, flags); - /* unload capture */ - if (zr->v4l_memgrab_active) - zr36057_set_memgrab(zr, 0); - - for (i = 0; i < fh->buffers.num_buffers; i++) - zr->v4l_buffers.buffer[i].state = BUZ_STATE_USER; - fh->buffers = zr->v4l_buffers; - - zr->v4l_buffers.active = fh->buffers.active = ZORAN_FREE; - - zr->v4l_grab_seq = 0; - zr->v4l_pend_head = zr->v4l_pend_tail = 0; - zr->v4l_sync_tail = 0; - - spin_unlock_irqrestore(&zr->spinlock, flags); - - break; - - case ZORAN_MAP_MODE_JPG_REC: - case ZORAN_MAP_MODE_JPG_PLAY: - if (fh->buffers.active == ZORAN_FREE && - zr->jpg_buffers.active != ZORAN_FREE) { - res = -EPERM; /* stay off other's settings! */ - return res; - } - if (zr->jpg_buffers.active == ZORAN_FREE) - return res; - - res = jpg_qbuf(fh, -1, - (fh->map_mode == ZORAN_MAP_MODE_JPG_REC) ? - BUZ_MODE_MOTION_COMPRESS : - BUZ_MODE_MOTION_DECOMPRESS); - if (res) - return res; - break; - default: - pci_err(zr->pci_dev, "VIDIOC_STREAMOFF - invalid map mode %d\n", fh->map_mode); - res = -EINVAL; - break; - } - return res; -} - static int zoran_g_std(struct file *file, void *__fh, v4l2_std_id *std) { struct zoran *zr = video_drvdata(file); @@ -1675,11 +572,10 @@ static int zoran_s_std(struct file *file, void *__fh, v4l2_std_id std) struct zoran *zr = video_drvdata(file); int res = 0; - res = zoran_set_norm(zr, std); - if (res) - return res; + if (zr->running != ZORAN_MAP_MODE_NONE) + return -EBUSY; - res = wait_grab_pending(zr); + res = zoran_set_norm(zr, std); return res; } @@ -1713,12 +609,10 @@ static int zoran_s_input(struct file *file, void *__fh, unsigned int input) struct zoran *zr = video_drvdata(file); int res; - res = zoran_set_input(zr, input); - if (res) - return res; + if (zr->running != ZORAN_MAP_MODE_NONE) + return -EBUSY; - /* Make sure the changes come into effect */ - res = wait_grab_pending(zr); + res = zoran_set_input(zr, input); return res; } @@ -1730,11 +624,12 @@ static int zoran_enum_output(struct file *file, void *__fh, outp->index = 0; outp->type = V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY; + outp->std = V4L2_STD_NTSC | V4L2_STD_PAL | V4L2_STD_SECAM; + outp->capabilities = V4L2_OUT_CAP_STD; strscpy(outp->name, "Autodetect", sizeof(outp->name)); return 0; } - static int zoran_g_output(struct file *file, void *__fh, unsigned int *output) { *output = 0; @@ -1749,19 +644,14 @@ static int zoran_s_output(struct file *file, void *__fh, unsigned int output) return 0; } - /* cropping (sub-frame capture) */ static int zoran_g_selection(struct file *file, void *__fh, struct v4l2_selection *sel) { - struct zoran_fh *fh = __fh; - struct zoran *zr = fh->zr; + struct zoran *zr = video_drvdata(file); if (sel->type != V4L2_BUF_TYPE_VIDEO_OUTPUT && - sel->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) - return -EINVAL; - - if (fh->map_mode == ZORAN_MAP_MODE_RAW) { - pci_err(zr->pci_dev, "VIDIOC_G_SELECTION - subcapture only supported for compressed capture\n"); + sel->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) { + pci_err(zr->pci_dev, "%s invalid combinaison\n", __func__); return -EINVAL; } @@ -1790,8 +680,7 @@ static int zoran_g_selection(struct file *file, void *__fh, struct v4l2_selectio static int zoran_s_selection(struct file *file, void *__fh, struct v4l2_selection *sel) { - struct zoran_fh *fh = __fh; - struct zoran *zr = fh->zr; + struct zoran *zr = video_drvdata(file); struct zoran_jpg_settings settings; int res; @@ -1805,18 +694,13 @@ static int zoran_s_selection(struct file *file, void *__fh, struct v4l2_selectio if (sel->target != V4L2_SEL_TGT_CROP) return -EINVAL; - if (fh->map_mode == ZORAN_MAP_MODE_RAW) { + if (zr->map_mode == ZORAN_MAP_MODE_RAW) { pci_err(zr->pci_dev, "VIDIOC_S_SELECTION - subcapture only supported for compressed capture\n"); return -EINVAL; } settings = zr->jpg_settings; - if (fh->buffers.allocated) { - pci_err(zr->pci_dev, "VIDIOC_S_SELECTION - cannot change settings while active\n"); - return -EBUSY; - } - /* move into a form that we understand */ settings.img_x = sel->r.left; settings.img_y = sel->r.top; @@ -1833,260 +717,6 @@ static int zoran_s_selection(struct file *file, void *__fh, struct v4l2_selectio return res; } -static __poll_t zoran_poll(struct file *file, poll_table *wait) -{ - struct zoran_fh *fh = file->private_data; - struct zoran *zr = fh->zr; - __poll_t res = v4l2_ctrl_poll(file, wait); - int frame; - unsigned long flags; - - /* we should check whether buffers are ready to be synced on - * (w/o waits - O_NONBLOCK) here - * if ready for read (sync), return EPOLLIN|EPOLLRDNORM, - * if ready for write (sync), return EPOLLOUT|EPOLLWRNORM, - * if error, return EPOLLERR, - * if no buffers queued or so, return EPOLLNVAL - */ - - switch (fh->map_mode) { - case ZORAN_MAP_MODE_RAW: - poll_wait(file, &zr->v4l_capq, wait); - frame = zr->v4l_pend[zr->v4l_sync_tail & V4L_MASK_FRAME]; - - spin_lock_irqsave(&zr->spinlock, flags); - pci_dbg(zr->pci_dev, "%s() raw - active=%c, sync_tail=%lu/%c, pend_tail=%lu, pend_head=%lu\n", - __func__, - "FAL"[fh->buffers.active], zr->v4l_sync_tail, - "UPMD"[zr->v4l_buffers.buffer[frame].state], - zr->v4l_pend_tail, zr->v4l_pend_head); - /* Process is the one capturing? */ - if (fh->buffers.active != ZORAN_FREE && - /* Buffer ready to DQBUF? */ - zr->v4l_buffers.buffer[frame].state == BUZ_STATE_DONE) - res |= EPOLLIN | EPOLLRDNORM; - spin_unlock_irqrestore(&zr->spinlock, flags); - - break; - - case ZORAN_MAP_MODE_JPG_REC: - case ZORAN_MAP_MODE_JPG_PLAY: - poll_wait(file, &zr->jpg_capq, wait); - frame = zr->jpg_pend[zr->jpg_que_tail & BUZ_MASK_FRAME]; - - spin_lock_irqsave(&zr->spinlock, flags); - pci_dbg(zr->pci_dev, "%s() jpg - active=%c, que_tail=%lu/%c, que_head=%lu, dma=%lu/%lu\n", - __func__, - "FAL"[fh->buffers.active], zr->jpg_que_tail, - "UPMD"[zr->jpg_buffers.buffer[frame].state], - zr->jpg_que_head, zr->jpg_dma_tail, zr->jpg_dma_head); - if (fh->buffers.active != ZORAN_FREE && - zr->jpg_buffers.buffer[frame].state == BUZ_STATE_DONE) { - if (fh->map_mode == ZORAN_MAP_MODE_JPG_REC) - res |= EPOLLIN | EPOLLRDNORM; - else - res |= EPOLLOUT | EPOLLWRNORM; - } - spin_unlock_irqrestore(&zr->spinlock, flags); - - break; - - default: - pci_err(zr->pci_dev, "%s - internal error, unknown map_mode=%d\n", __func__, fh->map_mode); - res |= EPOLLERR; - } - - return res; -} - -/* - * This maps the buffers to user space. - * - * Depending on the state of fh->map_mode - * the V4L or the MJPEG buffers are mapped - * per buffer or all together - * - * Note that we need to connect to some - * unmap signal event to unmap the de-allocate - * the buffer accordingly (zoran_vm_close()) - */ - -static void zoran_vm_open(struct vm_area_struct *vma) -{ - struct zoran_mapping *map = vma->vm_private_data; - - atomic_inc(&map->count); -} - -static void zoran_vm_close(struct vm_area_struct *vma) -{ - struct zoran_mapping *map = vma->vm_private_data; - struct zoran_fh *fh = map->fh; - struct zoran *zr = fh->zr; - int i; - - pci_info(zr->pci_dev, "%s - munmap(%s)\n", ZR_DEVNAME(zr), mode_name(fh->map_mode)); - - for (i = 0; i < fh->buffers.num_buffers; i++) { - if (fh->buffers.buffer[i].map == map) - fh->buffers.buffer[i].map = NULL; - } - kfree(map); - - /* Any buffers still mapped? */ - for (i = 0; i < fh->buffers.num_buffers; i++) { - if (fh->buffers.buffer[i].map) - return; - } - - pci_info(zr->pci_dev, "%s - free %s buffers\n", __func__, mode_name(fh->map_mode)); - - if (fh->map_mode == ZORAN_MAP_MODE_RAW) { - if (fh->buffers.active != ZORAN_FREE) { - unsigned long flags; - - spin_lock_irqsave(&zr->spinlock, flags); - zr36057_set_memgrab(zr, 0); - zr->v4l_buffers.allocated = 0; - zr->v4l_buffers.active = fh->buffers.active = ZORAN_FREE; - spin_unlock_irqrestore(&zr->spinlock, flags); - } - v4l_fbuffer_free(fh); - } else { - if (fh->buffers.active != ZORAN_FREE) { - jpg_qbuf(fh, -1, zr->codec_mode); - zr->jpg_buffers.allocated = 0; - zr->jpg_buffers.active = fh->buffers.active = ZORAN_FREE; - } - jpg_fbuffer_free(fh); - } -} - -static const struct vm_operations_struct zoran_vm_ops = { - .open = zoran_vm_open, - .close = zoran_vm_close, -}; - -static int zoran_mmap(struct file *file, struct vm_area_struct *vma) -{ - struct zoran_fh *fh = file->private_data; - struct zoran *zr = fh->zr; - unsigned long size = (vma->vm_end - vma->vm_start); - unsigned long offset = vma->vm_pgoff << PAGE_SHIFT; - int i, j; - unsigned long page, start = vma->vm_start, todo, pos, fraglen; - int first, last; - struct zoran_mapping *map; - int res = 0; - - pci_info(zr->pci_dev, "%s(%s) of 0x%08lx-0x%08lx (size=%lu)\n", __func__, - mode_name(fh->map_mode), vma->vm_start, vma->vm_end, size); - - if (!(vma->vm_flags & VM_SHARED) || !(vma->vm_flags & VM_READ) || - !(vma->vm_flags & VM_WRITE)) { - pci_err(zr->pci_dev, "%s - no MAP_SHARED/PROT_{READ,WRITE} given\n", __func__); - return -EINVAL; - } - - if (!fh->buffers.allocated) { - pci_err(zr->pci_dev, "%s(%s) - buffers not yet allocated\n", __func__, mode_name(fh->map_mode)); - res = -ENOMEM; - return res; - } - - first = offset / zr->buffer_size; - last = first - 1 + size / zr->buffer_size; - if (offset % zr->buffer_size != 0 || - size % zr->buffer_size != 0 || first < 0 || - last < 0 || first >= fh->buffers.num_buffers || - last >= zr->buffer_size) { - pci_err(zr->pci_dev, "%s(%s) - offset=%lu or size=%lu invalid for bufsize=%d and numbufs=%d\n", - __func__, mode_name(fh->map_mode), offset, size, - zr->buffer_size, - fh->buffers.num_buffers); - res = -EINVAL; - return res; - } - - /* Check if any buffers are already mapped */ - for (i = first; i <= last; i++) { - if (fh->buffers.buffer[i].map) { - pci_err(zr->pci_dev, "%s(%s) - buffer %d already mapped\n", __func__, mode_name(fh->map_mode), i); - res = -EBUSY; - return res; - } - } - - /* map these buffers */ - map = kmalloc(sizeof(*map), GFP_KERNEL); - if (!map) { - res = -ENOMEM; - return res; - } - map->fh = fh; - atomic_set(&map->count, 1); - - vma->vm_ops = &zoran_vm_ops; - vma->vm_flags |= VM_DONTEXPAND; - vma->vm_private_data = map; - - if (fh->map_mode == ZORAN_MAP_MODE_RAW) { - for (i = first; i <= last; i++) { - todo = size; - if (todo > zr->buffer_size) - todo = zr->buffer_size; - page = fh->buffers.buffer[i].v4l.fbuffer_phys; - if (remap_pfn_range(vma, start, page >> PAGE_SHIFT, - todo, PAGE_SHARED)) { - pci_err(zr->pci_dev, "%s(V4L) - remap_pfn_range failed\n", __func__); - res = -EAGAIN; - return res; - } - size -= todo; - start += todo; - fh->buffers.buffer[i].map = map; - if (size == 0) - break; - } - } else { - for (i = first; i <= last; i++) { - for (j = 0; - j < zr->buffer_size / PAGE_SIZE; - j++) { - fraglen = - (le32_to_cpu(fh->buffers.buffer[i].jpg. - frag_tab[2 * j + 1]) & ~1) << 1; - todo = size; - if (todo > fraglen) - todo = fraglen; - pos = - le32_to_cpu(fh->buffers. - buffer[i].jpg.frag_tab[2 * j]); - /* should just be pos on i386 */ - page = virt_to_phys(bus_to_virt(pos)) - >> PAGE_SHIFT; - if (remap_pfn_range(vma, start, page, - todo, PAGE_SHARED)) { - pci_err(zr->pci_dev, "%s(V4L) - remap_pfn_range failed\n", __func__); - res = -EAGAIN; - return res; - } - size -= todo; - start += todo; - if (size == 0) - break; - if (le32_to_cpu(fh->buffers.buffer[i].jpg. - frag_tab[2 * j + 1]) & 1) - break; /* was last fragment */ - } - fh->buffers.buffer[i].map = map; - if (size == 0) - break; - } - } - return res; -} - static int zoran_g_parm(struct file *file, void *priv, struct v4l2_streamparm *parm) { if (parm->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) @@ -2113,12 +743,14 @@ static const struct v4l2_ioctl_ops zoran_ioctl_ops = { .vidioc_s_output = zoran_s_output,*/ .vidioc_g_std = zoran_g_std, .vidioc_s_std = zoran_s_std, - .vidioc_reqbufs = zoran_reqbufs, - .vidioc_querybuf = zoran_querybuf, - .vidioc_qbuf = zoran_qbuf, - .vidioc_dqbuf = zoran_dqbuf, - .vidioc_streamon = zoran_streamon, - .vidioc_streamoff = zoran_streamoff, + .vidioc_create_bufs = vb2_ioctl_create_bufs, + .vidioc_reqbufs = vb2_ioctl_reqbufs, + .vidioc_querybuf = vb2_ioctl_querybuf, + .vidioc_qbuf = vb2_ioctl_qbuf, + .vidioc_dqbuf = vb2_ioctl_dqbuf, + .vidioc_expbuf = vb2_ioctl_expbuf, + .vidioc_streamon = vb2_ioctl_streamon, + .vidioc_streamoff = vb2_ioctl_streamoff, .vidioc_enum_fmt_vid_cap = zoran_enum_fmt_vid_cap, /* .vidioc_enum_fmt_vid_out = zoran_enum_fmt_vid_out,*/ .vidioc_g_fmt_vid_cap = zoran_g_fmt_vid_cap, @@ -2133,11 +765,13 @@ static const struct v4l2_ioctl_ops zoran_ioctl_ops = { static const struct v4l2_file_operations zoran_fops = { .owner = THIS_MODULE, - .open = zoran_open, - .release = zoran_close, .unlocked_ioctl = video_ioctl2, - .mmap = zoran_mmap, - .poll = zoran_poll, + .open = v4l2_fh_open, + .release = vb2_fop_release, + .read = vb2_fop_read, + .write = vb2_fop_write, + .mmap = vb2_fop_mmap, + .poll = vb2_fop_poll, }; const struct video_device zoran_template = { @@ -2161,11 +795,13 @@ static int zr_vb2_queue_setup(struct vb2_queue *vq, unsigned int *nbuffers, unsi if (*nbuffers < vq->min_buffers_needed) *nbuffers = vq->min_buffers_needed; - if (*nplanes) + if (*nplanes) { if (sizes[0] < size) return -EINVAL; else return 0; + } + *nplanes = 1; sizes[0] = size; @@ -2191,7 +827,10 @@ static int zr_vb2_prepare(struct vb2_buffer *vb) { struct zoran *zr = vb2_get_drv_priv(vb->vb2_queue); + if (vb2_plane_size(vb, 0) < zr->buffer_size) + return -EINVAL; zr->prepared++; + return 0; } From patchwork Mon Sep 21 10:20:24 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin LABBE X-Patchwork-Id: 11789065 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 16BB059D for ; Mon, 21 Sep 2020 10:21:28 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id F0C9220EDD for ; Mon, 21 Sep 2020 10:21:27 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="cqXso1We" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727054AbgIUKV0 (ORCPT ); Mon, 21 Sep 2020 06:21:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59258 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727036AbgIUKVU (ORCPT ); Mon, 21 Sep 2020 06:21:20 -0400 Received: from mail-wm1-x344.google.com (mail-wm1-x344.google.com [IPv6:2a00:1450:4864:20::344]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EAF90C0613D1 for ; Mon, 21 Sep 2020 03:21:19 -0700 (PDT) Received: by mail-wm1-x344.google.com with SMTP id b79so12014025wmb.4 for ; Mon, 21 Sep 2020 03:21:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=S9MzB7+azPxcpMxlGiEMSs7z6RlW8asusze1qBJiaHc=; b=cqXso1WeXMsOQTSMJsnRpwW6vw8vb52dEKHkPuvZGM4VKop5MTyriQZCa2VAmgKXOr 6c1e4BDDBKbJYdmtHs7EAJGjgrXlmHeffln/7gNXCUsNiyp/6bnDDzABtDtvgm83WBbu wpeVMsoLT2gdb7UfQkoUQ+K0wPFRtw0xbm6wokBSi3Zrb1vr1VOl0O94XHk98PWCgDnx HdNgaO/cwSEPz6RWMBmR8iMS3WJt8dd5N2QRjE1KkALT17HYzXNJug5lQ14x3Kcx3RF2 dWxYAgtv5XGlFBpF/dOyX+MNmI88hbCjsdHMzpXpyHEVYOfX7Swy8MPkhGJHhh31ycDS Rxog== 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; bh=S9MzB7+azPxcpMxlGiEMSs7z6RlW8asusze1qBJiaHc=; b=fXXCSUadq54FgowD7XOKFjsiPv3S4iBjfF52S74GOWtIlxqZ9be2X5cplKwwt2tAYX Lfi8k9DHLPwMEXx3WwqlzL5PKfUPkoaUBbyEsvlzMmkerlFDfPCvKo0w+EvChcUvGdj5 Ewk3HGeJjX28uzX+nf1HkWIJKI+8ZiV24rErAKP75q+rA0Ksxi5xju9M7s09SZyEr3zt b/WFYR3JB+VBMxoWfbztdtiLul15/jNUIZjQXeLdGeea0n3Lz83bJ87PDofAwKZdZIMH SDXSfHP/ZKwKbwk7DYhkK740VJ1YpQ5wqpk+fY3EVadVr1Z74cb62bcTlpobX7NGREHr xLAg== X-Gm-Message-State: AOAM530CKHO7t4F5AJ0c34For7Fz5MFkUODpScyprDxoflYOdO/QYcn0 3uwBcNZhB30+hLQUj6S1RtZtNUj16u8xFg== X-Google-Smtp-Source: ABdhPJwLLiqE0xL9dMMevVsNtAO5akGgDxGF9LqBxoG4mXvA7KUeZ9nz/B8s78vAAAQzdhd3oK38Ig== X-Received: by 2002:a7b:c317:: with SMTP id k23mr28413581wmj.44.1600683678660; Mon, 21 Sep 2020 03:21:18 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.21.17 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:21:18 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 49/49] staging: media: zoran: update TODO Date: Mon, 21 Sep 2020 10:20:24 +0000 Message-Id: <1600683624-5863-50-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Update the TODO of the zoran driver Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/TODO | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/drivers/staging/media/zoran/TODO b/drivers/staging/media/zoran/TODO index 54464095d0d7..6992540d3e53 100644 --- a/drivers/staging/media/zoran/TODO +++ b/drivers/staging/media/zoran/TODO @@ -1,4 +1,19 @@ -The zoran driver is marked deprecated. It will be removed -around May 2019 unless someone is willing to update this -driver to the latest V4L2 frameworks (especially the vb2 -framework). + +How to test the zoran driver: +- RAW capture + mplayer tv:///dev/video0 -tv driver=v4l2 + +- MJPEG capture (compression) + mplayer tv:///dev/video0 -tv driver=v4l2:outfmt=mjpeg + TODO: need two test for both Dcim path + +- MJPEG play (decompression) + ffmpeg -i test.avi -vcodec mjpeg -an -f v4l2 /dev/video0 + Note: only recent ffmpeg has the ability of sending non-raw video via v4l2 + + The original way of sending video was via mplayer vo_zr/vo_zr2, but it does not compile + anymore and is a dead end (usage of some old private ffmpeg structures). + +TODO +- fix the v4l compliance "TRY_FMT cannot handle an invalid pixelformat" +- Filter JPEG data to made output work