Merge pull request #9647 from lrusinowicz/sequana_spi_fixes

FUTURE_SEQUANA: SPI HAL fixes
pull/9678/head
Martin Kojtal 2019-02-11 17:53:04 +01:00 committed by GitHub
commit 160a771e2b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 274 additions and 1843 deletions

View File

@ -1,146 +0,0 @@
:020000041000EA
:4000000000000108310100100D00000095010010000000000000000000000000000000000000000000000000000000009101001000000000000000009101001091010010DC
:4000400091010010F10700109101001091010010910100109101001091010010910100109101001091010010910100109101001091010010910100109101001091010010FA
:400080009101001091010010910100109101001091010010910100109101001091010010910100109101001091010010910100109101001091010010910100109101001020
:4000C00010B5064C2378002B07D1054B002B02D0044800E000BF0123237010BD7804000800000000E01F0010084B10B5002B03D00749084800E000BF07480368002B00D1F1
:4001000010BD064B002BFBD09847F9E7000000007C040008E01F001044010008000000007047EFF3108072B6704780F310887047FFF7F6FF72B6104C104DAC4209DA216818
:400140006268A368043B02DBC858D050FAE70C34F3E70B490B4A0020521A02DD043A8850FCDC094809490860BFF34F8F00F0ECF800F01EF8FEE70000E41F0010FC1F0010B9
:4001800078040008480700080000000808ED00E0FEE7FEE700B504207146084202D0EFF3098001E0EFF30880043001F08FFAFEE710B500F0A5F962B6064B5B689B0301D5D5
:4001C00001F046FA044800F02FF9002001F0DCF9FBE7C0460000264000000810F8B5E023504C9B00E2580F231340D022990092000919885807224C4D0240032A05D0042A25
:4002000005D0002A0FD0494811E028680FE0C022920089581F220A40112A01D0132A04D18020000203E0424801E0FA20C001002B27D1B223B1210322DB00C900E65863588A
:4002400067581B0F3F0F1340174205D0354F7958090F0A40012A01D1F20701D4032B3AD1B023344ADB00E658A158E758C904C90C01F05EFDB603F901B60BC90F704301314A
:4002800027E0012B27D1C823C0210322DB00C900E658635867583F0F174205D0214F7958090F0A40012A01D1F20703D49B009B0F032B10D1C0227F23D200A758A1583B40BD
:4002C0001F27A658090A3940584301F031FD310C394001F02DFDE0239B00E3589B069B0FD840154B68601C691969240A090E013101F01EFDE1B2A860013101F019FD0F4B87
:40030000E860286104000E49C01801F011FDFA210C4B28758900E01801F00AFDA861C003E861F8BD00002640C000000800366E0100127A0084050000000021403F420F008F
:4003400040420F00E7030000B021E02010B530241F4BC9005A588000520052085A501A58A2431A50802252045A501A491A4A80209950A021043289019950FF21174AC005FA
:40038000995081315A5892009208024380205A505A580006024301205A505A5882435A5000F054FAFFF71AFF00F02AFA00F032FA00F0B8FEB0235B055A78002A02D05B7855
:4003C000212B03D10022064BDA605A6010BDC0460000264001000200840500008C050000E0002340024BD86F032318407047C0460400214010B5FFF794FE074A074BD16F79
:400400000B4007490B43D367102306490A681A42FCD0FFF78AFE10BD04002140FCFF00000100FA058800214070B50F4C0600FFF778FEE36F0500DB439B0701D1FFF7DAFF3F
:40044000B0230A4A9B00D650E26F094B09491340094A1343E36710230A681A42FCD02800FFF763FE70BDC0460400214000002140FCFF0000880021400300FA0510B5040063
:40048000007B00F0F3F8606010BD10B50400007B216900F0B5F8606010BD10B5037B0169180000F0CDF810BD10B50400C06800F009F9606010BD10B5C06800F017F910BDF0
:4004C00010B50400C06800F023F9606010BD10B5C06800F037F910BD10B504000C23C05E00F056F8606010BD10B50C23C05E00F06FF810BD10B5C06800F036F910BD0000A8
:4005000010B500221849042000F0A4FC01221749042000F09FFC02221549042000F09AFC03221449042000F095FC04221249100000F090FC05221149042000F08BFC0622E9
:400540000F49042000F086FC07220E49042000F081FC08220C49042000F07CFC09220B49042000F077FC10BD7D0400108B0400109B040010A9040010B7040010C104001062
:40058000CF040010D9040010E9040010F504001070B507260512EDB206400D2D11D801F0FCF80A4901224B5D1C003441144003D1B24013434B5501E00124644201F0F1F8CA
:4005C00001E001246442200070BDC0469404000870B50412E4B20D2C0FD80725054001F0DCF8064901220B5D1E002E41164202D0AA4093430B5501F0D4F870BD94040008FA
:40060000F8B50C00050001F0C8F80C2301225D431300A3401A00094E71198F683A4008D13B43AD598B60631C4B60AB4202D94A6000E0FF2401F0B5F82000F8BDE0000008B5
:4006400070B50C00050001F0A8F801210C23A1406B43054AD3189A680A4201D08A439A6001F09FF870BDC046E0000008F0B50C2485B0019001F091F8019B114D5C432B191E
:400680005B68029003932E1971680198FFF7B8FF0700FF280DD173682A59934201D9002373602A1953680399994202D001335360E9E7029801F075F8380005B0F0BDC04644
:4006C000E000000810B5040007280AD801F065F8054B0E331A5D002A01D101321A5501F060F80120404210BD9404000810B5040007280AD801F051F8044B0E331A5D012AA5
:4007000001D100221A5501F04CF810BD9404000870B505001F280ED801F03FF8084B30335C5D002C02D101225A5501E00124644201F037F801E001246442200070BDC0462A
:40074000E000000810B504001F280AD801F025F8044B30331A5D012A01D100221A5501F020F810BDE000000870B5B024C025144B144A15496405ED00E35CA25C615C665D10
:400780003F251F242A400C4024039201224311002B407F2219430B003240520413430B4A1C0A110050310B701B0C8B7000234C7011005031595CC1540133062BF8D170BDDB
:4007C000040600000506000003060000E000000810B50248583000F051FB10BD2C05000810B50248B03000F049FB10BD2C05000810B5024800F042FB10BDC0462C050008A9
:4008000010B5034A80216032042000F001FA10BD2C06000870B500F0C0FF0500094800F08BFA094C200000F0B9FA2000343000F0B5FA2000683000F0B1FA280000F0B1FF68
:4008400070BDC0462C050008A81E0010F0B5962191B0002000F052FF00F028FF002801D100F016FF012000F0EFFDE821724C734B626C89011A400A436264626C0193120A5D
:40088000D2B23A2A04D1636C6D4A13400B4363643422002103A801F0E0FA03AA0021694800F06EFC3422002103A801F0D6FA03AA0121644800F064FC082204262368624D8B
:4008C000134323602369334207D1002D04D0012000F0D4FE013DF5E701E0002D00D1FEE7A02603220127594CF600A35903AD93433B43A351D2195649280001F0A5FA280078
:4009000000F0F2FF534901980B68534A03400B608021136949041B021B0A0B4313611369019902200B401361E0230F219B00E2588A433A43E250E25821318A438021E250CE
:40094000E25809060A43E250002100F0D3FA0021032000F0CFFA0021042000F0CBFA0321002000F0C7FA0321380000F0C3FA384B0522191D280001F067FA2900380000F031
:40098000DBFA002800D0FEE73449380000F026FB002800D0FEE7324B324AE1580A403A43E250E158304A0A408021E250E25809060A43E250A2592D4B1340A351A2592C4BF3
:4009C00013408022920113438022A351A35912021343A351184B1A68264B1340164A136000F0E2FEC0235B00E3583B4204D1224AA3585B005B08A3506421002000F07EFEE9
:400A000024220021280001F028FA29000D4800F031FC2A000E4B0C3313CB13C213CB13C213CB13C22900154800F024FC144A154B1A6011B0F0BDC04600002740FF00FFFFF8
:400A4000FFC5FFDF0000324020A1070000002640441F001090002140000021401027000004050000FEFCFFFFFFFF00FFFFF0FFFFFF8FFFFFFFFCFFFF0C0500000003324042
:400A800001001180000E1F41030010B5FF24800882009B1ADB009C409940E243214007282DD8174B01F03AF904090E13181D2227186A02401143196221E0586A0240114324
:400AC00059621CE0986A02401143996217E0D86A02401143D96212E0186B0240114319630DE0586B02401143596308E0986B02401143996303E0D86B02401143D96310BDD7
:400B000000002140064B10309A68064B9A4203D183009858995002E0034B8000C058704700ED00E00000000800000010F7B5051E01913DD00023C05E002802DBA978FFF735
:400B4000A3FF6A680023E85E9201002812DB1A4B81088900C918FF2303271C00C0250740FF00BC401A40BA40AD004E59A64332434A5113E003250F2381B20B402940A9404B
:400B8000FC352F002A408F408A40083B9B080B4C9B001B19DE69BE433243DA61074B00259A68074B9A4204D10199FFF7ABFF00E0044D2800FEBDC04600E100E000ED00E070
:400BC00000000008010056000369002B03DA89B24160002000E001487047C04601008A000368002B01DB034803E089B2C26081600020704701008A000369002B03DAC368D6
:400C000000200B6000E001487047C04601008A0070B5040010000F2C2BD8002A07D1002927D1154B6401E418144B1C6022E000291FD01F260E401CD1104D0F4B6401E418D0
:400C40006960AA60CA0831002C6001F006F931002000FFF7B9FF31002A1D2868FFF7C0FF011E04D12868FFF7AFFF011E02D0044900E00449080070BD000023401C07000810
:400C800001018A0003018A00194BF7B51A680193D76804003B680E00834223D90025A94202D100F07AFD0500019B18680368002B01DB104C10E063095A01A41A0122A2408C
:400CC00079689B00CB18196811420DD00024914319600021FFF778FF002E07D1280000F060FD03E0044C01E0044CF2E72000FEBD1C0700080301880004018A000201880081
:400D00000A4B1B68DA68136883420DD9430999005B01C31A0120984052688B581840431E9841034BC01800E0024870471C0700080001880004018A00024B1A68002A00D119
:400D40001860704728070008F0B52C246043104C1E0024681F0A2018FF2426403C400D4F06607601F61906610B4E1B0C44606401A4191E04836033434461A3600023059D2C
:400D8000C261016283619D4201D02B888381F0BD280700080000234000102340F0B5038985B002AD2B800368066A1933AB704368476A0095826AC16A040003930369C06870
:400DC000FFF7C2FF00213B000A0000913000FFF7BBFF216B2800FFF7A9FE0023EA5E002A05DB1F231A401E3B9340024A136005B0F0BDC04600E100E0F7B52C25124C6843E9
:400E0000276801933C182669002E08D04D4379198869002805D13568002D02DA03E00B4811E00B480FE06768012425004B689D4013882D041D431560F2608C61BC40019B65
:400E4000A4B24B62B460FEBD2807000804028A0007028A002C235843064B1B681818C369934204D9036A9200D150002000E002487047C046280700080A028A0073B5002638
:400E800042690400D56801962B0CB3421CD01B040069136013680369B34215DA01A9FFF7ABFEB0420CD10198E26903681E0C0378934205D2226A9B009B58002B00D0984725
:400EC00031002069FFF780FEADB2002D0ED063691D6000251B68636AAB4202D09847656203E0A36A002B00D09847A56163691B6873BD0000042819D804290FD94B1EFF3B13
:400F0000132B13D81F231940094B8000C018C02304229B00C1504033C25005E00723D0301940034B8000C150002000E0014870470000264001004A00F0B5012819D1C02275
:400F4000224BD2009A58002A0CDB8A78901E0E280FD84C78601E11280BD8C8780D7800282FD101E01A4830E07026152D01D9AE4201D2184829E00E79022E14D0F82124020C
:400F80004901F8270C4021007F2412047F033A4011432C4021438024C022C006240520400143D2009950C020C0248005360706403200E4001D590849002029400A431A51C4
:400FC00003E03826122DD4D9D1E7F0BD0000264003004A0001004A00FFFFFFCFF8B50D00012819D1C02180240D4BC9005A582406C826224307001C005A50F600A3593B42B7
:4010000006D1002D0AD0012000F038FB013DF5E70020002D03D101E0024800E00248F8BD0000264001004A0002004A001E4A0300904238D010D840282ED005D8002831D0B3
:4010400010282DD119482EE0802827D08021100049008B4227D023E0154A904214D008D8A022120690421DD0124AA020934211D016E0114A904209D0104A904208D0104AB1
:4010800090420DD10F480EE0A42003E00E480AE00E4808E0C00306E00D4804E00D4802E00D4800E0002070470600520001005000010000F0090000A0040000F0050000F0C5
:4010C000030000F00100520002005200030052000200500005005200FF0052000B4B10B51B69002B10DB0A4B0A4C1868FFF79EFF0121094B094A995099580029FCD10649AC
:4011000009590029F8D100E0054810BD000023402C0700088C040000000025400C0400000200500010B5022202490020FFF792FE10BDC046990100080F4B30B5C0180F4BAC
:40114000C009C01800011F23032909D81D00C9008D4013408B400468AC432343036009E01D000439C9008D4013408B404468AC432343436030BDC0460000CEBF0010030457
:40118000F7B504000E00150000286ED0002A6CD0012312688B40002A01D1436000E08360B30001930F231900B0008140A26A8A4369680B4083401343A3622A7A31002000BA
:4011C000FFF7BAFF0320710088400322636A83431800EB6813408B400343636201231F00B7400097FF43BC462F6962461F40B740A0691031104038436F69A0611F40B740A9
:40120000E06A10403843E062A86903221840B0400600E869276B10408A408840009930430A4397436A6A384356000222206304201640AA6A616B92000240286A3243034017
:401240001A43EB6AD80018230340FF2013432A6B019D520102401343FE2292002A40934081430B436363002000E00148FEBDC04601005A0000281BD0002919D00D4B0E4AD2
:40128000C318DB099B180A681B010260CA6882620A69C2624A6902638A6842624A6882618A694263CA6900201A600A6A5A6000E0024870470000CEBF0010030401005A0069
:4012C0000120024B1B68DB0D984370470000264010B50F2402200649064BCA58A2430243CA50F02212028B58A34303438B5010BD0000214004F0000010B50F240320064961
:40130000064BCA58A2430243CA50F02212028B58A34303438B5010BD0000214004F000000449054A054B88580340C020C00103438B5070470000214004F00000FF8FFFFF5B
:401340000449054A054B885803408020C00103438B5070470000214004F00000FF8FFFFF70B50400002000F037FA00280BD1802324065B041C4023000E490F4A8D692A401B
:4013800013438B6115E0002C01D10C4A00E00C4A01210C48FFF724FC002809D1094A1369002BFCDB074B0020DB681B0EA02B00D0054870BD00F02540FFFFFFFE0100003099
:4013C00001010030000023400400420010B5002000F002FAB0235B055A78002A03D05A780123222A01D843424341180010BD0000031E03D1084B5869C00F0CE00020012B26
:4014000009D1054918008A69920F1A4201D18869C00F01231840704700002640072370B5084CA2691A4090420BD0A5699D4303402B43A361002904D0904202D9C82000F077
:401440001DF970BD00002640F8B50500FFF7BEFF002844D000F0A1F9B02306005B05002D15D1E8220120D2009C5CFFF779FFE4B2071E30D1FFF72CFF1F201A491A4A8B5823
:401480008343143803438B50FFF74AFF0FE01F20164A14499C5C144AE4B28B588343143803438B50023800F0E9F8FFF749FF1F230C480D491C40425800279A4314434450B3
:4014C000012D08D1092000F0D9F8FFF715FF0020FFF746FF0700300000F063F900E0044F3800F8BD000026401CFF00004107000003004200F0B5060085B00D00204F04295C
:4015000001D001291AD100207C68002C35D01D4B984232D02379B3420ED1A368002B01D02B4209D1E36801A85A689B6842608360057023689847BC606469E6E7BC6802296C
:4015400002D1002C00D024690020002C15D00D4B984212D02379B3420DD1A368002B01D02B4208D1E36801A85A689B68426083600570236898472469E7E705B0F0BDC0462E
:401580003C070008FF004200F0B52B4C85B023680700002B0AD100F000F923680190002B10D004210120FFF7A5FF0BE001210800FFF7A0FF0028EED002210120FFF79AFF63
:4015C0001E4C35E0B0256D056B78002B02D06B78212B03D1380000F057FC1EE0184E194BF3580293E823DB00EB5CDBB20393FFF767FE3100144A00280AD01F2302981840AF
:4016000003000398834203D0104BEB58B35001E000238B50380000F03FFC019800F0C1F823680024A34203D008210120FFF762FF200005B0F0BDC0463C070008FF00420033
:40164000000026401CFF0000307F00001018000010B5E82400F0A1F8064B07495A68A4010A4022435A605A68114059605B6800F098F810BD00002640FF00FC0F10B5034BE8
:401680001B78584300F080F810BDC046D400000880220020034B12069A649B6C834200DA0148704700002740030046008022054B120198585B68DBB2002B02D08023DB02A7
:4016C0001843704700002640FEE7000002680A4B10B51A6042685A6082689A60C268DA6002691A6142695A6182699A61C269DA61FFF7EAFF10BDC04658040008F0B5192255
:40170000002800D14B32E82403258A429241194E640033595242AB43134333513359164F3B403351154B5C68AC4322435A605A6817405F60002808D00023102913D9213317
:401740008B429B415B4201330DE003001D290AD901233A2907D9DB18572904D976338B4240410422131A0F21054A1068884303431360F0BD00002140FFFCFFFFFC002140F6
:4017800000002540000000000230800803D001300238FCD1C046C0467047EFF3108072B6704780F310887047094B042803D11A68104318600BE0C02200069204104090221D
:4017C00004499200885004211A688A431A60704710E000E000002140034B8002C0180F23006818407047C04600402440F8B58023FA250C0001271B0218430D4E0004F06196
:40180000AD00326C0A4B01203A4205D1002D0CD0013DFFF733FFF4E7002D06D01A6C10431864DB6A0020238000E00248F8BDC04600003C400400160070B5FA2401260D4BAE
:40184000000418400C4D0143E961A4002B6C0A4A0120334205D1002C0AD0013CFFF70EFFF4E7002C04D0136C18431064002000E0024870BD0000FF7F00003C400400160030
:40188000F0B5154B9DB001A90A00180070C870C270C870C270C870C20AAC1A0020002432E0CAE0C0E0CAE0C0E0CAE0C013AD2A004833C1CBC1C2C1CBC1C2C1CBC1C20748C7
:4018C000FFF7D8FC21000648FFF7D4FC29000548FFF7D0FC1DB0F0BD741F0010000132408001324000023240F0B585B00090002800D159E1C54F7B689B0301D5FFF7A8FE16
:40190000C34CC44DC44BEA58002A06D0013C002C03D00120FFF7B2FEF3E70122BF4C2959114205D0BE49BB484158114200D03DE1EB58B84E002B00D038E1FFF7A1FFB94AA7
:40194000B94BF2508022009BD2021B781343B74AB350B74AB74BF250B74B5A6801231A4200D025E1B54A116F08220A4008D1B44BB44918681300884202D900F0D9F9431EA1
:401980002A68002B03D0B0485B03034300E0AF4B13432B607B699F499C4E01275B000DD539000320FFF73AFD73699B0F3B420AD08022B369D2051343B36104E00320A44ACB
:4019C0008B5803438B502B5940200193019AA14BA14E13432B51FFF751FE0123AA598D4F1A4208D1BB514020FFF748FE03234020BB51FFF743FEFA27019A984B984E1A4056
:401A000016430192FF002E51964A974BD3581022134207D1002F00D1CCE00120013FFFF72DFEF1E7002F00D1C4E008218F4A0120AB580B43AB50FFF7DBFC002802D18C4E35
:401A4000019B1E438B4B1E4001231E432E511E00894C734BEB58334207D1002C00D1A9E00120013CFFF70AFEF3E7002C00D1A1E00B27C02181484901FFF7DEFE041E05D1C6
:401A800002AB991D7D48FFF7B1FE0400013F002F00D136E1002C26D1C02202AB9E1D338852019342E5D131007548FFF79FFE041E19D180233288DB001A4200D081E00B2774
:401AC000019380216E48C900FFF7B6FE041E04D131006B48FFF78AFE0400013F002F00D10FE1002C68D0B0256D056B78002B44D06B78212B41D0634FEB5B002B3DD0002C92
:401B000000D000E102AB9E1D31005F48FFF76EFE041E00D0F7E0C021E85B3488084060398C434008594920430140F020EA5BC000EB5BD201024011439B05554A9B0F11406D
:401B4000DB02194350483180FFF776FE041E00D0D9E031004F48FFF749FE041E00D0D2E0C022EB5B31889B069B0F9B019143194348483180FFF760FE0400002C00D0C2E0F6
:401B8000009B454859781D78444B49001943FFF753FE041E04D142494248FFF74DFE04006801FFF76BFDAEE03F4CACE03F4CAAE03F4CA8E03F4CA6E03388019A934200D02B
:401BC0007FE731003C48FFF711FE041E00D08AE732883F2310009843009B38499F78DB78012F0ED10222012B04D89FB2D21B92B2019201E017000194702210433080304AE9
:401C000069E0002B5ED0019401275EE000002640F17E0E0000003C406CF00100A0F00100B4F0010006000001A4F00100A8F0010001000100ACF00100FC003C4000F03D405C
:401C4000C800000800093D00041A0080040A0080C4F0010030000300B0F00100EFFFFEFF20000200000032401040000068F0010028000200FFFFFBFFF07E0E00021E0000B3
:401C8000031E000016180000071E00007FF5FFFFFFE7FFFF061E0000081E000001100000376800000F1E000001001600030016000200160004001600091E0000C0000008E2
:401CC0000048E80101201F0001907F2082436F38024332800D4ADA400A6031880C4839433180FFF7A9FD009B0400DB78DF1B03231F40019B9B001F43064BBFB23780EF506D
:401D0000F1E6054CEFE6200005B0F0BD0024F400091E000064F001000400160002B4714649084900095C49008E4402BC7047C046002243088B4274D303098B425FD3030ADB
:401D40008B4244D3030B8B4228D3030C8B420DD3FF22090212BA030C8B4202D31212090265D0030B8B4219D300E0090AC30B8B4201D3CB03C01A5241830B8B4201D38B03BF
:401D8000C01A5241430B8B4201D34B03C01A5241030B8B4201D30B03C01A5241C30A8B4201D3CB02C01A5241830A8B4201D38B02C01A5241430A8B4201D34B02C01A52416A
:401DC000030A8B4201D30B02C01A5241CDD2C3098B4201D3CB01C01A524183098B4201D38B01C01A524143098B4201D34B01C01A524103098B4201D30B01C01A5241C308B9
:401E00008B4201D3CB00C01A524183088B4201D38B00C01A524143088B4201D34B00C01A5241411A00D20146524110467047FFE701B5002000F006F802BDC0460029F7D08E
:401E400076E770477047C046002310B59A4203D0CC5CC4540133F9E710BD03008218934202D019700133FAE770470000F8B5C046F8BC08BC9E467047F8B5C046F8BC08BC4F
:401E80009E4670470000000001B40248844601BC604700BF9D02000801B40248844601BC604700BF610300080300000001000000010000000000000005036000040000002B
:401EC00001000000000000000100000006046000080000009C060008F10700100800000001000000020000000200000008080003090000000100000000000000030000008F
:401F00000909000308000000BC060008D10700100A0000000100000004000000040000000A0A000C0B0000000100000000000000050000000B0B000C10000000DC06000872
:401F4000E1070010192001021901020000000000000000000000000000000000000000BA0000000000000000000000000000000000001D1D0000000000000000000000001D
:401F800066666666000000000000FFFF000000001C1C1C1C1C1C1C1C00000000000000000000000066E6EE66000000000000FFFF000000001C1A1A1A1A1A0000000000006F
:401FC000000000000000000066E66666000000000000FFFF000000001A1A001C00000000000000000000001000000008C000000004200010C0000008980300007804000888
:40200000D002000000127A0000127A0000093D0000093D0000093D0004000000A00F00000000D0070700000002000000030000000F0000000000000000000000030000003C
:402040000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000019000050A000000002FF000053
:40208000E9000010C10000100000000080B2C00017D00C4A1368002BFCDA3E220A4B06211A600A4A0A4B1A60A3220A4BD2009950094A985000209958024948609958002904
:4020C000FCDA7047E0002340040126401E1F000008012640000026401C05000010B54378FF2B0DD100F022F9064BDB685A68012311681943116011681942FCD100F00EF987
:4021000010BDC04680002340F7B50F00019000F03DF9050003281FD1274B1B69002B19DB002000F02BF9254EB04213D00023244A1900012000F01AF9041E0BD1002000F0EA
:402140001DF9204BB04203D09C4203D00134F5E79C4201D11C4E2CE000F0E8F81B4B1C4A0400D358002B06DA1A4A01211A4800F0F5F8002801D0144E0EE03800FFF786FF9A
:40218000019B002B07D0144A1369002BFCDB00F0DDF8060000E0114E032D03D0200000F0BDF806E00121002000F0C8F80028F9D1F4E73000FEBDC046C00023400101880090
:4021C00038010008F0490200050052001C050000000026402C070008000023400100500070B52B490A682A4B002AFBDA0221DA680A43DA60DA68D2071BD5264D264CD968FA
:402200002A69266889B2360A36060E43FF21120209040A4032439026DA6029691F4A360111403143296121680A40324322602A692268002204241A495A605A680A6922431C
:402240000A61012801D030BF00E020BF1A68104D002AFBDAEA68D20712D5FF240D4E0F4A3069E9682402090A1040214001430A4831610668E9683240090C0C40224302602F
:402280000221DA688A43DA6000225A6070BDC046E00023400000214090002140FF00FFFF00ED00E00421134A13690B431361012801D030BF00E020BF0F4A1368002BFCDA07
:4022C0000E4B19691A00002910D10D490D4B196006210D4B19600D4B383119600C4B0631196019680029FCDA0A4B13610022024B5A60704700ED00E0E0002340FC002540E5
:402300001E1F00000801264018052640040126401C052640AAAAAAAA0000000001B40248844601BC604700BFA317001001B40248844601BC604700BF9B17001001B4024871
:40234000844601BC604700BF890C001001B40248844601BC604700BFDD10001001B40248844601BC604700BFE10B001001B40248844601BC604700BFF90D001001B40248F9
:40238000844601BC604700BF010D001001B40248844601BC604700BFE50300100000000000000000000000000000000000000000000000000000000000000000000000002E
:4023C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DD
:00000001FF

