From patchwork Fri Sep 25 18:30: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: 255612 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 328AEC4727F for ; Fri, 25 Sep 2020 18:31:37 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id DD692235FA for ; Fri, 25 Sep 2020 18:31:36 +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="sBlYShu+" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729814AbgIYSbg (ORCPT ); Fri, 25 Sep 2020 14:31:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35030 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729771AbgIYSbf (ORCPT ); Fri, 25 Sep 2020 14:31:35 -0400 Received: from mail-pg1-x544.google.com (mail-pg1-x544.google.com [IPv6:2607:f8b0:4864:20::544]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B313FC0613CE for ; Fri, 25 Sep 2020 11:31:35 -0700 (PDT) Received: by mail-pg1-x544.google.com with SMTP id 7so3283164pgm.11 for ; Fri, 25 Sep 2020 11:31: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=Z5xy1HmEK3Cb2cGuOZNBEue37qSrHj+Vnq/OwfaPORg=; b=sBlYShu+9vN6ayWh4BrzZFB3L8UBBVdI0bE+jUCCnUWfYdR0Dfg9rRQ+jLtIUsVd3W NWIUbQROcUaoftLHhbGfzJi5Rg/eJtmLfrYcfS4X05/YqwKtVXCVikqj+/hQT6QBFoAg ollSSj2k+OMDAnEUAMH1GJw2W/ijQHZGchwJj3jUIVyQL+rLR5y1CLy1+uJXBAy0AtP9 W+1E0pWNzJp23zMt2nAXk/J3tCSXHYpvKzZMeURXPZPxgk8RyCBHqU70Gd3CCoq76WRa xlNgbHuw62gQekcuNM8L38Mq6kYGTZMHiIyOjyXSy5RTNjEqf8yBp2h/A9zLm2Roe+Rs I29w== 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=byL0LFmBAYnExwdgPDu6Y2Zlv9oYb1XtK4/7UpOz4KsR0yQc48Wvr3IZBgO3819M5R ita9+risIZ24X+wlpHqGGspYZD83ZdOUO4I42nkXoU3H8oyxuREYdsRKQi9PE0Hupn5G tKw4cZoe8IxNCK9gDsrosrlCUpdmddEVvCBSgr6Qn3aT0nPhPs5N7jgl3HRnp0WWCpGt HvwyWl+mXAcj36H258tWrWZqW6DAn/Ixdk1fbe+t/6LZnwfrInProh+oOxk/nomq9H7u 2JMIj/RvJ2XxtqeJZnRBAdaT2acqGyJa6XTHx86WFx7BdE7N38gmYo4GLRwgFSDl1+dr tRTg== X-Gm-Message-State: AOAM531Z7MCxWRwIeNFKr/NmtsOR9DgEU96fTE5gUvU4ak924M385wK/ rKDUvBCHUnLtBzX52l/TXouSmQ== X-Google-Smtp-Source: ABdhPJwdn4XhS1Fuqdi3Nmv5dQHDo9mWrn2Zwo9AuP7EkwR9dIm+/lhIaXMse5TDA/s6sztjt+48wg== X-Received: by 2002:a65:6104:: with SMTP id z4mr250114pgu.184.1601058695275; Fri, 25 Sep 2020 11:31:35 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id r16sm2554546pjo.19.2020.09.25.11.31.30 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 25 Sep 2020 11:31:34 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, mchehab@kernel.org, hverkuil@xs4all.nl, laurent.pinchart@ideasonboard.com Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC v2 03/47] staging: media: zoran: datasheet is no longer available from zoran.com Date: Fri, 25 Sep 2020 18:30:13 +0000 Message-Id: <1601058657-14042-4-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1601058657-14042-1-git-send-email-clabbe@baylibre.com> References: <1601058657-14042-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 Fri Sep 25 18:30: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: 255611 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 97F42C4727F for ; Fri, 25 Sep 2020 18:31:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 14135235FA for ; Fri, 25 Sep 2020 18:31: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="goXp0cQe" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729831AbgIYSbu (ORCPT ); Fri, 25 Sep 2020 14:31:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35074 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729822AbgIYSbt (ORCPT ); Fri, 25 Sep 2020 14:31:49 -0400 Received: from mail-pg1-x543.google.com (mail-pg1-x543.google.com [IPv6:2607:f8b0:4864:20::543]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BAC49C0613D3 for ; Fri, 25 Sep 2020 11:31:49 -0700 (PDT) Received: by mail-pg1-x543.google.com with SMTP id 197so3293415pge.8 for ; Fri, 25 Sep 2020 11:31: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=UkASDZ+EoW5yLxxyokbShueZVjU0CI78zVzwUXWhixk=; b=goXp0cQe/XyxHZ4DvDG7f7Rvp25JXz8po2/38nmNh7bPOAl5VKyunfQCt9me/bIQa/ XzyxQkbMvH4qIapl/mNRErbOTFJnsHKcfYSY0bKXprnbq9FsAfnfJ5DW3sfXiy4Lfx9E Feu9j/dHr2CgTnY43IoXZ6f/ZXquO3QvajNCxboFVgmsK9tlDzaAk8Lcci2bO3ikuU7u ba9SQeR0FuERtovw0go1R4NDH/9SrA1wNxH4GRFp4aKkcsO8yCfe5H26zbEOqMwOXy9W ATvdxF35PNdt2ZZmTTxCUMaRi+ISGZsevxb7Z5M8OLKwaJhIjH5wReyYpBTHuf57r5cQ w2BA== 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=KYrDZl1pjLmP11MqYLh6PB9wncNmhLKDlihxfhI2XgiZTeYHlMlPSe5NxkuPAavO2G cViSCHXHjRIcM1FSDvjc8/trjmM+45vhQOh53NMFrqf+OgLDz4NvOsj2oLWknzALFYIe cqxrjonc2wM80CjSCWnSsQH3ar4AMR6eSt8Ti7DKuNKi+UsQV3MBQSpqwAS2l6dywqCM Le6Zj5/GNU7XfPVqvWJiMHy3BilejIf/C1jak/544i3rowPRSPMHao2+bxRIp8YL/Gcs fRqcHa/OdQH7yBWB39xIKwLGrE4+wtjyppJHexBASdrGTPIOjJEghmClXJ3UPr0j3NOB 9vFA== X-Gm-Message-State: AOAM533TXJQJJkaXHubFjS/HXdB5NRAo23INvpq9hQp4EMmQulC5HPRI HdpoizyjxVACB4Mv8ztxdjgWZQ== X-Google-Smtp-Source: ABdhPJxqWUyPZSvOjFtQBI0GURh6h1on58i7zwBGMEuiaWitcKqgq12q8D0Nj9mo6vpY9ekVPH+ZMg== X-Received: by 2002:a63:e709:: with SMTP id b9mr194524pgi.425.1601058708004; Fri, 25 Sep 2020 11:31:48 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id r16sm2554546pjo.19.2020.09.25.11.31.41 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 25 Sep 2020 11:31:47 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, mchehab@kernel.org, hverkuil@xs4all.nl, laurent.pinchart@ideasonboard.com Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC v2 05/47] staging: media: zoran: fix checkpatch issue Date: Fri, 25 Sep 2020 18:30:15 +0000 Message-Id: <1601058657-14042-6-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1601058657-14042-1-git-send-email-clabbe@baylibre.com> References: <1601058657-14042-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 Fri Sep 25 18:30: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: 255610 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 65EF2C47425 for ; Fri, 25 Sep 2020 18:32:08 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 01CCF23119 for ; Fri, 25 Sep 2020 18:32:07 +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="euCaO8V9" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729857AbgIYScH (ORCPT ); Fri, 25 Sep 2020 14:32:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35128 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729846AbgIYScH (ORCPT ); Fri, 25 Sep 2020 14:32:07 -0400 Received: from mail-pf1-x444.google.com (mail-pf1-x444.google.com [IPv6:2607:f8b0:4864:20::444]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B7F23C0613D3 for ; Fri, 25 Sep 2020 11:32:06 -0700 (PDT) Received: by mail-pf1-x444.google.com with SMTP id l126so4002899pfd.5 for ; Fri, 25 Sep 2020 11:32: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=zLLV9JYO0YyYUfB1AfQEKLRQMALDVT42UYn/cxzBn8g=; b=euCaO8V9TMnLY2uMHydLam1JEgG9HK7EF7F+U2kIHsgSysbprajL3PqzKwZEf49+9s y3fVvdd3SMrhBGSq/6mMceYOjWE6zYqOYDbcf9IlDJzEeiEPQa8gxHNPNkQA5aBoMT8D 8pVdu5dTydF7mtF0oNsas+EYwLEtsfqscIRxx1Z8JN2spZg7urMd9U4WB2E//5xgnZUd H4FkkurtzlXmilFLmjpK/lC5OiGBpXMDmg3AQzuMnt4/YdLLpbzxCX9I6qqAmw9B9op9 41DEE3xcEDteFhvqBsnjqKqYKlplRxhiBfhY8NVdFRlnzNt2PWxVI/JEYs5lG3+6tSY5 Ri6Q== 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=zLLV9JYO0YyYUfB1AfQEKLRQMALDVT42UYn/cxzBn8g=; b=lYh7rBxLBOXrvl2bk7S0KrfFYTRSV8czb6UuVnu7/x0ReVFs57cXAEzLR7XyU6TF6X nVy4tI4OZkCslUNrvG8bQR7FC0pXN9ueH67ArKXxTwS7MsJ8QSr7GI1+aBrHGbhOa1Z3 3Bxev4Yx6WZogtPWzxb8F1lrF7G/jzLbsOm2AwOjDJekBJdqZhF676UNCJtOUryNzgqI A92Xa76/XOPUFFtf0TJc6x1CamCOFBwDELjlTwBPYSxFONr0jvSVmX3BKzTATED7yRBM x84kkNGCU7EX/XU47IK8qp8JWe58O4yShXJYTc8pEUQkxvmcgte8OS31znmqptFphPrw eZqw== X-Gm-Message-State: AOAM533lguyGpqpVwPDGn3FiqGx/hZsSOzinAqXem3CO44kMFAywzAsi ST3ZdU9yAPZSjdKB7gNn6Nkq7g== X-Google-Smtp-Source: ABdhPJwdkNSfcwkguQ6JpPVodIK20stGhqq99sH2iU1pZTniBawx4FWjmc5MoeEN7yaQnAr9SdtgPQ== X-Received: by 2002:a63:ce4e:: with SMTP id r14mr192733pgi.353.1601058725655; Fri, 25 Sep 2020 11:32:05 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id r16sm2554546pjo.19.2020.09.25.11.32.00 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 25 Sep 2020 11:32:05 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, mchehab@kernel.org, hverkuil@xs4all.nl, laurent.pinchart@ideasonboard.com Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC v2 08/47] staging: media: zoran: convert dprintk warn Date: Fri, 25 Sep 2020 18:30:18 +0000 Message-Id: <1601058657-14042-9-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1601058657-14042-1-git-send-email-clabbe@baylibre.com> References: <1601058657-14042-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 27a79fffb01d..d0b93141df5b 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -938,19 +938,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; @@ -1378,11 +1373,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 806c7285a5e3..f090ee92f0c8 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 @@ -1300,10 +1297,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 */ @@ -1422,8 +1416,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 f23e9c063919..aed2ac82bfee 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; } @@ -2294,9 +2279,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 Fri Sep 25 18:30: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: 255609 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E5169C47423 for ; Fri, 25 Sep 2020 18:32:15 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9106223119 for ; Fri, 25 Sep 2020 18:32: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="vj2M2wWW" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729868AbgIYScM (ORCPT ); Fri, 25 Sep 2020 14:32:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35146 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729741AbgIYScM (ORCPT ); Fri, 25 Sep 2020 14:32:12 -0400 Received: from mail-pg1-x544.google.com (mail-pg1-x544.google.com [IPv6:2607:f8b0:4864:20::544]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 06EC6C0613D3 for ; Fri, 25 Sep 2020 11:32:12 -0700 (PDT) Received: by mail-pg1-x544.google.com with SMTP id u24so3323131pgi.1 for ; Fri, 25 Sep 2020 11:32: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=8qP8UftSsHxdL7ED5s6PZmr6rYJeJgUnKrylhIp3fxM=; b=vj2M2wWW93RKQ0hijxIIb6nHC2viexpsQjfLe113yiJ/ryesi5Z8T2pk6HDumXnLvi wKcUsTtgXt2/Yfbl3g5UH5RWMem/Oo5xP2oSUq87pv28/0MjO1o3e5WKashLMOLqK811 ZuX0b3ofILzt1LOZsf3Yu66C8oS/RLipudpd/PQ2U74qRMWsjms7HIUtzi35StIiWqWc bWdPnxqIek36zgszaKsRxN9I7DR0VBXxzptaR3SJy8bD5A8v78qf377cf4MTC/FfUPwQ wh7/XaKe4QMq0fhAmn5jJffmngi1ZO12SFPTCr+LWthP96g/oKZiVP+RCiBIMfPvmzOK X7Fg== 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=8qP8UftSsHxdL7ED5s6PZmr6rYJeJgUnKrylhIp3fxM=; b=b9/IQWOEk66PE+iHS1vpI4pRBHG/S9xRkUhxYzqOo6Zd07IxGLkYYHlk5rRfBcmRdf H5AvVt4d44d03jVVSkOhD8a2jpNYNCXj0PHPR44W4MVehLdH30DcLhw9CmXhOC4+8P9m gIreqo80ZIaG084WT1HvGUI+ahG1wWQEwttWqmGxm6KetiCF4RzlOhAyBp+8SBzkBbI3 YP2E6zLrBIk00/IKFO3K9gi8SahsvpIEF19hMmkZ6R43YzYUhF5eihKske41hVWKbV+B QTWc+w94/ZRScKFLt+aFyBZBrT5oFqRAnD5HhIkcLRD29inG8V3muwVIB3KGWBg4l4NA yo0g== X-Gm-Message-State: AOAM530+SVhd9zmzJucm5ZH91uy++ZNLZQn0S49NbwEhLTx7QijhQtPq fYSTja4gHMf/+h0W6XtLNR0tUg== X-Google-Smtp-Source: ABdhPJxGMunF/We/tvyk0ZOuFj4qIqvoH4wFLTM4jmkfNAeqcoCqyCo9DmOb82dgCHXYHwx87P72Rg== X-Received: by 2002:a65:5a0b:: with SMTP id y11mr194992pgs.395.1601058731455; Fri, 25 Sep 2020 11:32:11 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id r16sm2554546pjo.19.2020.09.25.11.32.06 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 25 Sep 2020 11:32:11 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, mchehab@kernel.org, hverkuil@xs4all.nl, laurent.pinchart@ideasonboard.com Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC v2 09/47] staging: media: zoran: convert dprintk info to pci_info Date: Fri, 25 Sep 2020 18:30:19 +0000 Message-Id: <1601058657-14042-10-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1601058657-14042-1-git-send-email-clabbe@baylibre.com> References: <1601058657-14042-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 d0b93141df5b..f2387f4906c0 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -892,9 +892,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); @@ -904,10 +904,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; @@ -1140,18 +1137,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) { @@ -1215,14 +1206,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__); @@ -1238,7 +1228,7 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent) 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); @@ -1294,9 +1284,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) @@ -1365,12 +1353,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 f090ee92f0c8..013d44801e68 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 || @@ -948,8 +940,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; } @@ -978,8 +969,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: @@ -1006,7 +996,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; } } @@ -1128,8 +1118,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 aed2ac82bfee..226a99d002c0 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; } @@ -2390,8 +2386,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) @@ -2405,8 +2400,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) { @@ -2446,10 +2440,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 Fri Sep 25 18:30: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: 255608 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 18C3BC4741F for ; Fri, 25 Sep 2020 18:32:34 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B9D0A22211 for ; Fri, 25 Sep 2020 18:32: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="EkKxpyyC" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729913AbgIYScb (ORCPT ); Fri, 25 Sep 2020 14:32:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35186 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729890AbgIYScX (ORCPT ); Fri, 25 Sep 2020 14:32:23 -0400 Received: from mail-pg1-x542.google.com (mail-pg1-x542.google.com [IPv6:2607:f8b0:4864:20::542]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A1817C0613CE for ; Fri, 25 Sep 2020 11:32:23 -0700 (PDT) Received: by mail-pg1-x542.google.com with SMTP id o25so3324978pgm.0 for ; Fri, 25 Sep 2020 11:32:23 -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=4I9TKrK8mQBfL74FGJ3Y6iU/hZdg+xeVUjtNAbqFIqo=; b=EkKxpyyCRQPfwk6tXtTWIusqt+JYTltBhuFOOWuz4kGG9Wl/zoWEDRE1lJeFYaKuLG XLoWFDKz5Ae/e4YLOU1XF8kjfuZdheZSUd+7/JTJ+VND1lRcI4KszM2gZDxiAWkdmPgV HrgginFUx1ntgbOqw8lnfhBrRVTjLCq+2Akz5/9dMw0BtOrk0Vt4gZIoKbwokhQ4EUjH xtITe3MdQElPM6tMED9R+gJfSBYpxyw6aG4hXYZHgf9nfWULxXqZcAzjqvU8VNwsPjtz r4kb8AIiXSIJArQ+uipptmyg7i/pOtwBLuhs9NP2erzGL1lExoQFYeb5/W8XFJT1ghH1 B+Fg== 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=4I9TKrK8mQBfL74FGJ3Y6iU/hZdg+xeVUjtNAbqFIqo=; b=fgJv9FqRBmEVHmI30B0NLwLJm6T1GQ4xZ6hfnikwC07NRAuuC/viVlP/ODiSwIYyKU q43KZ3smlM45fzxaID4jyCaEcSMy82R5QqJLqOIMjBZVwy6X24+8rAbXB40eKUC6/P+S njIxfbiP8ctQtQXzhwu63DeP3Gj8FCm3ZVhi7Z0C7IqkLz6qpM/k6qW421BS7yO0vs6B VqRTC1hURPmIAWg3DfUg2U5JyLyBPKG+eaqBrUw8gdysPafZWMdI1A7ZGA9WZ1Nh/D7p A+0YQx3Za5wLtjXjWg6GmuP4Tw119FldR++rAEqLQaz/xxV9G5D3rXi6/aHPkGYwEwAJ 3s9Q== X-Gm-Message-State: AOAM533NSuha9JFKctwQoIxpJInwVoMtKn+jqq9VhMXd0UNey699wEB+ /uFufBHBX0qZwKe0EYpk8KgRGA== X-Google-Smtp-Source: ABdhPJwmQKSNHbj3FK9SVRlV13a+dFjKhinVBBkgWkygxcDqc1dh6TOjxWo6eXKRNPJRs9yVoNYYZA== X-Received: by 2002:a63:ea15:: with SMTP id c21mr225421pgi.446.1601058743233; Fri, 25 Sep 2020 11:32:23 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id r16sm2554546pjo.19.2020.09.25.11.32.17 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 25 Sep 2020 11:32:22 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, mchehab@kernel.org, hverkuil@xs4all.nl, laurent.pinchart@ideasonboard.com Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC v2 11/47] staging: media: zoran: zoran_device.c: convert pr_x to pci_x Date: Fri, 25 Sep 2020 18:30:21 +0000 Message-Id: <1601058657-14042-12-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1601058657-14042-1-git-send-email-clabbe@baylibre.com> References: <1601058657-14042-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 61b4cfccc168..e50153218f72 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 Fri Sep 25 18:30: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: 255607 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8FC8EC4727F for ; Fri, 25 Sep 2020 18:32:39 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 472AD2344C for ; Fri, 25 Sep 2020 18:32: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="p0/0MtqL" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729917AbgIYScf (ORCPT ); Fri, 25 Sep 2020 14:32:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35224 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728423AbgIYScf (ORCPT ); Fri, 25 Sep 2020 14:32:35 -0400 Received: from mail-pf1-x441.google.com (mail-pf1-x441.google.com [IPv6:2607:f8b0:4864:20::441]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5C7D8C0613D3 for ; Fri, 25 Sep 2020 11:32:35 -0700 (PDT) Received: by mail-pf1-x441.google.com with SMTP id x22so3985749pfo.12 for ; Fri, 25 Sep 2020 11:32: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=ni9H5s6lxVysOmGHLIY+1loUeP0ntGh2bLjI55hkPSU=; b=p0/0MtqLxzqxOW14ixw7GaBTJjATN+e+GLL1347olTxePReRnfh1tj6bsa0ZhF+XgO G9PYqPZYFJj6KRpD2bEvZ4eu9CJq/rNeJQco5f1bJ1OirK2ZMYqOJMK11Wpx76/m0neU NdQOmaeRTuJj1gLLgi1P0lfrHImPZxOptzVpIy35dgtA6We12gdKGXEodCyTctYQnhYn kVTLpXF7mHPqIiW9g3fnHCTICUUmiJ/A/xyY1V9cOEFy8VA+88Yy57UA7IogGu4+lxzn 1aYG6Px3+cSPAF4VaI4hXHIvztRtl4vliyEa84cj15a7zwE2h4cP8vvS9YE8ONVjlqlS fiYw== 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=ni9H5s6lxVysOmGHLIY+1loUeP0ntGh2bLjI55hkPSU=; b=I/P+r35Q6acgYWFjUdppa+m8THfatdmzhCAtJtrPJmpP7bZTQ9rryMT47Gq69lMAuc kDcWbS7PAGh0Ue1CXFgQF1t5xRvBERh+AZdDyiNewHdbk5jYTS+6eYGzq4wWULzUzbMX kSVjcYWTzNShUffspID6cjhkqilSJJHYZh6O8zMDuA75tO7aSQp7otRwEwrop0b0P/j/ /wbpS9Oi4kv/ryiOzX+EHw0mq2sAWZ/iqqzjTpQeXCfqtod6a2s/zPtywlE3FVIinZSW mQGWpsHeQg5g7GkPfNo2aj/Mi3CtdCR8TwqddFZfH3LXZqyuZYB7NtsSSXa4n8gquWP8 9bdQ== X-Gm-Message-State: AOAM530hU/LdzHNbvU3a3bjQSE+Qcrdm3uQp1+iFvokM5BUdVYfH0QBn CoiJoUQ+EAQoZR9HR2zcj29hHA== X-Google-Smtp-Source: ABdhPJwHuivyD+GJ9o1HaKo+iLk9tCzpRj85MBSaa9JVJGl0b1r0krrJw+eVCwpsa9BsOGPTCgEWCA== X-Received: by 2002:a63:fe03:: with SMTP id p3mr249218pgh.100.1601058754979; Fri, 25 Sep 2020 11:32:34 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id r16sm2554546pjo.19.2020.09.25.11.32.29 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 25 Sep 2020 11:32:34 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, mchehab@kernel.org, hverkuil@xs4all.nl, laurent.pinchart@ideasonboard.com Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC v2 13/47] staging: media: zoran: use VFL_TYPE_VIDEO Date: Fri, 25 Sep 2020 18:30:23 +0000 Message-Id: <1601058657-14042-14-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1601058657-14042-1-git-send-email-clabbe@baylibre.com> References: <1601058657-14042-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 93a0817a3936..55315f67b3b9 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -962,7 +962,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 Fri Sep 25 18:30:25 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin Labbe X-Patchwork-Id: 255606 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5D064C4741F for ; Fri, 25 Sep 2020 18:32:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 1D71F20878 for ; Fri, 25 Sep 2020 18:32:50 +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="heRs13jv" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729936AbgIYScr (ORCPT ); Fri, 25 Sep 2020 14:32:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35262 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729737AbgIYScr (ORCPT ); Fri, 25 Sep 2020 14:32:47 -0400 Received: from mail-pj1-x1041.google.com (mail-pj1-x1041.google.com [IPv6:2607:f8b0:4864:20::1041]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 24336C0613D3 for ; Fri, 25 Sep 2020 11:32:47 -0700 (PDT) Received: by mail-pj1-x1041.google.com with SMTP id b17so2159258pji.1 for ; Fri, 25 Sep 2020 11:32: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=C4GJC10a2+hCn4g9r7dLW6g/oIvJ1zlU86Tsyu3Timw=; b=heRs13jvgdjnNGEFiq21ofiZ01LsSMrdh4OrqEnJu1A/1QmdcY6aAjerDOqnk9rD38 7SZiXiuecuKyxA1rrcUwZu5ylgH3aKfWm479w5mK4AP7MPkohpv9vYX3SSDwCMgPLNfb YRQwnwPMFK9w7mGRjb6eZpkmSj4rw6IazoJSuAYsns+RommF3Vgud08sv+/5N18jWatU SMq54p3OGf9vxF1xI+frGsqF5D0BFAMecv/8+/CKwYCm2I4Xz//nhmnl4uKX4L//KiPP mAE5Ptyx9r0OpVPt8i4Rh0s7L4FSKrGStcqH/Nr9D/hxosSRgm8WJZMwSUNu8DRDu/+j 5u7Q== 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=C4GJC10a2+hCn4g9r7dLW6g/oIvJ1zlU86Tsyu3Timw=; b=Zh0AxKeejlxjSDHHjeW1z2SzTaKSZxOWD97E0Nh+iK54C4y6nTmH3YwJgOO3Y3e1xz 7MrlOYCqDhgF+T22JdeaWO7uQiaGU5gfyfYlCDBeO6s6fRSx6PKZodiEV6UgtZXGTnU/ hQUHWTxvyhFRHfNdIlJx/U7/x2qQuOHF+8XOgbuL49fsdLYRIIAiM154JmJBZOIC+zrp lv+1wokmq7/x5HgvFiIYS40cdaa4JWhT7MaxlyZHBj7pYI6lWLkBhcfXz8PWPLrR8J31 JRBF/WJaUnLIW9IuENoY0NdfkfutuBrdn1FhE9GOziJPZPqoShxPkTWo+jWeTlH/vNpD 6qmA== X-Gm-Message-State: AOAM5334uVU+acG1LT2S6CeJoXw7Co8C6zl2+FjgHumY28shWfE/AyFZ vhi3ngGujGzVXOLbe4Q9HH3BaA== X-Google-Smtp-Source: ABdhPJyoaLEuGkpN/mI8qVTRNC+bVoc5tZaZEV+CaoSkYkudh7F9+08YbRROhLhLw6NvYs2koFkDig== X-Received: by 2002:a17:90a:f992:: with SMTP id cq18mr814447pjb.172.1601058766740; Fri, 25 Sep 2020 11:32:46 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id r16sm2554546pjo.19.2020.09.25.11.32.41 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 25 Sep 2020 11:32:46 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, mchehab@kernel.org, hverkuil@xs4all.nl, laurent.pinchart@ideasonboard.com Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC v2 15/47] staging: media: zoran: do not print random guest 0 Date: Fri, 25 Sep 2020 18:30:25 +0000 Message-Id: <1601058657-14042-16-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1601058657-14042-1-git-send-email-clabbe@baylibre.com> References: <1601058657-14042-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 04ba22a915f0..dfc2551f2d71 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 Fri Sep 25 18:30:27 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin Labbe X-Patchwork-Id: 255605 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 72EB0C47420 for ; Fri, 25 Sep 2020 18:33:03 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2E86B20878 for ; Fri, 25 Sep 2020 18:33:03 +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="BBycQb0D" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729960AbgIYSdA (ORCPT ); Fri, 25 Sep 2020 14:33:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35304 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729666AbgIYSc6 (ORCPT ); Fri, 25 Sep 2020 14:32:58 -0400 Received: from mail-pg1-x542.google.com (mail-pg1-x542.google.com [IPv6:2607:f8b0:4864:20::542]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C620DC0613D4 for ; Fri, 25 Sep 2020 11:32:58 -0700 (PDT) Received: by mail-pg1-x542.google.com with SMTP id k133so3299929pgc.7 for ; Fri, 25 Sep 2020 11:32: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=xUDsyw9R3jJxj15EJT3or+kmYeDPoBgPCSAmh4oHLlM=; b=BBycQb0D91/nmiwyygHNPlNfHifcum4tKV6GorDkw9Z5pbKXoaNDP9Y0Qzgy0NkNoh EbOo1ku2FcsZRu50t55M49heETGvcLCTQnLxL0wEebGPJI1vcumPV7SDgR65M4iTaLDR +vaJKm11ty5A0d3ONsLzc5eWFD9zIOdgW7RvkKRG9u9lGfrZeZxfemUuDatimcAvIDM7 PyFA6oOehqvHaRtfx1Hvth9l36O4ysdlHT5owyMCsQSMaraH2arKyaEMIEqjLOtA6k19 F36NWnraNDx6HvOr0bGNXnEsW/fq8FQRpqKwUiSOTpiDJC+tH12oGdoouWJBliuVVzkQ m3PQ== 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=xUDsyw9R3jJxj15EJT3or+kmYeDPoBgPCSAmh4oHLlM=; b=dF6zLOHHD9ONrfv9+FSk7sD1JXcR/ECd8kvomCFA6gLxeYIDbXsPcm3rUt0LdVR7jm qVhFMrN7FLGQgbt5/CS0ALdy7jfXPvN1y/iYWkDqCgUOtZTOpFUWJKkOu4d5s4NBXs5r AptHg6/zH3omz0OlKDu/3ITkC0//1h1PU5tHY6nLAiN3natUUoCKYGIpF5Jffwl9u/uJ F0dAr3QRe+wtc9dvJlVkiDV9xItUcWatmW+amUIsTQ1KaMzvV8z8qQHwFER+zDN2P+CR wr4HaRXp0nG9bKRkWZkPXkWTe2RHQ5I08pucVv0JVUds2m+c/jBRIpyXp5nYwzqmFspi 223g== X-Gm-Message-State: AOAM530a8lsQVbl6Om1ekXeWjzArxNSpY3YoFhbgG2de6UzeaVMkmUxL hZidXkJ+SkPzMs2thRboU5LptA== X-Google-Smtp-Source: ABdhPJwJaGFBJ+3ed5U7vIW0ALXG4mNqgNrOLtumDezaWWnOQIKnqKHm/rcmsSOrTyCQJrVG+8pBHQ== X-Received: by 2002:a63:c74e:: with SMTP id v14mr241196pgg.186.1601058778335; Fri, 25 Sep 2020 11:32:58 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id r16sm2554546pjo.19.2020.09.25.11.32.53 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 25 Sep 2020 11:32:57 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, mchehab@kernel.org, hverkuil@xs4all.nl, laurent.pinchart@ideasonboard.com Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC v2 17/47] staging: media: zoran: move v4l_settings out of zoran_fh Date: Fri, 25 Sep 2020 18:30:27 +0000 Message-Id: <1601058657-14042-18-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1601058657-14042-1-git-send-email-clabbe@baylibre.com> References: <1601058657-14042-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 2a00a3a72dad..e60db53c0359 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; @@ -1421,14 +1419,13 @@ static int zoran_g_fmt_vid_cap(struct file *file, void *__fh, 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; @@ -1698,10 +1695,10 @@ static int zoran_s_fmt_vid_cap(struct file *file, void *__fh, 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; @@ -1968,7 +1965,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 Fri Sep 25 18:30:29 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin Labbe X-Patchwork-Id: 255603 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 34987C4727F for ; Fri, 25 Sep 2020 18:33:28 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E4351221E5 for ; Fri, 25 Sep 2020 18:33: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="f2nPeEIr" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729976AbgIYSdL (ORCPT ); Fri, 25 Sep 2020 14:33:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35338 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729974AbgIYSdK (ORCPT ); Fri, 25 Sep 2020 14:33:10 -0400 Received: from mail-pj1-x1044.google.com (mail-pj1-x1044.google.com [IPv6:2607:f8b0:4864:20::1044]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 887E1C0613D3 for ; Fri, 25 Sep 2020 11:33:10 -0700 (PDT) Received: by mail-pj1-x1044.google.com with SMTP id bw23so2241937pjb.2 for ; Fri, 25 Sep 2020 11:33: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=jsTMgeCDkQ7rQZQkBCr1xyL9bvrKdRsBGU8CcZUYgsg=; b=f2nPeEIrw9Q0qs/6gGT37vyz++mf0gfMQL+Gj6LvKefbU2TpXvuyGpZn4y7BnBMDk2 qNPINUQ/WY+vwX9FvrTzxmh9dQkHx9QtORy5bCzdUkwr7BWZErEjGdNEMF7D8wkSQfrR nonImGmLUoq6qbCAF5RoCUnQl70Qzfx77x5+6Q85ip7fDxTjreMOiLVIMhPo8Xtrxz2t xpheNw74jdInCiR2Dlr3wAioe0bAprlRdWIjJr5qzKsx3Jp3fS7W3kVPsEf+MbWCMS3u D9Mfpum6dyXJ7nF9f12PLRLDHh7iMSYIo9bQcDX1pmNGHAeDrigpHcTQBa3aXOJHeE/5 Xu/w== 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=jsTMgeCDkQ7rQZQkBCr1xyL9bvrKdRsBGU8CcZUYgsg=; b=fChvJuSY5coS26Prc6R9TwOWosa8ATuA6eH1XqF7VLeK6jCMnY62hdu4fARZGkgfoH YViqHQMiifdOJVZgvR0IE42Dor2tFeh3gqf0fHzvIyVRp11DfQcVVjhuZhTgMt0B7Tav 6PhR0KTz++QHDqoSs1Xr1G36nEsRl6VAwO1hvmHPG0FGehDyBIV0KFd6WMqslVU5sWbs 9URATQ42z9IGYZLL3a0L5BTX26jjIoHvQlKFuXOU1y2Hp07LcNH0BrYKu2ZzLAYcAbxh 0AmXQaSmEYRhYU1rShSob5UUNZLmLy77KCsI17Nzr0yweaBqDpzHLhZKhx3kURmUwr4x 8s7g== X-Gm-Message-State: AOAM531/nPUvotrw7/w/KjvnS6eNSoiCjUZLwUmrLdGXuHD7RmD2qYDb PK1xozcQUoBQzNDwJMbhq57ROg== X-Google-Smtp-Source: ABdhPJw1Ar0qSqAN56fzAZFKqFJyBO6B5DJGCSzobbQmIdtbFekrvjMzQnrxwlLGBQMXwK6hnz6W0Q== X-Received: by 2002:a17:90b:164e:: with SMTP id il14mr781288pjb.5.1601058790055; Fri, 25 Sep 2020 11:33:10 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id r16sm2554546pjo.19.2020.09.25.11.33.04 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 25 Sep 2020 11:33:09 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, mchehab@kernel.org, hverkuil@xs4all.nl, laurent.pinchart@ideasonboard.com Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC v2 19/47] staging: media: zoran: move overlay_settings out of zoran_fh Date: Fri, 25 Sep 2020 18:30:29 +0000 Message-Id: <1601058657-14042-20-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1601058657-14042-1-git-send-email-clabbe@baylibre.com> References: <1601058657-14042-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 672b8d927e0f..139cfc683b98 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 27dcf899b723..3a59aa66436f 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); /* @@ -1433,11 +1427,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; @@ -1710,7 +1704,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 Fri Sep 25 18:30:30 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin Labbe X-Patchwork-Id: 255604 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.0 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, UNWANTED_LANGUAGE_BODY, URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 35ED4C4741F for ; Fri, 25 Sep 2020 18:33:22 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D805720878 for ; Fri, 25 Sep 2020 18:33: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="tJ1zeP4o" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730000AbgIYSdS (ORCPT ); Fri, 25 Sep 2020 14:33:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35362 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729770AbgIYSdQ (ORCPT ); Fri, 25 Sep 2020 14:33:16 -0400 Received: from mail-pf1-x441.google.com (mail-pf1-x441.google.com [IPv6:2607:f8b0:4864:20::441]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5CE73C0613D3 for ; Fri, 25 Sep 2020 11:33:16 -0700 (PDT) Received: by mail-pf1-x441.google.com with SMTP id l126so4006147pfd.5 for ; Fri, 25 Sep 2020 11:33: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=bT/+Sa6D+GAhAQMlD3pZwWZlV4j8Wl3G9tEqamihm64=; b=tJ1zeP4o/+j1dNZ6f+ZWQXe+4IXDFZe59+v6ksLWbgmuH1u18pRcM94Wfv5r8sXtPu 462ipFCTkhwpe67/QMtE+T1wU9XW0ZSMXVQEQPGXFdoWPVvDg+OuEDH6gwsfshT+uRlQ D4zkBQ1ZC+iK1MQQnho3QkA5uAE0ooNhGKBnBbpwdiPHBbRt7kPcuh3CvZjZDm4iF590 cLHzZ9H1XbpMksjoDwCrrASSfdSP6TPMPeTg+yqnD7prrCNi1gesnk8DYhe3nhfUE9+p ibkIJ48GIPaQBKa6oZQ3MRZpy3oBcJRjowDb54suSNBnh16Wb+FDXTkBxQvHITLwoPjw cZug== 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=bT/+Sa6D+GAhAQMlD3pZwWZlV4j8Wl3G9tEqamihm64=; b=gLO/uUk9JH4vuPITJwKbpYqsaU7sIg1jbt/3HF37wX3eGAugtN0Fs/rwFKBdufK0s4 d+7VIAyQMPzn4g5JGgLZsj3okRvMjPrOg4caMHPnUwuIKcM+j1h3G73XynuF+nRAnSYD drplayzOCTQEFf8eIPbrKP/5d+esBOIcgEi/OPRWr8czOr2s/afKbwAWc8ki2pDde+S8 FzllRZmPNjBrZpQHeCX0/cna9ylovFBnwHGelHw+tP1b2Bu7MwM7XfVmd2g8a6L3cY2G TntMGnRn2XZF5tUUnKWXuAZCotYE96BVHMfqhfmOZ42iRuBIyNsM1bcHflq572JD6Gqg 9Bwg== X-Gm-Message-State: AOAM532FkASpWv6soPOjdFMWNj/ql6pR/15EtdSmtoTApZHR4+MyBk43 7JxHmJlAP1Eb8naopPYWrsJFeQ== X-Google-Smtp-Source: ABdhPJxsPtGvqhg/fJRIoMlGbdAtsJBJgmleaqtXgxyMZC8IB1n7q1jhfwdSjvfxBm/lSvkohGf84A== X-Received: by 2002:a17:902:b10b:b029:d1:e5e7:bdf8 with SMTP id q11-20020a170902b10bb02900d1e5e7bdf8mr683397plr.43.1601058795915; Fri, 25 Sep 2020 11:33:15 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id r16sm2554546pjo.19.2020.09.25.11.33.10 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 25 Sep 2020 11:33:15 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, mchehab@kernel.org, hverkuil@xs4all.nl, laurent.pinchart@ideasonboard.com Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC v2 20/47] staging: media: zoran: Use video_drvdata to get struct zoran Date: Fri, 25 Sep 2020 18:30:30 +0000 Message-Id: <1601058657-14042-21-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1601058657-14042-1-git-send-email-clabbe@baylibre.com> References: <1601058657-14042-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 3a59aa66436f..518ba19e1e0a 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)); @@ -1353,8 +1352,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); } @@ -1362,8 +1360,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); } @@ -1371,8 +1368,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); } @@ -1424,8 +1420,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 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; @@ -1442,8 +1437,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; @@ -1647,8 +1641,8 @@ 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 zoran *zr = video_drvdata(file); struct zoran_fh *fh = __fh; - struct zoran *zr = fh->zr; int i; int res = 0; @@ -1696,8 +1690,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 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; @@ -1716,8 +1709,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); @@ -2049,8 +2042,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; @@ -2058,8 +2050,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); @@ -2073,8 +2064,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; @@ -2090,8 +2080,7 @@ static int zoran_enum_input(struct file *file, void *__fh, 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; @@ -2100,8 +2089,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 Fri Sep 25 18:30:33 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin Labbe X-Patchwork-Id: 255602 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 39F46C4727F for ; Fri, 25 Sep 2020 18:33:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E9AA022211 for ; Fri, 25 Sep 2020 18:33:37 +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="JtZSThmc" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730025AbgIYSde (ORCPT ); Fri, 25 Sep 2020 14:33:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35418 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729686AbgIYSde (ORCPT ); Fri, 25 Sep 2020 14:33:34 -0400 Received: from mail-pf1-x444.google.com (mail-pf1-x444.google.com [IPv6:2607:f8b0:4864:20::444]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 36061C0613CE for ; Fri, 25 Sep 2020 11:33:34 -0700 (PDT) Received: by mail-pf1-x444.google.com with SMTP id l126so4006959pfd.5 for ; Fri, 25 Sep 2020 11:33:34 -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=bWoBtuj1a3OWnukIH+6aFRxvQnbnVbFdKWkrBtcBHUs=; b=JtZSThmcnDELzXKqu6dB8Yz51iMzscfQM8Kcdqbzs33Xwssi3YI7oR3KmY8MpVfgj9 J0cTBM7SAAIAtSuoJdpW/6VhztVMVo//l3NwOzSYIkd5kkclA8g176Gf2ceZYZNKwTzm wmQeVFvOCLadZ0rIjhKH0LarQXZEEwFbrmMIyvnr1lN7Dznki1qPC+dXdskZhIyeHndH GBSn241rkrBFiYlVwYqdX00Wunmd6J+aGCfV2v4QgDG61y1zTks9Aps1qJiyFxidfhWq 6WTxSTrhn/sBLDjV9CjEm6axbEWTphu2ObU7eJ365lvgLtSxI0EOxlKkQQO0Gx+mcQGT S8DQ== 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=bWoBtuj1a3OWnukIH+6aFRxvQnbnVbFdKWkrBtcBHUs=; b=OMxY578e1dn4rLAfIQRhEB6k5RLhgeYPr6yTaRYbKwyBFacwPbgp+kN+KT9ElPAobE 8bTYINDdtaGBXJWYtAUiNAPhBM0mtKq2QHxGrHD22a7Ne4Hy/EN1Hvy538sqlEf4Laz6 Ia+KSHokMOqeutYZNsjxx9EP3dJR5RiPZ9g2vXIh/eAV7BTK1jwBLa714veR83Nxa17A IXzo9po6uL1Uo+5pK795QU24KIo++CqX2U12bpYVdrvaQ4OPnrdJPOF6ewuXgypTfMtp 3o6268jUljJ5pCy0/N0GvXsKZMAnoqYGiqGsN2tjdTIKJhUmllTueiLZtpX2j5koIb9R 390w== X-Gm-Message-State: AOAM5318f0OyefvhI25HMgC0fKaJ4JUhibuXZgOdkQ/0sjWnkfC8IpZQ lMMY1rbsuJs2OvmefGJqGKlJYA== X-Google-Smtp-Source: ABdhPJyN302LQLPpJTJCVZY6pg5hfwvc06wPwY4BdZrLWxUbaMx3hxN//HP95gPxpA5WjK4UeWLYew== X-Received: by 2002:a63:4703:: with SMTP id u3mr249392pga.322.1601058813796; Fri, 25 Sep 2020 11:33:33 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id r16sm2554546pjo.19.2020.09.25.11.33.28 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 25 Sep 2020 11:33:33 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, mchehab@kernel.org, hverkuil@xs4all.nl, laurent.pinchart@ideasonboard.com Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC v2 23/47] staging: media: zoran: Use DMA coherent for stat_com Date: Fri, 25 Sep 2020 18:30:33 +0000 Message-Id: <1601058657-14042-24-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1601058657-14042-1-git-send-email-clabbe@baylibre.com> References: <1601058657-14042-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 | 22 +++++++++++++++------- drivers/staging/media/zoran/zoran_device.c | 3 +-- 3 files changed, 18 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 5919803a6a5e..9fe2bc2b036a 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -936,11 +936,17 @@ 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 */ @@ -958,7 +964,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); @@ -973,9 +979,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; } @@ -1009,7 +1017,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 627ebda33cc8..0ecb044f8e8f 100644 --- a/drivers/staging/media/zoran/zoran_device.c +++ b/drivers/staging/media/zoran/zoran_device.c @@ -579,8 +579,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 Fri Sep 25 18:30:35 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin Labbe X-Patchwork-Id: 255601 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8B033C4727F for ; Fri, 25 Sep 2020 18:33:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2B932235FA for ; Fri, 25 Sep 2020 18:33:50 +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="gpDRDw5C" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730040AbgIYSdq (ORCPT ); Fri, 25 Sep 2020 14:33:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35460 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727151AbgIYSdq (ORCPT ); Fri, 25 Sep 2020 14:33:46 -0400 Received: from mail-pj1-x1042.google.com (mail-pj1-x1042.google.com [IPv6:2607:f8b0:4864:20::1042]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DA7BAC0613D3 for ; Fri, 25 Sep 2020 11:33:45 -0700 (PDT) Received: by mail-pj1-x1042.google.com with SMTP id t7so2239924pjd.3 for ; Fri, 25 Sep 2020 11:33: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=z3aAxPMl4vXGO6SQG5uOhkRvPzoZ7Ff2bs8SM/RvFA4=; b=gpDRDw5C0YiK25MSEqsXxy3no9XMDsRhptDJTUFc6XaXxK0+tJIYoIIhzlBjQNARQa m78mhqSgDjB8zPTFTQ8ivqNprTMg8hb/iJwy6BWdj+fCi+kGQ01r4HjiaIhoOA+GKZqy y2OA5c1fkAnYt/avmNUHA3DmWRlKLK/HvmsCVZGKf2xE7C4pwKRpaEt85EKRkYQNaJqh LR4faHgXxTiDHHx5dWcUf08EuKteVEE9inINjKKP8MOBC0C4Saf7NqAhjGKy+FuOI7f9 zIaHOMYb43uml+OSfJKlBmstylb5voz44T8Qtv7B8RKapmtJ59tNcxKOejv7Q/x0RjPe GWwg== 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=z3aAxPMl4vXGO6SQG5uOhkRvPzoZ7Ff2bs8SM/RvFA4=; b=uj4SOURSnHpWSQSrjsO6WYYkJS9kSWyz8xttrSM9OgXVu7jBoAsWZLWSw2xC+MFEEi qIA5ISE62P8att98zu857JbnNpa1N2GsEpZyFQ4WL8bWslkgPTyYQlahEh3bva3fX0KE 6dP1FwTIQfQyQYVY3lzrcG1uJb/n47vZCiS6ReWMhC2EH6+e4BJNt1w5q5XP/LIq2gzh Vy2WPiTIM+wpyI/jATqcsU7Nyg+RhvVVKhR9W+GN1PP+SodWXT+Kg/Nago0lhSvYO0eK UZi6afnzvK/LoTW4Bo0niRceKynkNgh1MoOrYqe9LWz/OS8AUIYc1qCVp6npqgJLqdmJ TI9g== X-Gm-Message-State: AOAM531ljDw1CDYA44S0hfD46wAhYGfGooE4ELTDICsI83HL9WlSE1nk BSHYA88D+WINRYZzpIdzJ/iEFA== X-Google-Smtp-Source: ABdhPJxSiNc6igRsZSi+sSwsmRMZbrWk5a0Qvj/50ImCNIuOapDp8w29AOIdNNMtiXNgMT0gPV7h7A== X-Received: by 2002:a17:90a:6741:: with SMTP id c1mr824105pjm.6.1601058825347; Fri, 25 Sep 2020 11:33:45 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id r16sm2554546pjo.19.2020.09.25.11.33.40 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 25 Sep 2020 11:33:44 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, mchehab@kernel.org, hverkuil@xs4all.nl, laurent.pinchart@ideasonboard.com Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC v2 25/47] staging: media: zoran: zoran does not support STD_ALL Date: Fri, 25 Sep 2020 18:30:35 +0000 Message-Id: <1601058657-14042-26-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1601058657-14042-1-git-send-email-clabbe@baylibre.com> References: <1601058657-14042-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 858e0910884c..60bbc8235cff 100644 --- a/drivers/staging/media/zoran/zoran_driver.c +++ b/drivers/staging/media/zoran/zoran_driver.c @@ -1765,7 +1765,7 @@ static int zoran_enum_input(struct file *file, void *__fh, 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 Fri Sep 25 18:30: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: 255600 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 43702C4727E for ; Fri, 25 Sep 2020 18:34:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id F1DB423119 for ; Fri, 25 Sep 2020 18:34: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="rAgmu4pH" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730058AbgIYSd5 (ORCPT ); Fri, 25 Sep 2020 14:33:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35496 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729739AbgIYSd5 (ORCPT ); Fri, 25 Sep 2020 14:33:57 -0400 Received: from mail-pg1-x544.google.com (mail-pg1-x544.google.com [IPv6:2607:f8b0:4864:20::544]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 78B55C0613CE for ; Fri, 25 Sep 2020 11:33:57 -0700 (PDT) Received: by mail-pg1-x544.google.com with SMTP id g29so3329174pgl.2 for ; Fri, 25 Sep 2020 11:33: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=xR6EMaCnGVufYq99NXULxv+YlatOQC8lYjKs2v1Lyho=; b=rAgmu4pHNqZ+1cKh/avPUCHuk5OAhQXuq+sWTvqh3t3Jjz3diyv58LFpWHBvvraGtI ctdq/YWWzvbYEZ0kUhwULgZKS4Jdhf4oynyHmP46aJ9t+rdJ3Xo2bhb87ZE58snCcAdp CPmMxfizpIi9qQc1J2y16VQjtZd19onywe2o8Rmtks++r/+IDvoZygcwfQw0481oIi0A +r1i6YKor9nysChq69Gu6TtYDKwTpJqi48TQLSl0YjHFeTVBh0q5dosXicnRkI3VQ8G5 WefZh8S8NzQWsF60HCSiG0CYaxJDbZ+hbUsI7S0S9G7RIC2ieYFDfYna1wPTTlDxvroa ew5g== 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=xR6EMaCnGVufYq99NXULxv+YlatOQC8lYjKs2v1Lyho=; b=o9h3AIaN4Zx2weAozmeAXXZSgjLuZd2aBXMJjb+KppSU/N3JNWQzIv841H3ruyAt9+ lPH2xQppESIoyZMwZ1WNP99xf2AT/kQm1XLTAiT/QSdvKK7dhGF7Z5g9ALp8RELo4Z7r G6E8nBHk/PkTjp4f86jaUrTesiZf0Ev9o6brAOISLL57GmGwSnQElkIs4547zc9mdo52 vzUC0mXXO0tAIkoI+eQ22HU8uxWyhIP1pUYh/Ej33G0NuGfd/77RUcrrmzaYk91KVT7U mUvrjbafbixknUp07KZeqGoUXID6RxU7pbAHyki2DnhSZzsfZwl7H/LcwkcvSGxedv/c aB2w== X-Gm-Message-State: AOAM530bcVZozfseTj0Vsx8NDHm08HYxmA+W5G4vk27khc5kem63TVES r7btufmqR/nSKzbwuTZcsHtT4g== X-Google-Smtp-Source: ABdhPJxDP6bhJHcTflXKJSNrLvLPtFybrGDdwIdvlW1c1OEuQkae8BtoII0afWUs+wwfbquOE/2u1Q== X-Received: by 2002:a63:e813:: with SMTP id s19mr233034pgh.33.1601058836989; Fri, 25 Sep 2020 11:33:56 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id r16sm2554546pjo.19.2020.09.25.11.33.51 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 25 Sep 2020 11:33:56 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, mchehab@kernel.org, hverkuil@xs4all.nl, laurent.pinchart@ideasonboard.com Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC v2 27/47] staging: media: zoran: convert zoran alloc to devm Date: Fri, 25 Sep 2020 18:30:37 +0000 Message-Id: <1601058657-14042-28-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1601058657-14042-1-git-send-email-clabbe@baylibre.com> References: <1601058657-14042-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 706b040f5baa..fe0c5a7c967c 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -1024,7 +1024,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) @@ -1109,7 +1108,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; @@ -1298,7 +1297,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 Fri Sep 25 18:30: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: 255599 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2B8F1C4741F for ; Fri, 25 Sep 2020 18:34:13 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D94C5208B6 for ; Fri, 25 Sep 2020 18:34:12 +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="ps5alxjC" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730054AbgIYSeK (ORCPT ); Fri, 25 Sep 2020 14:34:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35536 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729644AbgIYSeJ (ORCPT ); Fri, 25 Sep 2020 14:34:09 -0400 Received: from mail-pf1-x443.google.com (mail-pf1-x443.google.com [IPv6:2607:f8b0:4864:20::443]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3018DC0613D3 for ; Fri, 25 Sep 2020 11:34:09 -0700 (PDT) Received: by mail-pf1-x443.google.com with SMTP id k8so4030430pfk.2 for ; Fri, 25 Sep 2020 11:34: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=Y4t9XD5GcXO3lFZ+ybjaf1F+Annig7SwGk+A/Y+pjdk=; b=ps5alxjCCkw3sEZk28BUPykUXqpAofgGVKU9pyPIjeI0A6G8AFZm4MK610NXSwkTWc 9h9DteIGcYZi8GsWRQty6IUxGO233CrA66oS+Ezdb5VzLnvvxGqfGpFp+XOidIdvnEEu 1A50cXL0gCgdAIoxKfE0fRxFxRMygwpVs07dyQFR7qgdvzoflwImMBf8v+dByU0huFoc Fei/kr3Ap0BWSNYLNuoDOYs4tsucvJChyZpuBib2Utn/z1dwI1bl3WszECgPdbCNm4CR XH+4adj29Q/OV1Va87/bn9e0gSAmodEt6I2SBQJjdfwVJFbuaSDsmFYBrI+Kiy7Kc4XT lKgw== 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=Y4t9XD5GcXO3lFZ+ybjaf1F+Annig7SwGk+A/Y+pjdk=; b=MupxGua/ckDdwE88RAMu2HmVO4O2Ank0tf2589FGrY0BBxYUsXZE8tc4JrK/jJNmH4 Uq1JWnZ8eqAUc/rID02FZhtHO40UFJKhfzSdM0l3iOf0S0Cil626eC3H2oh41ba/FUVd YhUZRrtL8aFQC8/n8pYbZVRGC8jrndeXvFzAfm9RMl/BbzKVsvzu/1tEaxbXLBQ35TYN 3eNb5ioOgQP06CQ5FTinWZEOzQWq2enZTayKWnsKCyPLwtEK/0JoG1wTS4zoFA5VWhfF tMbWC+d+noKf8T62JIjiFsH7HwhtNRm780XaY7kjsblxpkhnp3hCQBEVjSniCnB/J3/2 Fu/g== X-Gm-Message-State: AOAM530A4XC1qw+E2xEdwUD5x/TtL1ovXFp3+xvpfviPrZKjxyJxdqRV DPikQZULLpmFXlESL7Tf8mkG5Q== X-Google-Smtp-Source: ABdhPJwGh6WhUaRPZeBEB30oZcLZHt/4f9bqH965SBGS+elOhvhyhnQUmkeJ3DxULfyHwBpeLld0NQ== X-Received: by 2002:aa7:869a:0:b029:142:2501:34d1 with SMTP id d26-20020aa7869a0000b0290142250134d1mr582877pfo.42.1601058848735; Fri, 25 Sep 2020 11:34:08 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id r16sm2554546pjo.19.2020.09.25.11.34.03 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 25 Sep 2020 11:34:08 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, mchehab@kernel.org, hverkuil@xs4all.nl, laurent.pinchart@ideasonboard.com Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC v2 29/47] staging: media: zoran: use devm for videocodec_master alloc Date: Fri, 25 Sep 2020 18:30:39 +0000 Message-Id: <1601058657-14042-30-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1601058657-14042-1-git-send-email-clabbe@baylibre.com> References: <1601058657-14042-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 fe0c5a7c967c..a3e7b0027d69 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -996,18 +996,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); @@ -1036,7 +1028,7 @@ static struct videocodec_master *zoran_setup_videocodec(struct zoran *zr, { 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; @@ -1245,7 +1237,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__); @@ -1259,7 +1251,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__); @@ -1280,12 +1272,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 Fri Sep 25 18:30: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: 255598 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CA487C4727E for ; Fri, 25 Sep 2020 18:34:24 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7EA5C2344C for ; Fri, 25 Sep 2020 18:34: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="v+by3Sm5" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730084AbgIYSeV (ORCPT ); Fri, 25 Sep 2020 14:34:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35572 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729754AbgIYSeU (ORCPT ); Fri, 25 Sep 2020 14:34:20 -0400 Received: from mail-pf1-x443.google.com (mail-pf1-x443.google.com [IPv6:2607:f8b0:4864:20::443]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B371CC0613D3 for ; Fri, 25 Sep 2020 11:34:20 -0700 (PDT) Received: by mail-pf1-x443.google.com with SMTP id x123so4006523pfc.7 for ; Fri, 25 Sep 2020 11:34:20 -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=33lB1n6MsJA8y1Cur/ULNq8jI1FuG8FB/2UR30PG+gU=; b=v+by3Sm5hf9KgoKt1yqOfMTlq/YrLRAqeJhU+akW0/r2L1rNqiRJAVaUTKe152bhlE 6OnECoDtIUrh7Ty1RWqmfUIhUWT8qXlOA4YMuE/3Is4K0hG6C76rSi0f/pw8dp7BEBgU vshjZeheMuC3hi/tAn2CQnu4g2Q5MFyDnNvbS5jerKvV+UrBBmFmToBxuLe1iy7eNi4D 0pETojEd3cUqmtrNGs6aQpLp/w7SA7K8lcJxZ4LsqvSiC5nh5k60JVH+COTF57I51T34 MmmcOyr4rryjwXKnhfoQ8lig06k2DaFGIWoSpDWs3iMMaix0ZT2e15QQYzSDmkIuLX5A agvg== 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=33lB1n6MsJA8y1Cur/ULNq8jI1FuG8FB/2UR30PG+gU=; b=AcwtjuRDQxulMbho/8d1USVa+ndGXKYUaWStq6UOjmRe585N3pMyxDgv9Zgk7EKCUA 8GUv0kwtkdx8+OZlmu8tWuQ/6MxBN5pzsRZ/ItYGzlYjwrIZMmPeBQPAOlE9IjEDgiIa VaGfR0iOtvHdAf357rgEco2ozcYt6DVtoSTlF2As18oVwcydFmQIMamRYmnK9IKPdSP1 gN5a57pRU/rvuqtbF9k3bl7BJjVTwARQgMsjzeELaI+o6O7f91KnVM6/VuoPk38eR2dn tBT9Gj/ZBTCgd0WZATyK8IIi5D9al6sO65NnqrumuWestzciQZMzCQ3h0QVABYsQrd5F Vxbg== X-Gm-Message-State: AOAM530yaxxT5YEfiyp3se3ZYbw01zXrLQVa5FTsC9EfZcNT3p3DVILZ 6m7FaNshZwGMU6GA7cra67Zj1A== X-Google-Smtp-Source: ABdhPJzI8D0FfG2yohm1Szf25h+WuVFA8LA4/tvF6/4fOPFUmOPwPsOyyMAX31jksGcEIHQWbNVIAQ== X-Received: by 2002:a17:902:e9d1:b029:d2:221f:9970 with SMTP id 17-20020a170902e9d1b02900d2221f9970mr688729plk.5.1601058860325; Fri, 25 Sep 2020 11:34:20 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id r16sm2554546pjo.19.2020.09.25.11.34.15 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 25 Sep 2020 11:34:19 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, mchehab@kernel.org, hverkuil@xs4all.nl, laurent.pinchart@ideasonboard.com Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC v2 31/47] staging: media: zoran: use devm_ioremap Date: Fri, 25 Sep 2020 18:30:41 +0000 Message-Id: <1601058657-14042-32-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1601058657-14042-1-git-send-email-clabbe@baylibre.com> References: <1601058657-14042-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 f4639324bace..147bef1df33c 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -1010,7 +1010,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); @@ -1165,7 +1164,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; @@ -1181,7 +1180,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 */ @@ -1284,8 +1283,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 Fri Sep 25 18:30: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: 255597 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id ABFE4C4741F for ; Fri, 25 Sep 2020 18:34:36 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 60D5520878 for ; Fri, 25 Sep 2020 18:34:36 +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="kXXIugsD" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730106AbgIYSed (ORCPT ); Fri, 25 Sep 2020 14:34:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35606 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730100AbgIYSec (ORCPT ); Fri, 25 Sep 2020 14:34:32 -0400 Received: from mail-pf1-x441.google.com (mail-pf1-x441.google.com [IPv6:2607:f8b0:4864:20::441]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6C2D7C0613CE for ; Fri, 25 Sep 2020 11:34:32 -0700 (PDT) Received: by mail-pf1-x441.google.com with SMTP id x22so3991022pfo.12 for ; Fri, 25 Sep 2020 11:34:32 -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=Z7jQ8SPZFRHPOUYLAO0rpxI4A+oVO2d+0FobUIeSyBE=; b=kXXIugsDXy0WRPje+alPkHtpyEVxbV16NfIOqmt/hprJwd5gBigiH1btNEqfye5QUW 6SXRLCGPyBQLfDDefcXdYbhU0rCsux7+zm0Lf0vIEh7cdjBcDtIS9mQF8qGHK/WGmdKA HUnfXNtWq1vcRJLZVKVm5q0PkEnkQ8est2rTEClwYbzRt6RcZIBJd01sRDbMxxLULDnW SRP+v4xP/0zBIrYSftJlxVLgmwvxAsCDP6PBu+ttxLw8BE5EM07B5fM6fYj0DvjKcmS4 MvTyv7PEhPpIpQ1HXQ8ORKN9HhBXrK9B5Nqk8QAVa+M1FaGLOduR38NhRkR+oI+eYyik 1OOg== 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=Z7jQ8SPZFRHPOUYLAO0rpxI4A+oVO2d+0FobUIeSyBE=; b=A/nrF8a/owooZcRDNJITAQxQxZ7gGOlRJ7ytQjHNGFspOStCCT7ZXx65awhmFTfSoN 2d6u7+8cEMAvOg8/1UOKRlolseyLSqWPeawKyZ58cAV6oiboIgALhy3AFgMQka3pj/Nu 1cOs7/dcK5iYLdKBCRpy+ZZI6SrbhtKj7ctPbVN5KNvV1dncSGBGCvO/tPVUmbV4inA0 xNrqebPalE2CF9LsPsX9Dpmc+A4x0NeDCWj5VcNycgwbQWPATQcpM7pzbqoQ7gkGsztL 8IwEv1qs1+i6ot9OWYw1SsdtgyltxVxjZa+vvvXjSjJlI24IX6eNQYXpE29vUdOBguXG AiXA== X-Gm-Message-State: AOAM531mvi1pCDjlQV4YFHjueVDHPxNRjk32TWUV5Yd3/i9CX2VnDlx/ LoklREGI6hd3UNMQVBu1FvkcSQ== X-Google-Smtp-Source: ABdhPJwz0FNqAqt+zDDiCHg4k0ng7IaoPQnuLcR4vRd0n+FefASCFY9AYtzHDiqbXwwk0iUwYvCMxQ== X-Received: by 2002:a63:fe03:: with SMTP id p3mr255845pgh.100.1601058871981; Fri, 25 Sep 2020 11:34:31 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id r16sm2554546pjo.19.2020.09.25.11.34.26 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 25 Sep 2020 11:34:31 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, mchehab@kernel.org, hverkuil@xs4all.nl, laurent.pinchart@ideasonboard.com Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC v2 33/47] staging: media: zoran: constify struct tvnorm Date: Fri, 25 Sep 2020 18:30:43 +0000 Message-Id: <1601058657-14042-34-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1601058657-14042-1-git-send-email-clabbe@baylibre.com> References: <1601058657-14042-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 756705a34e2b..79783cbb919a 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 4c9f6eafd130..fb318449d784 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 Fri Sep 25 18:30: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: 255596 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 37ED7C4727E for ; Fri, 25 Sep 2020 18:34:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0138D2344C for ; Fri, 25 Sep 2020 18:34: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="Jc79CWO0" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730117AbgIYSeo (ORCPT ); Fri, 25 Sep 2020 14:34:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35646 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730115AbgIYSeo (ORCPT ); Fri, 25 Sep 2020 14:34:44 -0400 Received: from mail-pf1-x444.google.com (mail-pf1-x444.google.com [IPv6:2607:f8b0:4864:20::444]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 23705C0613D3 for ; Fri, 25 Sep 2020 11:34:44 -0700 (PDT) Received: by mail-pf1-x444.google.com with SMTP id z18so4029890pfg.0 for ; Fri, 25 Sep 2020 11:34: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=Z2ehdJwTg//k76wOiQFxYa7TSjOY+fUe32PPFRAEB40=; b=Jc79CWO0HvaDRvbAGxsmInH8ME89szgSHjcyfeBoTv49SJDw/WX4YPUB70X4tKg1TW Rr3bijRVGrW2p4s1lQi7HlsFufo7gkxMRQ9tSHJKoz/CWgJSOSvWsAmX+ih1HtRjBqNI tFXOpCnzLANcCq+DPQMdxReXYEXPZRAb/yBMEpx7B9QfOXSUMyH5iy9GkZIKKY4HqTMl z+qRHUXG0ipdSXjR/CAZALIlvhKrQO+lDCSs2ebDlMvI/zIH+e2tZ1CQ5E9avzLIG3ME tuMx9Z3c1zc/xTyopDRkRLcN7t5UTXJMrCcDyHLRyuVCa99kcKYhX7pfTHYP2aoPFp+z gP6Q== 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=Z2ehdJwTg//k76wOiQFxYa7TSjOY+fUe32PPFRAEB40=; b=fh9c6sOVgKe0apzz9Wts+YR3x2KAJ/kfBCyWTj8wTAmbKfWtBN+vdUjQhyanXB7qdi 74DQE/H15bbEiyJU0cTDkbcuohI0iaAFUn31LCQ13S48eytstXtdtZbdlDXW9PQNBQum BjirX4kbpkSvH6y3eF0SSFsixzqQh05u32a7fDZobQUYzcoEfGLvoyrA8+xQPuC6zEhN NsvdD4DLR+j2sQV+EIN4SGylGC690DhyfQI9y0RIftdCklpzQoi8Rnc17zv4zK77eTm5 R20yMt7EJEn8/aBqhf778dk94Tj+EY6cU+pueLwEGqu+vfk6I7Rw4kRPfxi0saSsBWky Yk/g== X-Gm-Message-State: AOAM533foPwQJv30fOA3eUG/EoN5uCu7bVZ2nZhqsAMw1/IFIZhMJk8r vyyhsHi/ARxUxRSTuvZfWO171A== X-Google-Smtp-Source: ABdhPJzK4DtJhq4rllF1jMZgn6R2vGmQSbmXkAuBOZxqQ/CRxfj+erIK5UhpPfxHIFEWfKcPVuBMUQ== X-Received: by 2002:a63:c34b:: with SMTP id e11mr240955pgd.25.1601058883674; Fri, 25 Sep 2020 11:34:43 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id r16sm2554546pjo.19.2020.09.25.11.34.38 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 25 Sep 2020 11:34:43 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, mchehab@kernel.org, hverkuil@xs4all.nl, laurent.pinchart@ideasonboard.com Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC v2 35/47] staging: media: zoran: Add more check for compliance Date: Fri, 25 Sep 2020 18:30:45 +0000 Message-Id: <1601058657-14042-36-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1601058657-14042-1-git-send-email-clabbe@baylibre.com> References: <1601058657-14042-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 60bbc8235cff..5ac832eca501 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, @@ -1255,6 +1260,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); @@ -1283,6 +1294,9 @@ static int zoran_s_fmt_vid_out(struct file *file, void *__fh, 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 */ @@ -1872,6 +1886,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 Fri Sep 25 18:30: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: 255595 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C9467C4741F for ; Fri, 25 Sep 2020 18:34:59 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 89C172344C for ; Fri, 25 Sep 2020 18:34: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="VAyvilve" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730130AbgIYSe4 (ORCPT ); Fri, 25 Sep 2020 14:34:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35686 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729789AbgIYSe4 (ORCPT ); Fri, 25 Sep 2020 14:34:56 -0400 Received: from mail-pg1-x542.google.com (mail-pg1-x542.google.com [IPv6:2607:f8b0:4864:20::542]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E2D86C0613D3 for ; Fri, 25 Sep 2020 11:34:55 -0700 (PDT) Received: by mail-pg1-x542.google.com with SMTP id 34so3290407pgo.13 for ; Fri, 25 Sep 2020 11:34: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=eGss8+t6OprF5UmZdfe832aJr+yAfFeel7PXaUvFcKo=; b=VAyvilvedlnkS93GVV1oKMBEvjod0xjaY2oW9WS1s6rsneDaTdK+6/6d8t3J0TSLmk 9KvQHn/LPw06+kBHFE4FYeXLS3H2jwe1Io9FKt3HAeTPm2ueIMnoS06DzDI5EszUrEhF cx/pjU/pwSXNsMMeanAfkfhpj3Nu+Dz59mDSPVBEXaBuHmt2qvyi4BsYc6n6gh/mhnKJ pxdSBDj8A/ZJSo6YlwB6ixKA+jbhkDQFgyQNncnFZRLl1gWOCJ7OBUzb4cBwb5doZCCH YsC/c0++45Zm1D2KvM8+ve8H7i6ktbd9QyvMZXpwrVNfMNjfdIH1BXTq1jJyvUrINGuP g74w== 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=eGss8+t6OprF5UmZdfe832aJr+yAfFeel7PXaUvFcKo=; b=BL0Y9XDP9THQcolDVWL+lFXN4aud3HGrN5xZhPd+PzizlHchlWXbuI+egFwFPCS6tU ulj0JiGZ/N2aqlbN+/jhFn+BCpXMIHwas4xowBMtPGjxtRwVBRWxm55uBZEKPt9exPaq z0XOTKPQOVhBmGYRRhMP4aF/zp6YtiUsil1X9bBajhT7jQyGxTltlMdBSoL3h3ktm6sy w/j64LhBw57ktAsdkwfF7FrdfATZGtqkdIRaWVyOGx/cz0Ftjerime7ScuTt+gwMInbA D7z4BjUYRURNIlmONLC4G+jok2htFuTcWCw1EvF5N2yC/pQlv8RupHq+2nlh/aFI5pV3 vRSA== X-Gm-Message-State: AOAM530MsF+hyY2CIO8DniMfrMd/UzSADRvYc2ZvSpZpVcFFL7UIrgnm swBUGpYZjE6RNten00j2TnJlhQ== X-Google-Smtp-Source: ABdhPJyIeUhoYsAiV5pwMCK+Diqqef8AeIh2gqDMfPUnwkE95WoqoeFZ+v2FX1MubgBx11C/VvlKpA== X-Received: by 2002:a17:902:9e95:b029:d2:4276:1ddc with SMTP id e21-20020a1709029e95b02900d242761ddcmr702834plq.81.1601058895490; Fri, 25 Sep 2020 11:34:55 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id r16sm2554546pjo.19.2020.09.25.11.34.50 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 25 Sep 2020 11:34:55 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, mchehab@kernel.org, hverkuil@xs4all.nl, laurent.pinchart@ideasonboard.com Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC v2 37/47] staging: media: zoran: disable output Date: Fri, 25 Sep 2020 18:30:47 +0000 Message-Id: <1601058657-14042-38-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1601058657-14042-1-git-send-email-clabbe@baylibre.com> References: <1601058657-14042-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 fed368ba6fd1..dbdb1c4b0515 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -963,6 +963,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 e962fc6c1f9f..43f7c0c02876 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; } @@ -2221,6 +2220,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, @@ -2228,9 +2232,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, @@ -2244,13 +2248,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 Fri Sep 25 18:30: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: 255594 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DEC7BC4727F for ; Fri, 25 Sep 2020 18:35:11 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8B4C820878 for ; Fri, 25 Sep 2020 18:35:11 +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="NijnwCAO" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730143AbgIYSfI (ORCPT ); Fri, 25 Sep 2020 14:35:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35722 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729718AbgIYSfI (ORCPT ); Fri, 25 Sep 2020 14:35:08 -0400 Received: from mail-pf1-x444.google.com (mail-pf1-x444.google.com [IPv6:2607:f8b0:4864:20::444]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 00CA8C0613CE for ; Fri, 25 Sep 2020 11:35:08 -0700 (PDT) Received: by mail-pf1-x444.google.com with SMTP id b124so3984143pfg.13 for ; Fri, 25 Sep 2020 11:35: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=/tLZJac8Ffn37A7WxCGBPX2NFTEQpF30SJ7IB/uL5Ro=; b=NijnwCAOmsCb2aBVRKlNwgmrQotpLKDdSWVvypG6iEl9ysVLEUa9ZnkMttcIhl4L74 XdqMa01kqAfV+e+hflv2pda81/Yfn2Y85LdAbFz+Qz4qA5uH0m7Ez6t/42wQectA36mO pP1G9m7RUHiuB5D7l91GegxJqFR8y/rl8hAlRoJekdUaAiyxFTEMIpvYYbNYykYZjF0K Nw3MR171eAQK8n6l0dJbQvTN4KantfBGlZkOcgXPt1uoC0k/aQyJW4wtIjvPds2w29B2 46xHPKf8u3e76Aimf5zPVugS0Q0u1bPoAgwXlbMRlmHEgXbiNnQwVuyDlDSKr2WnCgOx Dsxw== 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=mUXd2gbi/ESh/GDJaplFEohg/wt89MPs8aYOEfwguVFjXQTZtLjLvf/bq57mG4uj5l HJ1tsCu4+yDj7cZ7xY0oPdlbnwU1MqM+yyis0SJ1f9ZzoAfRzfh+BegeIpo80ZDvEWHI nPjceo8DaDG3uYkwPk2Yqo4Na218jBGfiQVTaR9AU+R1oODCPkXwaHY9JeoWaNLETYoW mTWFGytrSZfUhqr/iSI4iqWyieRvv5fPDqXvqMejHD1MJVFtRl7cdnclYRoop1wD7842 Cj7UOJ7lO0B9Cxqkad+OzAzWXvtVgpILj0XC3JTv/aVa1XfBTmp4m2ZhlV/WCcN+IX7Y 7j/w== X-Gm-Message-State: AOAM531+1C9rV4l/DDtCgKSW1TeF89ZGW2looI4gi6N+ZkyaIc5cTHYG 8nRVzLXRRnjOQTLdpPkZuZdBbHF7cGUl7g== X-Google-Smtp-Source: ABdhPJwmG5aDiBjtSY30e1R53S/Hb5Hzen2pnlQWJLzC7uPefi8m2TpdWkdwfom27BaXGNQ8kIl7Kw== X-Received: by 2002:a17:902:c3c9:b029:d1:e5e7:bdd9 with SMTP id j9-20020a170902c3c9b02900d1e5e7bdd9mr681699plj.57.1601058907590; Fri, 25 Sep 2020 11:35:07 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id r16sm2554546pjo.19.2020.09.25.11.35.02 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 25 Sep 2020 11:35:07 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, mchehab@kernel.org, hverkuil@xs4all.nl, laurent.pinchart@ideasonboard.com Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC v2 39/47] staging: media: zoran: enable makefile Date: Fri, 25 Sep 2020 18:30:49 +0000 Message-Id: <1601058657-14042-40-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1601058657-14042-1-git-send-email-clabbe@baylibre.com> References: <1601058657-14042-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 Fri Sep 25 18:30: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: 255593 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4E9BFC4727F for ; Fri, 25 Sep 2020 18:35:25 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0614022211 for ; Fri, 25 Sep 2020 18:35: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="Nd2nlHnp" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729894AbgIYSfV (ORCPT ); Fri, 25 Sep 2020 14:35:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35760 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729736AbgIYSfT (ORCPT ); Fri, 25 Sep 2020 14:35:19 -0400 Received: from mail-pg1-x541.google.com (mail-pg1-x541.google.com [IPv6:2607:f8b0:4864:20::541]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C37C0C0613D3 for ; Fri, 25 Sep 2020 11:35:19 -0700 (PDT) Received: by mail-pg1-x541.google.com with SMTP id m34so3301488pgl.9 for ; Fri, 25 Sep 2020 11:35: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=1AqNA6Ddv0jhYAlzZ0w4re+NLjmh8IGHc11oAfYNMWM=; b=Nd2nlHnpPaoMda3Y5gXvpvu8UpRoRw/Xs9yncAf3Bjz1NAzElBiMD5WdSO0LZi4wvd nBQ/o/Hic1I9B5WOf6t2aN7KM3WLeoxJtTyQbJ6ZtO2+4MBexWDD/NGsnSW+Tv5rYxDJ 1k0Z7uzvK8HPaAhELeI7WQnh5u1ueL/DFYQIdqK6s+HM936wh676M0UYa/YpIv4W57xU iXENAraKyy4zp3xZpu6fswwUynAMQ3fIn1CUf9SDkvVX14LYuP5+MbWH+6o5XjexwMGB YTgh4Kuc+9tT0JRti/Vb7tYLx/k1VeknNCSyrF4R54Vm2GdJKkN6dHTx5qw5nYS4OSAT sxqA== 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=1AqNA6Ddv0jhYAlzZ0w4re+NLjmh8IGHc11oAfYNMWM=; b=Ua5gu4+0TA69BbU0svooTJWJTJte41/imM8ljw1aT3He053TVI6e59Pizt1Fy5YYub agk9P69V8zVv/g2GbAm7UBJiA8qEgUJOS7wYIZuuZcXdKpJPO3NEGBfW1RAV1GuYnLWJ jlriJVvSAv5wfUgz5us/QMqDS2lYXYwy0ZAbJig17fbUCPcmFJmqMLfZfravseJWkEmI LUEFk6h8AGjn9ryH6NY3wkZ7LsDELkPTbOEeBTbfz9FJAbO39sIdeh6Ka+kPi38C/z7R BcaDbcnKa0EC17kbcRLbOVqvnqNg/SikZc8/QK6eCsKU0FeuV3u7JhSqjD8cwfsifK4M Dgfw== X-Gm-Message-State: AOAM532ZzUrlie5xAHs2DZrOZ+c7LAsziVbi2Efj2ekhPKL380Adp+sX WYMUB6TuQa28SOU4YvXu+5sigw== X-Google-Smtp-Source: ABdhPJxebZnpULsBj+4SHyWr9pLV/nPjkPS83LZyTFDlJodhTbdBjsGLwz+lff17+TOhBl109/wi3Q== X-Received: by 2002:a17:902:9041:b029:d0:cc02:8540 with SMTP id w1-20020a1709029041b02900d0cc028540mr644587plz.41.1601058919382; Fri, 25 Sep 2020 11:35:19 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id r16sm2554546pjo.19.2020.09.25.11.35.14 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 25 Sep 2020 11:35:18 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, mchehab@kernel.org, hverkuil@xs4all.nl, laurent.pinchart@ideasonboard.com Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC v2 41/47] staging: media: zoran: add vidioc_g_parm Date: Fri, 25 Sep 2020 18:30:51 +0000 Message-Id: <1601058657-14042-42-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1601058657-14042-1-git-send-email-clabbe@baylibre.com> References: <1601058657-14042-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 bcbe2c78ea16..5dacbeac790b 100644 --- a/drivers/staging/media/zoran/zoran_driver.c +++ b/drivers/staging/media/zoran/zoran_driver.c @@ -2137,6 +2137,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. @@ -2144,6 +2152,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 Fri Sep 25 18:30: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: 255592 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9E839C4727F for ; Fri, 25 Sep 2020 18:35:37 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5301A20644 for ; Fri, 25 Sep 2020 18:35:37 +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="HjCPwpVr" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729807AbgIYSfc (ORCPT ); Fri, 25 Sep 2020 14:35:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35800 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729722AbgIYSfb (ORCPT ); Fri, 25 Sep 2020 14:35:31 -0400 Received: from mail-pf1-x442.google.com (mail-pf1-x442.google.com [IPv6:2607:f8b0:4864:20::442]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8AF31C0613D3 for ; Fri, 25 Sep 2020 11:35:31 -0700 (PDT) Received: by mail-pf1-x442.google.com with SMTP id d9so4022035pfd.3 for ; Fri, 25 Sep 2020 11:35:31 -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=ilmDn91LW3u8nqKT07CUOhcD4W51+rQiqE8eqpt0HcI=; b=HjCPwpVruGyqX0YXyuViN6wgxL+Kvf6UMMShAej/amwLNfHXdX302rXjgjUvuUzD0j 0JAViXwLIz1DGDdUILPJXnICXDy88zQpXcz+skicRK1apWu9AXHv7MJQDvUNQ+Tcon3a Kldb5l7tb83VTzCalIDCYQ/yq24zhxkoPZSLd4HtsVYz4zKTj+d9R5nnPLEIzeCyOSM9 eBeFeNdXP78FXqD/tRVrH7rHChva1lfPl9gwWap7TnOXsz2OEN0hLBTa7lCJs31CVt/K a4QQAUEDBVgC9f4+gRxHjnRNRjAr7R9WIySNhXi+ycI71Aob3kw/p/Dt+WpA98n/kJnq ht5w== 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=ilmDn91LW3u8nqKT07CUOhcD4W51+rQiqE8eqpt0HcI=; b=Xm7wxV35ydYuJ66ARYBLDc2lcc8r4a3V+fZ/yX/ClIPT8NBD/qwHBC1v3e1RAGwKtm T5BGsTA/9DbAfcuJ41axZ3HLqQnaAJtpSa0gaSqtDNaD1JNvFRVUG/4r7vA2WIQOCCgw T7j5uJ3EEXIBDXG7Y8eYiWtuOWeoeAQWz5Qhj3mRN9SG9c5SaZpcr9Vr8SrDaWEFMoeL ODzzyaNq7ls5zfjM+gayDNb1Epzz2hA+8Ce+vdxQ3ayg/gvAqblHxkmsFwhhEho/L03q 0ON7puOBJldS8cNCmp62vwYdGVbBKkkqV/PhqkC/P3gAf/itPcBIIMpdmgw+Ma1b3A0T jFiA== X-Gm-Message-State: AOAM531JBnTUUlmkupceuTdC0shFbIezlWI0mfCi97Bm0xLQwBaXKSye 2rn20Rs66cqZc8B9OQY+LY2Pug== X-Google-Smtp-Source: ABdhPJyUY4cOZlGnr0YOqOt3S3c5y52NsRI62sbyy3cf3OMhDLyMLTjAUaFrGsXPscSADi+qTnarvw== X-Received: by 2002:a63:2547:: with SMTP id l68mr219087pgl.241.1601058931025; Fri, 25 Sep 2020 11:35:31 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id r16sm2554546pjo.19.2020.09.25.11.35.25 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 25 Sep 2020 11:35:30 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, mchehab@kernel.org, hverkuil@xs4all.nl, laurent.pinchart@ideasonboard.com Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC v2 43/47] staging: media: zoran: fix use of buffer_size and sizeimage Date: Fri, 25 Sep 2020 18:30:53 +0000 Message-Id: <1601058657-14042-44-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1601058657-14042-1-git-send-email-clabbe@baylibre.com> References: <1601058657-14042-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 89fbc114c368..d7b3efa9e39f 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -857,6 +857,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 5dacbeac790b..021073ba08e6 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", @@ -1100,7 +1102,7 @@ static int zoran_g_fmt_vid_out(struct file *file, void *__fh, 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 ? @@ -1125,7 +1127,7 @@ static int zoran_g_fmt_vid_cap(struct file *file, void *__fh, 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; @@ -1194,6 +1196,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; @@ -1352,7 +1355,7 @@ static int zoran_s_fmt_vid_cap(struct file *file, void *__fh, /* 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 Fri Sep 25 18:30: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: 255591 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9619EC4727E for ; Fri, 25 Sep 2020 18:35:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 50475208B6 for ; Fri, 25 Sep 2020 18:35: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="LBVmRY7d" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730170AbgIYSfo (ORCPT ); Fri, 25 Sep 2020 14:35:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35838 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729745AbgIYSfn (ORCPT ); Fri, 25 Sep 2020 14:35:43 -0400 Received: from mail-pf1-x444.google.com (mail-pf1-x444.google.com [IPv6:2607:f8b0:4864:20::444]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3DBE3C0613D3 for ; Fri, 25 Sep 2020 11:35:43 -0700 (PDT) Received: by mail-pf1-x444.google.com with SMTP id b124so3985760pfg.13 for ; Fri, 25 Sep 2020 11:35: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=Nrs0liKFPLw0lqeJ+aeXPOZD9rbK+FOf/tQK8Eu/mWA=; b=LBVmRY7dVBUx8I/55/4YTbnkCvPQRN+glxQAAZUyF2NLhjNJKeMZrAVZ67WaVf8+Hy RS0Ba4aysh6lGef9T5Usr6Wcj7Scq9FFdM9HtFVSJ4KY3FgGChhAcI8MNCskMDBSTSUF g5l5WbFMWACfHO6WLVUZd/E5M7kfpjvSJG834WMzSLqRcXQs1Qo2Xpvn7Eg5cgfqBDoT lC1siSlFssmBxT0zw4NlelXkIWOXlN+tTOuZD7bl/2eGqUrfMyN9GZ6LQZ15CenHUyUV pa6+2IZ1nUEjya+tGxAbeuBgGQXr8qe3rrqu4DpOeFZaMDO2DSCDrFgDwp1hV7tUnIQE GNSA== 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=Nrs0liKFPLw0lqeJ+aeXPOZD9rbK+FOf/tQK8Eu/mWA=; b=kt4cUPbX5Eaw+SKyV0g5Q082unA1CNr8n9gdMPT1F7g9HYj+Z6o4roiZ9MCwW5KeA+ RSYPf8RO3ddtVeWbLHIWuJfawGD0n4+QWSTxszaySGrpfkC/n5YtZIqHL3d+C0aXiI+q TBwnH4DMJGuXY9H7CDhvfoenPYUHYJfW3/tFNY5ZbKtqCNWNjpQELQFflJk4dBnf2TfY D+aZ4ut3nW3i0ogMX/e7ERpr0vxh/t09VACuhQkEi65FXmHiAGHNoAkjKqBhO9crg0cn XVEW40gQglSgZup7F3XTAaiGsjmo3PKRA2bE9RBcQ/wxOmlDO0ZgSURFbpNEILCl9y4u zUXQ== X-Gm-Message-State: AOAM533kQWL7HihRfkQHb48FkHOuW7Unaa3D9Nbj7qb9rV8/s375fPBO rvKXSbjDoswSgJGpIduFOfobOg== X-Google-Smtp-Source: ABdhPJzXKDznCFSzQ3ygmDq9Wj32Gbep4J6seWnV/lUahadd8vEhgrQLDVHygSgfvDxQs5Rg+ZyJLA== X-Received: by 2002:a17:902:c14a:b029:d2:4345:72e with SMTP id 10-20020a170902c14ab02900d24345072emr703743plj.75.1601058942804; Fri, 25 Sep 2020 11:35:42 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id r16sm2554546pjo.19.2020.09.25.11.35.37 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 25 Sep 2020 11:35:42 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, mchehab@kernel.org, hverkuil@xs4all.nl, laurent.pinchart@ideasonboard.com Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC v2 45/47] staging: media: zoran: remove deprecated .vidioc_g_jpegcomp Date: Fri, 25 Sep 2020 18:30:55 +0000 Message-Id: <1601058657-14042-46-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1601058657-14042-1-git-send-email-clabbe@baylibre.com> References: <1601058657-14042-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 | 49 ---------------------- 2 files changed, 22 insertions(+), 49 deletions(-) diff --git a/drivers/staging/media/zoran/zoran_card.c b/drivers/staging/media/zoran/zoran_card.c index d7b3efa9e39f..fe52be4292fe 100644 --- a/drivers/staging/media/zoran/zoran_card.c +++ b/drivers/staging/media/zoran/zoran_card.c @@ -1066,6 +1066,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 @@ -1106,6 +1125,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 ab9eec50abad..a6fb41d03186 100644 --- a/drivers/staging/media/zoran/zoran_driver.c +++ b/drivers/staging/media/zoran/zoran_driver.c @@ -1849,53 +1849,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; @@ -2176,8 +2129,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 Fri Sep 25 18:30: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: 255590 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5170FC47420 for ; Fri, 25 Sep 2020 18:35:57 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 1D809221E5 for ; Fri, 25 Sep 2020 18:35: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="GiTZpxH0" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730180AbgIYSf4 (ORCPT ); Fri, 25 Sep 2020 14:35:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35874 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728423AbgIYSfz (ORCPT ); Fri, 25 Sep 2020 14:35:55 -0400 Received: from mail-pf1-x441.google.com (mail-pf1-x441.google.com [IPv6:2607:f8b0:4864:20::441]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B3A88C0613CE for ; Fri, 25 Sep 2020 11:35:55 -0700 (PDT) Received: by mail-pf1-x441.google.com with SMTP id z18so4032971pfg.0 for ; Fri, 25 Sep 2020 11:35: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=S9MzB7+azPxcpMxlGiEMSs7z6RlW8asusze1qBJiaHc=; b=GiTZpxH0lW8zLiNCaHQKJWiu/l4nzYYVhfD4Q+FRYUWHufVBRmH/PLycl8xGFZ04vD a9cS10XGg+E+Ffx7MlqM0tgXpeQ/JTvNvsevtW+j/jINep15ZyAKN4W0VpUUcfINb1aX IkYbGf8RmvMHMSD0Js0G1erkBco6DXrGwbr6unqxZ5fo0kNbH7413bqRcXCr6gs3dpQs CInR2PPf8FjQnWLtFAOke4X1mgf+gWJRKnWOCueDeC15Xv4KW8TgmAni+ec0MptpiNkQ wPLLqWHXCG3weNTaaJ7mG3yf4AQ5KdiT2d9D6tIap/o5L4Gc5YVoHrYgnUbkq/H1+WxG Gq5A== 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=WhbanrpLUOhKFdAVoFd3q2lodlkmJ4WMCeo8YP/Mvq6CRkrswVTL/R59x4vmXB5drA ov9FozNxdthulI14lI7RZrNLP24IVYXo2qSs08J9WUagv3orxq1ZXm/ZRqKXBf8pKwog RWDHlUcNQUUKuv7KIIUtNcOktdtVF1XQPGCoYzmnJ+IOniuIJxT3c/nStQLv8PFVay7f TqnhncczqgR2dasBn4Q/dQTC4yLdAZMsF6AwIe+oR2hJPs40q+yE2D8wdoFKOcZQSZFt LbwTzT52/Y9fRMCd4TKfe0hujdj27RQtAOF3STeNj11ZBaf7oPfRRuP5pJxKlkS9BQgH PwfQ== X-Gm-Message-State: AOAM532uxgvyq1SdLejit36mceFybJH28t6LkKf4tH5cyt3PEDfei/EM ml4nihFhahcSb0l75T7eab1RJA== X-Google-Smtp-Source: ABdhPJxXOC4LKM9TnKO9HWTZJm0lMuRnGb9ccLgz0ZV43d4dkGVMSIn5UxNpkVjJF3tt+R99Y88jjA== X-Received: by 2002:a17:902:8c8b:b029:d2:42fe:370a with SMTP id t11-20020a1709028c8bb02900d242fe370amr671414plo.83.1601058955266; Fri, 25 Sep 2020 11:35:55 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id r16sm2554546pjo.19.2020.09.25.11.35.49 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 25 Sep 2020 11:35:54 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, mchehab@kernel.org, hverkuil@xs4all.nl, laurent.pinchart@ideasonboard.com Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC v2 47/47] staging: media: zoran: update TODO Date: Fri, 25 Sep 2020 18:30:57 +0000 Message-Id: <1601058657-14042-48-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1601058657-14042-1-git-send-email-clabbe@baylibre.com> References: <1601058657-14042-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