Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754020AbdLTAy4 (ORCPT ); Tue, 19 Dec 2017 19:54:56 -0500 Received: from mail-by2nam03on0128.outbound.protection.outlook.com ([104.47.42.128]:47552 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753762AbdLTAyx (ORCPT ); Tue, 19 Dec 2017 19:54:53 -0500 From: "Takiguchi, Yasunari" To: Mauro Carvalho Chehab CC: "linux-kernel@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-media@vger.kernel.org" , "tbird20d@gmail.com" , "frowand.list@gmail.com" , "Yamamoto, Masayuki" , "Nozawa, Hideki (STWN)" , "Yonezawa, Kota" , "Matsumoto, Toshihiko" , "Watanabe, Satoshi (SSS)" , "Takiguchi, Yasunari" Subject: RE: [PATCH v4 02/12] [media] cxd2880-spi: Add support for CXD2880 SPI interface Thread-Topic: [PATCH v4 02/12] [media] cxd2880-spi: Add support for CXD2880 SPI interface Thread-Index: AQHTdDuWrGmRCM/ikkaS+PgIyzYWV6NLbmCA Date: Wed, 20 Dec 2017 00:54:48 +0000 Message-ID: <02699364973B424C83A42A84B04FDA85440B8B@JPYOKXMS113.jp.sony.com> References: <20171013054635.20946-1-Yasunari.Takiguchi@sony.com> <20171013055928.21132-1-Yasunari.Takiguchi@sony.com> <20171213155422.03621b5e@vento.lan> In-Reply-To: <20171213155422.03621b5e@vento.lan> Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [2001:cf8:1:aec:0:dddd:19e1:c008] Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:117.103.190.41;IPV:NLI;CTRY:JP;EFV:NLI;SFV:NSPM;SFS:(10019020)(396003)(39860400002)(346002)(376002)(39380400002)(2980300002)(438002)(189003)(199004)(107886003)(316002)(305945005)(4326008)(7636002)(55846006)(8676002)(39060400002)(7736002)(106466001)(246002)(356003)(47776003)(6246003)(5660300001)(6916009)(55016002)(23726003)(86362001)(102836003)(6116002)(16586007)(2920100001)(2950100002)(106002)(2906002)(229853002)(97756001)(46406003)(59450400001)(2900100001)(72206003)(7696005)(33656002)(76176011)(54906003)(50466002)(478600001)(8936002);DIR:OUT;SFP:1102;SCL:1;SRVR:MWHPR1301MB2029;H:jp.sony.com;FPR:;SPF:Pass;PTR:jpyokxeg101.jp.sony.com;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;SN1NAM02FT049;1:Emc6yuhNEE7fn4238fbGc9lUyI50JpaGGqlghbVua8azww86lMB/wClh/pxoW3FSvpGiNfmgqAhlZEQQ/cTAWGia4AsnfUWZT4cKhYQqMCRE+cHVowCs3mTidqJIkIUs X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 14e67c8b-d37b-41de-4e4a-08d547444682 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(4608076)(2017052603307);SRVR:MWHPR1301MB2029; X-Microsoft-Exchange-Diagnostics: 1;MWHPR1301MB2029;3:cmxvqjCa8ZT+nvh0ZOcVUW8XbHVbHdbs1VzPmvKhaRMip+R0OokW8/Pa2BzlhxItmso0QF+SimWBe3PF1KXFKfV4pNMJzktm8NHrjgwhWfKt8c4Qu8rf5YAKMzN0vBUqfXO0gn/RbL0jJEEUQs1yb8yIpmLJR9X1EthheAxk+o2HRe1rFCeEnVjjcB6UauVtk/rQiT8XhgV4wLAhT6Th7E+4bmG1dOUCfeT1bm2966nEsx+zwA4IwkFL5PREbA5qFWUXswN7mrnJE9tLBjcS/61WC/D/UABA424r58fvCZx4a5A/fvIyeIGfXCMklpi0a6ArZrpb2CLLNId2bXqIxzz6E0sJDAfRVxYa9O//ZDs=;25:Ky+oBpRxWTviG3yLpmkrjCgtzzXkWFDcVGbHfeb4m3Crj0f3e03jfT8EKVHpmNZTT0TLrX//VagAGKwFk2YtWd80NCr8sjAyDM83lJ1WPlIw0rYmvO/5bALcsMNfpBTJHnzkTRGUkGEVuPeguufYpM+YD8MkTu5MZuRH6vUIZJwd7Hqxs6fbZ1o1Js9qPWr6LqyOmh+iguf0xum0+IRGhA+V99Ak/LjeUUV6MzXhm9SlL2haSaL5b4GuJKERALpUzCDQMlflxiEbBx2mWAV5UHS8xq+Q3qUpq+MPYax1P1LFRRDfcOeHduo9J5PT5D49cbBY+nyaQ5xoUXWkNEtO5bQG3bYJ8FfkA7xwy46APkA= X-MS-TrafficTypeDiagnostic: MWHPR1301MB2029: X-Microsoft-Exchange-Diagnostics: 1;MWHPR1301MB2029;31:O2N+6hDdi6Nziw6PIgbtt+iP8Byaz9ehYscHYAG5iplQsDZS8DFYTJVa7dEyXwC/H+BxPdqBG7HqTQa4NGAZGZO+8nelvlFSF2uNdMr4X7mkhKDVKUoaI+frHpcDeBM6jr5w6nAZVNZOfcrxFHkmNDORBmhkYqq4pKC+PLWgupEyvhR4wwp3KWk7h+ePb67tNCTeeAnXR1HZbpkAga/xvvZMJ/p2GEh6T/QrLelP/jc=;20:tCiJOTdwZHNaYxi2jTPOrIdCs23Vdidf9FFeGLL9M5o/LoCCbgBK+lwiT/ET1FFlvm4j75EbpXPS9uHPNwzrdCQ8nrHCV10n4DRgbWIjUbRXoBffTvhulzlga6CUq6SYMM3lZx7LmAe23Ethp+InrCswD8mWmCtcZbSzaUgZIzvO2xtuck9oJmmg9YujcErm3LpHEpyMKx5kpYzPxsjWVpYD3B9gn6+lMnusBktD2eXAh2C2Up5A/Oo/ES5jDC5M0a2v5UlHDOGFSc0Jd28ldfO7WpTU5s0d/0bcjoxF0WwptYx/lpkZwlafFYsFppmIZdBABQh0vfnfXSXkOc9FBjpo4Umgy6Z9JTU3mBsWwFdL78ZjQxl5wN7gSrHgSrGeq8NR376cYsOq6PRs44ZsoLwmSzhU66AXw2R2klN4ZmUmomFwb+zGGmfwXxSo7+YTEN78L/ZogrmuswsLqVIvcunJRuKMHrUt8qfws92P2mfKHFDvBmQp02AzLGS5y7Fp X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040467)(2401047)(5005006)(8121501046)(3002001)(3231023)(11241501184)(93006095)(93004095)(10201501046)(6055026)(6041265)(20161123560042)(20161123564042)(20161123562042)(201703131423092)(201702281528075)(20161123555042)(201703061421075)(201703061406153)(20161123558117)(6072148)(201708071742011);SRVR:MWHPR1301MB2029;BCL:0;PCL:0;RULEID:(100000803101)(100110400095);SRVR:MWHPR1301MB2029; X-Microsoft-Exchange-Diagnostics: 1;MWHPR1301MB2029;4:uaChm1fwhOgIAzUbdSiKPyIMyLiePwouShpLwWozN7Ps4tk4x0floethXn7WtPrNuhWor6Ulk0ft0kMzzRnDLrzthBs5NXutiXPJnnV/VEJLpkGtOdlSLzqV+lUjzF81223FrEbpGmwkQ5vVHz4FfPmA754RTDeuwHmRPqjyFO0PPrkQlOeQNqUUcWDLS/sFmRg+D+HcfrK+YeRPbAVMMzExKuQkYQ+L5d67BXZyiEa3p6POcZ+2Cs2villYCIAv6KZ2jZmboShwnJOuNnazOw== X-Forefront-PRVS: 0527DFA348 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;MWHPR1301MB2029;23:ePda9+L/TxtNPIpWXtOftQRTSLWnsfes7pfVZdZ?= =?us-ascii?Q?UOVsFfqCqeUKUlt15Ck8l/YRC/FzJxWQ5j+y9MPqjKel/Ys7lE6uTXa2rAg6?= =?us-ascii?Q?Et7JZZUG4E93acJq/0c/vb2PQthuCli7UJFR/qWx418T0oo2s7wg/BrArbsS?= =?us-ascii?Q?WEbqvvLGGrFVfmF1WGPOINFRQ4+Nd3C/tGwwfqV3nvRVdGt41+bTOQrbckhO?= =?us-ascii?Q?jdhltJkzUuUTf46u5f2yfDZFGAx0nkYRwScDWIEdIfFZNicRBkxbuhCrZFHd?= =?us-ascii?Q?xWkaJCN91MndyZ82APIK3w6kN6rDMqqKnKsvMN04MrIbEdNeD4Vhv7/1GwPR?= =?us-ascii?Q?BhnkvBtJy6QFVlU/7Y+MN4G/SzRigYD7etmXpncO6bQ4raxnTRcrQVrmdul6?= =?us-ascii?Q?TnZo7kulKYZCb4ttBcsToL9kfa1uPrJvehVwCrvdPgsKKGQAx2RVTeEZGo0h?= =?us-ascii?Q?o5VQ6rLNOKHdlN6IImmXM2jDkM9j4zwMSySAPOJ+efFJijaQnyZA105JJreW?= =?us-ascii?Q?6hNS/q0JbIJZ4B3MPhnzMblOnpxX4IBqYHhy7GK1+RKaw3XSs2M8sbYhtf/a?= =?us-ascii?Q?rhBiNtRw5boDNTcwxfF7yO8MGQtD1MSsuPnFqLGbSTbpIj97h9Doe0JLipS/?= =?us-ascii?Q?/UVDjDJzZWrETn9Ao+oLxtYL+sGjHzBvktoVyIaXG2k4vmtF3/WULKQcgsgZ?= =?us-ascii?Q?O1v0WOsr2iJku8uKub8J5j3+k6Fwa7JdqCr+cG/mtvTg7rN2XzFUW/boQjdN?= =?us-ascii?Q?aPxhMn4J1qhGvI8u+pvhsdp4ilGnSIfq4uFIoiWOCVjxYahSINdJFzcAzZpi?= =?us-ascii?Q?y5zuvDAiy1hQdKfOiMHKozv0dnxcryphXqxIknOekTPWEk6xIVakIpQrxxA4?= =?us-ascii?Q?JS6y1sbb960jDv8aBiFiiwDZk0GKkH4Krx1bQY49FnMZ1LyXo6dILXx9v4Ej?= =?us-ascii?Q?OJensqfNp7ryraJSYVuUcbRLZfBiCT3lJvsXlqF53kRqGxU2uYV2vt+SPS+m?= =?us-ascii?Q?vZX7zxhDfqd4VeNmumw+dNlYbhkMsuxkdOWE1AJR/2ggbXeP6LQlOpWxftqt?= =?us-ascii?Q?LTaY0DFzNeU7ELGyjNXqqArE9s7iV+pxBIJbFWHo2deo8Y6lbXI1OIluCanR?= =?us-ascii?Q?8f5nP+xVOLjQ=3D?= X-Microsoft-Exchange-Diagnostics: 1;MWHPR1301MB2029;6:zFFK2uKZZKSYO2UMkt4eNtewiMtB7kxy8lnmn5xaXTsgbB4Wn58ZFfL9XJdiQZlf91OB87Ho4dYaENU78UlTmmXiLnUH/5ryxLJ/33Kk9XFOTeC42rapN6LntmlLhdHaYbdX5Q9TreLPsAm4KlFWRKruREIpfUWUc8slK92OE3q28I9mRDCk2+yA66H4BvxqsPz7WLXlguLfunAL9p3in2PWA2GgxcSYqBFPDh0kQGr/IpQjrUlJ5uYxwhNvnU+9JjRGNRdIRuori3WjMpp1DHVdyiymF14TzmtDVK8yOpMClfXPqqX3YH84aeZevKuI6r3633+xDEoksQVZSBIE3kuELCWJ0hLXUE99tRAyEak=;5:qVnvGVQoCsIeOkuS+IV+EaGni29rbz+3lNMeXJ/Tw5aLJdCBAeBlZgxPt/3+32PCDLnRtgxzvQqaPvNdDWZ5wnJBJBxa6auXBqmjUMYXVX/Wvv0K5Jptm3PhtGy1mm24tFRhw4W1Kl8MaE7rEgI9aOvYRoFhJQE3Fij084RAnmU=;24:Zj3ylqv9+EmkuH5L/AhOYF/GLxQK9TBGyN/DSBNQgz52LsgG8kz7fQO2tNJD3J0OPkuoUa2Tcp55CTWgaC8xzyos6LLBT1Zr0Gv+c1hGWGc=;7:l8eDufVSYfuj/7I5fAYvxcukG0NSYF46n5uUlZgR0jIehPU04z5qVIMjh98eNctu3ztgrjLBzlyoEweLJopIlrB3p9rU31Sd3FUWTE65LmysBIb7MmbxnODkP1DdNP16qxdM7JbblySb9P2U6a67qdfZmv8Woh/utoBsS+QAK2hiW6oKpSSy/7CYPwFFDppIN2fkWMKMTZLeI263ixRpqWeaqOlZdKQM49SESUyIIZUdj92VLFURK83iC0ThEuO6 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: sony.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Dec 2017 00:54:50.4533 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 14e67c8b-d37b-41de-4e4a-08d547444682 X-MS-Exchange-CrossTenant-Id: 66c65d8a-9158-4521-a2d8-664963db48e4 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=66c65d8a-9158-4521-a2d8-664963db48e4;Ip=[117.103.190.41];Helo=[jp.sony.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR1301MB2029 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3609 Lines: 118 Hi, Mauro. > > + > > +#define pr_fmt(fmt) KBUILD_MODNAME ": %s: " fmt, __func__ > > It would be better to use dev_foo() debug macros instead of > pr_foo() ones. I got comment for this previous version patch as below -------------------------------------------------------------------------------------- The best would be to se dev_err() & friends for printing messages, as they print the device's name as filled at struct device. If you don't use, please add a define that will print the name at the logs, like: #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt either at the begining of the driver or at some header file. Btw, I'm noticing that you're also using dev_err() on other places of the code. Please standardize. OK, on a few places, you may still need to use pr_err(), if you need to print a message before initializing struct device, but I suspect that you can init -------------------------------------------------------------------------------------- You pointed out here before. Because dev_foo () and pr_foo () were mixed. We standardize with pr_foo() because the logs is outputted before getting the device structure. Is it better to use dev_foo() where we can use it? > > +static int cxd2880_stop_feed(struct dvb_demux_feed *feed) { > > + int i = 0; > > + int ret; > > + struct dvb_demux *demux = NULL; > > + struct cxd2880_dvb_spi *dvb_spi = NULL; > > + > > + if (!feed) { > > + pr_err("invalid arg\n"); > > + return -EINVAL; > > + } > > + > > + demux = feed->demux; > > + if (!demux) { > > + pr_err("feed->demux is NULL\n"); > > + return -EINVAL; > > + } > > + dvb_spi = demux->priv; > > + > > + if (!dvb_spi->feed_count) { > > + pr_err("no feed is started\n"); > > + return -EINVAL; > > + } > > + > > + if (feed->pid == 0x2000) { > > + /* > > + * Special PID case. > > + * Number of 0x2000 feed request was stored > > + * in dvb_spi->all_pid_feed_count. > > + */ > > + if (dvb_spi->all_pid_feed_count <= 0) { > > + pr_err("PID %d not found.\n", feed->pid); > > + return -EINVAL; > > + } > > + dvb_spi->all_pid_feed_count--; > > + } else { > > + struct cxd2880_pid_filter_config cfgtmp; > > + > > + cfgtmp = dvb_spi->filter_config; > > + > > + for (i = 0; i < CXD2880_MAX_FILTER_SIZE; i++) { > > + if (feed->pid == cfgtmp.pid_config[i].pid && > > + cfgtmp.pid_config[i].is_enable != 0) { > > + cfgtmp.pid_config[i].is_enable = 0; > > + cfgtmp.pid_config[i].pid = 0; > > + pr_debug("removed PID %d from #%d\n", > > + feed->pid, i); > > + break; > > + } > > + } > > + dvb_spi->filter_config = cfgtmp; > > + > > + if (i == CXD2880_MAX_FILTER_SIZE) { > > + pr_err("PID %d not found\n", feed->pid); > > + return -EINVAL; > > + } > > + } > > + > > + ret = cxd2880_update_pid_filter(dvb_spi, > > + &dvb_spi->filter_config, > > + dvb_spi->all_pid_feed_count > > 0); > > + dvb_spi->feed_count--; > > + > > + if (dvb_spi->feed_count == 0) { > > + int ret_stop = 0; > > + > > + ret_stop = > kthread_stop(dvb_spi->cxd2880_ts_read_thread); > > + if (ret_stop) { > > + pr_err("'kthread_stop failed. (%d)\n", > ret_stop); > > + ret = ret_stop; > > + } > > + kfree(dvb_spi->ts_buf); > > + dvb_spi->ts_buf = NULL; > > + } > > + > > + pr_debug("stop feed ok.(count %d)\n", dvb_spi->feed_count); > > + > > + return ret; > > +} > > I have the feeling that I've seen the code above before at the dvb core. > Any reason why don't use the already-existing code at dvb_demux.c & > friends? The CXD2880 HW PID filter is used to decrease the amount of TS data transferred via limited bit rate SPI interface. Thanks, Takiguchi