19
     +ˆÌËƒÏ»ÊÁÍ i    +/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Internal header file for QE TDM mode routines.
 *
 * Copyright (C) 2016 Freescale Semiconductor, Inc. All rights reserved.
 *
 * Authors:	Zhao Qiang <qiang.zhao@nxp.com>
 */

#ifndef _QE_TDM_H_
#define _QE_TDM_H_

#include <linux/kernel.h>
#include <linux/list.h>

#include <soc/fsl/qe/immap_qe.h>
#include <soc/fsl/qe/qe.h>

#include <soc/fsl/qe/ucc.h>
#include <soc/fsl/qe/ucc_fast.h>

/* SI RAM entries */
#define SIR_LAST	0x0001
#define SIR_BYTE	0x0002
#define SIR_CNT(x)	((x) << 2)
#define SIR_CSEL(x)	((x) << 5)
#define SIR_SGS		0x0200
#define SIR_SWTR	0x4000
#define SIR_MCC		0x8000
#define SIR_IDLE	0

/* SIxMR fields */
#define SIMR_SAD(x) ((x) << 12)
#define SIMR_SDM_NORMAL	0x0000
#define SIMR_SDM_INTERNAL_LOOPBACK	0x0800
#define SIMR_SDM_MASK	0x0c00
#define SIMR_CRT	0x0040
#define SIMR_SL		0x0020
#define SIMR_CE		0x0010
#define SIMR_FE		0x0008
#define SIMR_GM		0x0004
#define SIMR_TFSD(n)	(n)
#define SIMR_RFSD(n)	((n) << 8)

enum tdm_ts_t {
	TDM_TX_TS,
	TDM_RX_TS
};

enum tdm_framer_t {
	TDM_FRAMER_T1,
	TDM_FRAMER_E1
};

enum tdm_mode_t {
	TDM_INTERNAL_LOOPBACK,
	TDM_NORMAL
};

struct si_mode_info {
	u8 simr_rfsd;
	u8 simr_tfsd;
	u8 simr_crt;
	u8 simr_sl;
	u8 simr_ce;
	u8 simr_fe;
	u8 simr_gm;
};

struct ucc_tdm_info {
	struct ucc_fast_info uf_info;
	struct si_mode_info si_info;
};

struct ucc_tdm {
	u16 tdm_port;		/* port for this tdm:TDMA,TDMB */
	u32 siram_entry_id;
	u16 __iomem *siram;
	struct si1 __iomem *si_regs;
	enum tdm_framer_t tdm_framer_type;
	enum tdm_mode_t tdm_mode;
	u8 num_of_ts;		/* the number of timeslots in this tdm frame */
	u32 tx_ts_mask;		/* tx time slot mask */
	u32 rx_ts_mask;		/* rx time slot mask */
};

int ucc_of_parse_tdm(struct device_node *np, struct ucc_tdm *utdm,
		     struct ucc_tdm_info *ut_info);
void ucc_tdm_init(struct ucc_tdm *utdm, struct ucc_tdm_info *ut_info);
#endif
  	   -ˆÂË0ÁÍ     /�ÆÁÍ      /File not found.
  0   1ˆl–ßi~”Je¶…8 ƒp\dJbÑ¿Ìƒmç\_ŒuÐb&=Ly[Ï¿ÃÏ ô    1ý7zXZ  æÖ´F !   t/å£àgD³] ?‘E„h=‰¦Úœ¦¬.+ËÎµ„UÓøóÛx\r…‰Ž9„ˆMÕBypÏk¤A¡BqÃâÚÊuã°.;/@˜û“ iÍ¦¶Bí‘ZGŠà0%Òï×Ð½?�NÝ+üuýñgerÔóÆ@G]&žùÔ