View File

@ -0,0 +1,146 @@
:020000041000EA
:4000000000000108310100100D00000095010010000000000000000000000000000000000000000000000000000000009101001000000000000000009101001091010010DC
:4000400091010010B5070010910100109101001091010010910100109101001091010010910100109101001091010010910100109101001091010010910100109101001036
:400080009101001091010010910100109101001091010010910100109101001091010010910100109101001091010010910100109101001091010010910100109101001020
:4000C00010B5064C2378002B07D1054B002B02D0044800E000BF0123237010BD7804000800000000B01F0010084B10B5002B03D00749084800E000BF07480368002B00D121
:4001000010BD064B002BFBD09847F9E7000000007C040008B01F001044010008000000007047EFF3108072B6704780F310887047FFF7F6FF72B6104C104DAC4209DA216848
:400140006268A368043B02DBC858D050FAE70C34F3E70B490B4A0020521A02DD043A8850FCDC094809490860BFF34F8F00F0ECF800F01EF8FEE70000B41F0010CC1F001019
:4001800078040008380700080000000808ED00E0FEE7FEE700B504207146084202D0EFF3098001E0EFF30880043001F071FAFEE710B500F0A5F962B6064B5B689B0301D503
:4001C00001F028FA044800F02FF9002001F0BEF9FBE7C0460000264000000810F8B5E023504C9B00E2580F231340D022990092000919885807224C4D0240032A05D0042A61
:4002000005D0002A0FD0494811E028680FE0C022920089581F220A40112A01D0132A04D18020000203E0424801E0FA20C001002B27D1B223B1210322DB00C900E65863588A
:4002400067581B0F3F0F1340174205D0354F7958090F0A40012A01D1F20701D4032B3AD1B023344ADB00E658A158E758C904C90C01F03EFDB603F901B60BC90F704301316A
:4002800027E0012B27D1C823C0210322DB00C900E658635867583F0F174205D0214F7958090F0A40012A01D1F20703D49B009B0F032B10D1C0227F23D200A758A1583B40BD
:4002C0001F27A658090A3940584301F011FD310C394001F00DFDE0239B00E3589B069B0FD840154B68601C691969240A090E013101F0FEFCE1B2A860013101F0F9FC0F4B09
:40030000E860286104000E49C01801F0F1FCFA210C4B28758900E01801F0EAFCA861C003E861F8BD00002640C000000800366E0100127A0084050000000021403F420F00D1
:4003400040420F00E7030000B021E02010B530241F4BC9005A588000520052085A501A58A2431A50802252045A501A491A4A80209950A021043289019950FF21174AC005FA
:40038000995081315A5892009208024380205A505A580006024301205A505A5882435A5000F036FAFFF71AFF00F00CFA00F014FA00F09AFEB0235B055A78002A02D05B78CD
:4003C000212B03D10022064BDA605A6010BDC0460000264001000200840500008C050000E0002340024BD86F032318407047C0460400214010B5FFF794FE074A074BD16F79
:400400000B4007490B43D367102306490A681A42FCD0FFF78AFE10BD04002140FCFF00000100FA058800214070B50F4C0600FFF778FEE36F0500DB439B0701D1FFF7DAFF3F
:40044000B0230A4A9B00D650E26F094B09491340094A1343E36710230A681A42FCD02800FFF763FE70BDC0460400214000002140FCFF0000880021400300FA0510B5040063
:40048000007B00F0D5F8606010BD10B50400007B216900F097F8606010BD10B5037B0169180000F0AFF810BD10B50400C06800F0EBF8606010BD10B5C06800F0F9F810BD88
:4004C00010B50400C06800F005F9606010BD10B5C06800F019F910BD10B504000C23C05E00F056F8606010BD10B50C23C05E00F067F810BD10B5C06800F018F910BD00000A
:4005000010B500221849042000F086FC01221749042000F081FC02221549042000F07CFC03221449042000F077FC04221249100000F072FC05221149042000F06DFC06229D
:400540000F49042000F068FC07220E49042000F063FC08220C49042000F05EFC09220B49042000F059FC10BD7D0400108B0400109B040010A9040010B7040010C1040010DA
:40058000CF040010D9040010E9040010F504001070B507250412E4B205400D2C09D801F0DCF8064B1C5D2C41E407E41701F0D9F801E001246442200070BDC046681E0010D0
:4005C00070470000F8B50C00050001F0C6F80C2301225D431300A3401A00094E71198F683A4008D13B43AD598B60631C4B60AB4202D94A6000E0FF2401F0B3F82000F8BD2B
:40060000E000000870B50C00050001F0A6F801210C23A1406B43054AD3189A680A4201D08A439A6001F09DF870BDC046E0000008F0B50C2485B0019001F08FF8019B114D5F
:400640005C432B195B68029003932E1971680198FFF7B8FF0700FF280DD173682A59934201D9002373602A1953680399994202D001335360E9E7029801F073F8380005B056
:40068000F0BDC046E000000810B50400072809D801F063F8054B1A5D002A01D101321A5501F05FF80120404210BDC0469404000810B50400072809D801F04FF8044B1A5DE0
:4006C000012A01D100221A5501F04BF810BDC0469404000870B505001F280ED801F03DF8084B30335C5D002C02D101225A5501E00124644201F035F801E001246442200072
:4007000070BDC046E000000810B504001F280AD801F023F8044B30331A5D012A01D100221A5501F01EF810BDE000000870B5B024C025144B144A15496405ED00E35CA25CA1
:40074000615C665D3F251F242A400C4024039201224311002B407F2219430B003240520413430B4A1C0A110050310B701B0C8B7000234C7011005031595CC1540133062B91
:40078000F8D170BD040600000506000003060000E000000810B50248583000F051FB10BD1C05000810B50248B03000F049FB10BD1C05000810B5024800F042FB10BDC0464C
:4007C0001C05000810B5034A80216032042000F001FA10BD1C06000870B500F0BEFF0500094800F08BFA094C200000F0B9FA2000343000F0B5FA2000683000F0B1FA280032
:4008000000F0AFFF70BDC0461C050008781E0010F0B5962191B0002000F052FF00F028FF002801D100F016FF012000F0EFFDE821724C734B626C89011A400A436264626CEF
:400840000193120AD2B23A2A04D1636C6D4A13400B4363643422002103A801F0DEFA03AA0021694800F06EFC3422002103A801F0D4FA03AA0121644800F064FC0822042659
:400880002368624D134323602369334207D1002D04D0012000F0D4FE013DF5E701E0002D00D1FEE7A02603220127594CF600A35903AD93433B43A351D2195649280001F045
:4008C000A3FA280000F0F0FF534901980B68534A03400B608021136949041B021B0A0B4313611369019902200B401361E0230F219B00E2588A433A43E250E25821318A431F
:400900008021E250E25809060A43E250002100F0D3FA0021032000F0CFFA0021042000F0CBFA0321002000F0C7FA0321380000F0C3FA384B0522191D280001F065FA2900C8
:40094000380000F0DBFA002800D0FEE73449380000F026FB002800D0FEE7324B324AE1580A403A43E250E158304A0A408021E250E25809060A43E250A2592D4B1340A3517D
:40098000A2592C4B13408022920113438022A351A35912021343A351184B1A68264B1340164A136000F0E0FEC0235B00E3583B4204D1224AA3585B005B08A3506421002025
:4009C00000F07EFE24220021280001F026FA29000D4800F031FC2A000E4B0C3313CB13C213CB13C213CB13C22900154800F024FC144A154B1A6011B0F0BDC04600002740CC
:400A0000FF00FFFFFFC5FFDF0000324020A1070000002640141F001090002140000021401027000004050000FEFCFFFFFFFF00FFFFF0FFFFFF8FFFFFFFFCFFFF0C0500002A
:400A40000003324001001180000E1F41030010B5FF24800882009B1ADB009C409940E243214007282DD8174B01F038F904090E13181D2227186A02401143196221E0586A87
:400A80000240114359621CE0986A02401143996217E0D86A02401143D96212E0186B0240114319630DE0586B02401143596308E0986B02401143996303E0D86B024011438A
:400AC000D96310BD00002140064B10309A68064B9A4203D183009858995002E0034B8000C058704700ED00E00000000800000010F7B5051E01913DD00023C05E002802DB84
:400B0000A978FFF7A3FF6A680023E85E9201002812DB1A4B81088900C918FF2303271C00C0250740FF00BC401A40BA40AD004E59A64332434A5113E003250F2381B20B40C6
:400B40002940A940FC352F002A408F408A40083B9B080B4C9B001B19DE69BE433243DA61074B00259A68074B9A4204D10199FFF7ABFF00E0044D2800FEBDC04600E100E02B
:400B800000ED00E000000008010056000369002B03DA89B24160002000E001487047C04601008A000368002B01DB034803E089B2C26081600020704701008A000369002B51
:400BC00003DAC36800200B6000E001487047C04601008A0070B5040010000F2C2BD8002A07D1002927D1154B6401E418144B1C6022E000291FD01F260E401CD1104D0F4B6A
:400C00006401E4186960AA60CA0831002C6001F004F931002000FFF7B9FF31002A1D2868FFF7C0FF011E04D12868FFF7AFFF011E02D0044900E00449080070BD000023401C
:400C40000C07000801018A0003018A00194BF7B51A680193D76804003B680E00834223D90025A94202D100F078FD0500019B18680368002B01DB104C10E063095A01A41AB8
:400C80000122A24079689B00CB18196811420DD00024914319600021FFF778FF002E07D1280000F05EFD03E0044C01E0044CF2E72000FEBD0C0700080301880004018A0059
:400CC000020188000A4B1B68DA68136883420DD9430999005B01C31A0120984052688B581840431E9841034BC01800E0024870470C0700080001880004018A00024B1A68DA
:400D0000002A00D11860704718070008F0B52C246043104C1E0024681F0A2018FF2426403C400D4F06607601F61906610B4E1B0C44606401A4191E04836033434461A36046
:400D40000023059DC261016283619D4201D02B888381F0BD180700080000234000102340F0B5038985B002AD2B800368066A1933AB704368476A0095826AC16A040003938F
:400D80000369C068FFF7C2FF00213B000A0000913000FFF7BBFF216B2800FFF7A9FE0023EA5E002A05DB1F231A401E3B9340024A136005B0F0BDC04600E100E0F7B52C259E
:400DC000124C6843276801933C182669002E08D04D4379198869002805D13568002D02DA03E00B4811E00B480FE06768012425004B689D4013882D041D431560F2608C6135
:400E0000BC40019BA4B24B62B460FEBD1807000804028A0007028A002C235843064B1B681818C369934204D9036A9200D150002000E002487047C046180700080A028A004E
:400E400073B5002642690400D56801962B0CB3421CD01B040069136013680369B34215DA01A9FFF7ABFEB0420CD10198E26903681E0C0378934205D2226A9B009B58002BC6
:400E800000D0984731002069FFF780FEADB2002D0ED063691D6000251B68636AAB4202D09847656203E0A36A002B00D09847A56163691B6873BD0000042819D804290FD947
:400EC0004B1EFF3B132B13D81F231940094B8000C018C02304229B00C1504033C25005E00723D0301940034B8000C150002000E0014870470000264001004A00F0B50128DF
:400F000019D1C022224BD2009A58002A0CDB8A78901E0E280FD84C78601E11280BD8C8780D7800282FD101E01A4830E07026152D01D9AE4201D2184829E00E79022E14D0BF
:400F4000F82124024901F8270C4021007F2412047F033A4011432C4021438024C022C006240520400143D2009950C020C0248005360706403200E4001D590849002029407D
:400F80000A431A5103E03826122DD4D9D1E7F0BD0000264003004A0001004A00FFFFFFCFF8B50D00012819D1C02180240D4BC9005A582406C826224307001C005A50F600B8
:400FC000A3593B4206D1002D0AD0012000F038FB013DF5E70020002D03D101E0024800E00248F8BD0000264001004A0002004A001E4A0300904238D010D840282ED005D8A4
:40100000002831D010282DD119482EE0802827D08021100049008B4227D023E0154A904214D008D8A022120690421DD0124AA020934211D016E0114A904209D0104A9042FA
:4010400008D0104A90420DD10F480EE0A42003E00E480AE00E4808E0C00306E00D4804E00D4802E00D4800E0002070470600520001005000010000F0090000A0040000F0C8
:40108000050000F0030000F00100520002005200030052000200500005005200FF0052000B4B10B51B69002B10DB0A4B0A4C1868FFF79EFF0121094B094A99509958002913
:4010C000FCD1064909590029F8D100E0054810BD000023401C0700088C040000000025400C0400000200500010B5022202490020FFF792FE10BDC046990100080F4B30B513
:40110000C0180F4BC009C01800011F23032909D81D00C9008D4013408B400468AC432343036009E01D000439C9008D4013408B404468AC432343436030BDC0460000CEBF7C
:4011400000100304F7B504000E00150000286ED0002A6CD0012312688B40002A01D1436000E08360B30001930F231900B0008140A26A8A4369680B4083401343A3622A7A34
:4011800031002000FFF7BAFF0320710088400322636A83431800EB6813408B400343636201231F00B7400097FF43BC462F6962461F40B740A0691031104038436F69A061EE
:4011C0001F40B740E06A10403843E062A86903221840B0400600E869276B10408A408840009930430A4397436A6A384356000222206304201640AA6A616B92000240286ABA
:40120000324303401A43EB6AD80018230340FF2013432A6B019D520102401343FE2292002A40934081430B436363002000E00148FEBDC04601005A0000281BD0002919D00A
:401240000D4B0E4AC318DB099B180A681B010260CA6882620A69C2624A6902638A6842624A6882618A694263CA6900201A600A6A5A6000E0024870470000CEBF0010030454
:4012800001005A000120024B1B68DB0D984370470000264010B50F2402200649064BCA58A2430243CA50F02212028B58A34303438B5010BD0000214004F0000010B50F24B8
:4012C00003200649064BCA58A2430243CA50F02212028B58A34303438B5010BD0000214004F000000449054A054B88580340C020C00103438B5070470000214004F00000B6
:40130000FF8FFFFF0449054A054B885803408020C00103438B5070470000214004F00000FF8FFFFF70B50400002000F035FA00280BD1802324065B041C4023000E490F4A31
:401340008D692A4013438B6115E0002C01D10C4A00E00C4A01210C48FFF724FC002809D1094A1369002BFCDB074B0020DB681B0EA02B00D0054870BD00F02540FFFFFFFEAA
:401380000100003001010030000023400400420010B5002000F000FAB0235B055A78002A03D05A780123222A01D843424341180010BD0000031E03D1084B5869C00F0CE083
:4013C0000020012B09D1054918008A69920F1A4201D18869C00F01231840704700002640072370B5084CA2691A4090420BD0A5699D4303402B43A361002904D0904202D944
:40140000C82000F01DF970BD00002640F8B50500FFF7BEFF002844D000F09FF9B02306005B05002D15D1E8220120D2009C5CFFF779FFE4B2071E30D1FFF72CFF1F201A49D4
:401440001A4A8B588343143803438B50FFF74AFF0FE01F20164A14499C5C144AE4B28B588343143803438B50023800F0E9F8FFF749FF1F230C480D491C40425800279A4397
:4014800014434450012D08D1092000F0D9F8FFF715FF0020FFF746FF0700300000F061F900E0044F3800F8BD000026401CFF00004107000003004200F0B5060085B00D004F
:4014C000204F042901D001291AD100207C68002C35D01D4B984232D02379B3420ED1A368002B01D02B4209D1E36801A85A689B6842608360057023689847BC606469E6E760
:40150000BC68022902D1002C00D024690020002C15D00D4B984212D02379B3420DD1A368002B01D02B4208D1E36801A85A689B68426083600570236898472469E7E705B0D2
:40154000F0BDC0462C070008FF004200F0B52B4C85B023680700002B0AD100F0FEF823680190002B10D004210120FFF7A5FF0BE001210800FFF7A0FF0028EED00221012092
:40158000FFF79AFF1E4C35E0B0256D056B78002B02D06B78212B03D1380000F05DFC1EE0184E194BF3580293E823DB00EB5CDBB20393FFF767FE3100144A00280AD01F234C
:4015C0000298184003000398834203D0104BEB58B35001E000238B50380000F035FC019800F0BFF823680024A34203D008210120FFF762FF200005B0F0BDC0462C070008DF
:40160000FF004200000026401CFF0000307F00001018000010B5E82400F09FF8064B07495A68A4010A4022435A605A68114059605B6800F096F810BD00002640FF00FC0FFE
:4016400010B5034B1B78584300F07EF810BDC046D400000880220020034B12069A649B6C834200DA0148704700002740030046008022054B120198585B68DBB2002B02D056
:401680008023DB021843704700002640FEE7000002680A4B10B51A6042685A6082689A60C268DA6002691A6142695A6182699A61C269DA61FFF7EAFF10BDC04658040008F5
:4016C000F0B51922002800D14B32E82403258A429241194E640033595242AB43134333513359164F3B403351154B5C68AC4322435A605A6817405F60002808D000231029B8
:4017000013D921338B429B415B4201330DE003001D290AD901233A2907D9DB18572904D976338B4240410422131A0F21054A1068884303431360F0BD00002140FFFCFFFF53
:40174000FC002140000025400230800803D001300238FCD1C046C0467047EFF3108072B6704780F310887047094B042803D11A68104318600BE0C022000692041040902200
:4017800004499200885004211A688A431A60704710E000E000002140034B8002C0180F23006818407047C04600402440F8B58023FA250C0001271B0218430D4E0004F061D6
:4017C000AD00326C0A4B01203A4205D1002D0CD0013DFFF735FFF4E7002D06D01A6C10431864DB6A0020238000E00248F8BDC04600003C400400160070B5FA2401260D4BED
:40180000000418400C4D0143E961A4002B6C0A4A0120334205D1002C0AD0013CFFF710FFF4E7002C04D0136C18431064002000E0024870BD0000FF7F00003C40040016006E
:40184000F0B5154B9DB001A90A00180070C870C270C870C270C870C20AAC1A0020002432E0CAE0C0E0CAE0C0E0CAE0C013AD2A004833C1CBC1C2C1CBC1C2C1CBC1C2074807
:40188000FFF7DAFC21000648FFF7D6FC29000548FFF7D2FC1DB0F0BD441F0010000132408001324000023240F0B585B00090002800D159E1C54F7B689B0301D5FFF7AAFE7E
:4018C000C34CC44DC44BEA58002A06D0013C002C03D00120FFF7B4FEF3E70122BF4C2959114205D0BE49BB484158114200D03DE1EB58B84E002B00D038E1FFF7A1FFB94AE6
:40190000B94BF2508022009BD2021B781343B74AB350B74AB74BF250B74B5A6801231A4200D025E1B54A116F08220A4008D1B44BB44918681300884202D900F0D9F9431EE1
:401940002A68002B03D0B0485B03034300E0AF4B13432B607B699F499C4E01275B000DD539000320FFF73CFD73699B0F3B420AD08022B369D2051343B36104E00320A44A09
:401980008B5803438B502B5940200193019AA14BA14E13432B51FFF753FE0123AA598D4F1A4208D1BB514020FFF74AFE03234020BB51FFF745FEFA27019A984B984E1A4090
:4019C00016430192FF002E51964A974BD3581022134207D1002F00D1CCE00120013FFFF72FFEF1E7002F00D1C4E008218F4A0120AB580B43AB50FFF7DDFC002802D18C4E72
:401A0000019B1E438B4B1E4001231E432E511E00894C734BEB58334207D1002C00D1A9E00120013CFFF70CFEF3E7002C00D1A1E00B27C02181484901FFF7DEFE041E05D104
:401A400002AB991D7D48FFF7B1FE0400013F002F00D136E1002C26D1C02202AB9E1D338852019342E5D131007548FFF79FFE041E19D180233288DB001A4200D081E00B27B4
:401A8000019380216E48C900FFF7B6FE041E04D131006B48FFF78AFE0400013F002F00D10FE1002C68D0B0256D056B78002B44D06B78212B41D0634FEB5B002B3DD0002CD2
:401AC00000D000E102AB9E1D31005F48FFF76EFE041E00D0F7E0C021E85B3488084060398C434008594920430140F020EA5BC000EB5BD201024011439B05554A9B0F1140AE
:401B0000DB02194350483180FFF776FE041E00D0D9E031004F48FFF749FE041E00D0D2E0C022EB5B31889B069B0F9B019143194348483180FFF760FE0400002C00D0C2E036
:401B4000009B454859781D78444B49001943FFF753FE041E04D142494248FFF74DFE04006801FFF76DFDAEE03F4CACE03F4CAAE03F4CA8E03F4CA6E03388019A934200D069
:401B80007FE731003C48FFF711FE041E00D08AE732883F2310009843009B38499F78DB78012F0ED10222012B04D89FB2D21B92B2019201E017000194702210433080304A29
:401BC00069E0002B5ED0019401275EE000002640F17E0E0000003C406CF00100A0F00100B4F0010006000001A4F00100A8F0010001000100ACF00100FC003C4000F03D409D
:401C0000C800000800093D00041A0080040A0080C4F0010030000300B0F00100EFFFFEFF20000200000032401040000068F0010028000200FFFFFBFFF07E0E00021E0000F3
:401C4000031E000016180000071E00007FF5FFFFFFE7FFFF061E0000081E000001100000376800000F1E000001001600030016000200160004001600091E0000C000000822
:401C80000048E80101201F0001907F2082436F38024332800D4ADA400A6031880C4839433180FFF7A9FD009B0400DB78DF1B03231F40019B9B001F43064BBFB23780EF50AD
:401CC000F1E6054CEFE6200005B0F0BD0024F400091E000064F001000400160002B4714649084900095C49008E4402BC7047C046002243088B4274D303098B425FD3030A1C
:401D00008B4244D3030B8B4228D3030C8B420DD3FF22090212BA030C8B4202D31212090265D0030B8B4219D300E0090AC30B8B4201D3CB03C01A5241830B8B4201D38B03FF
:401D4000C01A5241430B8B4201D34B03C01A5241030B8B4201D30B03C01A5241C30A8B4201D3CB02C01A5241830A8B4201D38B02C01A5241430A8B4201D34B02C01A5241AA
:401D8000030A8B4201D30B02C01A5241CDD2C3098B4201D3CB01C01A524183098B4201D38B01C01A524143098B4201D34B01C01A524103098B4201D30B01C01A5241C308F9
:401DC0008B4201D3CB00C01A524183088B4201D38B00C01A524143088B4201D34B00C01A5241411A00D20146524110467047FFE701B5002000F006F802BDC0460029F7D0CF
:401E000076E770477047C046002310B59A4203D0CC5CC4540133F9E710BD03008218934202D019700133FAE770470000F8B5C046F8BC08BC9E467047F8B5C046F8BC08BC8F
:401E40009E4670470000000001B40248844601BC604700BF6103000801B40248844601BC604700BF9D020008000000000000000000000000000000000300000001000000D8
:401E80000100000000000000050360000400000001000000000000000100000006046000080000008C060008B50700100800000001000000020000000200000008080003BB
:401EC000090000000100000000000000030000000909000308000000AC060008950700100A0000000100000004000000040000000A0A000C0B000000010000000000000013
:401F0000050000000B0B000C10000000CC060008A5070010192001021901020000000000000000000000000000000000000000BA00000000000000000000000000000000C2
:401F400000001D1D00000000000000000000000066666666000000000000FFFF000000001C1C1C1C1C1C1C1C00000000000000000000000066E6EE66000000000000FFFF13
:401F8000000000001C1A1A1A1A1A000000000000000000000000000066E66666000000000000FFFF000000001A1A001C00000000000000000000001000000008C000000045
:401FC000D41F0010C00000089803000078040008C002000000127A0000127A0000093D0000093D0000093D0004000000A00F00000000D007070000000200000003000000B5
:402000000F0000000000000000000000030000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000008B
:402040000000000019000050A000000002FF0000E9000010C10000100000000080B2C00017D00C4A1368002BFCDA3E220A4B06211A600A4A0A4B1A60A3220A4BD200995093
:40208000094A9850002099580249486099580029FCDA7047E0002340040126401E1F000008012640000026401C05000010B54378FF2B0DD100F042F9064BDB685A6801232C
:4020C00011681943116011681942FCD100F01EF910BDC04680002340F7B50F00019000F01DF9050003281FD1274B1B69002B19DB002000F01BF9254EB04213D00023244AB8
:402100001900012000F022F9041E0BD1002000F00DF9204BB04203D09C4203D00134F5E79C4201D11C4E2CE000F008F91B4B1C4A0400D358002B06DA1A4A01211A4800F05F
:402140000DF9002801D0144E0EE03800FFF786FF019B002B07D0144A1369002BFCDB00F0CDF8060000E0114E032D03D0200000F0CDF806E00121002000F0B8F80028F9D157
:40218000F4E73000FEBDC046C00023400101880038010008F0490200050052001C050000000026401C070008000023400100500070B52B490A682A4B002AFBDA0221DA6889
:4021C0000A43DA60DA68D2071BD5264D264CD9682A69266889B2360A36060E43FF21120209040A4032439026DA6029691F4A360111403143296121680A40324322602A6930
:402200002268002204241A495A605A680A6922430A61012801D030BF00E020BF1A68104D002AFBDAEA68D20712D5FF240D4E0F4A3069E9682402090A1040214001430A48CF
:4022400031610668E9683240090C0C40224302600221DA688A43DA6000225A6070BDC046E00023400000214090002140FF00FFFF00ED00E00421134A13690B4313610128B0
:4022800001D030BF00E020BF0F4A1368002BFCDA0E4B19691A00002910D10D490D4B196006210D4B19600D4B383119600C4B0631196019680029FCDA0A4B13610022024BB3
:4022C0005A60704700ED00E0E0002340FC0025401E1F00000801264018052640040126401C052640AAAAAAAA0000000001B40248844601BC604700BF4D0C001001B40248DF
:40230000844601BC604700BFA110001001B40248844601BC604700BF6317001001B40248844601BC604700BFE503001001B40248844601BC604700BFC50C001001B40248C9
:40234000844601BC604700BF5B17001001B40248844601BC604700BFBD0D001001B40248844601BC604700BFA50B001000000000000000000000000000000000000000007C
:40238000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001D
:4023C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DD
:00000001FF

