From 0c535d44a6a9ffd7163edfe87aa10dc11775b665 Mon Sep 17 00:00:00 2001 From: UncleRus Date: Tue, 18 Oct 2016 16:26:00 +0500 Subject: [PATCH] Driver for SD/MMC cards --- examples/sdio_raw/Makefile | 4 + examples/sdio_raw/main.c | 117 ++++++++ examples/sdio_raw/schematics.png | Bin 0 -> 155604 bytes extras/sdio/component.mk | 7 + extras/sdio/sdio.c | 449 +++++++++++++++++++++++++++++++ extras/sdio/sdio.h | 98 +++++++ extras/sdio/sdio_impl.h | 154 +++++++++++ 7 files changed, 829 insertions(+) create mode 100644 examples/sdio_raw/Makefile create mode 100644 examples/sdio_raw/main.c create mode 100644 examples/sdio_raw/schematics.png create mode 100644 extras/sdio/component.mk create mode 100644 extras/sdio/sdio.c create mode 100644 extras/sdio/sdio.h create mode 100644 extras/sdio/sdio_impl.h diff --git a/examples/sdio_raw/Makefile b/examples/sdio_raw/Makefile new file mode 100644 index 0000000..1629f05 --- /dev/null +++ b/examples/sdio_raw/Makefile @@ -0,0 +1,4 @@ +PROGRAM = sdio_raw +EXTRA_COMPONENTS = extras/sdio +#ESPBAUD = 460800 +include ../../common.mk diff --git a/examples/sdio_raw/main.c b/examples/sdio_raw/main.c new file mode 100644 index 0000000..0d620fc --- /dev/null +++ b/examples/sdio_raw/main.c @@ -0,0 +1,117 @@ +/* + * Example of using SDIO driver + * + * Part of esp-open-rtos + * Copyright (C) 2016 Ruslan V. Uss + * BSD Licensed as described in the file LICENSE + */ +#include +#include +#include +#include +#include +#include +#include + +// Blink while IO :) +#define CS_GPIO_PIN 2 +// Set SPI frequency to 20MHz +#define SDIO_SPI_FREQ_DIV SPI_FREQ_DIV_20M + +static const char *errors[] = { + [SDIO_ERR_NONE] = NULL, + [SDIO_ERR_TIMEOUT] = "Timeout", + [SDIO_ERR_UNSUPPORTED] = "Unsupported", + [SDIO_ERR_IO] = "General I/O error", + [SDIO_ERR_CRC] = "CRC check failed" +}; + +static const char *types[] = { + [SDIO_TYPE_UNKNOWN] = "Unknown", + [SDIO_TYPE_MMC] = "MMC", + [SDIO_TYPE_SD1] = "SD v1.x", + [SDIO_TYPE_SD2] = "SD v2.x", + [SDIO_TYPE_SDHC] = "SDHC", +}; + +static void dump_line(const uint8_t *data) +{ + for (uint8_t i = 0; i < 16; i ++) + printf(" %02x", data[i]); + printf("\n"); +} + +static uint8_t buffer[SDIO_BLOCK_SIZE]; + +#define TEST_COUNT 1000 + +inline static void test_read(sdio_card_t *card) +{ + printf("Simple random access test speed: "); + uint32_t start = sdk_system_get_time(); + //sdk_system_update_cpu_freq(160); + for (uint32_t i = 0; i < TEST_COUNT; i ++) + { + printf("%08u / %08u\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08", i + 1, TEST_COUNT); + if (sdio_read_sectors(card, hwrand() % card->sectors, buffer, 1) != SDIO_ERR_NONE) + { + printf("Error: %d (%s)\n", card->error, errors[card->error]); + return; + } + } + uint32_t time = sdk_system_get_time() - start; + float speed = (float)TEST_COUNT / time * 1000000; + float stime = (time / 1000000.0) / TEST_COUNT; + uint32_t bs = (uint32_t)speed * 512; + printf("\nDone. Time: %u ms, speed: %.4f sectors/s, sector in %.4f s, %u bytes/s \n", time, speed, stime, bs); +} + +inline static void dump_card(sdio_card_t *card) +{ + char product_name[6]; + memcpy(product_name, card->cid.bits.product_name, 5); + product_name[5] = 0; + + printf("-------------------------------------------\n"); + printf(" SD/MMC card info\n"); + printf("-------------------------------------------\n"); + printf("%20s : %s\n", "Card type", types[card->type]); + printf("%20s : %s\n", "CRC enabled", card->crc_enabled ? "yes" : "no"); + printf("%20s : %d\n", "512 byte sectors", card->sectors); + printf("%20s : 0x%02x\n", "Manufacturer ID", card->cid.bits.manufacturer_id); + printf("%20s : %c%c\n", "OEM ID", card->cid.bits.oem_id[0], card->cid.bits.oem_id[1]); + printf("%20s : %s\n", "Product name", product_name); + printf("%20s : %d.%d\n", "Product revision", card->cid.bits.product_rev_major, card->cid.bits.product_rev_minor); + printf("%20s : 0x%08x\n", "Serial #", card->cid.bits.product_serial); + printf("%20s : %02d / %04d\n", "Manufacturing date", card->cid.bits.date_month, card->cid.bits.date_year_h * 10 + card->cid.bits.date_year_l + 2000); + printf("%20s : 0x%08x\n", "OCR", card->ocr.data); + printf("%20s :", "CID"); + dump_line(card->cid.data); + printf("%20s :", "CSD"); + dump_line(card->csd.data); + test_read(card); +} + +void user_init(void) +{ + uart_set_baud(0, 115200); + printf("SDK version:%s\n\n", sdk_system_get_sdk_version()); + + while (true) + { + printf("\nInitializing card...\n"); + do + { + sdio_card_t card; + if (sdio_init(&card, CS_GPIO_PIN, SDIO_SPI_FREQ_DIV)) + { + printf("Error: %d (%s)\n", card.error, errors[card.error]); + break; + } + dump_card(&card); + } while (0); + + for (size_t i = 0; i < 1000; i ++) + sdk_os_delay_us(1000); + } +} diff --git a/examples/sdio_raw/schematics.png b/examples/sdio_raw/schematics.png new file mode 100644 index 0000000000000000000000000000000000000000..a9fd8ffd2eed77702802c03d7227ef99904f926e GIT binary patch literal 155604 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%0A|6`Pvn$@qedbQ_fCZ@?(-cqX?~V^_>WBA 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ᓔDxdMgjrE&kq-_s3VL$AE#7`nD_0M5wMoyDY3IKK z0Er+LwS|-QZcdq{WHVgTy2-0o71`q2LVf0eoT+TgjFXS;3Y8@XQJ=Iliw?icYo*Ju zr13lu)*vS#ma!}3rHIRPnkO6>kb%Hm2cwP2-CESNVJfQw;l0He2Xhms3c^5CT9lAQ zgbpkXQZDq9myRr#1k#k&FyBL~dBni9DKEbRwF;cBuC7304Nye?+w$Ko^Y`0c0a$^I zCL1;_Otm;AoIlz(+NC=i{^{A3eYeO9^ydy!s8O8F)Eck;7Yp!A2pj|eZX+ltNa`!) zhAkkECdZ&abW2i6DI|@*b-Tt~=Xr$=pRD+R0Gv4>m73!+8Gf8^iP&)|JOW{B)o0H> z)6kPfk6OXZ(?LzIZ@C~9Mf&^BihcX(R@x=$6L289bU{-Tqy~CNN59Y%f}utnw({(1 zgY0WiOP5eni!?T9*3z&hjlTX4+z}wWK>cbXEiEmT6tT~1WX_lZHDrOicjusgMe19p zr>7U^BLV3*ByPBt&9N0TUy!u69md=dS2UUTi%Euih!KsRuPmER8X9E2DV^x?aRkQ5 zd`sE~iz4!1)gi-o{c(cOXGcXJZwts5uY&3t^sf25^pRUpH|{+By14Eq?|u@ygeU1E81;SP!l|Lvd?4~z<)PD z;{)z(=nS_)&zp-@g$M*jp6R=0m};?LP_Un8M`^rQnEp0aWcu_{|8+hchb(}Suby!DnmvD2@QC#xz21$Ek z2$dS&l#baV^<%_iw>?4xfFaN{Qtu#c!5KhS1xP93BgLg&19)G|1NS@ZiZRSu>>#4A zzHoWRt+rSKTn3updV`?+kJkam3<}!Z{}jCkoxbX3M>j%Jrquw`gAQq;Bf&p+M|XEC zXuzXD!(Db6=$1PhQwAS-GCW@9<>euR3#dCEGXTaRgR7#e%UzN&T%ggfVPe7p;)Zsx zJzeMk_5#SHJVC0en(WJL{QPPac_1u42SU%0ICW4k4+eM(G{x~cN|!aQdQ08+pL>An z;%x?AXiulH_#1)g&(oiD^cbuDEuZPyzUu3C zN|6S3%zxYN5#v3I8yX)Egl71xh1e18pY3hmdFUWjs;QE;QK{w4%D~Re2be zU%s)yKq&Tz%o$w4zKsQr*?zO>IiWA8-Li6sno9ZeP-J&Pr*CvH@QBe<^fzDKcon5y z;&`;y+quQ%Z_)7;hQmMZp_mkSp!iuAHat8$TQ;H}`Px z_zxa|4`9P&0=R;R+Y%&&VAll3BR@d0k___$aHbazIPFY}%sQw*uT|nn>pxcbIRLND zcSLufQ`uEg1kV447{3`B;;d#MZUA=*vIdBy^D0g1IhwL^0IC2;$YC*TFm&taFApbK?_XZfqy9g z6_th_&*Jj}A5;=tq!6u+|6uv_aWRd(D7f|w0{T|~R{N?(ze+w}= z0<4b2llA?hE$AJHli(;O2&q01V`Qj5{?ieWLerZ*hqMGJq}m;!K&Ytg&BvUw)I2USvX>_+>}5bN2rH$&9gFY@b%HVupbL=^av0GA@6MviOKu!# z=%%SeNIU+$4E12yq#|TaH1HnKpC|cY#j4@EN&OSXos@4MOKAWp=0AtFxtuEix83nr z|BJ;0TXmlXhqWLue-pWPHG!$<^<81lBQR={Y2c3w}B9o z*DaV8F^vOPNJZNrPOzOQCxQ-PbmvV_gv`%>OtpH+tjV7Uk#J?5mKbpC z6bBQU;zppXxtlfCsUT1+UAW_j26UV^&;)M3J3`=qmB$|zToH3((4+tSNjJnmX`s|L z>@OsxGP^lqCp&707x`_SqGRif`2a+&xS9D4tm`Nq9S7K4@j6_R@H&dKySWk&p}REn z#P~QeNld^Xx)Es_R%A$H0FD#gNk8CT?_N9kMR>Bpo{9Z&0!LrbxLMlFE}XH*)q!YO zAeh=Jm`6jrqkgV_bGslf@8gA|hhs4M(A7wXZLb_amn@g|-WCIREEa7Qho;>$(bCAA zTbrnm83dKN14J8gAo=v^6L3;9#yy5&eg7Y@*)0NM>zE9K;6jEvM(z=b;jJs_H~9sy zNI2wQCXG(Ef_+_a$4y@-!{cmrmxu5}*`N|N=U8S&^E)@F3qr}AtP^o&=7FMv;Ghf> zwpzsPfHZm!&Sl%l8d|WAi|y3NWiC1BymfB5d`si|XJ%;)78HaY_&&_8DmF^m3jd02mWhcY?NIplqW6oUs=KFn>nuK-LIFz#ESG4WCK8E4<%AZxtSr@fkQ0lV&;i4}}Gvm1;=8FgO>4&F`xSl-gg zD!__MVEX!afA-w(-@jwxng6>^2yk3@F>!2JG8mYyFeh!BO(d;94?#s2g1QgfW*d1& zwQvx_F&i;t>}H3wPpsnsdl8G?MTeR^Nd9n|j{)2k^uI#J@+)Wu`+~)_apML`uAPdi zSrZ##di$#Gj4a!Azy09~>MY<=GdOg|(f@GlTiDe{g*GEM_2}f;E@mu5Gm1S5L4O2% z%G~um%u_8bT3t_)5XduQnT=_UwWyHxs7I=rw)CU_9@6C|hqj)M)_C3r!F$elRJunt zE+U>EKK}B})Y^Qw^J+cIeE!q)R`0mm#d*1l2fGk0kSSW)*@cY3H2VI6my>7v(r4fu z-G2F~i;w^upGz`Ib?+tsK2ZKRMYE9@3+#g z(YlQDWk09M;%4igoRX3fHVN`5Gm~;s90_Nh!O`WB0w#d=kQ`UU)fl@ui2zY^ zVlT;HPkag;|Kj3epR;uyq~5NeGb5a7RrL%rNGx_-m@N{fG*K}dL_8@2y(Vt4R9X4C zuaQ1Mz5C#C19lJ>!J(?J@7&;;yc^VDz)5VkE>x<1+*II-`fGKl$L#GQ3fi+fmMIJK zG^e-j(hycLJuY}o_g<0C_jGT7_;4flK$2p zs8_-jG{?Ej7BVmz0FS5xVeR+3O6=qi6tb=ju3J+-&jDp+FytX!u`oBk24VS&pF_Hj z*y^j`W%u;eFg<|D(0S+7@;!L_^)1YF8#&t{s1+3q{vM2kqZwKp|3aMN>`( z2m)V1Z=V+hV^0t=B73mJz!d%QqY?P6kWO&?+^}xN%z}O+IM-a8@yQ4_b%H^c@*8Pav28Tl@F}+_tm}RX^<<1WnOcVuus`RKTV(8 zw2+2Rg6?^`r{t4APGvPmO5UeSeV~rr0J2KdMO~mzsm>t7QL#CYb)1-c=k) zsK+jMynr=z#>REF5FfrR`8JK6wnl?{_!nF1<$Yo>Nu=V|^j6Q&;2Z|QrHBM}@ty{? zkbzEA!Y^M_X=z;Z?t}nHC2kBWD=D=AdX~*hq$j7CQdFEl$blJD`a|@pKh(=E%+DJE z*jqJ}v`fP>#SpL(AhZ@F)SCzGXntZgNVVMy)30{}U2E0zo(Sysqm|Y$ z`S&!bpiQV$^BB{yG3kdQ6)dj&%4^x^rn_iW8?GAkKa+W<<{xfg@diydUCjk*bqd-3-|K@yG zGLjk%6pc?CAG`}fF4~t^^nE3_Js`9R2Dav-4H(riaMfW%DRX@qrQXStTPRi?gm~Fm zUfU(LJC%NVQn9HONclTVD^0`yTkw&j0 zK5Ni{?pW65ruqSsisQzOK-XZ|@^4>Z{h@$+(D5C?v_Qz+;Vh{Z|4cb+659CbLPuaS zLXB)uw(Z&DpH^pfp|H&8ws^IjOd%ZhXk!5J+-7>b=K6M`c+3`YtYW3}evfEtLJah* z(?s%Gjq=#om}Zgj+ga&z2+yMHw(1|Fp>fzYTK;{(fZ1@a79f=JcruQyAcEvWM8c)& z-In?@VnkevKPl!JbfFS*CjsF?fyWJP!-}8IbiguTzwbZZ5Tnfig5-$CJGe%E_^?tt zb#59MQmTU}H@B)Z^zNiDmcvHveiEth>E9l&o0l|}YNwN6aN!_?L8?eYF8~bz%ne{?lf&Ho=@^-Yupg}3pU;bX2hmiFZ<^|0HXCkLxGUO5UiLW4B&qLbv~-(c~jUnQD7P( zSqWe6T`c;sH_Zgr#Dsml-kyX^$4k(pSJ~a&^%>Vo2ZI}9bQI8+4LhQE;HZ^){P;3t zQJ;i{eu5cU-D;B7S4O7XP?3yylGvFR`aieZqp==N&Hgz*HQbuCr_4-pEi%ry#lNin z(RS8jP)wVz5Df_I$39+8T?w~RZi=Au`{E+C(*JUTDJ5CUrP1AhypAI zYh3xE3eh?>=F>TKJ)C{~7w@^WL?lq49GV{S>@ ziNPgHpFoW>`{Qs@_1I zQ7r{?U8~kj5V1q_I^9l&p!eyC?egMc19;_qS@{7=#d&zGpDu7}rRAqP`CPR0EM3&M z*JV5$u$3T&Ec^Fw$Dt9cET~>1%V)gQDv-&oM!#TLy#yK>Zu@*o%7MGT9wmiSB}o)pcDj zSHJp#?kJWf=k)#--o{+*t4TRoFDh>BV6JabBzw*c#43zWb0j*jh~A6zs{2Nr)2=Bm z6$%&c5x*-as2Y_J=2n&=g9)Du zN8AC=6N`iudQXAf#^+_d)zLC?t)A0YgTfY%8bZ@J0L{jMyK}g|0lhcx%uIHK;t4{m zNXZg-VkiI#e{sKJIS&U@bC2g9e~Wl18L(BFzklQ^vgl#d+mmhJy_0&b9x>%hnhzL6 zaqrZG3W~)Zd)9MXS#rB1jd+maFK^;-h}RlOBF7RxMc_jRlgs*$KdQvk9vBHFEaTl9 z$gwbPs&YcrzqI4z{E{SiKi_1rWn-U(jZJC*E6Iqa>pTJ9;wL8+NUAfL-&l4)>1DkA z4h7WQIY;q!4s>S)2m8g~Z})m`0~;O(JMNE6;K)OpKx)t{xWJ!D7|1Z;X%rRD&YK)A5=!dJHW94myfN0F zW0E%>D1*^1%Xo$X$2Dku^cO)EcalWN5LCW{^Z!tF7GP0zZMX(05fDULLM4?>=}_rX zq(f2~q`M>q1Oy}%5D<})?k-0}Km??7q`Mo=JO2NFu5-BfJ6YXciQHa)UA;CoFW2{$vrz&2Uz~Lt zglJHSTBVKVnkj<9hzJwP1U*t$ZU7Vov_Ip&Z?4_E(JU}-Ta^rurjn2D&-hb6w}R$f zFUz#>K}PwKsxDjN^J++KyUW2%DC^R;e^Lh(`g?wr6z?i@i}KA$fAhg~5tj!W95Uyv zceXUJ9iJQ%e&))CEgqj^D)vfxW^bQ-^H960mx(4UT`Q|=ua5iN=&!-AKK?1MRd$r* z0&*yCr+j?;D>!}B?XIpXb>FG>p~;i&7eK~*LHLyW)jj0_$Mqlotp+?a@Wp%X+h~zA za(R(a&EW4`JJhF^Drm(+wYs`}oSU(-g4jzb=dxN+H?X@IvUHU)>f6VR8yD`5nuZN@ zB%L`X(3&{`OxB9J;jiCV97ew zv)N%(W(gYS{rsXQG_0d0Is(SRWR*FeOrw#3i$k}n9?B<1OY4OXLctJsDo8u1deIcbB1XOs93Xg3GV=y9>XcLO6=iKynnMSl=dk zD-x3uy|>;6oy^cP=WD~$##e%J)A#lY9A1v&RZBlrpSWI1Z1N=L^YU|vT(gt9 zt_ntLyruKgyD3!7a9AI=1tDT{N4XL=S+ zehs_{Q#Hl7ivnQUze9KT;qtn>S(`Y{+uQ$Du3(c$8}}z@nT&+Am!3pD_@!+~SLr8j zb?8L&XDVNye+|yfYtH`M; zy8YPDT`CYNfPm~Ou^!5A+EB>&ccZNk*IU|H2}I^kO;*sS?1e^mof-b8B>6NSo3NGB zf7eh@Q!i4i-aT`6gxkek1Pu+$7A*Hz+dH!%E3jfxvKf>g46+Uu74IIEFs@uXyD{`xBCoh#v~->Y4|jA^FdF>ZO1-N(8Ja z_go*GyzvJ&weKX>L(c#G4C-l6dvmWSUUrLg(2&fm^ZQOlHO))BH%KeGYT-B?kM&zav z14O-`{V=Z5P9%8#s2^-h_+vaN#E0ui#uOm309=0J3yAARVG}EL;jM5byFZyr4+PxM zo5yd*ycrEkGaH}|Em~|9WuCZ4-2rQ0{Ry5 z#)vVcve-c*LnM;LUOdd&pJ=H#sF{Uw#XQlQ^9&cR8ns1fQ%W)RmH^Ojhv+J-P@j+t z*$A6cFdg|2Zyrwlh6Xw42tHcrX0dM{Dtsz>V&_PW6OqMm=$(~L8SBC(&KsA91bbD9?kO#*=XbZ>)Jc7P9vVxacm;pIhM`vzcIU^>936cK|zL}gl{Mw6G9_p4L` zC<%nqK;g9gxZTpsy0Jo85Ae) zK=6a#0*nk;pWKG>&DUKpyuo4Iu!C$uiYOV>0i^l=Q;pmkNVEi@Cd3flMICPo7}cP& z3codCjMxq+IACS$EHeGa_!?LhMoq?wxKB~)6&)QNM=YQl1fgUyn@Q*F>Il$_!REqo zIr)VS9Aip!XY=v7ACOf(qLu?kKS4$Ex*KY*pxlqnFEU$!807tk=)Q$CP2AvetnGG1 zo@oSNSK$}eNoX&7vBL4YxVhcOK7BarNjo_?2|uUlVvGBqchAEcnCQ^^{wGx70!c`A zHU_Nblh^^N(chm*0rtqxR!}x)x!y1Ymp*J4NHB=j7Z+15;C9#}ff5Co3!abG7Xs z`9#0z>yj3t3>s;`nV2hMJee>3iU;DAwYA{!^*=9U2TKQ*-;8R(tuV_p=cBJ6pK^9% zqd|4FPNKB8cYXe-I-GncLD#wdEMtSGQr{n1-T#(@5{(=j93%^q1=YZza3fyD!u}L` ze<;z4%f!@_-_%O7P16kRy&u&?~d9GXE%h*6o!(VwbNCYJ& zj{=2&ax_1jww0CNYj0pl0_V2J4)r@L(c@ONfDqCn#h*KnXOm~7rKP3j!e*@)$<%4| zNs}frbui0RYz)VXFOT1deMNhfH)u(FY(amJ`<3Jp4bVHjO6tQoX95WHvKy@a zbA+U?Fxr7g!%-j-&JrZyS*FTBr3h+@42lgMEsudDsKI&eB%Ibt9X#u6ZwXN7GDt~> z?`itGX%bLs*zA|T_8Os16iT_Up@%CUW4}ud_bcleh{u(m<7sqR1C=(GZdr>iP+IJeY+^%QPar^YnP-q^hdSpT=L95-edZu#d}1u z`y(U?v=81R5bFKO2R8BA4IZT(DSO90Fbh4ImjiFO4$;8kuJQiLkRa5DO5SAsO9BPQ zPy(hS7_UIMp@HQF*Qo8Exc1o=RA(93JVq(~mK_kW!3~iM;fAaWg3pkvb(8iwALqg9 z=z)aA*4P*oTe)u0zmRk&M#vkm`&Irve-4g#s2R%#lEN8>1HA`|47T!w_wR2FL~B3z z@F?s$s#q0w$_rI9NYf_3zD`ZSb~8!N0%qR|`acBBanZ%~8^ZFp*OdM^9@)N`0#W$` zl2GFkw{=|zRghH^2lE|@Wszm-XnKv`^IC!nB!-uI?OUUKT-q{ENl?a~(Q*q#zSVuN z*x1-i1;oGN2PdRkgNy54rm#Kqw^8Sp*oJLU@EReNZIp4Z5}xM?chyhq@>Hu z%{7HWBG^OYDr2+|C=H8_vg~b!SBvT1kg@Tz1&dt&_C3{i(T}Eip~_!#FlO^qU!R)o z=Crr<6hgAE{1#fI3IT(2F6<*%-a1_2Bwd)zZ4Xkn`Yy&BH&EJ?k>E3O~Z>{fJ zjPGHXfS_(LxN*K;{yjMvm6}SW@6^Red?`(YsqsE8ygoj(%@7^7wip!4yQXMnPWrj}?Ij53)h~0D_vNch5+2R*<$HCSK`_+mQeFv8qZ_ zvl`eiARQ|!Q&Z#E;Gv4#8dU)?M(twyBWLIGPq5@f3A^AH{Zk4eNVzd?LkDyRB>l9a zr)%Xrbje6T-~?O+tWsG^xo)$tPt`MTZ;^D!k=HSj-zzA{&u2g{kn?jDRA6-h*%|6t zzndfAPQC^?@bt3L?fkJ65SGWhmYNGxH1<`mcXIOV=J<`pS1X3uLGF8i3H0AMRIMO=q!xAtdK z{>|^&!q=sJ=nP%@rQ_V8#Sbf;7%RmO@|MJxH&&&fp0PH644jU~Km9@LEnq+K8m>_d zw+|lfyh6hz+DgfS_JW0p>6|N-`#plX!#B}rboq%S2Kmk{yv?s^1VwB=>Txu1i@-b0 z%&Ej<^B$Z1A*b4Tq!`*F`E={pYVByjn+qQ=BI^nNm#bkh0_bQw>sE5grCG=C>d57E z4e7CN4R(BF%>BNl1S+wjm>CjY*OMlwMZP^} zi<)~meJrNGkxpI%mA-`jhAJ;B|`c2HuXqdArHa=EGZX+6mu z4@;ZAK;w}4n!NM-N=21xJ92$__$?kb_CAmOo{^bF8m(l7t6+)E=2LApCZ#mND>6ao z{FTg4hJR(PjG;^F<`X2np~Z)gpVYeeF9k1URNSyRC^bU*syDFOODNuEU=(wrg_T>N zsXrA!BUdL0ocCB8@x1!na1V1db6A#P?*ijpC5_iPTHeASm+y}B7cnv z6E)P(JL$3S6dU&W9`8RW-E3YfbkSzZ&3K`aApNDt1{<*pSDMMr(QIqdZm&UD|B$b6 z%?mz?CxW-h5vm`W6`k5}2H*|}QkxsA_4*vP(@ivhgua$o%7zC`_ueOX?)jjQ`X}6x za9tq*qi_`DtYLRQZkAIbbkLHC}0x|X?mfq{kdjOZ*3gRoG8}R_vo9e4exC2 zCTh5|R6%rC;<;-MG;juO5WG=@_WL{!ygdVso^b8yWfv2;6+v(EdLq;w6+n(-vRsps zg9Yq>R%m@NAf99+9SG|5Ieb9Nbz_xvS-YsJ%?@@z(nH(OeF_74+RAUonj&zZKj#_e z_`t4LW%T=#eBAB4=QREx{o-~N1z1t=k_SkkxLv86c$7i6u}7tdK&9@XKv(5Z7|!rJ z$x}i=Geg;#TviOWZckM8cJF;Wn4H1EdkQJh+cAv$mZ{M~yxK+4(jA8Y2Fm4U7grr> zict=zvuj9L0XZ<6_4|_(uPsr|W0Oqx!!OP$m(IKMU(&sva>?;}o;fHr?V%r?@%f!D z#cbD0G=@)}T5o5UKH4tN(2u^gaTH{J3mYTkfuR=#XHymJrM~MJrPqnOdyB0=*7&Rx zOhROa;<$$rJEDbTycg$fk7`a9F2hU-*lTuTxTQ~|eVn*)9x)$7IQ@I)}t zNk7#-EjFAT7vl#j<_pGSk4@yd$NYZOQ#-MXC1r=&#$?fphdw)_)i51g$39bHqMtfm zEC#Uc+l-_rLnv-q+FEy(++ox{9zHEazTZSgYxX?CW^3N>N=B!M>~7BIj8J>^_NFOcxhC8zkM6Cnq+Zm7_Z>D$=!K%9*R;>g5H zCUYXQm5$h>9?q|bDGV{gNJJFvoAHhF45O`O<_AAJE46whX9M&bF1HViS~iCkX*;?W zt{-9WUE6Uk@t%Gvdc3#trRuXPZFm8>awog{Ib~0-@OG~RUHcYpH3piwGF`}7L;8gJ zxf8F{0KR?Gu4;+JC*zAXN3In7qyCZ1n%zbJNUzOssEqlan_|6@!N4ZlM<7)jU)7zM zt80)ULz*YTylK6zZx)Y7>wV3L%tok~?2oZ0^UOXJy;zDVJ(Q$@5u~njvi=*o5OJ{=3md0j} z>#qAfOVgY;cNgEZ&pZ1EyJq+W#j~fy1x#mkGlPDPy*+sJ@YPW5?(C>aO$O|xe)ad? zsEkqz2uIc=zY26P{FIZ!xL}SBGgdt28Em%^sp!PwTeg;#uaCELK`cqk^5i{*#90G0 z@>oW%5s-Y@9`Hy{+P{|wRXgwou;51Ljp|G0sj%sR2@m#c4cPSHdH#+!`HUjS;yINVL4O^lesg@pU|CDOiVibbI!4Wtq+*MuEgK92;t(yM6%$; zN-bx?6(P=?rls0YYJ~jMt2w21Xu=qczQTa*c{n2&+p}0_i+VHKYT_lbr!e7OTNClXZx4Gn*A$i!2CJfAN3rM{2}vYp zUvngaRzF&AA|Cj zBIf&zri*u6T!c$qw$%&0EO=QWBCJ?hd1<1Q?IJK7BC@uAH7aiZdilI94l91^;8d@_ zf2ds3ukS(^mQm3e5(jrFLOb`m$U8+d0Iv{>8KBv`W4U!n{`Up)2P;$dNd)Og)3(*w zc1rrIrrTFX{Ff-A|D<&oru&l%jZ#u*4;s4JdQQJ$&Uha6Kr<1!7}FRaIkQLJ#)!v+ z)HcPtI9|v-+TIa5G8?D{cs#R6%eLrqU*xm3DR&b3u%!0oH;qAkLy@27w)&Y+uSvhs z;hKQm6wTVBrTxugF|TVV-#y*S30yRf`O(Wrtle+O#+Yi^$^nVt=%R7L8JO>|(NLE1 zEJOP~lBEj1TN^dYJZ$e^zAO$`^;=2yyI;C z1{OCSYwpFfTC86Y^>k?$zo+|`JBl7Wk0AWBdDOSRR_ho4jS!)Dd4hSVdrpaFG~lh8 zRdV|Q1%=k#2h14L>qX%dwy6$XT-xmBDOIO1Wlx2rKNDls3XkL{l=QTE^*7x?Q0%C= z+2@Y-;)V#>inzEm0A4?txO@9p+ApJ~l+M%Ds%%*6gsvswr*jF~WvT&9sA7GhK{!UduLw4QhF{enTPqs}MR7^$GD2#+3`*wif0Fo%-yx4{>Vj-?Dwa?MMitqV1>xamcxf;_c8{P@X~ zzpBmo5sjz^*JrSMeP&SrD%P!K1_gw*rVkXvW># zp8B98iaui=rd+~`W$&?MS?0K9KS?Vtth>F>v4efO^(-H!_2Mpyt zgO2TsS9_MF12y^XG2{cPztkp)+Bz*Mwqu<0!}(P1-Z@c`latdLqu}NG0V*yU2nA?Q z)=VKj|7!K&d-u6sOG86CEdr8!@7;X;hkXbclEtFU&a@Rs#onDh(J zJv{H38#pnk+>&^wivZHWN=IqU!Jn|LrA_;eN0*1f+R+$&yEU`XvfC@phenUat37?& zIQ>pVFOL7}H=Iu!sR^~kQdl?gFAdb=@uaYg`5H4kt5xtkdg}*v<)f{5{u+lLf~}6l zP5YE8RQy-nFU^=XJZE&+&ecU$;&SW9?iRB4GEDeo)KW5wdEY53?fH3>;N@@c61PXk zoUM`^S9jX!E-5GLe=|~$?&cy4J6~=#ezt8XCLz!8=eamZEnC5J;xvaq< zSD_5knm$qDYAYh)Y&yB&wjutSnXZnucBN)&SpHj^;?&nT zbiP3NaESYy2~>M^gpy!R-S`=efxm&b%k ztNMw;tRU_1k{$AQh#k`2^vAO%jOVK{$)btsKs)V1&)ajOD{%%SSlTwBkPj90o zEmOL0*5A$IhU0r2!v3NcTT85Q&5cKcqGuPgNuUIq$DmC3RqamhVqe(l+w4ut%OSe{ z8uw_l(0ohutwNH0gJnof8VEB3AX#Ztg9dkQ21kgHAOx|$F?q|pyw>cIvPxuP8?qzK zQ%F}=mw`1Rzn_?M=VOAVu|g;yZO+}cW1ARiJ}yv3#6Zci6{xw98!yX8e*sBZ zwY~i}Fw#8xd-Y>!=?y3)#-E}diXiPAmjb6izDQ7rE{Fqw;F-`E;;+nLSF9q^dCC2AKe5E4%FQ?E7}zsu z?o;>bIDyP^?9mc{&e&bAOGiF%pZ`ZOlxk6)?#+S`5hNIMSiIioQ+~?X5-juLp|mms zl-pc*n_Dkb@EynPs&T8j*wgRIG|aIe9BWQi3SMZ@GoirQs5&j?xJjw@XiI#L`Atl# zxots6jmeJ_Z(2yT;Q|S6t3ax>;+k9iZI)VaXH7u$k})O)d~Y&Q!h8b-BUemKfK=at zSRF1#fco;;PV)5mhI=5PhEpU~*PZ8oEumQIaWoqixzWdkpYAb-+iE>EYFlMHGiAgj zw^Psrwj}KmBdLBj z=v2)r&HJ02Pwk1#zyIn@B~-+%94=ngA66i956=i4;_t(Ob`$-t=A;0iayF^5B*ZJ-|ZiH!@G| zt;P8fJmA3>cHc4CB|AQg>ejSxE5Fo#6Xx$uuTfj2t@LI8&tGThAN@Jc*r{%bN?$gW z+Tql>78Nf=5*!!(mHYhrsDCYtd+`sYrQLGQQbR`ZNN~vIb8L+4hS@5wNddn76*aeM zab<(jy6=^{Xz4y1(=`hbxPj}<{!5Jbw9f2)UVYPOXy)amwimVR(`#)XUo~!ZJgP18 zQ+uUq)5uTpz>A2iv7VZBYsC?b(?{`H!g>YP{zcL@+q7#u;gp z2Yyf7^!HxU)R$bQXY_%g-l+2zzt}k*V)7X}&PO*DT)S z2vgcSQ+Jy-(Z1P%s*X#Fw9^%*nhiu;X zXg_PV_|8@3J$D+G_HCi=lj-G08))OV@Z~vmv=aWZKV>R$OP# zrs3!>P0i}TGKIuvQgi2d!@7AQcSy=EJ*%R2mde)7~HNw<~w9Oe4p<6N9Ris`;;bd@$=1EuZ->S&rQ349gNX=2h{_J^Lnzb-U4Bd zC1#Q@fgq;7c!Ss*!t zp%hiSbOG&x)Z?QXWOO{+kEh>(jmNjU4VEp;XS1CjJQq@kH}m$lM=dhgDV{Q$qac~F zp4PrT(CSFi?=XX>B&I7!%lGM*CQsNa9lI!l1A|;TR`z@zug|%vSN*)r3bI55yKfI4eZs zrwiDnnhny}t-Q_dL0GT)<%oYCy4#nM$)7!eb+9^22>$LwzF;M$n?Rzc`@T?@Ii#j= zDQ>Vm<2#KQzpT6EKJAFBLOUMO8$~O%)o#w8{c=+!S-_Em_NpUg5eU_y; zVrVvS(Ua}mg?%H<87tAJ(B5TwP~LRAcaD=t_0!f^Tc5+!D07>&n3-sX#G70GI}{gt zEipT-0-@Y9QHz@)!+Jq|TJ{e!rVJv}p0~WgQ|-hnX2W`mN2Y&w<+1_ z42d7A^S6FAi;$i9atQdBTl0heskuW>D+ zgWEYS>zU%L^dFqwneaS)aV-5@)Xn5Mu_eb+hvrv+#}TPADe<&-JyrSEn;a@rqG)+ZVv+3h&1z7fU5bt<#0 zD5WHv))`v0>9CQ)OftC`t@j!EXEidzX5~|<_V!R>gv`1hycB)4x#RT_S2X8MZz}&| zBzu_@vyhSu{lST*STFpFRGWp+#sFr@`oPaB3m z=84jpKEsUfrAgqlFjckfWYjvpc9Wy&W_9nm;^=8CJw?P^TBo6$4?fy^fz1}rfz7rv z@+mFX4X1{~SuKytb`6iMCb|XI%}m68>ltFR1xDy@iUOXd2m815Mse+*GWe8(xl7`z z;)fhf4|Z)^aoBeBwnbx7$TOm2#1p@J`9lY29+?J>4s`k3=o{MQ=kpNZw9RS_&WFT9b zjcL~Ak%Z`)a6rQo_5O@oN9Davx=*to|JD!x1M*&G3T{bDK<_tr?lKHySypzOLgLfe zU!aUKWa9)tg9}+TZXYkIHzxV&D6+Q8tPNHs;m;dC(OIepFEgN`%w7~%Q_R`qgE-Z| zeUkC`9Nh>!K4s`kRP42RW(IXGtm=Q;&HS! z8@QfuL)j{_P2qC#z<#x)rj@o z-}2r9vYVq`=^*HOQB3D)WktmdRM|@zS}X+Woanc97GDsbIQ zW5bE4`Mp{miEEfxf`UB0+i!VhWAK@3SJ_ft2gd}gir>(R=^n`D8oW@!rLD$zaOptI zlrEv!L{Hefg8Q zk`Ocd^<$(%J+)x+wONbm=Yh-%%~2XQ&8>#%y20Ly`mdk_O7UEkfZC09Vd|6wR!=%f zA6|Wap4M%%zx2+K!f5i_`ceO(v!NZ08>@ZuvdP5d%oWj{j#ZD7QV}j!6Ar@Rw^F`a zv&=RQ!{@u`f1TPBK=N-Ef$4m(wrkvlDA;b_RDO51E<2qOe3;}DZa2N&ZqV$7-F)6j z$hE%X-MvDJOn4yC$v&)-fO!-2fqtHghYo!heKUr|zQH$T`H*9q${qBo4Vk*DnavH+ z5*I7FU2UZ7=iW1)`h&Lib~k4a>N8r}{HMaCH#rcW?`EU#E}k|IJ6;-S&688Gn5~5u zeK!}oGZ_IY(RtJG|2 zT!#KprI(#h`U#@mV{-_nIvh-gH46AgG_()??oTIJKykbBM{F+hMxri|N71J z*|9Wgn^iK?B_z1Hc60l{o0ZE)PNLy*R_kbfGXn>W@4WF$Bz(~m&eQv&<(ORZwEOk0 zr?j?{O*lxz^~AIFLB~f9$BY&;XNrod?PyMPs!Rq>?p?krX)a+imv)!Rq>`Ek2Gx!t z-#(1o7gDi-KF!w;j`ul|`9OTs2*r5ItuZ^Y3EoAVql-c@kEP4!o&HTDxGLE$G|Mi! zziN0W@M~b_;CQl}YYKj`*D~2lQ;i~EQKx@@8D13xqH{AWnfR_?6j2vkOC7*~cq_+% zO6LOCjeL_zcafkDep#K>tdOn1EtF|169f>@^TOyZ15CXHTm&BSi-A?G*Qj;V%C@LM zQwES`i9cTrA_2DpnEnbdwS0ejr_8X;sPR6Ij z$&DLfIn6_gt>WjG;wMYlD6J2ejnL~Sqi?DRO8w?yLJT~txQ23%(E^@;&9I3Yx_Kyj zKUit7B5_G*i~lxt5S)QA-xQt_mDAEcH5CmUIhaIcey3a3@WTlr-|&9%Q7XvkKxE6tB#PSPh?5ml+m?@V0U0{~Xau=E zqt$$p(1HM8ZQD$1(2Jmh3SF}t#6vm&HZX1?AvpsY#Kr(hE_)TB#PmoknLfTtPPh+t zxH$)d^Fl|{E!+u2 zht9o1xqnLm7rIO8bt>TcE$GmfZnEyGVLDun{e#B2?SbPjMd|264_eRtJ@Qs+FD}ZR z=>2^AhK`OuOjOjrtXh|1abfA-u;>;r8n5=&aIZOk#S)nLs1_S$u|@JAXf)jx_tUK`1|2+#eNW!}9WAe>=`sU~vKiIs0nX0l)(HeU%JU z=|@$}>y~b+x6xU0YqCSX=$Z&oOEpZMc&a@?1I8if*bUpgi!U~pBQ^B4{QVn*n!i7~ zpU^5q{xgJ=NQx=GGwrYsF-_Y<8t;TPy*HR@c;OnkW=7G3b!v{r1E_l z(DA9<<1W;%#L}94tH)-vUsvSe-j#IJUhIbnokzOop0pPSYa%0+)ilqT(}Txf{_vIB zKBm7K`h#<<^sHOJ=PbkZsQp|5gxhTiN$DXLm$eiS>8-dZtbf*M*k)d7)H=QRm-W@^ z*Ysf2hD|%MJ+j#EouPI%iH(45J599`0_&O6Gl@sDf*Y5<9K)zO;BM0H_DIl!%+jeK z^7Idp&YT}`&;&{L3- zvEtN8hypgnh&FP6+=9{Ib&-SFmG>9gnmFH&_m2J9TMaK=@N5O}?CZB5o^6+EVJ%)D zn#Efxr$q><-+TL!tBO$`_NIimgm!ZJABt);byl&9aGO~AOX)PPgi6f7fX@)h1W$2n zO~=Iy8*Q&PqsQpy)Ojr5m!>~&8uvtF>o#6J5Ys+c9y@zoe4(4 z7g{}~6UwVX8J#idg$v8Gq=M#er*wWHk}Ro)rpV2{i(AZ5!W@?k8}Hp2IX>`QZ+(J4 zJbmEcH=Cj0xmjt5Ou^b*BscnDRz6aB`fH9P(*fVFSwOeb@{2o?T%sNm{G7w(4WruGV}0R>u+(UbPvy`9GA7}TVi zAr7&=N3Wk`<(RoR-%p5h5tpASav0L(7VV>tm1Fs>z!VQ6=qr#i%7xk$e0to|=Wh1Yd<3w6vITPODi#72=XBOTJ3CB=4TWy!c6i{kj*wfPiKX z0=P%AhZ~cMv<07|-|3ZPy_{}Z8n1TIy;tNTYWeG9+%x+j>%47lAx&H-DF(Qgq0sUm z-;bRNf$1 zYcBMI@s-ct&CQt}_Xy?(3CNBc=iB2M{;E7QNldt(sIi04-Rf!HH;)F5x{K$@Bcwsz zEi0S*cHkRf`|!A%se5=rib$NFvcXn?2&c4f+Fqow5Wpz=8yf2mPoR$NkN7G!FN+{f z_d4?0TjNM00FMO3RFSZ&yj987=(!8rNVj@}SWW0o48CR?Bz|zFC`C1ET>&_OA%&_C zUA}@_-Nq0}TRuuMnWW1e*{R0kAM=5%C;yAn>-axOL51r1>L@dXdHFrv$vCE3FK&fn z?P!Iup}H7n24Y-|AX@lMkff>6kTZw?F<`9R7lolu|NfUYW>x&FWI?LPy1M#V3+Ra0aSlyr-K2gw(m{GLo}-*-&j(Y5wdTi0$DcU?Py=Mv6vbfmBg7 zHsO>z7S&25vlfRmQ+!v^K_^#S-SoPX(a-N>4douBzbWgmw+DAs*iyr|-}eAS=^cU6 z+mFeqy;wrx?|TA`lgrZZd44FZ+hQ^5QX@19r9TrV*yP4u|2jt9ZI++qfoaNJ{-&Qrj<1APNGF* z%QKoQrnUWYofU%|+HyWhr@g=05Pb6ncrW{#c;#>owRatJd^Odktb7U+G%I}yKQ(A& zi-S$0%dG6a_@8`nabjQn@akwYx&qu5QfrNNME(`OmQ3RqGb`gA)!Avwo=k?BMMsgX zkxjqg6JagC912F=d9d+B5!erUS(mIuvXf@0{=3E&9ZY#Bw^!@Uv+^uVr5EoUzeKyb z0>PlOZlnFV?)2hE9yCMht7_;Hl7iBKOK<(-^Qd%(&O?NXI}W8k+uTdzVZ&KA`)(B* zDvVoZnW>SSlv^StzrmWIASKUXq07GQ`=Wd_B1jgKr&D&~;;*N;KTU#*aHsB^1I zP2G@n>#Xc51LbUuk*7>vH2q)6R9)|X&gsnZGkF>7AL%<0iyFS=!2&g1wr+(Jy^u}( zA|Ivn%%e2Li_Zx$@;Hh5f%(RFF_mBGUFiyBMQOBq z5eb;D@a{|zpC-R^CuS4V^-+=teS*D1Z}Zg1vi9Id`OMeS+r-N?)UwnFgi2+4)XM23nH4E@eu@YN_cDB@!t>(6p!^THG4+sVzoleT9)sa4siLEu8C6}^G{ zA*kt#&jQmAv0T8m_7?X!!!dn;c%$%a;j=JJO9e;t?%j>); zVAE5$oZDia)3;lIB0B%~LrhkqW%HC*6{lUD6K!~+npK6Cx5U~@_}_;vuj!b)gYZ(k zpq7Gx9RWwOx=)BE$e;iFkrthsb+2)#W7W-Q54T5SSnTl4?9tJ#a%%d3b#GQbX-Mlw zpXeru6-hSf=DX4DaWajppS8ml0}d<+;wVp^Qt|&`u(o+e_{?00evDq_Q~6%OH_tWP z8k!&RX6D-T*F$Yuoc2oXi|MhG42~V9%*HSc3$dwX$v+98eR1xbDPb8__{6>?ou=+t zjuybZW$Dmq#Lr6SN291i^t#`MlJYtM|5NRsKf)Gd=QJ^I?y>5nM6prnb0@#~Q5ncB za##N3$b9jmy9Q0kHS6*&PO?U3@0e|rUnni<(6y)-vTKxl{K|Aa zM(lc|yyp|`@Jk&heS53r-`Pmv z?hPA(vLy{V$wb~3bIlF*NN&7uE%fh7k|qx=cehbT^Q$;j{HyD?S=S|TvPY|?y4V8l zvPIQ0@8j=%lpPk{Thfd%@b=Ld{sSha|9%KXeBO%|b8Ip0=YJnXA(WNDw0KwQ3Vn7H zvjrF0qzxoKD8|sHQQ3PG0om^|^C zvorvCVxqh&O_fDEkk!$NcfJx zO=AF2*{gq?7kv4Gj@5YLOM6n{+^45uxl{k&OS|I7-ZM$~-p$5&p7oaX4Tjs)*T}vX zFJwu-4QQe8*!#jxyGJi|g|4AOE1EU>?^x&2UUcNRComGVMuzGlcg|iOYZIhVu@*Gn&-`8Y z?BDeNpFhN8rCa)DOWHoZc&UCz1;^LPmzxF#<8=@g>I?O?6L{VK_klI~|2|HFjdvXj z_phwGhJta)%##w;?XbZE9$XYr`8=HC5*mhmVJGfEj;e^NKK?9Oz#3jMWakk3fuzEK_U{ENb zn5QuKk+?wn>XW9OVq$p39zpr!J7ADS+k7=?KU^pd>7}LGN>Au`@#(*uR_4ddulNDy z0OIV*M^W)0MW?2v6u+1G%0?$%yJh#Y{QA9uG!;&hxf}b|5&|;7y{TO^=DVbnqvpvT z-Hp{r8TtxxG+=N#)%><^Q-OYO2#Two?Bywbom)=2U1r4LkFTUCVT0TApBZ+c`(xLq zo;nv;z0=0frzkCq*P&s~8?Y9&xw#6b6;u~YeicYj0xwwVX|e}vd{^a-?;=5#RvJ^h zDM}YjK#T9&^`skLckA(`jzPq#C0IS1tFs^I{0YV!C{-mceVkqdT<2-GAkJMhxqI;tDfyWG7MhSb#;wh=SIY|EaoZLr%D{i0FuHNpe|9^1I@y{Ll%Ou4saY z8^XdAPhaN-1+j$;x;bopd3%z&@~$=iWTYi~N<*1WYw=K6(|4^bhp3$Ki{@LhoA}bk z0+gs@b^SCZ1AAa7nZakEF!6VOO}L_m5m4hQtvRvk?OZ`VEHdN41tjkF-z%xsvw|GO zj7;x)?!srR9N3uw@KKc|!-H_ViX9}!l+zb#*@<)n8=yzyRKyjtQCl)N(bKaehB*BI z=z%Q>DSsSq3O>w{O;6b_^qAtM*vNulJ2Wa+`gUgoufuiHZ%G1O zKl|$XENo9vT3JEr#0ppRS>GE)3RHhfwee>iwAH5O$A&=CPHH86_l6FvyYAa*Ia7zp zF$8KW>Ee(y@!pNS3chYzf&J`2#p9Z-G}u@GpW^K+NgRYY(A5&AYljwPJI$( z8m5iO%{qY{Cp`uJk3X?Avq-1??fxaC^&iC0R_RE0%Kq9MD3N=3Lm9(&_apze6{WWh?R;t;~=G;UQ5N}YgJPa+^zFDs^ofrmV>w*&`W z>*G^XDwW05%Pv%aNi9pmtMw(M6_tZW;H`{$q_xT9G(rTYqQit6ti$<8jf4^7|B4iEE;s7QD?`&@Uewvi7x&Kp+R(F?dtn*mAMQ${8WQMS&+5 zobkZ_3ITuM+M|Vu$h=}!iFx<^lQcnN?VE4`pi=JOoe1qElwpp?1n) zoiG%@amKZIu=YtRXMcLusl`cim1HxpR^22IyuYvAZ`Up8&Q-D z4{dA;%&hGMsUiF%C;c~Bl*|heaufgym``sNa(-3XXyHRxsZ%ew%%ODuOce=v!evp1 z2K8>U-~vU5KEP->bL#u|Sc?p4Z-CbQbQ$d}O#&Elz|s>+BjVO##D#+KfIX7TGM4i@ zz$GIp{(jE19WBEG_fTlRCCX{t-{|e$Dh}^|l54H2`)bQ?pJtnACw77@sRVq7a4$v0 z7VZ>Y%gz1$w#WR%cpbd!z(n*I?2izg0aRW~((Z1y{65brfFhf$00VH@U#|3w8dLL{`|AmS6@{S8C1>}04yk$@}lYDOPU z?m+mTKbl?p@%o>xhXpC1DrtE!k;ibknZk7icOtNGcRC_ym^~kS*)G-hUE4kW1qMnF z(P$WZW3a);Ip?DuNBK2ThXfNAoGNJ`@OJJymd1{YxUIFonQ19w^V(ktfmhvqQj?h} z6`M#!cay!ycLHo(E~|f(O9;EmQcpYpxe1^K;O53Q><$hhW=kpv43z0WH;MwiLku|F z3!x42P&umPJpVIq#Y4yW zivPpbn}9>zMq%Sfme8UUA_*m1WXaZuWRHX)OLo~q2w93KWQJtOnl+4V#Mnt`o$N*yA!MFjnC>gP|MS3Q@U?tgdOyL< zac}W5;=oa=34Kwp?^38@_Qk7i44=SwbrfKrrJYBGY*T0WXik=r139(2xGG}R} z2u){0L<8y@xhKs9&PTid-dq@b1MS_K!Z+=}T7l%kNYc*!!KCQ6@Y}ufZ`ON&ZrMS} z^R$;aJTD1N&8`D>pJ_LFc8=MV{H-oEZ=m{b!i>0rBB|uj{u)Ufuz96~Tuv$axUoY2}Iwx;7KB`^-z0j{PNYZ}*(i|hbXk!ILH?L2>^vpmPRUtINt!`_h^vero*@H#IY6j5I|M~bk!5T6QFsK0Byp)eZCt0{PD78 zZir#L(?!s6z0500cR}boG-`+IXiD8Hy1^o=FkxA7xU#!3x3b!LL)}*vR1OnezR|v) zu$!}#%7+_a4xgbI0p0Rv=CR)iZU+;M;TI-Aj`f_Z5!A^**3bAEN8L)(MUp_L*$WYl zE`Qr*n=kLR^+@-scKeEiW8dYz$3LM$7&cq;f_r-#NMenkuS7Yh{Eqn*iL|1_u{2b5 zfpqC+ug5@*G6LjZ$Ew$U>6mb|-hZw)KB2<>Fbdt9Z}bMtFz$^{fM4erl=ouUwB{@; zF54*Y#*Im$?0E$Uu8ct-4nR%PSaoc-`Qo)u+FJx(0`;5Uh|?$RKGAFkr>j;kch>O` zpw1{@P(%is+Zji#%!j%SI?a5KgMC3IY!|>V5p;{=?_sO)3j_y$?j!5k^AYXSwv3T8V=s zAv{oL z)!&yS|5~~#lYn>P!`TV&-^Fg?yyQSN0BAcZfs|i4Il7E*M4WFeCfPOQp-Ex`!E_hw zvtm@Z)pobj(FjIIu5j_(4#=!YE7aiwK6##f@gK5M^y?a_KMBgYLRyarhpO z+=E2>>l0AA5O0ya~z{7ksL>Y|eI9iE*ZjqkicZDMVjei#~sVw;$;Rl=D zdnY$TzXa(9`|EN7BJZ7F8vkH)3yIG!${4pqdAn z6?a6ZfVTCxIM1gH(*Q($y9 ze`Bs!oi#H!&$!}YCuhdOgYZ&ho`LpF(=}xdKW?dztm@W-ENB9@Yo7Z+XVqaJ`l!;~ zuKDH$$eBD$dSjE~hB#k_C9fQTvV%HC;Cf|%xE~um70)(%F{}a0&PTOb+p)g3G)-!GFQzn`_47`{fGCG%9aR=lj%FfE3ew+ zj*N>UCM0LcR5){VPmnI7;{Y0B9HGSaL*P5)Oo58Qp!cdiZaE<9|E7!J&|4rlGXWcy zYPE9uJ>;&S6?oP2thF>ZhTFDQZQs(HuoRzU=UuS8dGW(PS+TtjYq&pzQ#?!bA)d~+ z39iuo5g6dPD3CPhJoPKdj9JO$opGl9mw2exrmS9Qdvv<}2lc4u;-BjkhylfjU;?D{ z`)u1TYJ+xO{}X2;hD=2CmE1lNRDU^p$(D6|ymADX?-Ys_$fv7ZF+xL+IAq*jT3u{k zqsTW9Kzg1LD)p!{m?JSTE@~N;ihgJCA<;!Ry%+6EJQoJ^JdYsmQ7vf!ic5xUOxL(K zBBfWWc}=J5kQ;jiX($ABFwc43n(cQZOUgGt=C$}O^x^Jy7G$l!ObxUo`>=sS4u>hF z7k9;e-^vW`Aw^15Cy4gs3QuER_`h6d>HK%V_yTKO5!saneu}Eze4iWFWH%RwjAB-k z)iNRX%uRzi6s4BgviZoaq@_mmZ}q)&035=X_#rno5xBG9m$QOPJil<|0wh}J1${Nv zenqZ{-1n;n!OzA?1!F3^#qd0`f`11YS%?A*z)y_g3-+I?(fs*b_rWp<>aN#iGKLmB z)fuxf2|CVVtQ}yWTwm=}u`^F5>}e&6@x$FKHqnqABEw#%O_%QzE;A4S&Q6_~5%ld0 zzI^KFc#iuvcZ2o>%Z-NuChwL1gZGlSKB}~YTQvoy62vFVn6PNN94z*3Z^0WkhGGGu zo7*2Ol4!Wqr|`HzL1sj`YH^LuXU)J}$Xr!7&rG;W^LPZvUb-FiQRAx4;gKDy z9q9C=@x-<&X|yNbKF;vxq3IAUh$S=TyVYxvK^?bn^k_2cdZ-;-j&1X#4kI`e|J}7^ z^nVUfs0&+bvGr%==F%lw#x0O>P1Q=d%Mm^4Rul@FBJa6p#Jp2sZCqqemkSED3gFA?xmVE;0_}cHmp7F=EeGeT-Hr{c3T2 z=r_3=7n5(O(5UyA_hdovCY=%|v*OdD2W z3W%W#``?JNi$st=384_PPVk@The&=j)BFmxTlMh%Q0{Rk7wCZlKzVB^F=%za} z)tjH?Lf3#|D-mTwbflXNiy z$ZRPbk2t^dxrtD+fq5tx-OT-nM!|{wk!C9_J0#U&cBN@PnpmAuvWofhG&Sb@&V81b zi>>%S2#6tFJBTX45Xp>vtmbhE7zc?!ivKV_^4&^`f4}*zyd0Jo260H7A+{R<%$e_t zFR9&;Jtz}$Itl+js>@m~_jd{%?fX1`^K}fcOvfp%E?{AfQggYts_%xIqbiQC6ow9Yy-#J(aoylCV5k5ANGZFS41EO_#hVf1#Y_4 zt!3UJ7m1JW%E#a9SRGyM`Cq)k@MP%kBpJyDI+Y|n$02c^l&P@7BsaQs)RTjdSkOFj z8wv)5g9bQ$I+;9&1A~xY0v|7H`tVwcZ}BL$icxUIAGC=C`gamc#a#-h~Sdb|Jp zd8eHowiTr*HF>VhR~8u6pe=r32*T0!-k$^zjki(dFa>*i=*NK0pXO+F6z>PD1K*14 z*mSu9$i6!s#br7E?jcZuJ0~=ZM9#`i7Q8W!d%xjoVv=MJ=&P--z~czLeDpPiGAw|?u`oK-lJiZ@)9w+%F5 z9RP&}v`0Am3wj9f;U9I(490B7&08kIDyk{rzXZI!dUf!AB!K~73KwDKojF9Z^w50yw$~CydIOrU5=J|vheB?KEsN^De#jK2SFBM; zrCgp`CGjn5yIA{7s}cj$t5EH19zLxs&jdyOq!{}ZSuWl>v1vq)p8%FfjzDGQsaW%! zD&7s!uC8+z54qHP@sj?|bxruNfa1>{f}PL$ERhbYU#JAwdwgj_>^v3bhMZc!toOC? zchQr|hUa<+ui?-Dgv#PzcO$UrKI~K^SFz?FsSq^|?VNJ}%K1xkX2*dN)!)kw&<#oA z@keM3SRKi>s|QMgzMZ@nYYg`?xLZvChVxtnk=2rKrh)bNMtjW+V6gYTVxN;dS)I$r zsG#e5fH*==74+%MQ(2+e3@B(jw16h2_f4V;xi7hw7{OH663F-lWzI=vpr>xr09_1kfG10biZxm&WG1}= z1nNN{+n~m$bhIBbdXifL^G&O_qh35tCOEW=$L#Cm+b=A@elGACoL^?Y5~Tv|KD^v- z33LPT=I};^$qCZ);Mk$JvH~sP{|(Ff7d2m5_vr_Kfcvhs-3nZ|mgo|ghmNrgm5GNX z{~eN9?ww*ynFTRY2LixNumt)lJ+PM#$iSQKru7M%ws@WuSH75snbxqO0~P?O6fJUF z44M*v)C}5sf5V1ZEI822A`}q4GHFD0eZNS`=_Yo@!DJNR!B8~G zgoH0O;N6CzpR~mXLytqwCaxSM zFgXD!=Ow`I&a#>2kQyUMQhf4z;LK_X$pxVK1vCOvq&Ok{NqcfP2`X&yt#%reNcJpc zfzpzTBzHu%qeQs4Ll0?&WEU0^ip(3Vp7H$tDega+Ke^qyzm;7;{Ud_DdL=$I&i$8) zu*PB~C{)W{`i$BnjN8eswWF5@(yY5H#nzpd>uoS~BLYtXLsR!s`GTinp6}8fV=4J7 zz0`stf2rF<=@2!g`_8?GCS3K=8xFGfEOd@Gl}zZ9?3N*Id9pNYS_xxCyfQ*j5)B2* zafz7YC&P>P9zOGXS?Qqr!Zat378zY!9Q89UY`5T?z?0We+N_G5ej301eBYv$S85|K zrh4uC;VA(*24krSU5x}Ui+*=j&;<9a#LAuimckKmJX~&=9+eg~or{~8QFeYwF!7zu z>vzOB$tk95=RNvDHRi$$Y(N4j=+_B>X*Jt~BihHX--k#W2gAx8tqKtw^)V{?$Rwpl zLUKq>iG=%`>MJC07qBJR++a_qbNhA1c6IigMcJVBv-*WU6=%T+o+|RF!CW4|W} zeBWo>TMkcxjb#JCWl$3nw)$~eOhQe$r1LM46FBW8BIJlUST$@zJ_t96^n5>?m6*3j ziyclNoZ+H`834qfe#wmREqC;ni^mJ4#+5;p9N6VSAcFDy&@z1EWi@5WYWOhm=AFY;u~&*6Si{` zFj2v76#OH@{2c!y6SnMnk=W-t(lXx&q~FsatS~zXO)K%9~v;Sl(|HuRyRwjgna`hxfx7SUq7tb`ikmuK^Hs@eN$VSfoitU=u;i zdlAZ-K!!9)gS>}ihzG=Xy+#6raG>l(ov3+@B;=K#{(zt3XCF-Z;0HlRU`SXlLj-)C$f?L(aC|p?`yLDD|@jk{j2!mz4M)gIdlbkhm`Nw zi4+nEnS3f^Dilu-_UNj&n*t(Lc;{q0KT+>b|2}s7&F^FW3hOUNINdoo#sfMChSd8s zNvyZGhu`VA&X&s;8HS-R3(V^h&R(znvdu5MgKi|L3=~k2aW#y-s(LcMo!a>l6KBCb zM@6Y7r}n^M|wR$jUwx{{cgFzXayU5N!bX5zMXKTnQ+l4jR}mD*4SVYbvO*pXg^7dRONA~9vTf;G(3@>q; zJsnK1`U&J0o-8@uRqf^|M;hqc%x@TMoFFf%3R5ur6A< zbJ_^M*zlxvu*i+r`@`zPfpf2k$4R01oALG|7N)uCsaae)PQY9SU+x?k7OR2qPR+9& z?-Qc5=}{ArK!ScA|I)Z&#JP;W^C2tuWoXWYs)D_sI6F&VXGmTAWpa7DD#QEAR6k;# zV~M%h(WzO_S+({6J#$ZXWb}*i$f44iThK=Q#!)CGNeF93m*V zb4+F9(J}8(0*YI%C&gdgyJP+J)Th0uW?vWatdZxJ-=^&EOF>hBK;1JI=*aOxE&U#S zEE0D7poIQhiE`rdJ%R!n3)x7O3szc~Oq&3U@dhe?V`e|*BNXjqpzLA$-k<0oJ zskx=vOX#tZx&V^>A!B!?%J^|hhNR_JG=hXy!q1$rw0%5rS#j!Cp>|THdf5; zfY`izu1v3u(2>D1RLxmF|4l8o!PodgT$fdU%j_?^v&v&l4!`u= z-vPU)-%)7rE7#7WZn14TPWi}(PORd9IsK+GF76lbNdENDP>fw%umof~+idu;nRs*K zw;&=9U-xT+Sno#-CA|iNJiUT7Sl*p8CAq)cIWwxC>sD2sj{l{@L;fTX;%WxT3xKL) ztO44^j$7uJ*h&XyRAXn#&wki0e<;YxacowmT&=WZ9S7`mtX@tT*${x^xmWVJItcbk zUqd_mj4MdNaURm)Q9dvQ?3Icc-vLp1t;YW3UrC{q%Ux!|FQ<0)>zc>eVwiDFb`2jt z)5{O`z9>2}Qz1&7G~plOlV_Lbb5IBoPi=~41iKN9(&!*c+Ly-HqN%w=6@FZ%)%|c+ zs6SxrL$N{239be@>C$nlqmsAL2OK9D|EA4#WH6i;<)79Kk3Q(SqPeLRNZI_3MV9{U zRi~naF5v{p4w04se%ImvMsAfS5u@9Qm@dqD0ku>c`FD2>-z;KXKAs0=2g&UvILzhqW}ucIp6!SfG$+b(yizC9LsM;~;tP^xS? zw|eq2Z6sactGv_711u$>l`*zanp71>^8sD2bq9p6zKs?db)Nx zGWwpCvlNe9V=8dJR(qo~9T8?1HIh_vTebi4mY&^{$_L>k)^x2@cGUUgZp-~FAAt6 zUsFf4!_iWT{0VI>yK%O5XR;|G1E`yK;skza&rqNL7Bz19kg7D7t97TGYt|BnrjujU zYb6-I06>-9gyVueyE@{$>D|&<%ZFR~tdz*x-wF-EQ;U$if9rhh7SWt;!0we-M#_1v zpaCxN<$IaWHX6BJmoT&F3Iynm(QpbXQH2KiQ69U@JoCBn$ERUu6+qOg|(hFaknimzG231GWThP>f zGc)B>u0x+XzIP%AgC@T;WZytsbFEjYvuq?N(>*Rb_RP74>>B;ti}D-)v$250`kM-P z&sBTPTU-@2i-d1lF+QdoPWLtA@x6=SR992=r02 zEg&$bV5+T&n0-xtS>=P+?7fnV!29}USeC}Q_6JWa|Fpa{Q;+yR#KEM7x3j=q&Px3i z{H&ch1Wv9qS{bgNZd0OUDwXz`H0l1P`tzCPz{G}fj^~z4 z*1nw?JNfQjkl)V1iL9;SL}@{cWu!(zIMp6aaMz1Q9d)}gZ>llH6*G>p>2+85C)EdW zxU@cOzuV{LxU;R2p_5KMm588UbFMl)p?vCff8PD&|1T+%U3ve*um$&fJ71hVf30B^ z``)RLQM#!<$>9IZ1yCGaQ$8Jm#L!o=mOIjR_bPIS^Zq{lwqmuS);8Ot>A@5||H*Sj ziR87})MJV>Fi98+c&ks&SR9*Fv2I&dHhG&ljT{jn%YGg_=JEZ5gLR(d=^S~!yJfp4 zEk`>>Pc%5`*XBMDunxX4d!2=w_xleQ+ico;YyHO|>8ck8(l5gE;S& zu~*)~9@6Rwqv2vECX&4&sckx?a5stWevP#G{10+y)^8oF75hK;nLUXDHSjX!KQ_?+ z`_~7q=ghDE--rJD&SL%l=jFddUSC@7`rrKK|MRa@$Ztm$*pz@u2&av_osD-ecnYB= zpq1vUF#E+XvTR$#4nx`YsUs2A8AecQJ5ELwl-iKO*;?$KWN$k&X>yw|>*s3h?9qd& z{j89W5?cBWv@*Rhne_PfqV&>}1kt<@WNFJ~m+4v*&r>~}IfE_N(#1K0yfW0rUM|u| z|EWIqbG-Gk!Hp%N{oExif-1N7DrN56gk`f)C3+@@cNB8$GvSTEp8>YY+F*nd7j(}8 zQ3aaU8!yn3L3MD&i$oI>cwwuj5#3A)SRjaww>_o=S_?b_J)xhhB@))QGGmZ@F)eZp z3KJLX?X=%|Co99ZBe8I9%yeg%fp!AadEk$`wBT=`5CT&J{>0lsO&(f(tZuTr!T=q2 z$oWm1O_yT$M7b}^hc56lC^DQu@{;0J3c)})p@EbN9KA+`G6g%Su$?$Bs6%>6CkcNn z**OV7H0e`leg=flT{;PT-bgIb9CUQE)v!_UD~dGhvO)2#D~MlKHz@?iE#EX~<4#7d zAybj&LE*N5mnTobkFOe1hM2Dcag_tOhqhv2RyVKbaD`$ph^xc1)4OriqJMogW*PJ6 zCg6#c^BtYJsj(VY&!7oB2)uznd@rHVSED3%%o0nCue%}0i{v=VarP;@6XNQI>y@a} zUg73(`)e|WbCzj()8NS%7f|=y-S5wtCHiroW`f@G*VJ8uR=iNhdk6jKC)w6j(wETc z11aqN1)86`b{2pmmWh@^wf6ErXUgiY-<2jN+4r)u&@#CJ#)2Ht{#GKSxZTzeer0nh zwscdZ;)WE5g9%6Ms;hE00cvK!ey)NL8-|x+Rp(V(r5_4yX2hWN3Og^Jd~+s3sdaJ6 zMUv$Bb%7U#0v-x)Y*{qY(K%K&n6F0tgQ@QU?`y>?+HP_|^<`HfJ#&T_Yk1d@Q@^mKgSwp zK;m)c8Uy7JsAe%pNXqUp^upk)a8o2tsoVE2cmg3Rj4xGzBev5`k_~dz+)}^{fQkv_ zo19~iRXzkBC)l%42FYhU%sIIQRgHV#c?C769BVOF;Fa;)b3@7kg+=J17HGw6V0!2B zv%jfxGeTBqT?4dl(iN<_3Y@LZfE}ikmmKu!=N4>y#o>(dzZW^x&%ks#^9yyNU(#nQs#-y2c#T6y)*~+9v_( z0w0vH*&o0_1Ov1;G8=;i zJ~j|j!=P+)tord&qHmrxyf%M;nED`lUIyULbSV2?;kbaus%zgT@u*3x-RgU@Dno=> z=+Am}=g#Sj_jl1E$70Xf&)uZmZqz^^6J-C5lZTsm`Re}A8Fg=?_S$Jo+=?7v>k9n~lC zn`MAdL7gp3MyoNSUj=Hp!-qwG$Z}<#C^J+9O8oQU?!Edm4aM0V4JRi<^?u7Q9mzm>bD4yx= z#8H;nm8guCKxNAHuF8KP_qiA9PJYIwriJCz95WkWZS$Hip`CGz2AWy;^3kp0m+7D- z)4wjoCm^W)0S;|v&a705whJ13t>z0=@K%2^A;oYgjFxVQfN1U0r#A-c1^?RG>cj0T z$=(1^FmPl^|F0#Qkj_WrmbV+{`I{zn08wD$m)Ao;q!jXPz?2OhSt>LnQRL3;fI$;> z*TuALH*Otm*Wo9isQTdDgHSZFn_xdk%m~m3H{`hZv~nivMGTvwD1|0{YcUYx!!#5g zC#pTRxwF{#-8Jz_bR>s<^D%0-8&_|NVa~5kIJ-Fpw$C1moTCZ(sqif1C+F**oL-`j zxAPF?SA@Vl>7G0{#+o#u)8*l%Z#7dfqKOGYx!)tLxL=hA@qeCd^CG`o2utOhcx1B* zMcO@gHTy@tF0a|b-dIQ9xL}d5@V&ios1p_M5;2~`1_WwoM~Ff?6`zM>YDE_Xn}^lS z9F^9DW#nH=9>e5v!iU9bB6Zrs#PZVy3?H9rG^1lGr4 zU5)60bB6TVQJGq1r%iKlb#v9w#aE9FY`%4Jf2E9neJ9$A5%WsSZdIr{KKi5REANdx z^?!GIM59GrXzriljJ!it`9k{l`U&@{1?Qz=L3KQj19o9c!KBzeN>}gwLX!_-YCT-Y zbf)6{;uZq_AD%jY05YYheOyxW@dt^^GDMt-TScOiQ;sw~$mexS4r*bbWoixO;Yj@m zqb}_^j$RnmC3psHzI?_$$goNNi$L@Y^1Gu=(A>ujnQ=VmZnl~2E09BK{p_pHK@m-) zJ)NBJsHAt;Tdf=cdhYYzIR=TYh?KGg^gZno_W5IpJC+{x!$O)Rr6wMZ8&;}PlZSmL zk)Fk~JACi3CLqUf5P)QNNPQq2!Foeba12yUx7WM0M8w5mJ2Ep6kLGU1Shm@G$&zyh z+8Kc(;2o%GT{$2A@ly0z%6iP@u9*_MYqzDOLP2_Cbbn{fz}Q%kn^A;bfl|I`(f~}7 zqS~i$e;*m9(D0Ex`&j??bF{&}#Tm!I#s_9J4z=QK8AUuq3;s8el^zC9)vI|eR)2D1 zgl@bt9TWL;^WBGA)-)Oh>?OGon{-DP$a=1oALRH8_}0E`7L8UxT^%!8GcUJh))Ca1 z!*BDv?&NI6cbi5gs0{5*@D{pXZA(Fef_%e^G z!j-7s8h^+?$#g_~{305Mkcn8|5c_7qZ2P7O$$bIGRP?YcX3oh&z|#z_$)>&iis(oA zYhAQC_is{;&(lY)?NoDalaq~A2w!d2uvq-Y=GG;(UjE{NEqEqdf5Wq3b1iG~zgm%< zP0=tr?3Dc;_ZFeW;Z~o>d3s8b;A52Rdg?0TObxO5B_2-X8*_d3$!9%I+htAcsISFIi|XkRkk5s?(L@|C9hX2~8Aamhfc1y!|iFlUcTPFA{nS~$-?JZ)Nq;Pda_KQNxB zg^JtxXV0Ex5gaJxUlJy8^IZHp6QQA@@8wX0iL65db`?V+ZWi6DeeO6keoDHIQwkZE zznq-3hW=;fTK=k6>|fGl!_r2fd`>btA^90+JiHE8W~{YXg;X;m!tUiPZdJ(_n*zY? z4Zcyg&$#1zDJdx_WU1v>8YLw%heSKff_qv$xEw4uUrRBwu%NhvCKQF=yI2{S)a(;_y3*<=S9fvxX zB&dxGnbsQX5s(Ksd-cKzUj!No$YQ#LS=akD`T58SR-sq_rV8n z`Z%*q`rzQJE+Q>`;t}SSF5$CQN)vqVx-cLPbsZh{W19q`Pu^^~_QWh{eUWbC$B**r z>aCc$zF+0iF>0@Nz;itY9K_Tap4-_q3riyWcEyH$*Y4l7^amx*l^*zl?Gn#U0?FADin z-~GsGq)c&K{_FU7S`$)?r4bs~gm2yYe0>ni#DJyBbvv@Buh@rD{PSJi#m+vA^F=HF8qf zThHhZ@0+8Ylp_(zuTfEFe5Yha>fK!oEwNQqgYPfL#>T2Elj#|aA3qbY+m%8uO=4$; za9pGUl8ce4(H`sk^fpBR`B$GiR}RX=5Zj~2?oRoEwpjXJsx#Rf;q=qiVHlE7b7a=`|5OI4~G}Ubkm*&hxw&UP1vH zDU$E1>UWt52I2~g96f)??c2A##zU{M=2~v)-9mB5IsaZkvCAwkJPj~PpD^ky`vjl0 z^Aiz8GW15LF3}S+EoG3&)&OHox`Nq4-V=`l4m^BUo3F(egFZ2doeb3LTyJMR z!h3EoAdv5RqT96sREU@L_3~}cst(H&?WO&}ER3P<{%vUpDZRjYg+Y38W~Ls-!gib9 z^T1UKwo?-On7;iv*vvzXSh5G#f9C7TitGMvZ=Hm#Gn7C{99OnEgAKx@Zs!V6idKNq zEYssEd+8P>Rx?>P6!eo=+^I2m2W92y1?2IbIDg>+gS0s9 zFajH=LvpXE9P-?8(jFS2C3n!hoZODs6R6!REwoGS#ZHVIZkBDYsyp!|MErKW8eQ*D zSYz`WGVFSA#3|E--3~TF2}&%S3Cq9+W=&p#iXzmDMXI0b>&IrA6@5eznwpjqM)sRN zO^|%3XFjJ4p9^rz0 zI-tFN@hS7wfn6g%K6B(EP=#+&?!C0oJ%Uw~l+#eA;4S5Ga~n2t|D05M(db8K?{f86Pw0f`u> z1gX4gIgdRZXKq-)iyC0jX*{F(`Rf9v8x@+m&1X|A1QT?bQ zuuFb_1sxzZq!h3+evccWY3oQ#w{-r{V0yTEp(}p@c66mf$H$hfASd7Z@7F*2v(HN( z2kf+(evPnak6>rVZsbS^DJR>BsZK`J%42lizxWa+Wld*(5#ZwKR` zS1%fkzUZEJ>A8yqHXd~Y&hNjW8BG`;%GC34*t*L~NZ3?vXYrmmgw+Uyf4caojqM4T zKR^HX@Q=csil5SS&szoBZ~P`pumXAA!NOBOIKzQ2Yhu$2TKgmbe|;4{YdL!q(a9CA_bE2n7JGIxu9otu-h<<#OfHq`+;3r?u`9@ zsYCBFP~R^m%gj7~Wf8E|YI@jNQgGqM0gJ^ldHBM(RJ!NgxDejR zH@gjbjS%c){QH>XTKag&($W%6u0ylj32UmK&NnL)i4RW&<;J3&J##4;{lZ z4N<>%PMW~f`%)da7}wHVL8Q22rkf99f4L#IP-JgUsegCQ^l0F;QL#WmZEP5~Y9?)J zSQ;-TV05+F3=V5(^xy}N`!$fDD<0CmHE*=@Y6EZh#OVGpMm`vka-WUde;x%n{b@@5@?nWMAem)DoO`FIinRHV)=EPnmggHr_z znBi7>$dc$7C+p8+Q?QTOV~_q3e+Lx&*7$)(<^NOYDs$>(iZyplPu$t@cF`}D#@nl# zF1Ez*>v_O54_W@R%eN9U%B1e6tD z(b3T%WcfNqaFYt-1@>Vvh0vxl!6093GJu_+K-!!%amg@;xeBhiFsUmfowENb~zL=hnJnh=W!D?xfz+ql!XcH=8`h>h0|bUAzoJR zBYP<#zfp1WvV29pX6@NaIor}`;}=!M@l_2VdRVz6?X?`Is+;^HTj0ix2GRNJ{o@}7 z24k!rg|tsWllt|f14yDX0`5yEQH`_}4)S&5GkL?Di~!KA;jb~6HRS7e3oS*TOz6)& z->p4Ytlk&g{FPhwJ@wgS+7eYKaVMb8graD@9+ZfeOS~<^4Cn5~H#Rmttm)o#w!SDq za9wtpb1I4y=r+!Qe%ro=rH;Phz{dn+!CO;9!<*9vn8|oT&5(1Mk`eO#%2h^M`n3ig z_7{q19(E89C%P8nQ4q7_|aOrW|dtb*yNW80Gl+sO3+w?q-X? z$0w)+Nav(@Dbb9cfJ1;NK7G-YK_B_2z&tdKd`>Ji8*|FkC2NNAcUa+Y!D~hy7iEd#tTijG0Bg1j5Xb5 zMMW*WBBFP2ykX)2g-SDCuCBO$1p=Z@kLp8FN%rbX=zLoTbMvvR9ucx2l!KjmDY2_d zXZJ{H$5Q?@se5>&&Yz+=4Ar(ve@%KgTQXM13AR)nryNT!XBU^#!3wGW@RQ&d1^KXT zGT7VXc7Sq(u%u-64(M>y{%avMC;y`_N#h-rEU@qHUfR0&Yi-J{B0j1IBIElvmH8{E zpx3`1c{MtxBCLZ*49+eqf5zRIdD;M*#Bqa}9^)pc*vLy2ET5O3Pn@TD;p3xL_9m{QSoh<$P{k{d%PH#$_;dIL*T(C=5Ty@-09K$X zHflVq>J?*t=~KikICfVJnG`d%-E+7UfgE(M5ah4m1lfw7fnGJd^p_-Y>Pke)sVEgi z%hs@LusnQ){NPxcUrOwD6=qg^^5k<92`*>->j}(s2!G?NwkuB3Pz%gRo;xw7-JUMF zgg~E*RS;ti2822{diBp0`-?wqzKH9KKx=Ks2q zJuRp=BtSqAD=oy~(!;7q(YRSqX01n(T}IXUIkk0@4}J#?1VC|H!7xH6WnQi5+C1L#7Q*zmBi_@)4E)mwNjsMaYvKIDEV;1m&9hc@(FhpYFYBEPgJ>(s*=73Sm) z*fE=913;HcpLKAqJMg@l(G@1>2h>fH4!6Ev#3PeD#|7fxiC_h07M7e{)-RO?xXc?} zLqjId6uvysa;5Hcc72{xtLYf=?p^o0KMDPAof6$!I16m&i|*pg9vsQzO;}deaS*xl zq|Bb5nLZ6tRlMMro28B$o0}GR4?pF0^0Ake?7hXMFSeYGJsi-X(m3%ZG_k}3EHk@( zQ`GPa3iHP2L-WKPrS6mmr1LAU5EMa!tchm zN&scVdnMm8{#B&C08mleX))JMp_c?(um08Z^u9Zrt&{ z^*BH0Yk27SO6~7ACt{e^H~Il&abh22pUdr@eFnZEknlPV-kj67FMVFv>#&@zIau}R z$OI0*j`%x*~A@|c9mCTk%e$pOI91V|Mlxj`68qYOHKaA-}EQhrFC)p z!!<8BN7DSB@;_;KHU8Yd*`eYI3xE>=jjJR%X3UEo^i{Z52D|xW6H~EIqZrDr#;#4L zqov~?B=lE87Xhd*I}- zwf(VTCjZm{?}5)k5ff@!M;cD}uotcujMnZgVhs*~(yQWLxKvaMftA#xLm21j2frZf z3d_M9zc+9_A4qnn9DnB_wPTvfsx+m-1!}Or6cl$k2#g+s0M2++jKAR{%$Sj6e!T_z$=K zFKC5zSQghjSUGk|_JN1?IP{QQT2tOCG@shrQrxsXO~ z_^fCht!rV132J^QHmQgI^LjasRyf4l6L&2`%yUs#I6796mVA}h@_dbT8NQIIh_jEl zwF*+z*+|rh+&y9sQQ-XVv$u{w`b5PpL+lwHHPah88d~!2#i2GPNgL81Ap0}5%0aVz z2yJPStCAGS6v$kpknOXy1l>zE;3$tr^a#ba>Jl_dH-3t?>$2&;sCi5vC4>!Q!X(!Z z+hihkLTzGpc=&NpAx;!93kaOwwq*dZ`sRi!ZinZ zom1o9m(~h)-sk^Do%SieWL)Q8vwjIc8~}xz0G*Ct+6rsJ5EBxAIu4c1A>O9F&B@8> zd;#FJ?Dl9736G3)=TXO3PCB>Vk^;ccU;n65P@iICf8ZAMjfxR6y6@aP~H z6pq&qUiuCwo{|w@rEn+MjQ5PGj6B`{gnJk{9E$&`oATGt(6Gg4KX-Q@1>X0MlNZo; zN?RMh-g}WcRE&~BHC)mE`3Q!Bx8%Ib){h}(4vt>7{Mn@?f>yw;j(~??j3fK$lYO1g zj@d*}Rv_q3M(uOb%+XO}Z3sG~FG7J#a3NCHiRr}gDe1*6vnO+!?;;}XW~%~@{7L&C z6}wT5NzQvzdVy_&2mLt@9p|~x#h@%{|LN2>%m2Z8B4q1d4B6#e=8jQ89FHbkdO=@v zYD>bH5FQ>L@5>kQ8(tvdHz&P$&I5wg^bSyy`Udh2r~XMa;RI{sHuny;tLpY-NCE}% z#^{=wn(f9L{@Sr}J$pY~B;SE34eS02^j@rx=13ryr-v~j6*N}hq^_Sz2`HEmC0Rf~ z>wJIFw5>j260fAB^t-=56r@S)YZIXV|J2cL;Zd$sVCq0|`h=Tv%?1+k1LIm>5H-VC zlj;Yf(EoRnet#C{0ZthTrzzi|P?+^*SGHP!cP4&BafQ$(va`o(i4pyIKWf+uQLOmX zY{TZ|SV?24Oqd*@Z7nVbK@DLU8LX6HKVbhU2lG$7Mqg2j6~WfHUOV4FAI~P z_MJ9>z3Vuo7pJGcg4%)DNE_g)7Yil^ovRoC+6AqO?&)n1t@oPAjHUO^orgH7V(pg< zR3}|GX7wUa0kBCpzD1o4ef^Juys$SMfZNgKu?C0&Evow~S$)_?06~W0OUK_-J&*mi zr~W!?hBA1PWA{;v`yUYLPdVD3%92S+`i0g5WOTxGfBZs7wAIEm=oICrp-9N=kjuN0 zOYB?g>v6N&0NfGy3#%;*+#ydFHR9spB2{0qEo%@E!4VPZiEv-PEqGqsUrD|DX8B9X zfnzIVKpQf;=FC)Ef1aJfU@-L3{;===uQ>*2xI5d4;N?#B8)FwownI`2Gzpb(VI3W> z0(N2pMCLzy@lh}Qm=6+2q~SF6-^sihYywHcWB(oNyUFG=Gt5AuPv^Tz0`I-M<$%e-t_k`_v(&pT8HiRW%4{Ns;$Yb z{^HE5=-xqAs_dmF;{^2I9WBI`*$!Sb)B!hI*&gK_2MG%(#>y?WIt^v%r(x$2soE!}g3 z3`@H#$xdRd0Jq4Kmo9`z#SPIYn_a7!I&w5&+1$f}35r%Zhq|hS-28*!0|O(YFMo!K z8FfBJGOIGeP)UbA@}H&#_^R$4eC~`Flqv!7gfsl@^MY$rPfJkLoyX!56Z3K{`K7Qe z{Tl2bcvfy)kf21kd-rbnzZ#n&Yh?m`1DFoS&6a!MnSfpgaxVu52Mk@fOJMgZBJwIY zI5_vP{0!nD#u|1fkjg=>6T;FYJ8{Vo>ja+@!4y!|d&qtFZVB;4$m{W!rPb1t zkcV{PW##11IXTxs8V+C~f_qswDZvmV(%y$140fdZbx%57{iN{@&}yvjXqt<9^X3hM zchAci(csx;xZ!L?k5e`5q9-3w5x$EX>Tz z?s~{dONY5jM;spdcbx;)gWf6uYRUQq#{KT>P_XC{E0milSK%R5;WV_g8kV*!p@k_+ z8b85>o$>PVVTHO3LzhT{aMnbc8+%z6=Dpdo6hK14rr~(>}DuRm*LVx(4l@L>zc&6Op&2@i4|R8&UAX zLYn)one|?RvmH40`IGZx`KW~lXgR!3^rx`1?E3N3J!zNN2OAeD8Mf`G`$Ey~X_oi2 zBU>lg_AIOLvn=|9_0D%Fvb6}FPJT@8^NL2A9@QoXD*!!fF5k5l^)S9}rpM5^BAsC= zc6QjMR;I*?XW(TuVt7h`z zMw&93|MzR@FK$NmpKTg3+^RopzMvdk*{C6tX~hhobQ%Rt>$hPp)8J8#J(jIGc(Mth z(um?lVR|5m@i^s>(h-!Po{{ENfQAzuf%dkij-yi+Dv6S|#c3wUpXeyAKtT2v9QHMn zsg!2U_VGn56OgtaQ27rE<%R`}Kxzt+(!TmS>r#N@^Y>#`SJK@?=gKcRIrWqe6rhp- zz%|O4*e$WvCy;(FN11SIZ9mT4vBcxcYd`k!&-J zkiF~_3S(cgr($el3Yl&rGugLFgzQpWL|5)0BTGrym2OH`+;YFi{r+(8_doc~YhLri zXXf*K=6Rm;ocH^j=bZD@R`<_QUVR9PlYdpB)}|BO{bNjc*_M1#Cu-+so(EcY<5ZjH zez6`osMN0k;XEosIWtjh?^a{(Ptegq;Q0x5)n(^|XD#ke^)IwWk@{nW{KxI~gzR(u zW}#z$rne)^t%qHP5#}Wr7TJ)guxRWz-M&%Jrg)DJFWkRSsi4G|32%V_L~|>034{tA z6S2C>l^3u77Ab#8H=o&fhd=ALu(mhTu~Q?A33ap?Q9UPs+SphE4zt5^XYP&gbJ+F| ztG;lZEo0kf8QIs~pCJ|vBH?WHru&&3IYP##qc6y%1`d&K=_Z@!?R#&H30`#@a8TJ4 zJ;d|aWVxAH1(y#=He?Le%4U4Yj+1w+;|K;h%Q}W68&n&Y)O(Y9GuE;jBEU;s^&{%m zSfKoei+7f6e>$l2a(wRU+aZ%%1D!dmCf{ew8%=vTK^*3_knZNzouxCsjSWdHjmaIF zSvJXt#2fWy@>~Ht5s~ZldxCUksO?{BkRa85vU>T#A-1?L1K{Jy$fVsQsa?K)%3)){?&={k`m(}D@I$n{fx@s~ zFWr-F()@Dq-h^Gy0b22f_@3tu%P}SO_Q3&l_8c9xk9_RB<-`eVF_^kus}5(oMy=Y*J32mU$li)6>E*DF zZ)v^^i=8B+K@`V?%}?L?796_8rTOIG9ovBezkvTAt5ozApW$ZBt&;FE-oKjdEqI`Pb-F*n5}b$;qZtH-+7sb z=d%E}t9y`Fk_1UYq*ex8DDnOs*0%6SF=zT9=Z)C!D<;M%cir6qI$cBg}x`mg&7dMZQ5o#@fJDJD@ZE~xrl_eBl&0y&G zyXqE~Kl1j5L2#{;mFm0q+RP5TQ01XR)PdiX2Zt%4);o019(Kcu;6zc*sTdmR9JCh) z?R9lUOq2=%1UgZBG`S22NF*ySg|#pwm7d`3T>8?lTUrXDGeBz+?vvw4MBU)H)Sk2jivY7lwv7 zq_!W-gzxW_AM5YsPfb0@Slx&hOzXPc93^(>Ihrqt^-DvFK2WP z12g>!ja5@u9+{w#Lmn=@jm;9+GDK9p!&PTwct(1sOqkrPYpvr>^~B+{opjuhqA48+ zQ>@z1ok*6EiYcWg0VCLR>(TC5oJ=aAu#B%*G0<*+$`X6`Ec-ERstjDbstCygw3egP zAZu8J>^~mH*3&#?pt$VvQKk$5*-`gEX?k*}Fv0d0y8>chh%uoCwdU)t4r_;6+$_|f z9BcyQSG#GlCT20j@4#HBN+TZR2g%DDao+N%o18$_t5Y-ARZW_YsB$WH`3v#;ogL=2 z>3}rrjxafZ^)kYUi;m@qW~Pi*N68NHqoO>io@B)-G(<$bm~c7ZXuj`)^RtNw=Dex) zklWqMN#hq0$a`$Euy#|M{}bz7W^_oNSt6g6go;p0-1V)Jx1Y&Q?)@hlBHOCW|4&(p zqGHa#uy#qhr_8gpQp81-0gI|*#_sHm!*KzrHRJ%HYZV2;=X^{2$i>Q#O zh=m1k1gDwYvk{BkfAdBTL)076qYRLSj?wrx&Ese&5>QP>(J{nd(5A(LW^`JoeBOD> z3cH>?Qul&1`4k>XUrtJLa&han(+xgL^&A9mL;ltk^Cxf7;IN8_iq6>-HbWKl)h(_5 z5pmEvE--5>9}Jl_F;R~L3Mb<|JL^TeaDu5s=)(vWBQYtBXP1;zR?4ikhq*asdxM>0 zG=Aowx6YPg&(if#7z5igh#^$XI_ z{WtdAt3PpjJ%;RMa>f|dLp!-nUCBV3ZQq%986K&g3B}zPNt!k8mGgu7Hq0*7M{HR@gD$UDiE z=_EiAC+D-Np))=YKY`VNRu)Wwz6!WtRex@ zUFQ40dRHn7GRfeSv_5n8vHbId(iC70_DNj#&oNsiK(mI`~nM)QQ z9ro+?@jZq2t5cVrP?mrb0eQR$a?Xrw_8g*B@8N+PXdytIvVIpQ2I-Fugbd>7>C-?t zzzEMX_f*S!)-gCZ>Tr8ZlYZ)y6Sn_@jA+W>%U5Z+&&_7Tk2l9Yi8yZb_q5`iaPZFg zg?YvP@Sdj&7ms5Q^FBTZ)T9{S-;D-KXN2!@IJB#dhkxW2unv{oUZR=cE91JQ47m*C zmn~!GfCjw#wlQdcLyXQ*iZM>KUeNq1BNOJY?%=s7im3f(r9c~KPWy917hQCMK4?K6 zio*yqfpcpYjGW5w5ZBYUI|#^{I~HEcn~@Qb(JF3@ca1f7fKTU2u=t(H3|L9fpGS?U zAjF{B+kgJ7XFW7C>z+Xh^F^$$B`n02IyfFNzze`RX`!yJenf_gd(Z0^qAJqh-gQWlygKq7W*yiXD6-qY5K~kV>b!SRbl{L zh>nHz^S}TCmNcV2jh{X!Et*nu$5fH^+@|BGnJod6;^pHnTofvk=k6Xcd-YAyXWeyVi(?BFI(ffQG9wP!3okxbI4b*6MH5)dCcgk6C{R4h-aw`x2M=F# zy>*jI+v+65w4b%Gv`}OX1V??NswH1+J0;z67xe$j=WW>j*;7njJlkj|sShtD0^y4J zo-#&zZ14wcCdmpwK~6eK1NXV%?%D;QS-zD*){nnpkQ)6l!2sDY(#`u`L_~8c&<-ogd=w@xt zp}0x`+wtS!A6Kr1CFDOJoPL}h`c?NwBI3Qb(D!~%XDL{Qkf+u-Y>GU0*~P`>hKsw} zzB2+eKLmejnwYo9M*I?He{K8f#!ryH{^zCh8-2g$rK;QkvqrS5gLJ%wDGr<#rUbI- zK%BfhuPB(`649g1LrpIj(ZxM--OI}dRUf*Sw3tg06$oj}XiJ87AD!2Xu4qnIT5teb znrS>;;pS#ZDs7i1hrC_(N8)86ol&JNYUsX>?XMrc6(8FDPce24z*}Io)PWa+YVDTB zj+!o7ef>Dm;`a8?Fgeh$%Z|+C(Z*vJBHAbeQR}0Tpdx)^>$?W zpbLcnWCI0RW<#75LmYKu+!-vJ`{$9xv7g_Ltu!^)6t=9g$m0KC=akjICh&KfO239f yP7W||Fe|F6#ls}Qa57TQfpkrEcT@AgkSzlZ6Z2W?HLYd@yv#^e#??d*%Krdvb!tEW literal 0 HcmV?d00001 diff --git a/extras/sdio/component.mk b/extras/sdio/component.mk new file mode 100644 index 0000000..5ed3ce0 --- /dev/null +++ b/extras/sdio/component.mk @@ -0,0 +1,7 @@ +# Component makefile for extras/sdio +INC_DIRS += $(sdio_ROOT).. + +# args for passing into compile rule generation +sdio_SRC_DIR = $(sdio_ROOT) + +$(eval $(call component_compile_rules,sdio)) \ No newline at end of file diff --git a/extras/sdio/sdio.c b/extras/sdio/sdio.c new file mode 100644 index 0000000..ab4fa0b --- /dev/null +++ b/extras/sdio/sdio.c @@ -0,0 +1,449 @@ +/* + * Hardware SPI driver for MMC/SD/SDHC cards + * + * Part of esp-open-rtos + * Copyright (C) 2016 Ruslan V. Uss + * BSD Licensed as described in the file LICENSE + */ +#include +#include +#include +#include "sdio.h" + +#define BUS 1 + +#define BV(x) (1 << (x)) + +#define MS 1000 + +#define INIT_TIMEOUT_US (2000 * MS) +#define IO_TIMEOUT_US (500 * MS) + +#define MAX_ERR_COUNT 0xff + +#define R1_IDLE_STATE 0 +#define R1_ERASE_RESET 1 +#define R1_ILLEGAL_CMD 2 +#define R1_CRC_ERR 3 +#define R1_ERASE_SEQ_ERR 4 +#define R1_ADDR_ERR 5 +#define R1_PARAM_ERR 6 +#define R1_BUSY 7 +#define R2_LOCKED 8 +#define R2_WPE_SKIP_LF 9 +#define R2_ERROR 10 +#define R2_CC_ERROR 11 +#define R2_ECC_FAILED 12 +#define R2_WP_VIOLATION 13 +#define R2_ERASE_PARAM 14 +#define R2_OUT_OF_RANGE 15 + +#define OCR_CCS 30 +#define OCR_BUSY 31 +#define OCR_SDHC (BV(OCR_CCS) | BV(OCR_BUSY)) + +#define TOKEN_SINGLE_TRAN 0xfe +#define TOKEN_MULTI_TRAN 0xfc +#define TOKEN_STOP_TRAN 0xfd +#define WRITE_RES_MASK 0x1f +#define WRITE_RES_OK 0x05 + + +#define CMD0 0x00 // GO_IDLE_STATE - Resets the SD Memory Card +#define CMD1 0x01 // SEND_OP_COND - Sends host capacity support information + // and activates the card's initialization process. +#define CMD6 0x06 // SWITCH_FUNC - Checks switchable function (mode 0) and + // switches card function (mode 1). +#define CMD8 0x08 // SEND_IF_COND - Sends SD Memory Card interface condition + // that includes host supply voltage information and asks + // the accessed card whether card can operate in supplied + // voltage range. +#define CMD9 0x09 // SEND_CSD - Asks the selected card to send its + // card-specific data (CSD register) +#define CMD10 0x0a // SEND_CID - Asks the selected card to send its card + // identification (CID register) +#define CMD12 0x0c // STOP_TRANSMISSION - Forces the card to stop transmission + // in Multiple Block Read Operation +#define CMD13 0x0d // SEND_STATUS - Asks the selected card to send its + // status register. +#define CMD16 0x10 // SET_BLOCKLEN - Sets a block length (in bytes) for all + // following block commands (read and write) of a Standard + // Capacity Card. Block length of the read and write + // commands are fixed to 512 bytes in a High Capacity Card. + // The length of LOCK_UNLOCK command is set by this command + // in both capacity cards. +#define CMD17 0x11 // READ_SINGLE_BLOCK - Reads a block of the size selected + // by the SET_BLOCKLEN command. +#define CMD18 0x12 // READ_MULTIPLE_BLOCK - Continuously transfers data blocks + // from card to host until interrupted by a + // STOP_TRANSMISSION command. +#define CMD24 0x18 // WRITE_BLOCK - Writes a block of the size selected by the + // SET_BLOCKLEN command. +#define CMD25 0x19 // WRITE_MULTIPLE_BLOCK - Continuously writes blocks of + // data until ’Stop Tran’ token is sent (instead ’Start + // Block’). +#define CMD27 0x1b // PROGRAM_CSD - Programming of the programmable bits of + // the CSD. +#define CMD28 0x1c // SET_WRITE_PROT +#define CMD29 0x1d // CLR_WRITE_PROT +#define CMD32 0x20 // ERASE_WR_BLK_START - Sets the address of the first block + // to be erased. +#define CMD33 0x21 // ERASE_WR_BLK_END - Sets the address of the last block of + // the continuous range to be erased. +#define CMD38 0x26 // ERASE - Erases all previously selected blocks. +#define CMD55 0x37 // APP_CMD - Defines to the card that the next command is + // an application specific command rather than a standard + // command. +#define CMD58 0x3a // READ_OCR - Reads the OCR register of a card. +#define CMD59 0x3b // CRC_ON_OFF - Turns the CRC option on or off. + +#define ACMD23 0x17 // SET_WR_BLK_ERASE_COUNT - Sets the number of write blocks + // to be pre-erased before writing +#define ACMD41 0x29 // SD_SEND_OP_COMD - Sends host capacity support information + // and activates the card's initialization process + +static uint8_t crc7(const uint8_t* data, uint8_t n) +{ + uint8_t crc = 0; + for (uint8_t i = 0; i < n; i++) + { + uint8_t d = data[i]; + for (uint8_t j = 0; j < 8; j++) + { + crc <<= 1; + if ((d & 0x80) ^ (crc & 0x80)) + crc ^= 0x09; + d <<= 1; + } + } + return (crc << 1) | 1; +} + +static uint16_t crc_ccitt(const uint8_t *data, size_t n) +{ + uint16_t crc = 0; + for (size_t i = 0; i < n; i++) + { + crc = (uint8_t)(crc >> 8) | (crc << 8); + crc ^= data[i]; + crc ^= (uint8_t)(crc & 0xff) >> 4; + crc ^= crc << 12; + crc ^= (crc & 0xff) << 5; + } + return crc; +} + +#define spi_cs_low(card) do { gpio_write(card->cs_pin, false); } while(0) +#define spi_cs_high(card) do { gpio_write(card->cs_pin, true); } while(0) +#define spi_read_byte() (spi_transfer_8(BUS, 0xff)) +#define spi_read_word() (((uint16_t)spi_read_byte() << 8) | spi_read_byte()) +#define spi_read_dword() (((uint32_t)spi_read_byte() << 24) | ((uint32_t)spi_read_byte() << 16) | ((uint32_t)spi_read_byte() << 8) | spi_read_byte()) +#define spi_skip_word() do { spi_read_byte(); spi_read_byte(); } while(0) +#define spi_skip_dword() do { spi_read_byte(); spi_read_byte(); spi_read_byte(); spi_read_byte(); } while(0) + +inline static uint16_t spi_write_word(uint16_t word) +{ + return (spi_transfer_8(BUS, word >> 8) << 8) | spi_transfer_8(BUS, word); +} + +inline static void spi_read_bytes(uint8_t *dst, size_t size) +{ + for (uint8_t *offs = dst; offs < dst + size; offs ++) + *offs = spi_read_byte(); +} + +static bool wait() +{ + uint32_t stop = sdk_system_get_time() + IO_TIMEOUT_US; + while (spi_read_byte() != 0xff) + if (sdk_system_get_time() >= stop) + return false; + return true; +} + +static uint8_t command(sdio_card_t *card, uint8_t cmd, uint32_t arg) +{ + uint8_t buf[6] = { + cmd | 0x40, + arg >> 24, + arg >> 16, + arg >> 8, + arg + }; + if (card->crc_enabled) + buf[5] = crc7(buf, 5); + else + buf[5] = cmd == CMD0 ? 0x95 : 0x87; + + spi_cs_low(card); + wait(); + spi_transfer(BUS, buf, NULL, 6, SPI_8BIT); + + // R1b response + if (cmd == CMD12 || cmd == CMD28 || cmd == CMD29) + spi_read_byte(); + + uint8_t res; + for (uint8_t i = 0; i < MAX_ERR_COUNT; i ++) + { + res = spi_read_byte(); + if (!(res & BV(R1_BUSY))) + break; + } + return res; +} + +inline static uint8_t app_command(sdio_card_t *card, uint8_t cmd, uint32_t arg) +{ + command(card, CMD55, 0); + return command(card, cmd, arg); +} + +inline static sdio_error_t set_error(sdio_card_t *card, sdio_error_t err) +{ + card->error = err; + spi_cs_high(card); + return err; +} + +static sdio_error_t read_data(sdio_card_t *card, uint8_t *dst, size_t size) +{ + uint32_t timeout = sdk_system_get_time() + IO_TIMEOUT_US; + + while (true) + { + if (sdk_system_get_time() >= timeout) + return set_error(card, SDIO_ERR_TIMEOUT); + + uint8_t b = spi_read_byte(); + if (b == TOKEN_SINGLE_TRAN) + break; + + if (b != 0xff) + return set_error(card, SDIO_ERR_IO); + } + + spi_read_bytes(dst, size); + + uint16_t crc = spi_read_word(); + if (card->crc_enabled && crc_ccitt(dst, size) != crc) + return set_error(card, SDIO_ERR_CRC); + + return SDIO_ERR_NONE; +} + +static sdio_error_t read_register(sdio_card_t *card, uint8_t cmd, void *dst) +{ + if (command(card, cmd, 0)) + return card->error; + return set_error(card, read_data(card, dst, 16)); +} + +static sdio_error_t write_data_block(sdio_card_t *card, uint8_t token, uint8_t *src) +{ + if (!wait()) + return set_error(card, SDIO_ERR_TIMEOUT); + spi_transfer_8(BUS, token); + spi_transfer(BUS, src, NULL, SDIO_BLOCK_SIZE, SPI_8BIT); + spi_write_word(card->crc_enabled ? crc_ccitt(src, SDIO_BLOCK_SIZE) : 0xffff); + + if ((spi_read_byte() & WRITE_RES_MASK) != WRITE_RES_OK) + return set_error(card, SDIO_ERR_IO); + + return SDIO_ERR_NONE; +} + +sdio_error_t sdio_init(sdio_card_t *card, uint8_t cs_pin, uint32_t high_freq_divider) +{ + card->cs_pin = cs_pin; + card->type = SDIO_TYPE_UNKNOWN; + + // setup SPI at 125kHz + spi_settings_t s = { + .mode = SPI_MODE0, + .freq_divider = SPI_FREQ_DIV_125K, + .msb = true, + .endianness = SPI_LITTLE_ENDIAN, + .minimal_pins = true + }; + spi_set_settings(BUS, &s); + gpio_enable(card->cs_pin, GPIO_OUTPUT); + + uint32_t timeout = sdk_system_get_time() + INIT_TIMEOUT_US; + + spi_cs_low(card); + spi_cs_high(card); + for (uint8_t i = 0; i < 10; i++) + spi_read_byte(); + + // Set card to the SPI idle mode + while (command(card, CMD0, 0) != BV(R1_IDLE_STATE)) + { + if (sdk_system_get_time() >= timeout) + return set_error(card, SDIO_ERR_TIMEOUT); + } + + // Enable CRC + card->crc_enabled = command(card, CMD59, 1) == BV(R1_IDLE_STATE); + + // Get card type + while (true) + { + if (command(card, CMD8, 0x1aa) & BV(R1_ILLEGAL_CMD)) + { + card->type = SDIO_TYPE_SD1; + break; + } + if ((spi_read_dword() & 0xff) == 0xaa) + { + card->type = SDIO_TYPE_SD2; + break; + } + + if (sdk_system_get_time() >= timeout) + return set_error(card, SDIO_ERR_TIMEOUT); + } + + if (card->type == SDIO_TYPE_SD1) + { + // SD1 or MMC3 + if (app_command(card, ACMD41, 0) > 1) + { + card->type = SDIO_TYPE_MMC; + while (command(card, CMD1, 0)) + if (sdk_system_get_time() >= timeout) + return set_error(card, SDIO_ERR_TIMEOUT); + } + else + { + while (app_command(card, ACMD41, 0)) + if (sdk_system_get_time() >= timeout) + return set_error(card, SDIO_ERR_TIMEOUT); + } + + if (command(card, CMD16, SDIO_BLOCK_SIZE)) + return set_error(card, SDIO_ERR_UNSUPPORTED); + } + else + { + // SD2 or SDHC + while (app_command(card, ACMD41, BV(30)) != 0) + if (sdk_system_get_time() >= timeout) + return set_error(card, SDIO_ERR_TIMEOUT); + } + // read OCR + if (command(card, CMD58, 0)) + return set_error(card, SDIO_ERR_IO); + card->ocr.data = spi_read_dword(); + + if (card->type == SDIO_TYPE_SD2 && (card->ocr.data & OCR_SDHC) == OCR_SDHC) + card->type = SDIO_TYPE_SDHC; + + spi_set_frequency_div(BUS, high_freq_divider); + + if (read_register(card, CMD10, &card->cid.data) != SDIO_ERR_NONE) + return card->error; + if (read_register(card, CMD9, &card->csd.data) != SDIO_ERR_NONE) + return card->error; + + // Card size + if (card->csd.v1.csd_ver == 0) + card->sectors = (uint32_t)(((card->csd.v1.c_size_high << 10) | (card->csd.v1.c_size_mid << 2) | card->csd.v1.c_size_low) + 1) + << (((card->csd.v1.c_size_mult_high << 1) | card->csd.v1.c_size_mult_low) + card->csd.v1.read_bl_len - 7); + else if (card->csd.v2.csd_ver == 1) + card->sectors = (((uint32_t)card->csd.v2.c_size_high << 16) + ((uint32_t)card->csd.v2.c_size_mid << 8) + card->csd.v2.c_size_low + 1) << 10; + else + return set_error(card, SDIO_ERR_UNSUPPORTED); + + return set_error(card, SDIO_ERR_NONE); +} + +sdio_error_t sdio_read_sectors(sdio_card_t *card, uint32_t sector, uint8_t *dst, uint32_t count) +{ + if (!count) + return set_error(card, SDIO_ERR_IO); + + if (card->type != SDIO_TYPE_SDHC) + sector <<= 9; + + bool multi = count > 1; + if (command(card, multi ? CMD18 : CMD17, sector)) + return set_error(card, SDIO_ERR_IO); + + while (count--) + { + if (read_data(card, dst, SDIO_BLOCK_SIZE) != SDIO_ERR_NONE) + return card->error; + dst += SDIO_BLOCK_SIZE; + } + + if (multi && command(card, CMD12, 0)) + return set_error(card, SDIO_ERR_IO); + + return set_error(card, SDIO_ERR_NONE); +} + +sdio_error_t sdio_write_sectors(sdio_card_t *card, uint32_t sector, uint8_t *src, uint32_t count) +{ + if (!count) + return set_error(card, SDIO_ERR_IO); + + if (card->type != SDIO_TYPE_SDHC) + sector <<= 9; + + if (count == 1) + { + // single block + if (command(card, CMD24, sector)) + return set_error(card, SDIO_ERR_IO); + return set_error(card, write_data_block(card, TOKEN_SINGLE_TRAN, src)); + } + + // send pre-erase count + if ((card->type == SDIO_TYPE_SD1 + || card->type == SDIO_TYPE_SD2 + || card->type == SDIO_TYPE_SDHC) + && app_command(card, ACMD23, count)) + { + return set_error(card, SDIO_ERR_IO); + } + + if (command(card, CMD25, sector)) + return set_error(card, SDIO_ERR_IO); + + while (count--) + { + if (write_data_block(card, TOKEN_MULTI_TRAN, src) != SDIO_ERR_NONE) + return card->error; + src += SDIO_BLOCK_SIZE; + } + spi_transfer_8(BUS, TOKEN_STOP_TRAN); + + return set_error(card, SDIO_ERR_NONE); +} + +sdio_error_t sdio_erase_sectors(sdio_card_t *card, uint32_t first, uint32_t last) +{ + if (!card->csd.v1.erase_blk_en) + { + uint8_t mask = (card->csd.v1.sector_size_high << 1) | card->csd.v1.sector_size_low; + if ((first & mask) || ((last + 1) & mask)) + return set_error(card, SDIO_ERR_UNSUPPORTED); + } + + if (card->type != SDIO_TYPE_SDHC) + { + first <<= 9; + last <<= 9; + } + + if (command(card, CMD32, first) + || command(card, CMD33, last) + || command(card, CMD38, 0)) + { + return set_error(card, SDIO_ERR_IO); + } + + return set_error(card, wait() ? SDIO_ERR_NONE : SDIO_ERR_TIMEOUT); +} + diff --git a/extras/sdio/sdio.h b/extras/sdio/sdio.h new file mode 100644 index 0000000..c51200d --- /dev/null +++ b/extras/sdio/sdio.h @@ -0,0 +1,98 @@ +/* + * Hardware SPI driver for MMC/SD/SDHC cards + * + * Part of esp-open-rtos + * Copyright (C) 2016 Ruslan V. Uss + * BSD Licensed as described in the file LICENSE + */ +#ifndef _EXTRAS_SDIO_H_ +#define _EXTRAS_SDIO_H_ + +#include +#include +#include +#include "sdio_impl.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define SDIO_BLOCK_SIZE 512 + +typedef enum { + SDIO_ERR_NONE = 0, + SDIO_ERR_TIMEOUT, + SDIO_ERR_UNSUPPORTED, + SDIO_ERR_IO, + SDIO_ERR_CRC +} sdio_error_t; + +typedef enum { + SDIO_TYPE_UNKNOWN = 0, + SDIO_TYPE_MMC, + SDIO_TYPE_SD1, + SDIO_TYPE_SD2, + SDIO_TYPE_SDHC +} sdio_card_type_t; + +/** + * SD card descriptor + */ +typedef struct +{ + sdio_error_t error; //!< Last operation result + uint8_t cs_pin; //!< Chip Select GPIO pin + sdio_card_type_t type; //!< Card type + bool crc_enabled; //!< True if CRC enabled for IO + sdio_ocr_t ocr; //!< OCR register + sdio_csd_t csd; //!< CSD register + sdio_cid_t cid; //!< CID register + uint32_t sectors; //!< Card size in 512 byte sectors +} sdio_card_t; + +/** + * \brief Init SD card + * Device descriptor (registers, sectors count and so on) will be filled during initialization + * SPI_FREQ_DIV_40M is good for modern SD cards, older SD can use SPI_FREQ_DIV_20M and lower + * \param card Pointer to the device descriptor + * \param cs_pin GPIO pin used for CS + * \param high_freq_divider SPI bus frequency divider + * \return Operation result + */ +sdio_error_t sdio_init(sdio_card_t *card, uint8_t cs_pin, uint32_t high_freq_divider); + +/** + * \brief Read 512 byte sectors from SD card + * \param card Pointer to the device descriptor + * \param sector Start sector + * \param dst Receive buffer + * \param count Number of sectors to read + * \return Operation result + */ +sdio_error_t sdio_read_sectors(sdio_card_t *card, uint32_t sector, uint8_t *dst, uint32_t count); + +/** + * \brief Write 512 byte sectors to SD card + * \param card Pointer to the device descriptor + * \param sector Start sector + * \param src Data to write + * \param count Number of sectors to read + * \return Operation result + */ +sdio_error_t sdio_write_sectors(sdio_card_t *card, uint32_t sector, uint8_t *src, uint32_t count); + +/** + * \brief Erase 512 byte sectors from SD card + * \param card Pointer to the device descriptor + * \param first First sector to erase + * \param last Last sector to erase + * \return Operation result + */ +sdio_error_t sdio_erase_sectors(sdio_card_t *card, uint32_t first, uint32_t last); + + +#ifdef __cplusplus +} +#endif + +#endif /* _EXTRAS_SDIO_H_ */ diff --git a/extras/sdio/sdio_impl.h b/extras/sdio/sdio_impl.h new file mode 100644 index 0000000..fc6a251 --- /dev/null +++ b/extras/sdio/sdio_impl.h @@ -0,0 +1,154 @@ +/* + * Hardware SPI driver for MMC/SD/SDHC cards + * + * Part of esp-open-rtos + * Copyright (C) 2016 Ruslan V. Uss + * BSD Licensed as described in the file LICENSE + */ +#ifndef _EXTRAS_SDIO_IMPL_H_ +#define _EXTRAS_SDIO_IMPL_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef union +{ + uint32_t data; + struct + { + uint16_t reserverd1 :15; + uint8_t vcc_2v7_2v8 :1; + uint8_t vcc_2v8_2v9 :1; + uint8_t vcc_2v9_3v0 :1; + uint8_t vcc_3v0_3v1 :1; + uint8_t vcc_3v1_3v2 :1; + uint8_t vcc_3v2_3v3 :1; + uint8_t vcc_3v3_3v4 :1; + uint8_t vcc_3v4_3v5 :1; + uint8_t vcc_3v5_3v6 :1; + uint8_t reserverd2 :6; + uint8_t ccs :1; + uint8_t busy :1; + } __attribute__((packed)) bits; +} sdio_ocr_t; + +typedef union +{ + uint8_t data[16]; + struct + { + uint8_t manufacturer_id; + char oem_id[2]; + char product_name[5]; + uint8_t product_rev_minor :4; + uint8_t product_rev_major :4; + uint32_t product_serial; + uint8_t reserved1 :4; + uint8_t date_year_h :4; + uint8_t date_year_l :4; + uint8_t date_month :4; + uint8_t always1 :1; + uint8_t crc :7; + } __attribute__((packed)) bits; +} sdio_cid_t; + +typedef union +{ + uint8_t data[16]; + struct + { + uint8_t reserved1 :6; + uint8_t csd_ver :2; + uint8_t taac; + uint8_t nsac; + uint8_t tran_speed; + uint8_t ccc_high; + uint8_t read_bl_len :4; + uint8_t ccc_low :4; + uint16_t c_size_high :2; + uint8_t reserved2 :2; + uint8_t dsr_imp :1; + uint8_t read_blk_misalign :1; + uint8_t write_blk_misalign :1; + uint8_t read_bl_partial :1; + uint8_t c_size_mid; + uint8_t vdd_r_curr_max :3; + uint8_t vdd_r_curr_min :3; + uint8_t c_size_low :2; + uint8_t c_size_mult_high :2; + uint8_t vdd_w_cur_max :3; + uint8_t vdd_w_curr_min :3; + uint8_t sector_size_high :6; + uint8_t erase_blk_en :1; + uint8_t c_size_mult_low :1; + uint8_t wp_grp_size :7; + uint8_t sector_size_low :1; + uint8_t write_bl_len_high :2; + uint8_t r2w_factor :3; + uint8_t reserved3 :2; + uint8_t wp_grp_enable :1; + uint8_t reserved4 :5; + uint8_t write_partial :1; + uint8_t write_bl_len_low :2; + uint8_t reserved5 :2; + uint8_t file_format :2; + uint8_t tmp_write_protect :1; + uint8_t perm_write_protect :1; + uint8_t copy :1; + uint8_t file_format_grp :1; + uint8_t always1 :1; + uint8_t crc :7; + } __attribute__((packed)) v1; + + struct + { + uint8_t reserved1 :6; + uint8_t csd_ver :2; + uint8_t taac; + uint8_t nsac; + uint8_t tran_speed; + uint8_t ccc_high; + uint8_t read_bl_len :4; + uint8_t ccc_low :4; + uint8_t reserved2 :4; + uint8_t dsr_imp :1; + uint8_t read_blk_misalign :1; + uint8_t write_blk_misalign :1; + uint8_t read_bl_partial :1; + uint16_t c_size_high :6; + uint8_t reserved3 :2; + uint8_t c_size_mid; + uint8_t c_size_low; + uint8_t sector_size_high :6; + uint8_t erase_blk_en :1; + uint8_t reserved4 :1; + uint8_t wp_grp_size :7; + uint8_t sector_size_low :1; + uint8_t write_bl_len_high :2; + uint8_t r2w_factor :3; + uint8_t reserved5 :2; + uint8_t wp_grp_enable :1; + uint8_t reserved6 :5; + uint8_t write_partial :1; + uint8_t write_bl_len_low :2; + uint8_t reserved7 :2; + uint8_t file_format :2; + uint8_t tmp_write_protect :1; + uint8_t perm_write_protect :1; + uint8_t copy :1; + uint8_t file_format_grp :1; + uint8_t always1 :1; + uint8_t crc :7; + } __attribute__((packed)) v2; +} sdio_csd_t; + + +#ifdef __cplusplus +} +#endif + + +#endif /* _EXTRAS_SDIO_IMPL_H_ */