óŽ)%¼Ÿ’•´\sƒ1 Âlhª*¤XÖšý€-|ËÀ]žÂ9d=ù·}\‡qÎè¦÷1Ît=	¤+JÏ<)�fxg°DZ®2°ÆÓa�íè&s[e´3I&×ý× ~J.=µÛ2áGyÂîÍ–Ø¿¥0x‡4žlàõ¥NG¤‹lsI—‹ˆìß„;¢‚ÎäÀ·¢I"¥Y½–<–•û¥î@Yê|™PP¹ÙEJcìAè�¥mŠîÉ€NCB‰fŽVµ¼KùÂ0êþ}æ�éc³•¾úec¥u\ü¹xÉcßÖº­;¦dðdži¿åÚc¸"´ÊÆÜ”[FG¨j>�x¹~)ã®Ù,/7�^ÓãÐ•‹«‹¦ÎN1Ú}¸üù‰ä…DX=Iue—»¤ôùçCÇê`Ñ�xöýfÂ«¤žÉ³}¨Kî÷#Zæ5c©³ï‚uà€ÏwÒ¦Cñô .*Âõa0mü(–A£\˜÷‰aÞ¤6‡pÈÅ?«eËøQ,t=™¨l€Yk¨ù)@²xœÏõ­ÄãÕyMî}{þÜN•M·ÿôÕ�
f4Ó[fPXFE‘½Àó‘z”A)O]ÀM‡J3ÀàxØÈ·Á 1„ã?™°raØÚ:˜ÿuVXÿÏû\b]ì�}À½þYÊO�)ï$bå‰î4?0Þ�´]ÛÜ±ëXå(5ªk¢8ÛËÞ0ô¤vÍU†™q\n/I~îö°˜à"hÉ‰Ë»4MGº�Ÿ‹±Í¥ÌéúVƒ£Ab#I—ê‚I “Þ·•ÀK°ä1ÝµøÚ0kƒÍ Éhº&ï ý†–©ËÔ(t¨mÍ<D�™:,’nÒØÝÅµb›®Øñ•æØý}À[#¨^6el$Ô¢]ÞKŸÏ˜÷ð9Ë©ãÛ’Ì™les|lð{ÆJM®¤oy²ôc¥Ì3ëÃéT7œnÃ¢Å
£Ã±Ó�écÞ”Y¦®ÿTt‚àÀbsäu1~¬é�C~?‚´gÖœÿò\:ˆ†{›‘fŽÊÛÅà•òö@'Ê©×´ð`Ý+Êœèg�†ÁÄõÝú›^¾H­7„tl¬BdÂ¸	o¬eÂÿ©Øh�N#§P'®s~Û77ÎóÝDvØíákQ¼åHÓx¼S–j@¿¤è‚\¯W½ÔdÌA1>xÐ4åEü	†é{ÄÊ”ÎC ŽÝÄm¸ð€0y<SßU~T¼~r!Iáé‰ZOÈûÛ9šÔïCÖ÷6èWŒ‰'a»„½€l¾~­·ØÙæûÓÏ×ZÑÁ‚G ^§Š„º-“ücc‚$[ûGj¦]ØA�?¿¸àØ4~�[ÕÛ%#Y‘–×²ÿQw÷‡vy‰‡|§¼üìÛQ­ÔrÝÌ­éI"@ðRlÞ\ßÂCßEb—ñ ·NŽ¨¼àá—°Oz¦O*
4#A«À?¦S+X’Sª‰¦&™NïLqOr–k ð3ø>%¸Õ3°3½�§ûtµtPy/3zÊ.Â__ð°Û÷€7�HL£b’õµ…¢æbßvœ!Âþ;ddco¸ï–À€ß?
X?Í_¯^)7º¯AÁfˆÎ™XbŸ×‘C#‘¡‚€—XÄß{d�ºôTH`AõÍ…$Úø^L€Œá…«:•c…·`Ý°b]Î[càQ—¡áÎë~é<H¢9êÕ�¡t¦E¦5w&†2ŸÏ)¶KÆÏ^7¼{ÂžYï Ý¾Y`hÐú ¦	÷Öé«ð–ºÑ’îëä>‰UÄdÆÊ8�ðð{æ5±ÚÒçHUWH!ÛòµmbBå0jOyÃr«?AÅE;
ÅGjEq[Ç–‰‡)æ—ƒ‚Ç—ŽkËZ–7Zó=I²{¿èòÎé]ÛÎ»�]€KRa4môÎa®YÇÍÖ6SŽŠHp$Ñutæª	Ý!ýDý®2_,u¯t˜—úhrZk–ÈÄh ˜B¨d>@¯á¡REùÈIÞ}¡_Š¦1dåûÍŸZóh©vN5ÉuZ¹4Mëá€ŸuÆæ®ÍÃW£€ o Œg¿È½ócÔÃz¸{«1!ˆ|å	²¾<­e‡Uî¦bŒô"Ð�º]Ës,ùO€€ÒWÑvU2‘«ÈÄõŽòd×öÔÁ�©@šÑ’øYåU=80ÔÕlCj6ÃÚ“õÀt® šû-€øKöÖüG¢ÚÃëÚÇ´r<DF52rO–t¶ÎÝ§<èº£UcÎ'^ËÌ±çÕ
ÛƒÛŽƒ—ÆÚWì¹þ�Œ@¬t1¼Œ<%�Å¥“îôGñ?hr|¨UZíÉ¥´Q€qCy–³57XÈýaGÌsô.UÖ˜^# ¼¥Éï
N{îomJ= e'saZÚ+}5^+ãÉ	Ç˜o­"3ÎXw3Þšf*Û0Q—£ŸÓûAF�-VÊ½þ©9)>5m°À`ò-ÌÀÂèNä�\öüFòÉõÕõêJú>ðÿ*ÄÔª²E?