View File

@ -53,16 +53,8 @@ struct port_s {
uint32_t mask;
PinDirection direction;
PinMode mode;
// __IO uint32_t *reg_in;
// __IO uint32_t *reg_out;
};
// struct analogin_s {
// ADCName adc;
// PinName pin;
// uint32_t channel;
// };
#if DEVICE_SERIAL
#include "cy_scb_uart.h"
@ -107,6 +99,7 @@ struct spi_s {
uint32_t div_num;
cy_en_divider_types_t div_type;
uint32_t clk_frequency;
uint32_t clk_delay;
cy_en_scb_spi_mode_t ms_mode;
cy_en_scb_spi_sclk_mode_t clk_mode;
uint8_t data_bits;

View File

@ -26,20 +26,21 @@ void pin_function(PinName pin, int function)
if (pin != NC) {
GPIO_PRT_Type *port = Cy_GPIO_PortToAddr(CY_PORT(pin));
uint32_t mode = gpio_get_cy_drive_mode(CY_PIN_DIRECTION(function), CY_PIN_MODE(function));
uint32_t state = Cy_GPIO_ReadOut(port, CY_PIN(pin));
Cy_GPIO_Pin_FastInit(port, CY_PIN(pin), mode, 1, CY_PIN_HSIOM(function));
// Force output to enable pulls.
switch (mode) {
case CY_GPIO_DM_PULLUP:
Cy_GPIO_Write(port, CY_PIN(pin), 1);
state = 1;
break;
case CY_GPIO_DM_PULLDOWN:
Cy_GPIO_Write(port, CY_PIN(pin), 0);
state = 0;
break;
default:
/* do nothing */
break;
}
Cy_GPIO_Pin_FastInit(port, CY_PIN(pin), mode, state, CY_PIN_HSIOM(function));
}
}

