0
  1   ˆl–ß=¿J
ClÊq@½q±\JbÑ¿Æƒ¯3_�uÐb&=LyZof¯ÁË ÷    ‹     MUiŒG.¢•±¢VXñ«%¯ìÌ}Up–+€	„rpCg1�	�=
ÒŒÛëÉd×vœ�=c;Î5ñ•xíØ‰½ëkíxÔ%Ï¯Và—5RF«QÿØðÃòŽ„dÍ�V¼:ûÍ¾þêÕñê]õö‰ÙûjŒèvâ÷1óYÎnpE>ÿß÷ð^…•»ê�•;�n§S¦•�ùÎ6\ó°0ÌšÍÞñƒCCC½¨µcÂY¾Ü‹¢í�;·ÞEÑŽÿ�|Ç„ù=2m~×æÌ–ÔÕ7�û–>`iêßý™úÐÐû›Íæñ{é—{Üe£/÷™“»<÷Ø-·�æ£·ÝÂ¢Þ ô"æ+.SŸJÑeÌur‡€q/÷83ëjaµ5cË–Ýíë…V¸!¶D\ÎgKSA�Ó/`Ã•©ðƒÙ0cíÄå~›‚B¹›”'«‘už²”ØU–2¿ˆ¢¯òŒZåzsvã2ZXæÐöÛí+ívÈx‰eL$NÁK:‰`#Å É�•,k%¼Ö !Ì:Oz	J¦Oè¸%£û{êeŸ¾žþh¬.Vú]åoØžŸŸo	ò?I²$a™ï‡¾Ÿ±¢ßjµü"¾ï–�­ëÇrƒ^_¯¿ã�²DK˜PæsÁV:d&Ù³à"ðXŸÂ3æç¬}-ÏÉQÖ^¸>ÿN[Å±Ýn}ŸGúèú¤+F´¬Î‰¤WQ~Î½‰&‹‚3:}%¿FúH	©bz–öåmò‹îž"AyV/cBˆ+¨|v�ëØ(NHyíyùßUrÒRñwh:)k9£8¯¯ì¥—¢">èyAÙ'{9+i;fÐóT ”>Ï[¯
!Q (´>åc]�¾Õ·’ä²¯õ‡-áØ09¿KÙ¨Ž•
¥�üÏU±ê ˜y²‡’¼—¯ËØç=ÎG7Ä”@Sú�+J˜R#¨„Î»kQT–»f�¯58*:Y§3¯óïáñ|LP]8®ÁB`0`I¿Ž‹kQ$MÅU_×U}•»º0´=*.®E‘Töèü/Å-(”÷£Áü•ëtÞã‰=—ØsÌî¿1¯üíSzU¸éÝ%í+ÝÈD£�S¹î:íœüX×÷2V è¯+¨heêE¯UÏ­
6úXÑ÷‹µPØ<…ãûöïß7ƒQVQ*×ø‰¿F+ÏGc¨?ã'§ON�‡°UWê”lKPí"#™{=ÏõJ�'ºžMþ¯·6½ûä=+V¬Ð­GU…°ùöz¦*©?™‹èvŸÊ¬¢û¹²¨òî<!ÅC¿æªÖEÜ¢›¨¡UV^µôHÜ›H­Ûá*+ìžÁÒ›²ò’‹»`÷ÃÊøÿ�Pý6´Ýl“·I÷ß�)bÁÍ¤Ö7êÑF�*¼™ÞÕÉ¬2hyÑº–9Wõþ«Õú¢–5R½éwïZ¤ú×Hõ¦1°}¡¤8®¨¨xê:qKúýP_p\ƒúý´L�*ôtcPõg°Ô1È,Š’šú6}Á3-]í·}Ý ½[�ÌÊL‹þÿv³«Kõ_¶õ_¶õ_¶õoç©?ô=Âë'¶_,^ºˆtr—wâò.¤{jH§&‰·?C¼éîçˆwÓúî	â*qDL{vOÑžƒÄÛHáä!â&éQë§‘Öèl�ÎÕè|�öÖÄuâYü+Âíq3�¢4ÚœFãi´%�ªiôTÕÒèé4šH£É4ÚšF'ð!Ü�c5>‚�âcø8>�OâSø4>ƒÏâsà¸ŸÇÜ…/àn||	_Æ=(â+ÅWñ5|ßÀ7q/¾…oã;X‹ïâ>|/­Nãû¸?Àx?Ä�ðÆ#x?ÆOðSü?Ç/ðKü
¿^lVáá1Œá7X‡ßÂÇï°¿Çãøü°%ü	OàÏøþŠ2þ�¿ãx!þ‰
.Ÿ…Œ 7CŽCn�¬B>•V�BÖ Ÿ†œ€œ„Ü
¹r;ä3�; Ÿ…œ‚|r'ä.È:dr7äÈ½�ÏCîƒ|òEÈ— _†|…Òp ñ«ˆ÷#¦ÁAÄ‡Füâ×A<�ø(âcˆß@|ñ‰Åf„øMÄo!>‰øâÄ³ˆO#>ƒø,âsˆÏ#žC|ñEÄo#¾„Åæf¤�YbJo�RÙ8C8NLåP‘äÂ½ÄTu5¦´×©4êÇˆ/Ðù-´çñy’÷¤�}4œ£á–´AÅR6m�Òú�´AeÔ8KÃÒÆK›Ó†Ò4—6ŽìJ{hý@Z?JÒ©´q˜¤miãdòUÈý� B‚<ùäë�G §!)ì´íÈã�' ß„|ò$ä)ÈÈYÈÓ�g )eç ÏCÎA^€¼ù6ä%üŸÍR       !ˆ0ÍÁË  A   #ˆl–äY>”TÔD¨ 	Å�rã`S�ÿÈƒ›o_†I|¥�+a–Ü4ý(&”ÔD¨ 	Å õÆŸ¸ËªbÑ¿Î Ï    #/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Greybus CPort control protocol
 *
 * Copyright 2015 Google Inc.
 * Copyright 2015 Linaro Ltd.
 */

#ifndef __CONTROL_H
#define __CONTROL_H

#include <linux/types.h>
#include <linux/device.h>

struct gb_control {
	struct device dev;
	struct gb_interface *intf;

	struct gb_connection *connection;

	u8 protocol_major;
	u8 protocol_minor;

	bool has_bundle_activate;
	bool has_bundle_version;

	char *vendor_string;
	char *product_string;
};
#define to_gb_control(d) container_of(d, struct gb_control, dev)

struct gb_control *gb_control_create(struct gb_interface *intf);
int gb_control_enable(struct gb_control *control);
void gb_control_disable(struct gb_control *control);
int gb_control_suspend(struct gb_control *control);
int gb_control_resume(struct gb_control *control);
int gb_control_add(struct gb_control *control);
void gb_control_del(struct gb_control *control);
struct gb_control *gb_control_get(struct gb_control *control);
void gb_control_put(struct gb_control *control);

int gb_control_get_bundle_versions(struct gb_control *control);
int gb_control_connected_operation(struct gb_control *control, u16 cport_id);
int gb_control_disconnected_operation(struct gb_control *control, u16 cport_id);
int gb_control_disconnecting_operation(struct gb_control *control,
				       u16 cport_id);
int gb_control_mode_switch_operation(struct gb_control *control);
void gb_control_mode_switch_prepare(struct gb_control *control);
void gb_control_mode_switch_complete(struct gb_control *control);
int gb_control_get_manifest_size_operation(struct gb_interface *intf);
int gb_control_get_manifest_operation(struct gb_interface *intf, void *manifest,
				      size_t size);
int gb_control_bundle_suspend(struct gb_control *control, u8 bundle_id);
int gb_control_bundle_resume(struct gb_control *control, u8 bundle_id);
int gb_control_bundle_deactivate(struct gb_control *control, u8 bundle_id);
int gb_control_bundle_activate(struct gb_control *control, u8 bundle_id);
int gb_control_interface_suspend_prepare(struct gb_control *control);
int gb_control_interface_deactivate_prepare(struct gb_con