0
     	�_’I|¥‰ÓMjqØ‚¦ð¬÷ÀÃ      	File not found.
      ˆl–ß=¿J	•2ÛB‚ œP@¸Ènå1hßÇ0ÁÄ  	   ˆ¾Ç0ÁÄ     ˆÀÇƒh¹ÁÄ      0x001f0000
  0   ˆl–ßi~”êh¥8 Eq‘\eµ1hßÈƒ�_ŒuÐb&=Ly[Ï¿ÃÆ 
P    ý7zXZ  i"Þ6 !   t/å£àQ
]  hßÚ¹ëÙ~ÏŒ+�9a#aôW¥T¹T'ƒ¶åi¾,‚”ÌªÒ¼ˆnë¤H ˜z´ðhÖ†ý~œ‘lHç¿ŠË AhD}z²|_ �Õ·[¥ôAV¹<ïè^Z’£ÿb|—fÅDèÄ;ì_x«Ï³G6éÙ®ÈÚHÝ¨heÊ6Ló½]‡žá8rñÚìjóUÞ!‘¥›©ãdÑÿ;cÜ.nâ¾_õLo/&Õ¡ÏéTÎÛA3éˆ[ÖjÚ®^Ib�6½?Èb~™#XbVŽQ„h«_ºžr90!ï>ú‚æ”ô/3üfÇ:b*/Îñ¢º÷lâCrì8rHa€"–ãÄ[®æ�"E•6F_*ü�2ã=ãÜ-›îÜ8ô±lC¨Ìø’E±6Ïý¤u*âFçûÈ¹j€ÐèÄ¾7Ñ-]¨ø¨ÖâñŠ_´¹� Õ*öDR¡mp”ùç:747¨<-pD3 íÿ<ZJ³�? ŒGžåôKSÍô\uŽu|~|‚X_)˜pß‹€™·½eØ^ìõl6KLß…VþÚüï¥í^´§žb²wû{–†Ê×3lÕµþ]PÌ„î±Kéš˜NVxaæ\-£`Ó#þ~oð�/22kv›+Ïaˆw;
þ¹ËÿËùývùc=GÀn,ÿ…Õ¸dCöè]œ•V�¤À3¥
«ähÆ$ÿ¡Ø‘Jd^ø`²B‘û‘m€3ÄÆ¢/°®ÒQW˜d	Aâ¬ùGK‹-Oþx„ó;!`0Žr’íß$¶–£�4ú® úÒ6†8â„/Œêš/¥ r‘;îù=ÀÍâ×€4·JvnÎï*Üí¹d`ÙÝÑ\¹m—3Ï÷C°æïuËèÆ±cŒü‚
Álòp`®q7íWV'0YsVÒ
P1tÌM¼®Œê°-`R¤U·>Í¿H˜Ù%*Q‰…?ßñ`Ñr¿µ+_)¾¾°ù_�cÎ”:òl¬÷úmXu[Œ¬â“·½R¿;7Øf¤HÍmºlþ£2%j_¡o5ò>çEH“¹èE2
®²‰k2ØÝ½ïWNNl‡“Øoç¹{s®Í6¥E¢¨zAŸÖ°–‡åµïý'ª=ÆFÑvÇ¡Æ�Ÿë×™1k82:ÌN9¸5ì�*Ô]òõlŒ?[…ÃKðG	MÙƒE?–¹<•ä“fZÛÏÆ0•”vC…XRcö†Z€EžÐ‚<†ÎKÃ~¶„Dgå‰‡@5j„ÀfòQB ýX®MX–ïñÝm±g‚ÉlH\n6k ÇóQÓSêŒ·È©«ÆDMÇ· –5E– �ëO;Ä|îËžb$ÁÎƒ�áy©þTà$"Õ3ÊmÀäG°jïz>D€gÊ_z×lXœø˜€ºÙC4Ô˜È¶d“8w?OüÖ©¡]¯±³›¨jYã%¤!6F'!*TC]È:¹+:c]·Æ§¸Õ2Š8é¤FPaÏ)VŠ1ç>µ{ÏHÉYý7êàžŽË�ð>ñÆ°­2m®{i3Ýû}l½Ekb;áˆ¹GÎšìQº÷ Ük§P 'Hî£¼¸‚™X;ÛÝò,=(áêË7…]›HšPÃÙºO€”8#"sô�lœê•Å� Oë/?žƒÉä£î®\µí�Ö6Ù…€6/¢œvµq3h‰�‘ã<{$¦ 0-Žk$šÁâ$F5 ð£&ÇÒJhoÝ³Š•Ì4”[ÚääÃkÈÃvêÙÈÀÞ¢‡ëêçúélš“tÞ—s'ßB¹N];ß�ìÞù-æ:pÓç"ÛJÛ×Ïd”ôLV‡æðFf.p\¡ºå�÷lò6HÙ»auxúÍ’Lsj›~>�Cê¡/{&jÒÒðWkŒiOz";
¹ú–&=È€O¥wªáx°²WO”ŠiOïy‚¯„Ážgòzl¸Š�Wöÿì2’qY˜v±)3!œ§&u÷&™,.Š0üÀn{ïk“ˆùr£vuŒo Ê)T”¥cÑÉ¡rÌ–‹ªò‰)º»w]žDn„5ÞZà’Ì	ÑÉIkp‡pi%:¶Œ}XJIî„hh]ßÐ,èÜŠ¯Ážì<Uo§v	¦	LþSß€³WæF®í+Ã„*h4GŽ”î›+rv�pBf}ztÜ¾è³šHÛ,÷{üâ*µ•~^ô{�&i;¤½	è¾ºà6A§òžÌ™S§Ø@©9÷Ô; ñË‡XBúÄÏ¹XÌ‘ËKy²Âã&õ¸{È!DOéM"ìðîPÔÏ¼•bžJ2ê?Ü�åÁS.ØôÔ °»óhÛØ¶fÈv{ƒ´ÕNlÓ£‹‰ÏMx�€·÷Q5KMÑ&QŽ·¤mÌÈÈOé¹TJë14SÐAËÃ‚®Ýý«(!•j�#‰¿±òÿ÷Õìd
%‘¬ggÂÍ9ÏïÏ×çMWÙJY$(Äï’íÒT¨)p'3±™ÖsÓ æíÇžÔh6Dg{6éÄVq×¤�ju&ÝìwyÇ•ÂH„Î�CÝÖ#N@/˜
8d¾~Ý…=0Ã¡¶ú<çJ:²m­`Òý¾x@¯Žbûfäd}ëj¶�”ú¥8ð<ŠÎ—‘òˆÀ†ï®–T­š ÆœÂ¨_�i÷\é¼�3$ŸÄƒ°tëÍqöÙß¡tøBX#”^º²RI6ÉAÜRÚ*‹yý3Å¼_²ÃZX×÷%bgÇ³­Ð6DA»þÎ3/×y	ùO¼Z®ÓÊQjŠ¿X@‰tb«WkJ›Ž½~¢Îº/´�2ŽÆ‘Ê¤u>´ù9DrK`Í®‚à»§sÀzdƒ—~˜	ª‡w)¤ØOH™Œw÷÷w�z÷ø(^ÿ÷ßèE$7’ß%ÌH§7©,{¶Ý9†>ÎeÚ$‰EÕŽ�¡¬d:ó¤øéHº §dgá.GCHºÐÙ…# TœŠïž±yV ƒ¿\õj¾…Íƒø‚gf±ÆÛÑ˜á¬oXò!_B	–qÉ0ÇŠÅÂÇpÝâ¢`›ûkoó×¯ê´Ý®[�Â&0ZrÎ«š×æÃsæˆ¸î—‘�¼Sa#ÕÏä!…AÐÈ“xlŒÝHNy®RËŸ1õù¥'*´“r¾ÎL€ß×y ‰òôÌŸ˜Wõ\PÚSàÏY93l¥(×ÚæÂ �ƒ82„ÜCK�˜½ÐÓ]+‹�M Á0A”>ãÔæ!õÙ±jçŠ<�´†UÏ3ïË�Cšó!­jùÈ�,´S­¢H_È_m>Ì FwÛ¥X+Ëg´ÅÜ\8òBq„“ç( ¦DXË™óý–_TÜÂÐŠMnž«W5›LÀ8ÆÜ·ÁÉ:óšƒ³ñ.ºãö?æ`Ø}}|#ÎŒQÝƒ|@Rÿl      »UÍ ©Ò$  —:?Û>0‹    YZ     ˆÊÉƒd.;ÈÃÆ _    // SPDX-License-Identifier: GPL-2.0+
/*
 * Copyright (C) 2017 HiSilicon Limited, All Rights Reserved.
 * Author: Gabriele Paoloni <gabriele.paoloni@huawei.com>
 * Author: Zhichang Yuan <yuanzhichang@hisilicon.com>
 */

#ifndef __LINUX_LOGIC_PIO_H
#define __LINUX_LOGIC_PIO_H

#include <linux/fwnode.h>

enum {
	LOGIC_PIO_INDIRECT,		/* Indirect IO flag */
	LOGIC_PIO_CPU_MMIO,		/* Memory-mapped IO flag */
};

struct logic_pio_hwaddr {
	struct list_head list;
	struct fwnode_handle *fwnode;
	resource_size_t hw_start;
	resource_size_t io_start;
	resource_size_t size; /* range size populated */
	unsigned long flags;

	void *hostdata;
	const struct logic_pio_host_ops *ops;
};

struct logic_pio_host_ops {
	u32 (*in)(void *hostdata, unsigned long addr, size_t dwidth);
	void (*out)(void *hostdata, unsigned long addr, u32 val,
		    size_t dwidth);
	u32 (*ins)(void *hostdata, unsigned long addr, void *buffer,
		   size_t dwidth, unsigned int count);
	void (*outs)(void *hostdata, unsigned long addr, const void *buffer,
		     size_t dwidth, unsigned int count);
};

#ifdef CONFIG_INDIRECT_PIO
u8 logic_inb(unsigned long addr);
u16 logic_inw(unsigned long addr);
u32 logic_inl(unsigned long addr);
voi