From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753252AbcC3MZx (ORCPT ); Wed, 30 Mar 2016 08:25:53 -0400 Received: from mail-by2on0061.outbound.protection.outlook.com ([207.46.100.61]:57868 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752056AbcC3MZu convert rfc822-to-8bit (ORCPT ); Wed, 30 Mar 2016 08:25:50 -0400 X-Greylist: delayed 1110 seconds by postgrey-1.27 at vger.kernel.org; Wed, 30 Mar 2016 08:25:50 EDT Authentication-Results: spf=pass (sender IP is 204.128.141.23) smtp.mailfrom=infinera.com; davemloft.net; dkim=none (message not signed) header.d=none;davemloft.net; dmarc=bestguesspass action=none header.from=infinera.com; From: Joakim Tjernlund To: "davem@davemloft.net" , "qiang.zhao@nxp.com" CC: "linuxppc-dev@lists.ozlabs.org" , "linux-kernel@vger.kernel.org" , "xiaobo.xie@nxp.com" , "oss@buserror.net" , "gregkh@linuxfoundation.org" , "akpm@linux-foundation.org" , "netdev@vger.kernel.org" Subject: Re: [PATCH 4/5] fsl/qe: Add QE TDM lib Thread-Topic: [PATCH 4/5] fsl/qe: Add QE TDM lib Thread-Index: AQHRimMP1KdA8DRGz02mbpJtEE3mJZ9yVZ6A Date: Wed, 30 Mar 2016 11:50:00 +0000 Message-ID: <1459338701.3538.17.camel@infinera.com> References: <1459327830-19829-1-git-send-email-qiang.zhao@nxp.com> <1459327830-19829-4-git-send-email-qiang.zhao@nxp.com> In-Reply-To: <1459327830-19829-4-git-send-email-qiang.zhao@nxp.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.100.99.93] Content-Type: text/plain; charset="iso-8859-15" Content-ID: <15A85D9336B5D843B17BC2512C9F0B4D@infinera.com> Content-Transfer-Encoding: 8BIT MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:204.128.141.23;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(438002)(50944005)(24454002)(199003)(377424004)(189002)(5001970100001)(6806005)(5003600100002)(5008740100001)(50466002)(4326007)(2501003)(11100500001)(5001770100001)(2906002)(189998001)(92566002)(19580405001)(36756003)(19580395003)(586003)(3846002)(102836003)(2950100001)(6116002)(2900100001)(1096002)(53416004)(1220700001)(5004730100002)(77096005)(10400500002)(16796002)(54356999)(47776003)(23756003)(50986999)(76176999)(106466001)(106116001)(86362001)(33646002)(103116003)(87936001)(7059030);DIR:OUT;SFP:1101;SCL:1;SRVR:BY2PR10MB0519;H:sv-ex13-prd1.infinera.com;FPR:;SPF:Pass;MLV:sfv;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BL2FFO11FD039;1:IxJpy7jHJm0/Sg4ZlWb5SoWw4p69Cq9At0bMNLbbL1pDgY1N0/pFj+Lvyr8+uA/qaZBB4+uGxSw8yb39OvPtkZ30xf/+QXbxS/1IvakCkbFmMP7AwrR/dF+nSnt2xu0QsdSHFKM90wRTLzy3vTA7A0rq/ceFttCanosLGz4UtWtHzRDvt8TVvJ9kL5SfD3VmCTFlQV+Ycohe83tZ1Bp6fXQK9P0OxZNx73p2rqxn2qiVR+c7mIkxs0DBQ66Wf8dZgQTILhGD5/lFqYpmH9vsyz9bOEBiKjag7FbhEj/0wT1/jXCjEUz5QTC5+vzxgn5UAgBL5yyRes6DR2MJ19jTcM/n+p3r4gBNVXa5uyTsvlTMKJ1nARm+b9oQJJ740ygSfNJTo6N8qfDyl+NooJ/8tcqhTmtoLs7T+P8zyjUiooh4LtreR9I6WF9xY0QEB4m2ZQ47jUbJdqB7zqB6nSu6L1dirVlXRLawA98i+o5Ff2M= X-MS-Office365-Filtering-Correlation-Id: b5cd1b4f-e044-4c92-be0f-08d35891aa99 X-Microsoft-Exchange-Diagnostics: 1;BY2PR10MB0519;2:Q9HBpLX9+EtpCS1VYdgKN7528uRG5JsKQXZw0YW/VEbNOoewi2J54uEnd+C2r7Yp/65MqV8Kw6nzHMV6KN0ToKqCV0aarKaM7lm+DXg7IT+g9PrH3ml/pp4yI+hN8d1mlG5L7RrdKRBpCR6DhqBzUnkcHYl6mbDh8ionBYzd+Ap+oeEI1sGTS9X5i9sHj4sI;3:EJ2TZ0xus81mpOHpmx9XZUDRN6slKbcUxFbVNxmAkJp9VHk3k1IHptz7Adts4eqVJfvHZA6+4RWoelNnPXsdn6xRojEar8ZiMk4zx+VZUWCwtnZFMQ/1NIRl6mV55RxtHNTKnpmajrWNeIDax0IhmGhIdnhxYGAhShbY8WckAk/fYJm8DWQm9rCkTLbLIWkdurwzZHOoQYOlQDnFo6My8VS3sdChEDOPHNwoI0OcfHBQotkOL0AniRtDni2/NWdArnnOoJTZczao2UPWI3/+Hg== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(8251501002);SRVR:BY2PR10MB0519; X-Microsoft-Exchange-Diagnostics: 1;BY2PR10MB0519;25:T+5/Z6R3lq5Sy/prtmI7G47ceuAzPD1xS85Dl2jhL1GlsMsVigH5ni+4Q2+/Fb5/RGFTSltpWx928TTI6MvA+mQegOKtyhuatGx3ADOafsfC/QYkrSAdJx7qTe/FkGjVxURJgoq3PDZrFEwB0N+fbN9CWi619NvuZ7gwBsc55BR9p88y/72NpEBhMANM5roUDewpHIhws7KdHD5DiBjlnSwM+H2+5JDE/HYtaViMEsqKfCIPTMIZqKh8qlxQ8OHti5z4EOx1w9njCHm2mJj5zZKpy+BMa3emqtgEI/Tif4i05AUMjN+iCnkTjqgFmULsWjOn4JFY75bMsoW9UszdURX4ofKI0bJg2GTUQkDtmfV6+HKrHpQ/v6cCIdlvmk6W4O8PCnCYnxKrm6d3ZpnAvVWpNe5kS1gkLosy81jwqyA3FHPn0afh9guzysx1ppfPvUk/HadUXxLh0PD1iRqGqjAzxvhxLNZCPqyr3ZucYPn7K+eDaeyggIidg9Wp0GQSbGzsO3sj+pOKovqDgADVsE8Qw0SPLCxNwYS7FPiUrSnVdhuFzsBloCFdMS5MXuSa9GFhAtL7yLkCwoMmFcwgY9M6EvSyctGSjhlHHpnXapFrbnqo4IjUUAYBMsGo2QFQ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(13018025)(13024025)(5005006)(13023025)(13017025)(13015025)(8121501046)(3002001)(10201501046);SRVR:BY2PR10MB0519;BCL:0;PCL:0;RULEID:;SRVR:BY2PR10MB0519; X-Microsoft-Exchange-Diagnostics: 1;BY2PR10MB0519;4:0Hmah48X+qbJzmd2qVTHG8ou4zKYPWIk0vBHdEj9+u+LkG/tVxzNn5nIXQf7ZEJRfbxWMiZUjNvg7NmWk2tyRQinYr3kk7L6Pz22hb2RPkQEj6svnhc9dc44VSKYy/4DFYKxe4lDA5zByny+P8mCheX9Ezg+n0rFD/YWYPaNSrQsI3SI7XqbXgf8lLHC/sZm/51bKmaWxzCj/n/6sUtui1o3WwO/v2ddHC8Hu5ghizEVuGeIAeyQY4fzti4+bDez3HtbfB/q6VQxHBz0bpuquyMGm6bhQvqo64E9pZDhS0ktZTJcKCxsS+qMlE/IixWYxD0DLtK4JfDhOZzZSrkHXykpZJG3f4tspBr28d+jwdWOwp+UeETzVR0WROqUcEON3OVn7INTn661MmEzRU8AT5PSQQSgZ6sT/xgx5C+CCDDzRupxWYKfHQQ34v+DsO1BLooN1E0smVE3QDIeOyDBlg== X-Forefront-PRVS: 08978A8F5C X-Microsoft-Exchange-Diagnostics: =?iso-8859-15?Q?1;BY2PR10MB0519;23:F7JH6gXUaARGzAQ8yFwUF4l+++FxPhueKBMhyC?= =?iso-8859-15?Q?Xe8omkWtVq4Y/QP2LNMBdovV5+MnURFj710hR3rjbcUeyjHGW1cs+G86v?= =?iso-8859-15?Q?dRHA1j+IVE9AxJgCmGsZkntm6RlrkJroZlb1q7HIawTEjCxoRp+QHHAJA?= =?iso-8859-15?Q?acN0DuQSkEZnUtC+3Zad/jZiBcCq9j9jOyhJDcdg0qhd+a9nnD1RihuEL?= =?iso-8859-15?Q?GrzycQe9fGhHbjsrRv7gNT2UQoxBqyx0JDzRds1LcnAPeiLMoSDjZ5i1Y?= =?iso-8859-15?Q?ccj++6HYqnXjkyzyYeS3fGTUYK46K3DYGPE9ANPhXDf4o1ApBVyolLPFI?= =?iso-8859-15?Q?u8K4NRdzbuZ2MGdle0LmlpPRl5a2aySWIbhrFMuo1BaHRj5HWfAT/UHPb?= =?iso-8859-15?Q?w+PPNg4E+Ty/NpDTlR5qczBVYRpRkyYjxqSD9kkqHs0pWDICZUZ/VWDbe?= =?iso-8859-15?Q?stKr63uSf9FG5BiVcpiIDMheuUsgXH5EF232CwQe4fT1SUPdrvEF0qnwX?= =?iso-8859-15?Q?khoa/nCcsmlT/ne/nWXyC02eZA64WKnvs1vXONJhQ8SELrEqs2xTUaeKZ?= =?iso-8859-15?Q?bi3Mv/T7DbVmThDWUc0LAmuBaVoReYSmm9v7gig0sBpvbcsNQXC9xHLh2?= =?iso-8859-15?Q?sUDjeUPicvV2pd/LhGG9GpX16/MMi7KAQup0pvImMuslu+aKteJBypLjB?= =?iso-8859-15?Q?SD+GrAHc5o1VcqgALW3ySUNbqSW/ZvBS0rPtJ5uNoizPfl5LH593Q6Ljx?= =?iso-8859-15?Q?VMmtA5J2rboU5i/KydVwPw6uO09TUJJViMmcFI6pwQLYlUHr4WKcuWk7h?= =?iso-8859-15?Q?4ItHpMmvLQmzuBQi3/5Yba4SJASwy852Sskfc+mQYtkz2VOQUPmAM69W7?= =?iso-8859-15?Q?Og1Reqxg5lv2DVY6tbvPBPzrT0tx9l4u7g4ciUZW11dYBK7QdnitSt4T5?= =?iso-8859-15?Q?QtbjvLFMXdbb8tbIjyqapCLEZyJI2ymmh0YG4ANKDeM7cFqlqrM5DRvDG?= =?iso-8859-15?Q?xRW6ObF2TNknjNjxdbhX70BIreEaVfvIZcpQwjTVOtXT8zSN43qyNPkvl?= =?iso-8859-15?Q?Dl9KxqpE+h4f89TqMwgXnW86NsD+mMyw+KAT/ZO3c7f7yEopm11GNXEbB?= =?iso-8859-15?Q?4VYBkVDeRqp2uBj99U/gFJvRaslOyPLOQvbdwd1dVsxNlidpzXbOaNIZ2?= =?iso-8859-15?Q?N7jRxDRlO5+SIA9avH0D8aYeEGd+roA/O+su/uu/H/T7o2VFiQhaQ6U5o?= =?iso-8859-15?Q?r6ESDZfVTRsglVGwkw990awOsNiQg2GwYxBaJqq/majqfc9WwglIl3Pl6?= =?iso-8859-15?Q?yfvlo+IYepfB8y9J8r4dBgyw=3D?= X-Microsoft-Exchange-Diagnostics: 1;BY2PR10MB0519;5:TVxPqKEjtUQX8jLJmQgrJFb8/WP8xZD9ywBVszGTN0c98EzyaqKAEZA9VA1+B7Ro28yk06pNMegLlYZPXYTlyRYWWKTGLce1VGy6Da0HLO09HKfyFQWCnu+8RKWHGzMZ6oj6po4ubvWBjCkfVh945w==;24:4aiHu+HoeWaeXCJK1idJT7DkuoP2xDxqjzRP7k09FtyDsN9gbRztfpEqplmuvjQxr9mxq8mo82zCnpSyq+nmezHksKY8fAW1Vy4Rr5CO9UQ= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: infinera.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Mar 2016 11:51:44.2580 (UTC) X-MS-Exchange-CrossTenant-Id: 285643de-5f5b-4b03-a153-0ae2dc8aaf77 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=285643de-5f5b-4b03-a153-0ae2dc8aaf77;Ip=[204.128.141.23];Helo=[sv-ex13-prd1.infinera.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR10MB0519 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 2016-03-30 at 16:50 +0800, Zhao Qiang wrote: > QE has module to support TDM, some other protocols > supported by QE are based on TDM. > add a qe-tdm lib, this lib provides functions to the protocols > using TDM to configurate QE-TDM. > > Signed-off-by: Zhao Qiang > --- >  drivers/soc/fsl/qe/Kconfig    |   4 + >  drivers/soc/fsl/qe/Makefile   |   1 + >  drivers/soc/fsl/qe/qe_tdm.c   | 271 ++++++++++++++++++++++++++++++++++++++++++ >  include/soc/fsl/qe/immap_qe.h |   5 +- >  include/soc/fsl/qe/qe_tdm.h   |  94 +++++++++++++++ >  5 files changed, 371 insertions(+), 4 deletions(-) >  create mode 100644 drivers/soc/fsl/qe/qe_tdm.c >  create mode 100644 include/soc/fsl/qe/qe_tdm.h > > diff --git a/drivers/soc/fsl/qe/Kconfig b/drivers/soc/fsl/qe/Kconfig > index 20978f2..463cf29 100644 > --- a/drivers/soc/fsl/qe/Kconfig > +++ b/drivers/soc/fsl/qe/Kconfig > @@ -31,6 +31,10 @@ config UCC >   bool >   default y if UCC_FAST || UCC_SLOW >   > +config QE_TDM > + bool > + select UCC_FAST > + >  config QE_USB >   bool >   default y if USB_FSL_QE > diff --git a/drivers/soc/fsl/qe/Makefile b/drivers/soc/fsl/qe/Makefile > index ffac541..2031d38 100644 > --- a/drivers/soc/fsl/qe/Makefile > +++ b/drivers/soc/fsl/qe/Makefile > @@ -6,5 +6,6 @@ obj-$(CONFIG_CPM) += qe_common.o >  obj-$(CONFIG_UCC) += ucc.o >  obj-$(CONFIG_UCC_SLOW) += ucc_slow.o >  obj-$(CONFIG_UCC_FAST) += ucc_fast.o > +obj-$(CONFIG_QE_TDM) += qe_tdm.o >  obj-$(CONFIG_QE_USB) += usb.o >  obj-$(CONFIG_QE_GPIO) += gpio.o > diff --git a/drivers/soc/fsl/qe/qe_tdm.c b/drivers/soc/fsl/qe/qe_tdm.c > new file mode 100644 > index 0000000..9a2374d > --- /dev/null > +++ b/drivers/soc/fsl/qe/qe_tdm.c > @@ -0,0 +1,271 @@ > +/* > + * Copyright (C) 2015 Freescale Semiconductor, Inc. All rights reserved. > + * > + * Authors: Zhao Qiang > + * > + * Description: > + * QE TDM API Set - TDM specific routines implementations. > + * > + * 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. > + */ > +#include > +#include > +#include > +#include > +#include > +#include > + > +static enum tdm_framer_t set_tdm_framer(const char *tdm_framer_type) > +{ > + if (strcmp(tdm_framer_type, "e1") == 0) > + return TDM_FRAMER_E1; > + else > + return TDM_FRAMER_T1; > +} > + > +static void set_si_param(struct ucc_tdm *utdm, struct ucc_tdm_info *ut_info) > +{ > + struct si_mode_info *si_info = &ut_info->si_info; > + > + if (utdm->tdm_mode == TDM_INTERNAL_LOOPBACK) { > + si_info->simr_crt = 1; > + si_info->simr_rfsd = 0; > + } > +} > + > +int ucc_of_parse_tdm(struct device_node *np, struct ucc_tdm *utdm, > +      struct ucc_tdm_info *ut_info) > +{ > + const char *sprop; > + int ret = 0; > + u32 val; > + struct resource *res; > + struct device_node *np2; > + static int siram_init_flag; > + struct platform_device *pdev; > + > + sprop = of_get_property(np, "fsl,rx-sync-clock", NULL); > + if (sprop) { > + ut_info->uf_info.rx_sync = qe_clock_source(sprop); > + if ((ut_info->uf_info.rx_sync < QE_CLK_NONE) || > +     (ut_info->uf_info.rx_sync > QE_RSYNC_PIN)) { > + pr_err("QE-TDM: Invalid rx-sync-clock property\n"); > + return -EINVAL; > + } > + } else { > + pr_err("QE-TDM: Invalid rx-sync-clock property\n"); > + return -EINVAL; > + } > + > + sprop = of_get_property(np, "fsl,tx-sync-clock", NULL); > + if (sprop) { > + ut_info->uf_info.tx_sync = qe_clock_source(sprop); > + if ((ut_info->uf_info.tx_sync < QE_CLK_NONE) || > +     (ut_info->uf_info.tx_sync > QE_TSYNC_PIN)) { > + pr_err("QE-TDM: Invalid tx-sync-clock property\n"); > + return -EINVAL; > + } > + } else { > + pr_err("QE-TDM: Invalid tx-sync-clock property\n"); > + return -EINVAL; > + } > + > + ret = of_property_read_u32_index(np, "fsl,tx-timeslot-mask", 0, &val); > + if (ret) { > + pr_err("QE-TDM: Invalid tx-timeslot-mask property\n"); > + return -EINVAL; > + } > + utdm->tx_ts_mask = val; > + > + ret = of_property_read_u32_index(np, "fsl,rx-timeslot-mask", 0, &val); > + if (ret) { > + ret = -EINVAL; > + pr_err("QE-TDM: Invalid rx-timeslot-mask property\n"); > + return ret; > + } > + utdm->rx_ts_mask = val; > + > + ret = of_property_read_u32_index(np, "fsl,tdm-id", 0, &val); > + if (ret) { > + ret = -EINVAL; > + pr_err("QE-TDM: No fsl,tdm-id property for this UCC\n"); > + return ret; > + } > + utdm->tdm_port = val; > + ut_info->uf_info.tdm_num = utdm->tdm_port; > + > + if (of_get_property(np, "fsl,tdm-internal-loopback", NULL)) > + utdm->tdm_mode = TDM_INTERNAL_LOOPBACK; > + else > + utdm->tdm_mode = TDM_NORMAL; > + > + sprop = of_get_property(np, "fsl,tdm-framer-type", NULL); > + if (!sprop) { > + ret = -EINVAL; > + pr_err("QE-TDM: No tdm-framer-type property for UCC\n"); > + return ret; > + } > + utdm->tdm_framer_type = set_tdm_framer(sprop); > + > + ret = of_property_read_u32_index(np, "fsl,siram-entry-id", 0, &val); > + if (ret) { > + ret = -EINVAL; > + pr_err("QE-TDM: No siram entry id for UCC\n"); > + return ret; > + } > + utdm->siram_entry_id = val; > + > + set_si_param(utdm, ut_info); > + > + np2 = of_find_compatible_node(NULL, NULL, "fsl,t1040-qe-si"); fsl,t1040-qe-si only? What about mpc83xx? I recall QE is a little bit different compared to T1040 or will this work(including the hdlc driver) on 83xx as well?  Jocke