View File

@ -87,10 +87,10 @@ static IRQn_Type spi_irq_allocate_channel(spi_obj_t *obj)
#endif // M0
}
static void spi_irq_release_channel(IRQn_Type channel, uint32_t spi_id)
static void spi_irq_release_channel(spi_obj_t *obj)
{
#if defined (TARGET_MCU_PSOC6_M0)
cy_m0_nvic_release_channel(channel, CY_SERIAL_IRQN_ID + spi_id);
cy_m0_nvic_release_channel(obj->irqn, CY_SERIAL_IRQN_ID + obj->spi_id);
#endif //M0
}
@ -130,6 +130,14 @@ static int allocate_divider(spi_obj_t *obj)
return (obj->div_num == CY_INVALID_DIVIDER)? -1 : 0;
}
static void free_divider(spi_obj_t *obj)
{
if (obj->div_num != CY_INVALID_DIVIDER) {
cy_clk_free_divider(obj->div_type, obj->div_num);
obj->div_num = CY_INVALID_DIVIDER;
}
}
/*
* Initializes spi clock for the required speed
@ -149,6 +157,8 @@ static cy_en_sysclk_status_t spi_init_clock(spi_obj_t *obj, uint32_t frequency)
// Set up proper frequency; round up the divider so the frequency is not higher than specified.
div_value = (CY_CLK_PERICLK_FREQ_HZ + frequency *(SPI_OVERSAMPLE - 1)) / frequency / SPI_OVERSAMPLE;
obj->clk_frequency = CY_CLK_PERICLK_FREQ_HZ / div_value / SPI_OVERSAMPLE;
// Delay (in us) required for serialized read operation == 1.5 clocks, min 1us.
obj->clk_delay = (1500000UL - 1 + obj->clk_frequency) / obj->clk_frequency;
Cy_SysClk_PeriphDisableDivider(obj->div_type, obj->div_num);
if (Cy_SysClk_PeriphSetDivider(obj->div_type, obj->div_num, div_value) != CY_SYSCLK_SUCCESS) {
obj->div_num = CY_INVALID_DIVIDER;
@ -166,40 +176,20 @@ static cy_en_sysclk_status_t spi_init_clock(spi_obj_t *obj, uint32_t frequency)
}
/*
* Initializes i/o pins for spi.
* Sets up i/o connections for spi.
*/
static void spi_init_pins(spi_obj_t *obj)
static void spi_set_pins(spi_obj_t *obj)
{
bool conflict = false;
conflict = cy_reserve_io_pin(obj->pin_sclk);
if (!conflict) {
pin_function(obj->pin_sclk, pinmap_function(obj->pin_sclk, PinMap_SPI_SCLK));
}
if (obj->pin_mosi != NC) {
if (!cy_reserve_io_pin(obj->pin_mosi)) {
pin_function(obj->pin_mosi, pinmap_function(obj->pin_mosi, PinMap_SPI_MOSI));
} else {
conflict = true;
}
pin_function(obj->pin_mosi, pinmap_function(obj->pin_mosi, PinMap_SPI_MOSI));
}
if (obj->pin_miso != NC) {
if (!cy_reserve_io_pin(obj->pin_miso)) {
pin_function(obj->pin_miso, pinmap_function(obj->pin_miso, PinMap_SPI_MISO));
} else {
conflict = true;
}
pin_function(obj->pin_miso, pinmap_function(obj->pin_miso, PinMap_SPI_MISO));
}
if (obj->pin_ssel != NC) {
if (!cy_reserve_io_pin(obj->pin_ssel)) {
pin_function(obj->pin_ssel, pinmap_function(obj->pin_ssel, PinMap_SPI_SSEL));
} else {
conflict = true;
}
pin_function(obj->pin_ssel, pinmap_function(obj->pin_ssel, PinMap_SPI_SSEL));
}
if (conflict) {
error("SPI pin reservation conflict.");
}
pin_function(obj->pin_sclk, pinmap_function(obj->pin_sclk, PinMap_SPI_SCLK));
// Pin configuration in PinMap defaults to Master mode; revert for Slave.
if (obj->ms_mode == CY_SCB_SPI_SLAVE) {
pin_mode(obj->pin_sclk, PullNone);
@ -209,6 +199,55 @@ static void spi_init_pins(spi_obj_t *obj)
}
}
/*
* Sets i/o output pins into safe mode while re-configuring peripheral.
*/
static void spi_default_pins(spi_obj_t *obj)
{
if (obj->ms_mode == CY_SCB_SPI_MASTER) {
pin_function(obj->pin_sclk, CY_PIN_FUNCTION(HSIOM_SEL_GPIO, 0, PullDown, PIN_OUTPUT));
if (obj->pin_mosi != NC) {
pin_function(obj->pin_mosi, CY_PIN_FUNCTION(HSIOM_SEL_GPIO, 0, PullUp, PIN_OUTPUT));
}
if (obj->pin_ssel != NC) {
pin_function(obj->pin_ssel, CY_PIN_FUNCTION(HSIOM_SEL_GPIO, 0, PullUp, PIN_OUTPUT));
}
} else {
if (obj->pin_miso != NC) {
pin_function(obj->pin_miso, CY_PIN_FUNCTION(HSIOM_SEL_GPIO, 0, PullUp, PIN_OUTPUT));
}
}
}
/*
* Initializes i/o pins for spi.
*/
static void spi_init_pins(spi_obj_t *obj)
{
bool conflict = false;
conflict = cy_reserve_io_pin(obj->pin_sclk);
if (obj->pin_mosi != NC) {
if (cy_reserve_io_pin(obj->pin_mosi)) {
conflict = true;
}
}
if (obj->pin_miso != NC) {
if (cy_reserve_io_pin(obj->pin_miso)) {
conflict = true;
}
}
if (obj->pin_ssel != NC) {
if (cy_reserve_io_pin(obj->pin_ssel)) {
conflict = true;
}
}
if (conflict) {
error("SPI pin reservation conflict.");
}
spi_set_pins(obj);
}
/*
* Initializes and enables SPI/SCB.
*/
@ -282,8 +321,8 @@ void spi_init(spi_t *obj_in, PinName mosi, PinName miso, PinName sclk, PinName s
obj->rx_buffer_size = 0;
#endif // DEVICE_SPI_ASYNCH
spi_init_clock(obj, SPI_DEFAULT_SPEED);
spi_init_pins(obj);
spi_init_peripheral(obj);
spi_init_pins(obj);
#if DEVICE_SLEEP && DEVICE_LOWPOWERTIMER
obj->pm_callback_handler.callback = spi_pm_callback;
obj->pm_callback_handler.type = CY_SYSPM_DEEPSLEEP;
@ -300,27 +339,73 @@ void spi_init(spi_t *obj_in, PinName mosi, PinName miso, PinName sclk, PinName s
}
}
void spi_free(spi_t *obj_in)
{
spi_obj_t *obj = OBJ_P(obj_in);
spi_default_pins(obj);
Cy_SCB_SPI_Disable(obj->base, &obj->context);
Cy_SCB_SPI_DeInit (obj->base);
#if DEVICE_SLEEP && DEVICE_LOWPOWERTIMER
Cy_SysPm_UnregisterCallback(&obj->pm_callback_handler);
#endif // DEVICE_SLEEP && DEVICE_LOWPOWERTIMER
#if DEVICE_SPI_ASYNCH
if (obj->irqn != unconnected_IRQn) {
NVIC_DisableIRQ(obj->irqn);
spi_irq_release_channel(obj);
obj->irqn = unconnected_IRQn;
}
#endif // DEVICE_SPI_ASYNCH
if (obj->pin_sclk != NC) {
cy_free_io_pin(obj->pin_sclk);
obj->pin_sclk = NC;
}
if (obj->pin_mosi != NC) {
cy_free_io_pin(obj->pin_mosi);
obj->pin_mosi = NC;
}
if (obj->pin_miso != NC) {
cy_free_io_pin(obj->pin_miso);
obj->pin_miso = NC;
}
if (obj->pin_ssel != NC) {
cy_free_io_pin(obj->pin_ssel);
obj->pin_ssel = NC;
}
free_divider(obj);
}
void spi_format(spi_t *obj_in, int bits, int mode, int slave)
{
spi_obj_t *obj = OBJ_P(obj_in);
cy_en_scb_spi_mode_t new_mode = slave? CY_SCB_SPI_SLAVE : CY_SCB_SPI_MASTER;
if ((bits < 4) || (bits > 16)) return;
spi_default_pins(obj);
Cy_SCB_SPI_Disable(obj->base, &obj->context);
obj->data_bits = bits;
obj->clk_mode = (cy_en_scb_spi_sclk_mode_t)(mode & 0x3);
if (obj->ms_mode != new_mode) {
obj->ms_mode = new_mode;
spi_init_pins(obj);
}
spi_init_peripheral(obj);
spi_set_pins(obj);
}
void spi_frequency(spi_t *obj_in, int hz)
{
spi_obj_t *obj = OBJ_P(obj_in);
spi_default_pins(obj);
Cy_SCB_SPI_Disable(obj->base, &obj->context);
spi_init_clock(obj, hz);
Cy_SCB_SPI_Enable(obj->base);
spi_set_pins(obj);
}
int spi_master_write(spi_t *obj_in, int value)
@ -335,6 +420,10 @@ int spi_master_write(spi_t *obj_in, int value)
while (!Cy_SCB_SPI_IsTxComplete(obj->base)) {
// wait for the transmission to complete
}
// Wait until RX FIFO is filled from the serial register.
while (Cy_SCB_SPI_GetNumInRxFifo(obj->base) == 0) {
/* busy loop */
}
return Cy_SCB_SPI_Read(obj->base);
} else {
return (int)CY_SCB_SPI_RX_NO_DATA;
@ -387,6 +476,9 @@ int spi_master_block_write(spi_t *obj_in, const char *tx_buffer, int tx_length,
++rx_count;
}
}
// Delay at least 1.5 clock cycle, so that FIFO is filled with the last char
// and SCLK returns to idle state.
Cy_SysLib_DelayUs(obj->clk_delay);
// Read any remaining bytes from the fifo.
while (rx_count < rx_length) {
*rx_buffer++ = (char)Cy_SCB_SPI_Read(obj->base);

View File

@ -7955,7 +7955,7 @@
"device_has_remove": ["TRNG", "CRC"],
"macros_add": ["CY8C6347BZI_BLD53"],
"detect_code": ["6000"],
"hex_filename": "psoc63_m0_default_1.02.hex",
"hex_filename": "psoc63_m0_default_1.03.hex",
"post_binary_hook": {
"function": "PSOC6Code.complete"
},