Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751692AbdHPEfj (ORCPT ); Wed, 16 Aug 2017 00:35:39 -0400 Received: from mail-by2nam01on0092.outbound.protection.outlook.com ([104.47.34.92]:35936 "EHLO NAM01-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751444AbdHPEfg (ORCPT ); Wed, 16 Aug 2017 00:35:36 -0400 From: To: , , CC: , , Yasunari Takiguchi , Masayuki Yamamoto , Hideki Nozawa , "Kota Yonezawa" , Toshihiko Matsumoto , Satoshi Watanabe Subject: [PATCH v3 06/14] [media] cxd2880: Add integration layer for the driver Date: Wed, 16 Aug 2017 13:38:43 +0900 Message-ID: <20170816043843.21444-1-Yasunari.Takiguchi@sony.com> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20170816041714.20551-1-Yasunari.Takiguchi@sony.com> References: <20170816041714.20551-1-Yasunari.Takiguchi@sony.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [43.25.41.74] X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:117.103.190.43;IPV:NLI;CTRY:JP;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(39860400002)(2980300002)(189002)(199003)(7736002)(86152003)(50986999)(76176999)(246002)(8936002)(305945005)(7636002)(6306002)(54906002)(2876002)(6666003)(356003)(2906002)(2950100002)(5660300001)(107886003)(39060400002)(50466002)(36756003)(8676002)(50226002)(86362001)(48376002)(512794004)(189998001)(66066001)(3846002)(47776003)(49486002)(2201001)(6116002)(478600001)(1076002)(105586002)(4326008)(72206003)(626005)(106466001)(5003940100001)(2004002);DIR:OUT;SFP:1102;SCL:1;SRVR:BY2PR13MB0453;H:JPYOKXEG103.jp.sony.com;FPR:;SPF:Neutral;PTR:jpyokxeg103.jp.sony.com;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;CY1NAM02FT018;1:GeREEuJGg/Kk9FJxe0cYSvOR2+VZOgkzL9N++SMQVbO3kUiRCDTOAv4W8A/2a/kIXmXxYQrYOY/OpRoUPHDcxyOswxL4tN2PIBzeZ842YJ+dTF3A5QXW5/h5iN97Dajp3Z2KLg2XZ7ZsFp5tANmS6Q2jOLWR13KAN2r2hDrQpx0jRxA+uMAhgsgSq294XBsiCK5tRHvEBb/TJm+ka8wZuZiB2g+gM6GNCgzd2+xCvXuf0w1SJSBQGcxCNYEdZ+/wCIpxNZEHYEzuMT+f6DWaiiEAzLn8K0Qy5C+0uEdXltdQk3VxWADPJqJCtzmxY44i1sTCAHZ6ujugZtjBqrC6q69qMCpDwr6CoHkw3wRtwWKDa5L1aRMy9wN/A4bGAXm5RixHIENfs0ymmAaD/wDxSuRKidPIK4OfBA5as5SRNCqwQ8IxNIORoDhUK6o/3obEgY0urTvit3uoHbczGcSHrpiQzN092y5qLvKSm5HssCJuMYfos2hR7WPu/gVMil6qiM9s7zgMW8/2ZciE1Asp7TUzyipQ6KpRF+4gmYcc21Qiw9E96cq63oCpjTy+cJKKOZgyGt5nuYjEj+eYxg8oZgNNMjWscKdKlajHYUdWvQTlpln25/NdVNGRvrs/wuX8Wa8jk/S2wjjLawLqZqo4BJuFTHUWlAPTL/Fh4nQjOwAuwSR0tI91YJaRt1Tw//TfCHa1ts8ySKitBemjQAeYLRhSjVec6rY0f8/jeKrPKQ5taPaaxpRgOV2XSGu7yr6Fw/cDI91EKls8PHfPkeDxK4AT64Ocri+9tcvOpkA6ui77qKLMGxdeNyc+MNLjm2Aod87z7r5Gh5KM4dolXfDx/WDC7pEXSWhHD+Gsgu/eBV3Ux4OCWV2ELa1/o9hEJOd0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 34dbca14-9d39-4719-e6e8-08d4e4603b8a X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(2017052603153)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:BY2PR13MB0453; X-Microsoft-Exchange-Diagnostics: 1;BY2PR13MB0453;3:YUk7etSn8IDSnOi202g4Epr/+TZkXuTeDpWItXrWrCG2obbjhZD9Sr2Pb3kl7XoESfXJzWpNVLGcMMQ4bOcE2T1UvcILvUXHiskGQGLtRZrZGwoSYrH238tmsGY6yiP7J0fcIJRPTmDKniXTHLH3hhn2g+J3q5TuqUICvnFZTgxVhFAbb3HjRkeagl286c0B+sSfuaERENO0lSKCM4S72dzjQeGn1Pa5jMR/T6o5QcBmPwgFtrzl+6q5FAptIZ9IIoSQpe9PMcD0iAwF3u9dw++p0qst1S4/jkOR2o7FIO33U//HBk95NolzswVGEZ4ATH6GAfmAol8SzYh+LizUi6vBLp4iUiOuLlSdELMaZ3I=;25:KfJnwLS6VQaKpwViC8nkZD9sdlS9I52KDRQnAmIEbreE9WK3t0Q8XyderwG3OAqlDevh6ALQA+RRDio3klfr9ieiSToSsUyk66Uel47SmqJRhziMqOdQtBSc/YGZHaJn2LzOXQUb5ktE18m379A6ZbJIZycIf7RVJUPaDAy54pZPIexDJ/Y/0WsgZBv6Acmj6zQRaSGJPKOv3Crga+PLDcWbzoHBHz/p/LgqY72H/DC4LWsMBLJSjLDKNatFfp38wyi5nKyREWS/98sXWecvjj0ofzhYqSQmJg01oFaX+0TPjZAJX3G/7QSxmYua+t0W6s8zkVNLr1vsdGo0fYB0Pw== X-MS-TrafficTypeDiagnostic: BY2PR13MB0453: X-Microsoft-Exchange-Diagnostics: 1;BY2PR13MB0453;31:tcMjdEVp89pHKeAASkpSvhrIIzgudHdCbnBRv0qUAae+pAJzyISoEFxkSWn9QQgEiTqwlJOdfXDl/j6JYiep/gd4zzI5C8h2vp0IsLvwg71QmKoCr2yrYWdKKdSLi9VbbNj+zx3VMcDs0+s3PnE1PkGPUjGowDFIMHzoC3MRqTOQzkMB2BVnNIEVYDJtXjsnOwvXGGk1VyvLh1H8UQ0l/kjnPyHMOxuxK+mOf8UZSZs=;20:WOsoJptEsGdOXafY58sfEVCxhrt0qmWHQNnIzmhfDO6DrF3QE3BJp7r2pVfwCdiyaJYdQQRpH6dCKL/wUUOwaxiv7KIrH3Lb9CaEGF/7tptEmf+FW6IAr/JAFBUf+E9jhVKEIC4qBBexHiiFl8Mt7mK592AIFwdQI675wl6tVPmiyJrDyJVq2aZuwpO7OGP6ghpCFNyQrXfhp7N1k7JlCrBq0CaGlnPV8ywgD7hP0XbyUqvth59doWrm0gJDFqJcVlh63l3j2naHPsuAxSKcWDPLIEAdJELXD0L2lpI8ZxyBlTQkmAzOjHpdYheHsYQsu/299v+2jLSOnA10qtwVf+pXToPAlbR4KUJCbtpGQrBe1iJaqy4UXyWe32gf0Hzn1Nhb+mdwT2v1MEyvlrtiw68uE+zpN3o9nZcBzoNBZ/63yPy/p9fY6LbNHt9eCqiGCuiQXm6zcVuGziJTW4+xT77GFk+lXlNb4Q1mcrMhcbNXEdMEWfWAwSv+z9fSNfqj X-Exchange-Antispam-Report-Test: UriScan:(250305191791016)(182409339516656)(22074186197030); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(13016025)(13018025)(8121501046)(5005006)(3002001)(100000703101)(100105400095)(10201501046)(93006095)(93003095)(6055026)(6041248)(20161123558100)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123555025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:BY2PR13MB0453;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:BY2PR13MB0453; X-Microsoft-Exchange-Diagnostics: 1;BY2PR13MB0453;4:38FvUNg0qlYOHS+clPhivwy/SBynEH2nqwYztQN/7S4HCNXUI8b0pSlCDvwRL/Y/qZLrdcuY4bGUGtrlATevNCsdI7jvz+1ZDsQ0nQsGLWjXzLfn8N4aehi+zK6rI9s9/j15wmM/gPRPpJhACFdmKH4RMo43E4XvJLtKKbzw66riuWdepon14DsLccIYB/LPHu285Th+WIlVguS5gP2Tw+OJjnLWEneu4HJ33T2c/cQpsZicct70SbLPXX3WO1Iwjp/+cuNuHsUzzchgfGznzhvPFKbyuh8cwDboyd6vd2NEPuFuIcakh4o/NsMZxKQKF63nzSnBLNUGlyWePYtH9H9yKy/8NPQ0U01euGoCqjYvO+NFOyni/hT5jxSGXGYk X-Forefront-PRVS: 0401647B7F X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BY2PR13MB0453;23:sanN3NlAlPHEXBzGxNE19WzCqBhGoBiuiVWdb5DV0?= =?us-ascii?Q?K29Yn0ot+4pCW3Cd6Z/vrhlJ6eRW9sAjANVWJhQRlmnQqqxfaP1bX0rZ+2K1?= =?us-ascii?Q?N7ENBWw6s1samlRFEpxe6oURFmZUEdLa7dQhwuA1P5Z5tKObWkhRanxeB840?= =?us-ascii?Q?D45UHz1nJPP8mGWCe4aHgWgQNWsiii36CmgdfgRi+/1vVqNk/ZK6RlVU/1m2?= =?us-ascii?Q?mQ1tUrKYdJIVLrDnezwY/CAIAcL6v7HQBaIbBgYm/vJZIAzlwghWaHJ486Qk?= =?us-ascii?Q?yaP1o1goeooUOrT4qjbZJ+twPCcmGX3Uv6pqvKTgjPw+lh+FUcbbGon7p456?= =?us-ascii?Q?wLeced0HxyuSRFpeJGifgYscMWkMJXkMKsvlu3SB3QOIYpLGlSacBBkYXTQY?= =?us-ascii?Q?EN8yLsvPuF2o8ShoWwKgzMSeqDr2L/RHY1jRWbO/k8xLHOwlJWJXN85yNhqD?= =?us-ascii?Q?HzCyAYRctnnj2CYqS9D4UKP70D6rbv2KMYqPzS/PL89fFGFsh4g4+WpwWvi8?= =?us-ascii?Q?JomR+LY1zxoLB2oRdWlpd2wzucFAHzbadYCt6oES+YzSBoSOXjcgAnAApvKa?= =?us-ascii?Q?36KrRlttaUMWto0ZUdMDWMRkMtNCBuS0ZVabTc8zGNPLuie9vWiaItSLa8j9?= =?us-ascii?Q?WxsQj+C4Sr7skDKbtggbXhSQbFTrToa3S8spmk0mndHpcYvxU/+4qT2qLIeI?= =?us-ascii?Q?03ScA0GsKlPx0GLIlmHlmGx7mj9GGt6q2Tjn78zoSM3I06Jw6STvWCoIZz1q?= =?us-ascii?Q?yxr4ORYrFHIisVTAWKCoWFtrz35WfnVHI1LmaS68heyQt9CuL89FP4bp7OOO?= =?us-ascii?Q?9/LIqC3cyDFjlu2cPvMJLaA2H+f9qZZ0J9PcMWnvz0Qg+mdhusKMNz36O9kS?= =?us-ascii?Q?fm2X2tdqRApQl/sFb95C2lX7F4ZNSum9nqZXyPb44FIfiDGCfI7R76fANPlH?= =?us-ascii?Q?zHCnR8V6+SduO72LzOpQKsUbECMJsZMHIAjm7RZ45PA4dzW4bAVp7c0RcDvK?= =?us-ascii?Q?W5qlD6Ws/fbVAvXNl4xeoiyqoDH0NBVBBTxo9aBHTwfI1K+GHQPSDqAgAa5N?= =?us-ascii?Q?BMAXW3c7ss13ll/4i5xcX63qSaVihwMpmPr4hOd/uPwoucCPQ=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;BY2PR13MB0453;6:nB5bKUYv0C2AbZPwTcs71EiOg99v/r7S8AnFA6vBYJBIsjcNf3SA+v+1/BbN/Y3APUxcDLQQstDN2/VSixz0aaTLcyDDEfqjWBvybak3qcHAxGd03Tbw3h//z0OFf/LPsI4H1/Zpxz0igqWY/y2sYABBDU7egK2yg8I9GBh6EXjYOXCyYYWvmr7cvLCAY+EmEENWM2OQCiPO/OVWWtnPGibVmHF9b77RQHNTJlOhDsD/mjZUVsa4SZnzSkpa06QF2nM8ciGfFS+XOGfQjAEYIfjBulhlQgHqC6IEQORO8rwlxfAKhVs28nOo4eLEqCJPrpxecvb3VfVXKGw1hyq1Yw==;5:b304SRw+lYblIha+UJrERIYLIOn+78Dx2NIY1nuh0sQ2g4dJ/9UvIc+4pI7j+YVWn/I5SUqYTDtTT0kkZ4y5zczprK36JSQCg7ilV2q8XAPo+RDB9yuJt3lr2Zkhxbl3jsL0C518Aao6skt30oWPtg==;24:B/OICydcVnniH9DyA6ZUwLG9GSWVTth51J7ZrZ6ZK5gLymCEIVuxDXj1JcrtMtIX6tMqIVeMAUZQ43n5exkJ5UD1r2oodKZZ5SVDzSKHNSA=;7:G7EncpasXRRGON7HLrgh6XpIAZCSdAo5m3ZTiUjsQEYX+3+CNwNHKo2bbPCWx/0vkm8aWNuLC9jCUEroSRKuMNwu2fdKCUZeSpvBq+PlDthjIlZFssOB7ssZHT1Hs4OsZ4fzY8oOCE+PYqLDFGUDk8K/t/kBApb4JAFp0nqfd0Ok0N8qN2u6Qc8urU857CAWNovB8LMvgaX870aOCvcFz0sDq0a5a5rs4zKIkB8VTMs= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: sony.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Aug 2017 04:35:32.8346 (UTC) 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.43];Helo=[JPYOKXEG103.jp.sony.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR13MB0453 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 6099 Lines: 184 From: Yasunari Takiguchi These functions monitor the driver and watch for task completion. This is part of the Sony CXD2880 DVB-T2/T tuner + demodulator driver. [Change list] Changes in V3 drivers/media/dvb-frontends/cxd2880/cxd2880_integ.c -changed cxd2880_atomic_read to atomic_read -changed cxd2880_atomic_set to atomic_set -modified return code -modified coding style of if() drivers/media/dvb-frontends/cxd2880/cxd2880_integ.h -modified return code Signed-off-by: Yasunari Takiguchi Signed-off-by: Masayuki Yamamoto Signed-off-by: Hideki Nozawa Signed-off-by: Kota Yonezawa Signed-off-by: Toshihiko Matsumoto Signed-off-by: Satoshi Watanabe --- .../media/dvb-frontends/cxd2880/cxd2880_integ.c | 98 ++++++++++++++++++++++ .../media/dvb-frontends/cxd2880/cxd2880_integ.h | 44 ++++++++++ 2 files changed, 142 insertions(+) create mode 100644 drivers/media/dvb-frontends/cxd2880/cxd2880_integ.c create mode 100644 drivers/media/dvb-frontends/cxd2880/cxd2880_integ.h diff --git a/drivers/media/dvb-frontends/cxd2880/cxd2880_integ.c b/drivers/media/dvb-frontends/cxd2880/cxd2880_integ.c new file mode 100644 index 000000000000..d4516df49210 --- /dev/null +++ b/drivers/media/dvb-frontends/cxd2880/cxd2880_integ.c @@ -0,0 +1,98 @@ +/* + * cxd2880_integ.c + * Sony CXD2880 DVB-T2/T tuner + demodulator driver + * integration layer common functions + * + * Copyright (C) 2016, 2017 Sony Semiconductor Solutions Corporation + * + * 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; version 2 of the License. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + */ + +#include "cxd2880_tnrdmd.h" +#include "cxd2880_tnrdmd_mon.h" +#include "cxd2880_integ.h" + +int cxd2880_integ_init(struct cxd2880_tnrdmd *tnr_dmd) +{ + int ret = 0; + struct cxd2880_stopwatch timer; + unsigned int elapsed_time = 0; + u8 cpu_task_completed = 0; + + if (!tnr_dmd) + return -EINVAL; + + ret = cxd2880_tnrdmd_init1(tnr_dmd); + if (ret) + return ret; + + ret = cxd2880_stopwatch_start(&timer); + if (ret) + return ret; + + while (1) { + ret = cxd2880_stopwatch_elapsed(&timer, &elapsed_time); + if (ret) + return ret; + + ret = + cxd2880_tnrdmd_check_internal_cpu_status(tnr_dmd, + &cpu_task_completed); + if (ret) + return ret; + + if (cpu_task_completed) + break; + + if (elapsed_time > CXD2880_TNRDMD_WAIT_INIT_TIMEOUT) + return -ETIME; + ret = + cxd2880_stopwatch_sleep(&timer, + CXD2880_TNRDMD_WAIT_INIT_INTVL); + if (ret) + return ret; + } + + ret = cxd2880_tnrdmd_init2(tnr_dmd); + if (ret) + return ret; + + return 0; +} + +int cxd2880_integ_cancel(struct cxd2880_tnrdmd *tnr_dmd) +{ + if (!tnr_dmd) + return -EINVAL; + + atomic_set(&tnr_dmd->cancel, 1); + + return 0; +} + +int cxd2880_integ_check_cancellation(struct cxd2880_tnrdmd *tnr_dmd) +{ + if (!tnr_dmd) + return -EINVAL; + + if (atomic_read(&tnr_dmd->cancel) != 0) + return -ECANCELED; + + return 0; +} diff --git a/drivers/media/dvb-frontends/cxd2880/cxd2880_integ.h b/drivers/media/dvb-frontends/cxd2880/cxd2880_integ.h new file mode 100644 index 000000000000..2b4fe5c3743b --- /dev/null +++ b/drivers/media/dvb-frontends/cxd2880/cxd2880_integ.h @@ -0,0 +1,44 @@ +/* + * cxd2880_integ.h + * Sony CXD2880 DVB-T2/T tuner + demodulator driver + * integration layer common interface + * + * Copyright (C) 2016, 2017 Sony Semiconductor Solutions Corporation + * + * 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; version 2 of the License. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + */ + +#ifndef CXD2880_INTEG_H +#define CXD2880_INTEG_H + +#include "cxd2880_tnrdmd.h" + +#define CXD2880_TNRDMD_WAIT_INIT_TIMEOUT 500 +#define CXD2880_TNRDMD_WAIT_INIT_INTVL 10 + +#define CXD2880_TNRDMD_WAIT_AGC_STABLE 100 + +int cxd2880_integ_init(struct cxd2880_tnrdmd *tnr_dmd); + +int cxd2880_integ_cancel(struct cxd2880_tnrdmd *tnr_dmd); + +int cxd2880_integ_check_cancellation(struct cxd2880_tnrdmd + *tnr_dmd); + +#endif -- 2.13.0