From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from aseit003.allgon.net (mail.lgpallgon.com [193.235.198.4]) by ozlabs.org (Postfix) with ESMTP id 4663867A65 for ; Thu, 17 Mar 2005 23:54:09 +1100 (EST) From: Hans Schillstrom To: srinivas.surabhi@wipro.com In-Reply-To: References: Content-Type: multipart/mixed; boundary="=-vJ3lHk0zJxMFe9pvVAHg" Message-Id: <1111064009.13233.279.camel@hawk.allgon.net> Mime-Version: 1.0 Date: Thu, 17 Mar 2005 13:53:30 +0100 Cc: linuxppc-embedded@ozlabs.org Subject: RE: FW: LED driver List-Id: Linux on Embedded PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , --=-vJ3lHk0zJxMFe9pvVAHg Content-Type: text/plain Content-Transfer-Encoding: 7bit Hi, Thats right, but the original is for 2.4.2x. I'll attach the original status_led.c from Denx for you /Hans Wolfgang: Sorry about the missing copyright On Thu, 2005-03-17 at 13:47, srinivas.surabhi@wipro.com wrote: > Thanks a lot for your help. But in my sources I could not find > immap_cpm2.h file. There is immap_8260.h file, I don't know it is > similar to that of immap_cpum2.h. > > Can you send the immap_cpum2.h file please? > > I am working on kernel 2.4.20 > > -Thanks once again.. > SS > > -----Original Message----- > From: Hans Schillstrom [mailto:hans.schillstrom@pwav.com] > Sent: Thursday, March 17, 2005 3:17 PM > To: Srinivas Surabhi (WT01 - TELECOM SOLUTIONS) > Cc: linuxppc-embedded@ozlabs.org > Subject: Re: FW: LED driver > > Hi, > I have made a driver for our mpc8270 board > It is based upon Denx led_driver and made for 2.6 kernel > (See atached file) > > To control the leds you have to perfom some ioctl's > first create your devices > mknod led0 c 151 0 ... > > Example howto use it: > > void led_off( int file ) > { > if (ioctl(file,STATUSLED_SET,0) < 0) > perror("led off: "); > } > void led_blink( int file ) > { > if (ioctl(file,STATUSLED_SET,1) < 0) > perror("led blink: "); > } > void led_on( int file ) > { > if (ioctl(file,STATUSLED_SET,2) < 0) > perror("led on: "); > } > void led_per( int file, int period ) > { > if (ioctl(file,STATUSLED_PERIOD,period) < 0) > perror("led on: "); > } > > ... > > int led0 = open("/dev/led0",O_RDWR) > ... > led_blink(led0); /* turn on green LED */ > .. > /Hans > > > On Thu, 2005-03-17 at 06:15, srinivas.surabhi@wipro.com wrote: > > > > -----Original Message----- > > From: Srinivas Surabhi (WT01 - TELECOM SOLUTIONS) > > Sent: Thursday, March 17, 2005 7:53 AM > > To: linuxppc-embedded@ozlabs.org > > Subject: LED driver > > > > Hi, > > > > I am working on the MPC8270 board having connected GPIO 3 lines > > connected to 3 LEDs. So can any one help me in finding out the best > > solution of controlling the LEDs from MVlinux (kernel and user space) > or > > any pointers who has done it before. > > > > Thanks & Rgds > > SS > > > > > > > > > > Confidentiality Notice > > > > The information contained in this electronic message and any > attachments to this message are intended > > for the exclusive use of the addressee(s) and may contain confidential > or privileged information. If > > you are not the intended recipient, please notify the sender at Wipro > or Mailadmin@wipro.com immediately > > and destroy all copies of this message and any attachments. > > _______________________________________________ > > Linuxppc-embedded mailing list > > Linuxppc-embedded@ozlabs.org > > https://ozlabs.org/mailman/listinfo/linuxppc-embedded > > > > > > Confidentiality Notice > > The information contained in this electronic message and any attachments to this message are intended > for the exclusive use of the addressee(s) and may contain confidential or privileged information. If > you are not the intended recipient, please notify the sender at Wipro or Mailadmin@wipro.com immediately > and destroy all copies of this message and any attachments. > --=-vJ3lHk0zJxMFe9pvVAHg Content-Disposition: attachment; filename=status_led.c Content-Type: text/x-c; name=status_led.c; charset=iso-8859-1 Content-Transfer-Encoding: base64 DQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioNCiAqDQogKiAoQykgQ29weXJpZ2h0IDE5OTksIDIwMDAsIDIwMDEN CiAqIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcNCiAqIFdvbGZnYW5nIERlbmssIHdkQGRlbngu ZGUNCiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQogKg0KICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KDQovKg0K ICogU3RhbmRhcmQgaW4ga2VybmVsIG1vZHVsZXMNCiAqLw0KI2luY2x1ZGUgPGxpbnV4L2tlcm5l bC5oPg0KI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KI2luY2x1ZGUgPGxpbnV4L2RldmZzX2Zz X2tlcm5lbC5oPg0KI2luY2x1ZGUgPGxpbnV4L3ZlcnNpb24uaD4NCiNpbmNsdWRlIDxsaW51eC9p bml0Lmg+DQojaW5jbHVkZSA8bGludXgvcG9sbC5oPg0KI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2Nr Lmg+DQojaW5jbHVkZSA8YXNtL3R5cGVzLmg+DQojaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4NCiNp bmNsdWRlIDxhc20vOHh4X2ltbWFwLmg+DQojaW5jbHVkZSA8YXNtL21wYzh4eC5oPg0KDQojaW5j bHVkZSA8YXNtL3N0YXR1c19sZWQuaD4NCg0KI3VuZGVmCURFQlVHDQoNCiNpZmRlZglERUJVRw0K IyBkZWZpbmUgZGVidWdrKGZtdCxhcmdzLi4uKQlwcmludGsoZm10ICwjI2FyZ3MpDQojZWxzZQ0K IyBkZWZpbmUgZGVidWdrKGZtdCxhcmdzLi4uKQ0KI2VuZGlmDQoNCi8qDQogKiBEZWFsIHdpdGgg Q09ORklHX01PRFZFUlNJT05TDQogKi8NCiNpZiBDT05GSUdfTU9EVkVSU0lPTlM9PTENCi8qICMg ZGVmaW5lIE1PRFZFUlNJT05TICovDQojIGluY2x1ZGUgPGxpbnV4L21vZHZlcnNpb25zLmg+DQoj ZW5kaWYNCg0KLyoNCiAqIEZvciBjaGFyYWN0ZXIgZGV2aWNlcw0KICovDQojaW5jbHVkZSA8bGlu dXgvZnMuaD4JCS8qIGNoYXJhY3RlciBkZXZpY2UgZGVmaW5pdGlvbnMJKi8NCiNpbmNsdWRlIDxs aW51eC93cmFwcGVyLmg+CS8qIHdyYXBwZXIgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBmdXR1cmUg dmVyc2lvbnMgKi8NCg0KI2lmIGRlZmluZWQoQ09ORklHX0lWTVM4KSB8fCBkZWZpbmVkKENPTkZJ R19JVk1MMjQpDQpzdGF0aWMgREVDTEFSRV9XQUlUX1FVRVVFX0hFQUQoc3RhdHVzbGVkX3dhaXQp Ow0Kc3RhdGljIGNoYXIgbGFzdF9pb19zdGF0ZTsNCnN0YXRpYyB2b2xhdGlsZSBjaGFyIGNoYW5n ZWRfaW9fc3RhdGU7DQpzdGF0aWMgc3BpbmxvY2tfdCBzdGF0dXNsZWRfbG9jazsNCnN0YXRpYyBz dHJ1Y3QgdGltZXJfbGlzdCBpb190aW1lcjsNCnN0YXRpYyB2b2lkIHN0YXR1c19pb19wb2xsICh1 bnNpZ25lZCBsb25nIHBlcmlvZCk7DQpzdGF0aWMgaW50ICBzdGF0dXNfaW9fdGVzdCAodm9pZCk7 DQojZW5kaWYJLyogQ09ORklHX0lWTVM4LCBDT05GSUdfSVZNTDI0ICovDQoNCiNkZWZpbmUJTEVE X01BSk9SCTE1MQkvKiBSZXNlcnZlcmQgZm9yICJGcm9udCBwYW5lbCBMRURzIiAqLw0KDQojZGVm aW5lIERSSVZFUl9WRVJTSU9OCSIkUmV2aXNpb246IDEuMCAkIg0KDQpzdGF0aWMgdm9pZCBzdGF0 dXNsZWRfYmxpbmsgKHVuc2lnbmVkIGxvbmcgbWlub3IpOw0KDQovKg0KICogRGV2aWNlIERlY2xh cmF0aW9ucw0KICovDQoNCnR5cGVkZWYgc3RydWN0IHsNCgl1bnNpZ25lZCBsb25nCQltYXNrOw0K CWludAkJCXN0YXRlOw0KCWludAkJCXBlcmlvZDsNCglpbnQJCQlmbGFnczsNCglzdHJ1Y3QgdGlt ZXJfbGlzdAl0aW1lcjsNCn0gbGVkX2Rldl90Ow0KDQojZGVmaW5lCVNMX0ZMQUdfT1BFTgkxDQoN CmxlZF9kZXZfdCBsZWRfZGV2W10gPSB7DQogICAgewlTVEFUVVNfTEVEX0JJVCwNCglTVEFUVVNf TEVEX1NUQVRFLA0KCVNUQVRVU19MRURfUEVSSU9ELA0KCTAsDQoJeyBmdW5jdGlvbjogc3RhdHVz bGVkX2JsaW5rLCBkYXRhOiAwVUwgLyogbWlub3IgMCAqLyB9LA0KICAgIH0sDQojaWYgZGVmaW5l ZChTVEFUVVNfTEVEX0JJVDEpDQogICAgewlTVEFUVVNfTEVEX0JJVDEsDQoJU1RBVFVTX0xFRF9T VEFURTEsDQoJU1RBVFVTX0xFRF9QRVJJT0QxLA0KCTAsDQoJeyBmdW5jdGlvbjogc3RhdHVzbGVk X2JsaW5rLCBkYXRhOiAxVUwgLyogbWlub3IgMSAqLyB9LA0KICAgIH0sDQojZW5kaWYJLyogU1RB VFVTX0xFRF9CSVQxICovDQojaWYgZGVmaW5lZChTVEFUVVNfTEVEX0JJVDIpDQogICAgewlTVEFU VVNfTEVEX0JJVDIsDQoJU1RBVFVTX0xFRF9TVEFURTIsDQoJU1RBVFVTX0xFRF9QRVJJT0QyLA0K CTAsDQoJeyBmdW5jdGlvbjogc3RhdHVzbGVkX2JsaW5rLCBkYXRhOiAyVUwgLyogbWlub3IgMiAq LyB9LA0KICAgIH0sDQojZW5kaWYJLyogU1RBVFVTX0xFRF9CSVQyICovDQp9Ow0KDQojZGVmaW5l CU1BWF9MRURfREVWCShzaXplb2YobGVkX2Rldikvc2l6ZW9mKGxlZF9kZXZfdCkpDQoNCi8qDQog KiBPbiB0aGUgSVZNKiB3ZSBoYW5kbGUgMiBhZGRpdGlvbmFsIGRldmljZXMgd2l0aCB0aGlzIGRy aXZlcjoNCiAqIE1BWF9MRURfREVWKzAgPT4gIkludGVybG9jayBTd2l0Y2giIGFuZCAiRGV2aWNl IFJlc2V0IE1vbml0b3IiOg0KICoJCQlCb3RoIGFyZSBpbnB1dCBwaW5zLCB3aGljaCBhcmUgcG9s bGVkIHBlcmlvZGljYWxseSwNCiAqCQkJYW5kIHRoZSB1c2VyIGNhbiB3YWl0IHdpdGggc2VsZWN0 KCkgZm9yIGEgc3RhdHVzIGNoYW5nZS4NCiAqIE1BWF9MRURfREVWKzEgPT4gIkRldmljZSBSZXNl dCBFbmFibGUiLCBhbiBvdXRwdXQgZGV2aWNlIHdlIGNhbiBzZXQgb3IgcmVzZXQuDQogKi8NCiNp ZiBkZWZpbmVkKENPTkZJR19JVk1TOCkgfHwgZGVmaW5lZChDT05GSUdfSVZNTDI0KQ0KIyBkZWZp bmUgTUFYX0lPX0RFVgkyDQpzdGF0aWMgaW50IGlvX2Rldl9mbGFnc1tNQVhfSU9fREVWXSA9IHsg MCwgfTsJLyogYWRkaXRpb25hbCBJL08gZGV2aWNlcyAqLw0KI2Vsc2UNCiMgZGVmaW5lIE1BWF9J T19ERVYJMA0KI2VuZGlmCS8qIENPTkZJR19JVk1TOCwgQ09ORklHX0lWTUwyNCAqLw0KDQoNCnN0 YXRpYyB2b2xhdGlsZSBpbW1hcF90ICppbW1yID0gTlVMTDsNCg0KLyoNCiAqIFRoZSBuYW1lIGZv ciBvdXIgZGV2aWNlLCBhcyBpdCB3aWxsIGFwcGVhciBpbiAvcHJvYy9kZXZpY2VzDQogKi8NCiNk ZWZpbmUgREVWSUNFX05BTUUgInN0YXR1c19sZWQiDQoNCi8qDQogKiBQcm90b3R5cGVzDQogKi8N CnN0YXRpYyBpbnQgc3RhdHVzbGVkX2luaXQgKHZvaWQpIF9faW5pdDsNCnN0YXRpYyBpbnQgc3Rh dHVzbGVkX29wZW4oc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOw0Kc3RhdGljIGludCBz dGF0dXNsZWRfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKik7DQojIGlmIGRl ZmluZWQoQ09ORklHX0lWTVM4KSB8fCBkZWZpbmVkKENPTkZJR19JVk1MMjQpDQpzdGF0aWMgc3Np emVfdCBzdGF0dXNsZWRfcmVhZChzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNpemVfdCwgbG9mZl90 ICopOw0Kc3RhdGljIHVuc2lnbmVkIGludCBzdGF0dXNsZWRfcG9sbCAoc3RydWN0IGZpbGUgKiwg cG9sbF90YWJsZSAqKTsNCiMgZW5kaWYJLyogQ09ORklHX0lWTVM4LCBDT05GSUdfSVZNTDI0ICov DQppbnQgaW5pdF9tb2R1bGUodm9pZCk7DQp2b2lkIGNsZWFudXBfbW9kdWxlKHZvaWQpOw0KDQpz dGF0aWMgc3NpemVfdCBzdGF0dXNsZWRfaW9jdGwoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxl ICosDQoJCQkgICAgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBsb25nKTsNCg0Kc3RhdGljIHN0cnVj dCBmaWxlX29wZXJhdGlvbnMgc3RhdHVzbGVkX2ZvcHMgPSB7DQoJb3duZXI6CQlUSElTX01PRFVM RSwNCglvcGVuOgkJc3RhdHVzbGVkX29wZW4sDQoJcmVsZWFzZToJc3RhdHVzbGVkX3JlbGVhc2Us DQoJaW9jdGw6IAkJc3RhdHVzbGVkX2lvY3RsLA0KIyBpZiBkZWZpbmVkKENPTkZJR19JVk1TOCkg fHwgZGVmaW5lZChDT05GSUdfSVZNTDI0KQ0KCXJlYWQ6CQlzdGF0dXNsZWRfcmVhZCwNCglwb2xs OgkJc3RhdHVzbGVkX3BvbGwsDQojIGVuZGlmCS8qIENPTkZJR19JVk1TOCwgQ09ORklHX0lWTUwy NCAqLw0KfTsNCg0Kc3RhdGljIGludCBNYWpvcjsNCg0KLyoNCiAqIEluaXRpYWxpemUgdGhlIGRy aXZlciAtIFJlZ2lzdGVyIHRoZSBjaGFyYWN0ZXIgZGV2aWNlDQogKi8NCnN0YXRpYyBpbnQgX19p bml0IHN0YXR1c2xlZF9pbml0ICh2b2lkKQ0Kew0KCWludCBpOw0KDQoJaWYgKCFpbW1yKSB7CQkv KiBpbml0IENQTSBwdHIgKi8NCgkJdW5zaWduZWQgbG9uZyB2YWw7DQoNCgkJYXNtKCAibWZzcHIg JTAsNjM4IjogIj1yIih2YWwpIDogKTsNCgkJdmFsICY9IDB4RkZGRjAwMDA7DQoJCWltbXIgPSAo dm9sYXRpbGUgaW1tYXBfdCAqKXZhbDsNCgl9DQoNCgkvKg0KCSAqIFJlZ2lzdGVyIHRoZSBjaGFy YWN0ZXIgZGV2aWNlDQoJICovDQoJaWYgKChpID0gcmVnaXN0ZXJfY2hyZGV2KExFRF9NQUpPUiwg REVWSUNFX05BTUUsICZzdGF0dXNsZWRfZm9wcykpIDwgMCkgew0KCQlpbW1yID0gTlVMTDsNCgkJ cHJpbnRrKCJVbmFibGUgdG8gZ2V0IG1ham9yICVkIGZvciBzdGF0dXMgTEVEIGRyaXZlcjogcmM9 JWRcbiIsDQoJCQlMRURfTUFKT1IsIGkpOw0KCQlyZXR1cm4gKGkpOw0KCX0NCg0KCU1ham9yID0g TEVEX01BSk9SOw0KDQoJcHJpbnRrIChLRVJOX0lORk8NCgkJIlN0YXR1cyBMRUQgZHJpdmVyICIg RFJJVkVSX1ZFUlNJT04gIiBpbml0aWFsaXplZFxuIik7DQoNCglmb3IgKGk9MDsgaTxNQVhfTEVE X0RFVjsgKytpKSB7DQoJCWltbXItPlNUQVRVU19MRURfUEFSICY9IH4obGVkX2RldltpXS5tYXNr KTsNCiNpZmRlZiBTVEFUVVNfTEVEX09EUg0KCQlpbW1yLT5TVEFUVVNfTEVEX09EUiAmPSB+KGxl ZF9kZXZbaV0ubWFzayk7DQojZW5kaWYNCgkJaWYgKGxlZF9kZXZbaV0uc3RhdGUgPT0gU1RBVFVT X0xFRF9PTikgew0KCQkJI2lmIChTVEFUVVNfTEVEX0FDVElWRSA9PSAwKQkvKiBzdGFydCB3aXRo IExFRCBvbiAqLw0KCQkJaW1tci0+U1RBVFVTX0xFRF9EQVQgJj0gfihsZWRfZGV2W2ldLm1hc2sp Ow0KCQkJI2Vsc2UNCgkJCWltbXItPlNUQVRVU19MRURfREFUIHw9ICAgbGVkX2RldltpXS5tYXNr IDsNCgkJCSNlbmRpZg0KCQl9IGVsc2Ugew0KCQkJI2lmIChTVEFUVVNfTEVEX0FDVElWRSA9PSAw KQkvKiBzdGFydCB3aXRoIExFRCBvZmYgKi8NCgkJCWltbXItPlNUQVRVU19MRURfREFUIHw9ICAg bGVkX2RldltpXS5tYXNrIDsNCgkJCSNlbHNlDQoJCQlpbW1yLT5TVEFUVVNfTEVEX0RBVCAmPSB+ KGxlZF9kZXZbaV0ubWFzayk7DQoJCQkjZW5kaWYNCgkJfQ0KCQlpbW1yLT5TVEFUVVNfTEVEX0RJ UiB8PSBsZWRfZGV2W2ldLm1hc2s7DQoNCgkJc3RhdHVzbGVkX2JsaW5rKGkpOw0KCX0NCiNpZiBk ZWZpbmVkKENPTkZJR19JVk1MMjQpDQoJLyoNCgkgKiBDb25maWd1cmUgaW50ZXJsb2NrIHN3aXRj aCBwb3J0IGZvciBpbnB1dA0KCSAqLw0KCWltbXItPmltX2NwbS5jcF9wYnBhciAmPSB+KFNUQVRV U19JTE9DS19TV0lUQ0gpOw0KCWltbXItPmltX2NwbS5jcF9wYm9kciAmPSB+KFNUQVRVU19JTE9D S19TV0lUQ0gpOw0KCWltbXItPmltX2NwbS5jcF9wYmRpciAmPSB+KFNUQVRVU19JTE9DS19TV0lU Q0gpOw0KCQ0KI2VuZGlmCS8qIENPTkZJR19JVk1MMjQgKi8NCg0KI2lmIGRlZmluZWQoQ09ORklH X0lWTVM4KSB8fCBkZWZpbmVkKENPTkZJR19JVk1MMjQpDQoJLyoNCgkgKiBDb25maWd1cmUgZGV2 aWNlIHJlc2V0IG1vbml0b3IgcG9ydCBmb3IgaW5wdXQNCgkgKi8NCglpbW1yLT5pbV9pb3BvcnQu aW9wX3BjcGFyICY9IH4oU1RBVFVTX1JFU0VUX01PTik7DQoJaW1tci0+aW1faW9wb3J0LmlvcF9w Y3NvICAmPSB+KFNUQVRVU19SRVNFVF9NT04pOw0KCWltbXItPmltX2lvcG9ydC5pb3BfcGNkaXIg Jj0gfihTVEFUVVNfUkVTRVRfTU9OKTsNCgkvKg0KCSAqIENvbmZpZ3VyZSBkZXZpY2UgcmVzZXQg ZW5hYmxlIHBvcnQgZm9yIG91dHB1dA0KCSAqIEluaXRpYWxpemUgd2l0aCBsb3cgKDApIGxldmVs DQoJICovDQoJaW1tci0+aW1faW9wb3J0LmlvcF9wY3BhciAmPSB+KFNUQVRVU19SRVNFVF9FTkEp Ow0KCWltbXItPmltX2lvcG9ydC5pb3BfcGNzbyAgJj0gfihTVEFUVVNfUkVTRVRfRU5BKTsNCglp bW1yLT5pbV9pb3BvcnQuaW9wX3BjZGF0ICY9IH4oU1RBVFVTX1JFU0VUX0VOQSk7CS8qIHNldCAw ICAqLw0KCWltbXItPmltX2lvcG9ydC5pb3BfcGNkaXIgfD0gICBTVEFUVVNfUkVTRVRfRU5BIDsJ Lyogb3V0cHV0ICovDQoJLyoNCgkgKiBXZSB1c2UgdGhlIHNhbWUgZnVuY3Rpb24gKG9yaWdpbmFs bHkgZm9yIHRoZSBJTE9DSyBkZXZpY2Ugb25seSkNCgkgKiB0byBwb2xsIGJvdGggdGhlIElMT0NL IGFuZCBSRVNFVF9NT04gcG9ydHMNCgkgKi8NCglpb190aW1lci5mdW5jdGlvbiA9IHN0YXR1c19p b19wb2xsOw0KCWlvX3RpbWVyLmRhdGEgICAgID0gU1RBVFVTX0lMT0NLX1BFUklPRDsNCg0KCWxh c3RfaW9fc3RhdGUgPSAoY2hhcilzdGF0dXNfaW9fdGVzdCgpOw0KCWNoYW5nZWRfaW9fc3RhdGUg PSAwOw0KDQoJaW5pdF90aW1lcigmaW9fdGltZXIpOw0KCWlvX3RpbWVyLmV4cGlyZXMgPSBqaWZm aWVzICsgaW9fdGltZXIuZGF0YTsNCglhZGRfdGltZXIoJmlvX3RpbWVyKTsNCiNlbmRpZgkvKiBD T05GSUdfSVZNUzgsIENPTkZJR19JVk1MMjQgKi8NCg0KCXJldHVybiAoMCk7DQp9DQoNCi8qDQog KiBjYWxsZWQgd2hlbmV2ZXIgYSBwcm9jZXNzIGF0dGVtcHRzIHRvIG9wZW4gdGhlIGRldmljZQ0K ICovDQpzdGF0aWMgaW50IHN0YXR1c2xlZF9vcGVuIChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1 Y3QgZmlsZSAqZmlsZSkNCnsNCglpbnQgbWlub3IgID0gTUlOT1IoaW5vZGUtPmlfcmRldik7DQoN CglkZWJ1Z2sgKCJzdGF0dXNsZWRfb3BlbiglcCwlcCk6IG1pbm9yICVkXG4iLCBpbm9kZSwgZmls ZSwgbWlub3IpOw0KDQoJLyoNCgkgKiBBbGxvdyBmb3IgTUFYX0xFRF9ERVYgc3RhdHVzIExFRHMN CgkgKiBPbiBJVk1TOCBhbmQgSVZNTDI0OiBhbGxvdyBmb3IgYWRkaXRpb25hbCBJL08gZGV2aWNl cw0KCSAqLw0KCWlmIChtaW5vciA+PSBNQVhfTEVEX0RFViArIE1BWF9JT19ERVYpDQoJCXJldHVy biAoLUVOWElPKTsNCg0KCWlmICghaW1tcikNCgkJcmV0dXJuICgtRU5PREVWKTsNCg0KCS8qDQoJ ICogZXhjbHVzaXZlIG9wZW4gb25seQ0KCSAqLw0KCWlmIChtaW5vciA8IE1BWF9MRURfREVWKSB7 DQoJCWlmIChsZWRfZGV2W21pbm9yXS5mbGFncyAmIFNMX0ZMQUdfT1BFTikNCgkJCXJldHVybiAt RUJVU1k7DQoJCWxlZF9kZXZbbWlub3JdLmZsYWdzIHw9IFNMX0ZMQUdfT1BFTjsNCiNpZiBkZWZp bmVkKENPTkZJR19JVk1TOCkgfHwgZGVmaW5lZChDT05GSUdfSVZNTDI0KQ0KCX0gZWxzZSB7DQoJ CWludCBtID0gbWlub3IgLSBNQVhfTEVEX0RFVjsNCg0KCQlpZiAoaW9fZGV2X2ZsYWdzW21dICYg U0xfRkxBR19PUEVOKQ0KCQkJcmV0dXJuIC1FQlVTWTsNCgkJaW9fZGV2X2ZsYWdzW21dIHw9IFNM X0ZMQUdfT1BFTjsNCiNlbmRpZgkvKiBDT05GSUdfSVZNUzgsIENPTkZJR19JVk1MMjQgKi8NCgl9 DQoNCgkvKg0KCSAqIE1ha2Ugc3VyZSB0aGF0IHRoZSBtb2R1bGUgaXNuJ3QgcmVtb3ZlZCB3aGls ZQ0KCSAqIHRoZSBmaWxlIGlzIG9wZW4gYnkgaW5jcmVtZW50aW5nIHRoZSB1c2FnZSBjb3VudA0K CSAqLw0KCU1PRF9JTkNfVVNFX0NPVU5UOw0KDQoJZGVidWdrICgiTEVEX09QRU46IG1pbm9yICVk ICBkaXI9MHgleCAgcGFyPTB4JXggIG9kcj0weCV4ICBkYXQ9MHgleFxuIiwNCgkJbWlub3IsDQoJ CWltbXItPlNUQVRVU19MRURfRElSLCBpbW1yLT5TVEFUVVNfTEVEX1BBUiwNCgkJaW1tci0+U1RB VFVTX0xFRF9PRFIsIGltbXItPlNUQVRVU19MRURfREFUKTsNCg0KCXJldHVybiAwOw0KfQ0KDQoN Ci8qDQogKiBDYWxsZWQgd2hlbiBhIHByb2Nlc3MgY2xvc2VzIHRoZSBkZXZpY2UuDQogKiBEb2Vz bid0IGhhdmUgYSByZXR1cm4gdmFsdWUgaW4gdmVyc2lvbiAyLjAueCBiZWNhdXNlIGl0IGNhbid0 IGZhaWwsDQogKiBidXQgaW4gdmVyc2lvbiAyLjIueCBpdCBpcyBhbGxvd2VkIHRvIGZhaWwNCiAq Lw0Kc3RhdGljIGludCBzdGF0dXNsZWRfcmVsZWFzZSAoc3RydWN0IGlub2RlICppbm9kZSwgc3Ry dWN0IGZpbGUgKmZpbGUpDQp7DQoJaW50IG1pbm9yICA9IE1JTk9SKGlub2RlLT5pX3JkZXYpOw0K DQoJZGVidWdrICgic3RhdHVzbGVkX3JlbGVhc2UoJXAsJXApXG4iLCBpbm9kZSwgZmlsZSk7DQoN CglpZiAoIWltbXIpDQoJCXJldHVybiAoLUVOT0RFVik7DQoNCgkvKiBXZSdyZSBub3cgcmVhZHkg Zm9yIG91ciBuZXh0IGNhbGxlciAqLw0KCWlmIChtaW5vciA8IE1BWF9MRURfREVWKSB7DQoJCWxl ZF9kZXZbbWlub3JdLmZsYWdzICY9IH5TTF9GTEFHX09QRU47DQojaWYgZGVmaW5lZChDT05GSUdf SVZNUzgpIHx8IGRlZmluZWQoQ09ORklHX0lWTUwyNCkNCgl9IGVsc2Ugew0KCQlpbnQgbSA9IG1p bm9yIC0gTUFYX0xFRF9ERVY7DQoNCgkJaW9fZGV2X2ZsYWdzW21dICY9IH5TTF9GTEFHX09QRU47 DQojZW5kaWYJLyogQ09ORklHX0lWTVM4LCBDT05GSUdfSVZNTDI0ICovDQoJfQ0KDQoJTU9EX0RF Q19VU0VfQ09VTlQ7DQoNCglkZWJ1Z2sgKCJMRURfQ0xPU0U6IGRpcj0weCV4ICBwYXI9MHgleCAg b2RyPTB4JXggIGRhdD0weCV4XG4iLA0KCQlpbW1yLT5TVEFUVVNfTEVEX0RJUiwgaW1tci0+U1RB VFVTX0xFRF9QQVIsDQoJCWltbXItPlNUQVRVU19MRURfT0RSLCBpbW1yLT5TVEFUVVNfTEVEX0RB VCk7DQoNCglyZXR1cm4gMDsNCn0NCg0KI2lmIGRlZmluZWQoQ09ORklHX0lWTVM4KSB8fCBkZWZp bmVkKENPTkZJR19JVk1MMjQpDQovKg0KICogcmVhZCBlbnRyeSBwb2ludDoNCiAqIE9ubHkgc3Vw cG9ydGVkIGZvciBpbnRlcmxvY2sgc3dpdGNoIChyZXR1cm4gRU5YSU8gZm9yIExFRCBkZXZpY2Vz KS4NCiAqIEZvciB0aGUgaWxvY2sgc3dpdGNoLCBibG9jayB1bnRpbCB0aGUgbmV4dCBzdGF0dXMg Y2hhbmdlIGhhcHBlbnM7DQogKiB0aGVuIHJldHVybiBleGFjdGx5IG9uZSBieXRlIGNvbnRhaW5p bmcgdGhlIGN1cnJlbnQgc3RhdGUNCiAqICgweDAwIHN3aXRjaCBvcGVuLCAweDAxIHN3aXRjaCBj bG9zZWQpLg0KICovDQpzdGF0aWMgc3NpemVfdCBzdGF0dXNsZWRfcmVhZCAoc3RydWN0IGZpbGUg KmZpbGUsDQoJCQkgICAgICAgY2hhciAqYnVmLCBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcykN CnsNCglERUNMQVJFX1dBSVRRVUVVRSh3YWl0LCBjdXJyZW50KTsNCglpbnQgbWlub3IgPSBNSU5P UihmaWxlLT5mX2RlbnRyeS0+ZF9pbm9kZS0+aV9yZGV2KTsNCglpbnQgcmMgPSAwOw0KCWNoYXIg YzsNCg0KCWlmIChtaW5vciAhPSBNQVhfTEVEX0RFVikNCgkJcmV0dXJuICgtRU5YSU8pOw0KDQoJ YWRkX3dhaXRfcXVldWUoJnN0YXR1c2xlZF93YWl0LCAmd2FpdCk7DQoNCgljdXJyZW50LT5zdGF0 ZSA9IFRBU0tfSU5URVJSVVBUSUJMRTsNCg0KCWZvciAoOzspIHsNCgkJaWYgKGNoYW5nZWRfaW9f c3RhdGUpDQoJCQlicmVhazsNCg0KCQlpZiAoZmlsZS0+Zl9mbGFncyAmIE9fTk9OQkxPQ0spIHsN CgkJCXJjID0gLUVBR0FJTjsNCgkJCWdvdG8gT1VUOw0KCQl9DQoNCgkJaWYgKHNpZ25hbF9wZW5k aW5nKGN1cnJlbnQpKSB7DQoJCQlyYyA9IC1FUkVTVEFSVFNZUzsNCgkJCWdvdG8gT1VUOw0KCQl9 DQoNCgkJc2NoZWR1bGUgKCk7DQoJfQ0KDQoJc3Bpbl9sb2NrICgmc3RhdHVzbGVkX2xvY2spOw0K CWMgPSAoY2hhcilzdGF0dXNfaW9fdGVzdCAoKTsNCgljaGFuZ2VkX2lvX3N0YXRlID0gMDsNCglz cGluX3VubG9jayAoJnN0YXR1c2xlZF9sb2NrKTsNCg0KCS8qIENvcHkgb3V0ICovDQoJaWYgKChy YyA9IHZlcmlmeV9hcmVhKFZFUklGWV9XUklURSwgYnVmLCAxKSkgIT0gMCkgew0KCQlnb3RvIE9V VDsNCgl9DQoNCiAgICAgICAgcmMgPSAxOyBjb3B5X3RvX3VzZXIoKHZvaWQgKilidWYsICh2b2lk KikoJmMpLCByYyk7DQoNCk9VVDoNCiAgICAgICAgY3VycmVudC0+c3RhdGUgPSBUQVNLX1JVTk5J Tkc7DQogICAgICAgIHJlbW92ZV93YWl0X3F1ZXVlKCZzdGF0dXNsZWRfd2FpdCwgJndhaXQpOw0K DQoJcmV0dXJuIChyYyk7DQp9DQoNCnN0YXRpYyB1bnNpZ25lZCBpbnQgc3RhdHVzbGVkX3BvbGwg KHN0cnVjdCBmaWxlICpmaWxlLCBwb2xsX3RhYmxlICp3YWl0KQ0Kew0KCXBvbGxfd2FpdChmaWxl LCAmc3RhdHVzbGVkX3dhaXQsIHdhaXQpOw0KDQoJaWYgKGNoYW5nZWRfaW9fc3RhdGUpDQoJCXJl dHVybiBQT0xMSU4gfCBQT0xMUkROT1JNOw0KDQoJcmV0dXJuIDA7DQp9DQoNCiNlbmRpZgkvKiBD T05GSUdfSVZNUzgsIENPTkZJR19JVk1MMjQgKi8NCg0KLyoNCiAqIGlvY3RsIGVudHJ5IHBvaW50 Og0KICovDQoNCnN0YXRpYyBzc2l6ZV90IHN0YXR1c2xlZF9pb2N0bCAoDQoJc3RydWN0IGlub2Rl ICppbm9kZSwNCglzdHJ1Y3QgZmlsZSAqZmlsZSwNCgl1bnNpZ25lZCBpbnQgY21kLA0KCXVuc2ln bmVkIGxvbmcgYXJnKQ0Kew0KCWludCBtaW5vciAgPSBNSU5PUihpbm9kZS0+aV9yZGV2KTsNCglp bnQgbjsNCg0KCWlmICghaW1tcikNCgkJcmV0dXJuICgtRU5PREVWKTsNCg0KCWRlYnVnayAoIklP Q1RMOiBtaW5vcj0lZCwgY21kPSVzLCBhcmc9JWxkXG4iLA0KCQltaW5vciwNCgkJKGNtZCA9PSBT VEFUVVNMRURfR0VUICAgKSA/ICJTVEFUVVNMRURfR0VUIiAgICA6DQoJCShjbWQgPT0gU1RBVFVT TEVEX1NFVCAgICkgPyAiU1RBVFVTTEVEX1NFVCIgICAgOg0KCQkoY21kID09IFNUQVRVU0xFRF9Q RVJJT0QpID8gIlNUQVRVU0xFRF9QRVJJT0QiIDoNCgkJIjx1bmtub3duPiIsDQoJCWFyZyk7DQoN CglpZiAobWlub3IgPCBNQVhfTEVEX0RFVikgew0KCQlzd2l0Y2ggKGNtZCkgew0KCQljYXNlIFNU QVRVU0xFRF9HRVQ6DQoJCQlzd2l0Y2ggKGxlZF9kZXZbbWlub3JdLnN0YXRlKSB7DQoJCQljYXNl IFNUQVRVU19MRURfT0ZGOgluID0gIDA7DQoJCQkJCQlicmVhazsNCgkJCWNhc2UgU1RBVFVTX0xF RF9PTjoJbiA9IC0xOw0KCQkJCQkJYnJlYWs7DQoJCQlkZWZhdWx0OgkJbiA9IGxlZF9kZXZbbWlu b3JdLnBlcmlvZDsNCgkJCQkJCWJyZWFrOw0KCQkJfQ0KCQkJcmV0dXJuIChjb3B5X3RvX3VzZXIo KGludCAqKWFyZywgJm4sIHNpemVvZiAoaW50KSkpOw0KCQljYXNlIFNUQVRVU0xFRF9TRVQ6DQoJ CQlzd2l0Y2ggKGFyZykgew0KCQkJY2FzZSBTVEFUVVNfTEVEX09GRjoNCgkJCQlkZWJ1Z2sgKCJJ T0NUTDogd2FzICVkLCBzZXQgJWxkPU9GRlxuIiwNCgkJCQkJbGVkX2RldlttaW5vcl0uc3RhdGUs IGFyZyk7DQoJCQkJaWYgKGxlZF9kZXZbbWlub3JdLnN0YXRlID09IFNUQVRVU19MRURfQkxJTktJ TkcpDQoJCQkJCWRlbF90aW1lcigmbGVkX2RldlttaW5vcl0udGltZXIpOw0KCQkJCWxlZF9kZXZb bWlub3JdLnN0YXRlID0gYXJnOw0KI2lmIChTVEFUVVNfTEVEX0FDVElWRSA9PSAwKQ0KCQkJCWlt bXItPlNUQVRVU19MRURfREFUIHw9ICAgbGVkX2RldlttaW5vcl0ubWFzayA7DQojZWxzZQ0KCQkJ CWltbXItPlNUQVRVU19MRURfREFUICY9IH4obGVkX2RldlttaW5vcl0ubWFzayk7DQojZW5kaWYN CgkJCQlyZXR1cm4gKDApOw0KCQkJY2FzZSBTVEFUVVNfTEVEX09OOg0KCQkJCWRlYnVnayAoIklP Q1RMOiB3YXMgJWQsIHNldCAlbGQ9T05cbiIsDQoJCQkJCWxlZF9kZXZbbWlub3JdLnN0YXRlLCBh cmcpOw0KCQkJCWlmIChsZWRfZGV2W21pbm9yXS5zdGF0ZSA9PSBTVEFUVVNfTEVEX0JMSU5LSU5H KQ0KCQkJCQlkZWxfdGltZXIoJmxlZF9kZXZbbWlub3JdLnRpbWVyKTsNCgkJCQlsZWRfZGV2W21p bm9yXS5zdGF0ZSA9IGFyZzsNCiNpZiAoU1RBVFVTX0xFRF9BQ1RJVkUgPT0gMCkNCgkJCQlpbW1y LT5TVEFUVVNfTEVEX0RBVCAmPSB+KGxlZF9kZXZbbWlub3JdLm1hc2spOw0KI2Vsc2UNCgkJCQlp bW1yLT5TVEFUVVNfTEVEX0RBVCB8PSAgIGxlZF9kZXZbbWlub3JdLm1hc2sgOw0KI2VuZGlmDQoJ CQkJcmV0dXJuICgwKTsNCgkJCWNhc2UgU1RBVFVTX0xFRF9CTElOS0lORzoNCgkJCQlkZWJ1Z2sg KCJJT0NUTDogd2FzICVkLCBzZXQgJWxkPUJMSU5LSU5HXG4iLA0KCQkJCQlsZWRfZGV2W21pbm9y XS5zdGF0ZSwgYXJnKTsNCgkJCQlpZiAobGVkX2RldlttaW5vcl0uc3RhdGUgPT0gU1RBVFVTX0xF RF9CTElOS0lORykNCgkJCQkJcmV0dXJuICgwKTsNCgkJCQlsZWRfZGV2W21pbm9yXS5zdGF0ZSA9 IGFyZzsgLyogbXVzdCBjb21lIGZpcnN0ISAqLw0KCQkJCS8qIHN0YXJ0IGJsaW5raW5nICovDQoJ CQkJc3RhdHVzbGVkX2JsaW5rIChtaW5vcik7DQoJCQkJcmV0dXJuICgwKTsNCgkJCX0NCgkJCXJl dHVybiAoLUVJTlZBTCk7DQoJCWNhc2UgU1RBVFVTTEVEX1BFUklPRDoNCgkJCWxlZF9kZXZbbWlu b3JdLnBlcmlvZCA9IGFyZzsNCgkJCWRlYnVnayAoIklPQ1RMOiBzZXQgUEVSSU9EPSVkXG4iLCBh cmcpOw0KCQkJcmV0dXJuICgwKTsNCgkJfQ0KCX0NCiNpZiBkZWZpbmVkKENPTkZJR19JVk1TOCkg fHwgZGVmaW5lZChDT05GSUdfSVZNTDI0KQ0KCWVsc2Ugew0KCQlpbnQgbSA9IG1pbm9yIC0gTUFY X0xFRF9ERVY7DQoNCgkJc3dpdGNoIChtKSB7DQoJCWNhc2UgMDoJCS8qIEludGVybG9jayBzd2l0 Y2ggYW5kIGRldmljZSByZXNldCBtb25pdG9yICovDQoJCSAgICBpZiAoY21kID09IFNUQVRVU19T V0lUQ0hfR0VUKSB7DQoJCQluID0gc3RhdHVzX2lvX3Rlc3QgKCk7DQoJCQlyZXR1cm4gKGNvcHlf dG9fdXNlcigoaW50ICopYXJnLCAmbiwgc2l6ZW9mIChpbnQpKSk7DQoJCSAgICB9DQoJCSAgICBi cmVhazsNCgkJY2FzZSAxOgkJLyogRGV2aWNlIHJlc2V0IGVuYWJsZSBvdXRwdXQgKi8NCgkJICAg IGlmIChjbWQgPT0gU1RBVFVTX1JFU0VUX0dFVCkgew0KCQkJaWYgKGltbXItPmltX2lvcG9ydC5p b3BfcGNkYXQgJiBTVEFUVVNfUkVTRVRfRU5BKSB7DQoJCQkJbiA9IDE7DQoJCQl9IGVsc2Ugew0K CQkJCW4gPSAwOw0KCQkJfQ0KCQkJcmV0dXJuIChjb3B5X3RvX3VzZXIoKGludCAqKWFyZywgJm4s IHNpemVvZiAoaW50KSkpOw0KCQkgICAgfQ0KCQkgICAgaWYgKGNtZCA9PSBTVEFUVVNfUkVTRVRf U0VUKSB7DQoJCQlpZiAoYXJnID09IDApIHsNCgkJCQlpbW1yLT5pbV9pb3BvcnQuaW9wX3BjZGF0 ICY9IH5TVEFUVVNfUkVTRVRfRU5BOw0KCQkJfSBlbHNlIHsNCgkJCQlpbW1yLT5pbV9pb3BvcnQu aW9wX3BjZGF0IHw9ICBTVEFUVVNfUkVTRVRfRU5BOw0KCQkJfQ0KCQkJcmV0dXJuICgwKTsNCgkJ ICAgIH0NCgkJICAgIGJyZWFrOw0KCQlkZWZhdWx0Og0KCQkgICAgYnJlYWs7DQoJCX0NCgl9DQoj ZW5kaWYNCglyZXR1cm4gKC1FSU5WQUwpOw0KfQ0KDQojaWYgZGVmaW5lZChDT05GSUdfSVZNUzgp IHx8IGRlZmluZWQoQ09ORklHX0lWTUwyNCkNCi8qDQogKiBUZXN0IHN0YXR1cyBvZiBpbnRlcmxv Y2sgc3dpdGNoDQogKi8NCnN0YXRpYyBpbnQgIHN0YXR1c19pb190ZXN0ICh2b2lkKQ0Kew0KCWlu dCBuID0gMDsNCg0KI2lmIGRlZmluZWQoQ09ORklHX0lWTVM4KQ0KCXNwaW5fbG9jayAoJnN0YXR1 c2xlZF9sb2NrKTsNCglpZiAoKGltbXItPmltX3NpdV9jb25mLnNjX3NpcGVuZCAmIFNUQVRVU19J TE9DS19TV0lUQ0gpICE9IDApDQoJCW4gfD0gU1RBVFVTX0lMT0NLX0JJVDsNCglpbW1yLT5pbV9z aXVfY29uZi5zY19zaXBlbmQgPSBTVEFUVVNfSUxPQ0tfU1dJVENIOw0KCXNwaW5fdW5sb2NrICgm c3RhdHVzbGVkX2xvY2spOw0KI2VsaWYgZGVmaW5lZChDT05GSUdfSVZNTDI0KQ0KCWlmICgoaW1t ci0+aW1fY3BtLmNwX3BiZGF0ICYgU1RBVFVTX0lMT0NLX1NXSVRDSCkgIT0gMCkNCgkJbiB8PSBT VEFUVVNfSUxPQ0tfQklUOw0KI2VuZGlmDQoJaWYgKChpbW1yLT5pbV9pb3BvcnQuaW9wX3BjZGF0 ICYgU1RBVFVTX1JFU0VUX01PTikgIT0gMCkNCgkJbiB8PSBTVEFUVVNfUkVTRVRfTU9OX0JJVDsN CglyZXR1cm4gKG4pOw0KfQ0KDQpzdGF0aWMgdm9pZCBzdGF0dXNfaW9fcG9sbCAodW5zaWduZWQg bG9uZyBwZXJpb2QpDQp7DQoJY2hhciBjOw0KDQoJc3Bpbl9sb2NrICgmc3RhdHVzbGVkX2xvY2sp Ow0KCWMgPSAoY2hhcilzdGF0dXNfaW9fdGVzdCAoKTsNCglpZiAoYyAhPSBsYXN0X2lvX3N0YXRl KSB7DQoJCWxhc3RfaW9fc3RhdGUgPSBjOw0KCQljaGFuZ2VkX2lvX3N0YXRlID0gMTsNCgl9DQoJ c3Bpbl91bmxvY2sgKCZzdGF0dXNsZWRfbG9jayk7DQoNCglpZiAoY2hhbmdlZF9pb19zdGF0ZSkN CgkJd2FrZV91cF9pbnRlcnJ1cHRpYmxlKCZzdGF0dXNsZWRfd2FpdCk7DQoNCglpbml0X3RpbWVy KCZpb190aW1lcik7DQoJaW9fdGltZXIuZXhwaXJlcyA9IGppZmZpZXMgKyBpb190aW1lci5kYXRh Ow0KCWFkZF90aW1lcigmaW9fdGltZXIpOw0KfQ0KI2VuZGlmCS8qIENPTkZJR19JVk1TOCwgQ09O RklHX0lWTUwyNCAqLw0KDQoNCi8qDQogKiBUaW1lciBjb250cm9sbGVkIGJsaW5rIGVudHJ5IHBv aW50Lg0KICoNCiAqIFdlIGRlbGV0ZSB0aGUgdGltZXIgd2hlbiB0aGUgc3RhdHVzIGlzIGNoYW5n ZWQgdG8gbm9uLWJsaW5raW5nDQogKiBvciB3aGVuIHRoZSBtb2R1bGUgaXMgdW5sb2FkZWQuDQog Ki8NCnN0YXRpYyB2b2lkIHN0YXR1c2xlZF9ibGluayAodW5zaWduZWQgbG9uZyBtaW5vcikNCnsN Cgl1bnNpZ25lZCBsb25nIGZsYWdzOw0KDQoJaWYgKCFpbW1yKQ0KCQlyZXR1cm47DQoNCiAgICAg ICAgaWYgKGxlZF9kZXZbbWlub3JdLnN0YXRlICE9IFNUQVRVU19MRURfQkxJTktJTkcpIHsNCgkJ LyogZG9uJ3QgY2hhbmdlIGFueSBtb3JlICovDQoJCXJldHVybjsNCgl9DQoNCglpbW1yLT5TVEFU VVNfTEVEX0RBVCBePSBsZWRfZGV2W21pbm9yXS5tYXNrOw0KDQoJc2F2ZV9mbGFncyhmbGFncyk7 DQoJY2xpKCk7DQoNCglpbml0X3RpbWVyKCZsZWRfZGV2W21pbm9yXS50aW1lcik7DQoJbGVkX2Rl dlttaW5vcl0udGltZXIuZXhwaXJlcyA9IGppZmZpZXMgKyBsZWRfZGV2W21pbm9yXS5wZXJpb2Q7 DQoJYWRkX3RpbWVyKCZsZWRfZGV2W21pbm9yXS50aW1lcik7DQoNCglyZXN0b3JlX2ZsYWdzKGZs YWdzKTsNCn0NCg0KDQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogKioqKiBNb2R1 bGUgRGVjbGFyYXRpb25zICoqKioqDQogKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLw0K DQptb2R1bGVfaW5pdCAoc3RhdHVzbGVkX2luaXQpOw0KDQojaWZkZWYgTU9EVUxFDQovKg0KICog Q2xlYW51cCAtIHVucmVnaXN0ZXIgdGhlIGRyaXZlcg0KICovDQp2b2lkIHN0YXR1c2xlZF9jbGVh bnVwICh2b2lkKQ0Kew0KCWludCBtaW5vciwgcmV0Ow0KDQoJLyoNCgkgKiBDbGVhbnVwIHRpbWVy DQoJICovDQoJZm9yIChtaW5vcj0wOyBtaW5vcjxNQVhfTEVEX0RFVjsgKyttaW5vcikgew0KCQlp ZiAobGVkX2RldlttaW5vcl0uc3RhdGUgPT0gU1RBVFVTX0xFRF9CTElOS0lORykNCgkJCWRlbF90 aW1lcigmbGVkX2RldlttaW5vcl0udGltZXIpOw0KI2lmIChTVEFUVVNfTEVEX0FDVElWRSA9PSAw KQ0KCQlpbW1yLT5TVEFUVVNfTEVEX0RBVCB8PSAgIGxlZF9kZXZbbWlub3JdLm1hc2sgOw0KI2Vs c2UNCgkJaW1tci0+U1RBVFVTX0xFRF9EQVQgJj0gfihsZWRfZGV2W21pbm9yXS5tYXNrKTsNCiNl bmRpZg0KCQlsZWRfZGV2W21pbm9yXS5zdGF0ZSA9IFNUQVRVU19MRURfT0ZGOw0KCX0NCiNpZiBk ZWZpbmVkKENPTkZJR19JVk1TOCkgfHwgZGVmaW5lZChDT05GSUdfSVZNTDI0KQ0KCWRlbF90aW1l cigmaW9fdGltZXIpOw0KI2VuZGlmCS8qIENPTkZJR19JVk1TOCwgQ09ORklHX0lWTUwyNCAqLw0K DQoJLyoNCgkgKiBVbnJlZ2lzdGVyIHRoZSBkZXZpY2UNCgkgKi8NCglyZXQgPSB1bnJlZ2lzdGVy X2NocmRldiAoTWFqb3IsIERFVklDRV9OQU1FKTsNCg0KCS8qDQoJICogSWYgdGhlcmUncyBhbiBl cnJvciwgcmVwb3J0IGl0DQoJICovDQoJaWYgKHJldCA8IDApIHsNCgkJcHJpbnRrICgidW5yZWdp c3Rlcl9jaHJkZXY6IGVycm9yICVkXG4iLCByZXQpOw0KCX0NCn0NCg0KbW9kdWxlX2V4aXQgKHN0 YXR1c2xlZF9jbGVhbnVwKTsNCg0KI2VuZGlmCS8qIE1PRFVMRSAqLw0K --=-vJ3lHk0zJxMFe9pvVAHg Content-Disposition: attachment; filename=status_led.h Content-Type: text/x-h; name=status_led.h; charset=iso-8859-1 Content-Transfer-Encoding: base64 LyoNCiAqIChDKSBDb3B5cmlnaHQgMjAwMCwgMjAwMQ0KICogV29sZmdhbmcgRGVuaywgREVOWCBT b2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4NCiAqDQogKiBTZWUgZmlsZSBDUkVESVRT IGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcw0KICogcHJvamVjdC4N CiAqDQogKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yDQogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcw0KICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YNCiAqIHRoZSBMaWNlbnNlLCBvciAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KICoNCiAqIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KICogYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YN CiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUNCiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu DQogKg0KICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UNCiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdy aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUg UGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLA0KICogTUEgMDIxMTEtMTMwNyBVU0ENCiAqLw0KDQov Kg0KICogVGhpcyBjb2RlIGltcGxlbWVudHMgb25lIG9yIG1vcmUgc3RhdHVzIExFRHMgd2hpY2gg Y2FuIGJlIHN3aXRjaGVkDQogKiBvbiBvciBvZmYgb3Igc2V0IHRvIGJsaW5rIGF0IGEgc3BlY2lm aWVkIGZyZXF1ZW5jeS4NCiAqDQogKiBGb3IgaW5zdGFuY2UgeW91IGNhbiB1c2UgYSBzdGF0dXMg TEVEIHRvIHNpZ25hbCB0aGUgb3BlcmF0aW9uYWwNCiAqIHN0YXR1cyBvZiBhIHRhcmdldCB3aGlj aCB1c3VhbGx5IGJvb3RzIG92ZXIgdGhlIG5ldHdvcms7IHdoaWxlDQogKiBydW5uaW5nIGluIFBQ Q0Jvb3QsIHRoZSBzdGF0dXMgTEVEIGlzIGJsaW5raW5nLiBBcyBzb29uIGFzIGEgdmFsaWQNCiAq IEJPT1RQIHJlcGx5IG1lc3NhZ2UgaGFzIGJlZW4gcmVjZWl2ZWQsIHRoZSBMRUQgaXMgdHVybmVk IG9mZi4gVGhlDQogKiBMaW51eCBrZXJuZWwsIG9uY2UgaXQgaXMgcnVubmluZywgd2lsbCBzdGFy dCBibGlua2luZyB0aGUgTEVEDQogKiBhZ2Fpbiwgd2l0aCBhbm90aGVyIGZyZXF1ZW5jeS4NCiAq DQogKiBGb3IgSVZNKiBzeXN0ZW1zLCB0aGlzIGRyaXZlciBpcyBhbHNvIHVzZWQgdG8gcmVhZCBh bmQgd3JpdGUgc29tZQ0KICogc3BlY2lhbCBJL08gcG9ydHM6DQogKg0KICogLSBUaGUgIkludGVy bG9jayBTd2l0Y2giIGFuZCB0aGUgIkRldmljZSBSZXNldCBNb25pdG9yIiBhcmUgaW5wdXQNCiAq ICAgcG9ydHMgKG9uZSBiaXQgZWFjaCksIHdoaWNoIGFyZSB1c2VkIHRvIHNpZ25hbCBzdGF0dXMg Y2hhbmdlcyB0bw0KICogICB0aGUgYXBwbGljYXRpb25zLiBJdCBpcyBhIHJlcXVpcmVtZW50IHRv IGJlIGFibGUgdG8gd2FpdCBmb3INCiAqICAgc3VjaCBhIHN0YXR1cyBjaGFuZ2UgdXNpbmcgc2Vs ZWN0KCkuIFVuZm9ydHVuYXRlbHksIHRoZSBoYXJkd2FyZQ0KICogICBpcyBkaWZmZXJlbnQgZm9y IElWTVM4IGFuZCBJVk1MMjQsIGFuZCBub3QgYWxsIGlucHV0IHBpbnMgdXNlZA0KICogICBjYW4g Z2VuZXJhdGUgaW50ZXJydXB0cy4gU28gd2UgaGF2ZSB0byBwb2xsIHRoZSBwb3J0cw0KICogICBw ZXJpb2RpY2FsbHkgLSBzaWMhDQogKiAtICJEZXZpY2UgUmVzZXQgRW5hYmxlIiBpcyBhbiBvdXRw dXQgcG9ydCAoMSBiaXQpIHdoaWNoIGNhbiBiZSBzZXQNCiAqICAgYW5kIHJlc2V0IGZyb20gdGhl IGFwcGxpY2F0aW9uLiBPSywgZmluYWxseSB3ZSBoYXZlIHNvbWV0aGluZw0KICogICByZWFsbHkg c2ltcGxlLg0KICovDQoNCiNpZm5kZWYgX1BQQ19TVEFUVVNfTEVEX0gNCiNkZWZpbmUJX1BQQ19T VEFUVVNfTEVEX0gNCg0KI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPg0KI2luY2x1ZGUgPGFzbS9p b2N0bC5oPg0KDQovKiBpb2N0bCdzICovDQojZGVmaW5lIFNUQVRVU0xFRF9HRVQJCV9JT1IoJ0wn LCAxLCB1bnNpZ25lZCBsb25nKQ0KI2RlZmluZSBTVEFUVVNMRURfU0VUCQlfSU9XKCdMJywgMiwg dW5zaWduZWQgbG9uZykNCiNkZWZpbmUgU1RBVFVTTEVEX1BFUklPRAlfSU9XKCdMJywgMywgdW5z aWduZWQgbG9uZykNCiNkZWZpbmUJU1RBVFVTX1NXSVRDSF9HRVQJX0lPUignTCcsIDQsIHVuc2ln bmVkIGxvbmcpDQojZGVmaW5lIFNUQVRVU19SRVNFVF9HRVQJX0lPUignTCcsIDUsIHVuc2lnbmVk IGxvbmcpDQojZGVmaW5lIFNUQVRVU19SRVNFVF9TRVQJX0lPVygnTCcsIDYsIHVuc2lnbmVkIGxv bmcpDQoNCiNkZWZpbmUJU1RBVFVTX0xFRF9PRkYJCTANCiNkZWZpbmUgU1RBVFVTX0xFRF9CTElO S0lORwkxDQojZGVmaW5lIFNUQVRVU19MRURfT04JCTINCg0KI2lmZGVmIF9fS0VSTkVMX18NCg0K LyoqKioqICBUUU04eHhMICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8NCiNpZiAoZGVmaW5lZChDT05GSUdfVFFNOHh4TCkgJiYgIWRlZmlu ZWQoQ09ORklHX0VUWDA5NCkpDQojIGRlZmluZSBTVEFUVVNfTEVEX1BBUgkJaW1fY3BtLmNwX3Bi cGFyDQojIGRlZmluZSBTVEFUVVNfTEVEX0RJUgkJaW1fY3BtLmNwX3BiZGlyDQojIGRlZmluZSBT VEFUVVNfTEVEX09EUgkJaW1fY3BtLmNwX3Bib2RyDQojIGRlZmluZSBTVEFUVVNfTEVEX0RBVAkJ aW1fY3BtLmNwX3BiZGF0DQoNCiMgZGVmaW5lIFNUQVRVU19MRURfQklUCQkweDAwMDAwMDAxDQoj IGRlZmluZSBTVEFUVVNfTEVEX1BFUklPRAkoMiAqIEhaKQ0KIyBkZWZpbmUgU1RBVFVTX0xFRF9T VEFURQlTVEFUVVNfTEVEX0JMSU5LSU5HDQoNCiMgZGVmaW5lIFNUQVRVU19MRURfQUNUSVZFCTEJ CS8qIExFRCBvbiBmb3IgYml0ID09IDEJKi8NCg0KIyBkZWZpbmUgU1RBVFVTX0xFRF9CT09UCTAJ CS8qIExFRCAwIHVzZWQgZm9yIGJvb3Qgc3RhdHVzICovDQoNCi8qKioqKiAgRVRYXzA5NCAgKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQoj ZWxpZiBkZWZpbmVkKENPTkZJR19FVFgwOTQpDQoNCiMgZGVmaW5lIFNUQVRVU19MRURfUEFSCQlp bV9pb3BvcnQuaW9wX3BkcGFyDQojIGRlZmluZSBTVEFUVVNfTEVEX0RJUgkJaW1faW9wb3J0Lmlv cF9wZGRpcg0KIyB1bmRlZiAgU1RBVFVTX0xFRF9PRFINCiMgZGVmaW5lIFNUQVRVU19MRURfREFU CQlpbV9pb3BvcnQuaW9wX3BkZGF0DQoNCiMgZGVmaW5lIFNUQVRVU19MRURfQklUCQkweDAwMDAw MDAxDQojIGRlZmluZSBTVEFUVVNfTEVEX1BFUklPRAkoMiAqIEhaKQ0KIyBkZWZpbmUgU1RBVFVT X0xFRF9TVEFURQlTVEFUVVNfTEVEX0JMSU5LSU5HDQoNCiMgZGVmaW5lIFNUQVRVU19MRURfQUNU SVZFCTAJCS8qIExFRCBvbiBmb3IgYml0ID09IDAJKi8NCg0KIyBkZWZpbmUgU1RBVFVTX0xFRF9C T09UCTAJCS8qIExFRCAwIHVzZWQgZm9yIGJvb3Qgc3RhdHVzICovDQoNCi8qKioqKiAgSVZNUzgg ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovDQojZWxpZiBkZWZpbmVkKENPTkZJR19JVk1TOCkNCg0KIyBkZWZpbmUgU1RBVFVTX0xFRF9Q QVIJCWltX2NwbS5jcF9wYnBhcg0KIyBkZWZpbmUgU1RBVFVTX0xFRF9ESVIJCWltX2NwbS5jcF9w YmRpcg0KIyBkZWZpbmUgU1RBVFVTX0xFRF9PRFIJCWltX2NwbS5jcF9wYm9kcg0KIyBkZWZpbmUg U1RBVFVTX0xFRF9EQVQJCWltX2NwbS5jcF9wYmRhdA0KDQojIGRlZmluZSBTVEFUVVNfTEVEX0JJ VAkJMHgwMDAwMDAxMAkvKiBMRUQgMCBpcyBvbiBQQi4yNwkqLw0KIyBkZWZpbmUgU1RBVFVTX0xF RF9QRVJJT0QJKDEgKiBIWikNCiMgZGVmaW5lIFNUQVRVU19MRURfU1RBVEUJU1RBVFVTX0xFRF9P RkYNCiMgZGVmaW5lIFNUQVRVU19MRURfQklUMQkweDAwMDAwMDIwCS8qIExFRCAxIGlzIG9uIFBC LjI2CSovDQojIGRlZmluZSBTVEFUVVNfTEVEX1BFUklPRDEJKDEgKiBIWikNCiMgZGVmaW5lIFNU QVRVU19MRURfU1RBVEUxCVNUQVRVU19MRURfT0ZGDQovKiBJREUgTEVEIHVzYWJsZSBmb3Igb3Ro ZXIgcHVycG9zZXMsIHRvbyAqLw0KIyBkZWZpbmUgU1RBVFVTX0xFRF9CSVQyCTB4MDAwMDAwMDgJ LyogTEVEIDIgaXMgb24gUEIuMjgJKi8NCiMgZGVmaW5lIFNUQVRVU19MRURfUEVSSU9EMgkoMSAq IEhaKQ0KIyBkZWZpbmUgU1RBVFVTX0xFRF9TVEFURTIJU1RBVFVTX0xFRF9PRkYNCg0KIyBkZWZp bmUgU1RBVFVTX0xFRF9BQ1RJVkUJMQkJLyogTEVEIG9uIGZvciBiaXQgPT0gMQkqLw0KDQojIGRl ZmluZSBTVEFUVVNfTEVEX1lFTExPVwkwDQojIGRlZmluZSBTVEFUVVNfTEVEX0dSRUVOCTENCiMg ZGVmaW5lIFNUQVRVU19MRURfQk9PVAkyCQkvKiBJREUgTEVEIHVzZWQgZm9yIGJvb3Qgc3RhdHVz ICovDQoNCiMgZGVmaW5lIFNUQVRVU19JTE9DS19CSVQJMHgwMQ0KIyBkZWZpbmUgU1RBVFVTX1JF U0VUX01PTl9CSVQJMHgwMg0KDQojIGRlZmluZSBTVEFUVVNfSUxPQ0tfU1dJVENICTB4MDA4MDAw MDAJLyogSUxPQ0sgc3dpdGNoIGluIElSUTQJKi8NCg0KIyBkZWZpbmUgU1RBVFVTX0lMT0NLX1BF UklPRAkoSFogLyAxMCkJLyogYWJvdXQgZXZlcnkgMTAwIG1zCSovDQoNCiMgZGVmaW5lIFNUQVRV U19SRVNFVF9NT04JMHgwMDA4CQkvKiBSZXNldCBNb24uIG9uIFBDLjEyCSovDQoJCQkJCQkvKiBw b2xsZWQgd2l0aCBJTE9DSwkqLw0KIyBkZWZpbmUgU1RBVFVTX1JFU0VUX0VOQQkweDAwMDQJCS8q IFJlc2V0IGVuYWJsZSAgUEMuMTMJKi8NCg0KLyoqKioqICBJVk1MMjQgICoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiNlbGlmIGRlZmlu ZWQoQ09ORklHX0lWTUwyNCkNCg0KIyBkZWZpbmUgU1RBVFVTX0xFRF9QQVIJCWltX2NwbS5jcF9w YnBhcg0KIyBkZWZpbmUgU1RBVFVTX0xFRF9ESVIJCWltX2NwbS5jcF9wYmRpcg0KIyBkZWZpbmUg U1RBVFVTX0xFRF9PRFIJCWltX2NwbS5jcF9wYm9kcg0KIyBkZWZpbmUgU1RBVFVTX0xFRF9EQVQJ CWltX2NwbS5jcF9wYmRhdA0KDQojIGRlZmluZSBTVEFUVVNfTEVEX0JJVAkJMHgwMDAwMDAxMA0K IyBkZWZpbmUgU1RBVFVTX0xFRF9QRVJJT0QJKDEgKiBIWikNCiMgZGVmaW5lIFNUQVRVU19MRURf U1RBVEUJU1RBVFVTX0xFRF9PRkYNCiMgZGVmaW5lIFNUQVRVU19MRURfQklUMQkweDAwMDAwMDIw DQojIGRlZmluZSBTVEFUVVNfTEVEX1BFUklPRDEJKDEgKiBIWikNCiMgZGVmaW5lIFNUQVRVU19M RURfU1RBVEUxCVNUQVRVU19MRURfT0ZGDQovKiBJREUgTEVEIHVzYWJsZSBmb3Igb3RoZXIgcHVy cG9zZXMsIHRvbyAqLw0KIyBkZWZpbmUgU1RBVFVTX0xFRF9CSVQyCTB4MDAwMDAwMDgJLyogTEVE IDIgaXMgb24gUEIuMjgJKi8NCiMgZGVmaW5lIFNUQVRVU19MRURfUEVSSU9EMgkoMSAqIEhaKQ0K IyBkZWZpbmUgU1RBVFVTX0xFRF9TVEFURTIJU1RBVFVTX0xFRF9PRkYNCg0KIyBkZWZpbmUgU1RB VFVTX0xFRF9BQ1RJVkUJMQkJLyogTEVEIG9uIGZvciBiaXQgPT0gMQkqLw0KDQojIGRlZmluZSBT VEFUVVNfTEVEX1lFTExPVwkwDQojIGRlZmluZSBTVEFUVVNfTEVEX0dSRUVOCTENCiMgZGVmaW5l IFNUQVRVU19MRURfQk9PVAkyCQkvKiBJREUgTEVEIHVzZWQgZm9yIGJvb3Qgc3RhdHVzICovDQoN CiMgZGVmaW5lIFNUQVRVU19JTE9DS19CSVQJMHgwMQ0KIyBkZWZpbmUgU1RBVFVTX1JFU0VUX01P Tl9CSVQJMHgwMg0KDQojIGRlZmluZSBTVEFUVVNfSUxPQ0tfU1dJVENICTB4MDAwMDQwMDAJLyog SUxPQ0sgaXMgb24gUEIuMTcJKi8NCg0KIyBkZWZpbmUgU1RBVFVTX0lMT0NLX1BFUklPRAkoSFog LyAxMCkJLyogYWJvdXQgZXZlcnkgMTAwIG1zCSovDQoNCiMgZGVmaW5lIFNUQVRVU19SRVNFVF9N T04JMHgwMDA4CQkvKiBSZXNldCBNb24uIG9uIFBDLjEyCSovDQoJCQkJCQkvKiBwb2xsZWQgd2l0 aCBJTE9DSwkqLw0KIyBkZWZpbmUgU1RBVFVTX1JFU0VUX0VOQQkweDAwMDQJCS8qIFJlc2V0IGVu YWJsZSAgUEMuMTMJKi8NCg0KLyoqKioqICBQQ1UgRSAgYW5kICBDQ00gICoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiNlbGlmIGRlZmluZWQoQ09ORklH X1BDVV9FKSB8fCBkZWZpbmVkKENPTkZJR19DQ00pDQoNCiMgZGVmaW5lIFNUQVRVU19MRURfUEFS CQlpbV9jcG0uY3BfcGJwYXINCiMgZGVmaW5lIFNUQVRVU19MRURfRElSCQlpbV9jcG0uY3BfcGJk aXINCiMgdW5kZWYgIFNUQVRVU19MRURfT0RSCQlpbV9jcG0uY3BfcGJvZHINCiMgZGVmaW5lIFNU QVRVU19MRURfREFUCQlpbV9jcG0uY3BfcGJkYXQNCg0KIyBkZWZpbmUgU1RBVFVTX0xFRF9CSVQJ CTB4MDAwMTAwMDAJLyogZ3JlZW4gTEVEIGlzIG9uIFBCLjE1ICovDQojIGRlZmluZSBTVEFUVVNf TEVEX1BFUklPRAkoMiAqIEhaKQ0KIyBkZWZpbmUgU1RBVFVTX0xFRF9TVEFURQlTVEFUVVNfTEVE X0JMSU5LSU5HDQojIGRlZmluZSBTVEFUVVNfTEVEX0JJVDEJMHgwMDAyMDAwMAkvKiAgcmVkICBM RUQgaXMgb24gUEIuMTQgKi8NCiMgZGVmaW5lIFNUQVRVU19MRURfUEVSSU9EMQkoMSAqIEhaKQ0K IyBkZWZpbmUgU1RBVFVTX0xFRF9TVEFURTEJU1RBVFVTX0xFRF9PRkYNCg0KIyBkZWZpbmUgU1RB VFVTX0xFRF9BQ1RJVkUJMQkJLyogTEVEIG9uIGZvciBiaXQgPT0gMQkqLw0KDQojIGRlZmluZSBT VEFUVVNfTEVEX0JPT1QJMAkJLyogTEVEIDAgdXNlZCBmb3IgYm9vdCBzdGF0dXMgKi8NCiMgZGVm aW5lIFNUQVRVU19MRURfR1JFRU4JU1RBVFVTX0xFRF9CT09UDQojIGRlZmluZSBTVEFUVVNfTEVE X1JFRAkJMQ0KDQovKioqKiogIExBTlRFQyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KI2VsaWYgZGVmaW5lZChDT05GSUdfTEFOVEVD KQ0KDQojIGRlZmluZSBTVEFUVVNfTEVEX1BBUgkJaW1faW9wb3J0LmlvcF9wZHBhcg0KIyBkZWZp bmUgU1RBVFVTX0xFRF9ESVIJCWltX2lvcG9ydC5pb3BfcGRkaXINCiMgdW5kZWYgIFNUQVRVU19M RURfT0RSDQojIGRlZmluZSBTVEFUVVNfTEVEX0RBVAkJaW1faW9wb3J0LmlvcF9wZGRhdA0KDQoj IGRlZmluZSBTVEFUVVNfTEVEX0JJVAkJMHgwODAwDQojIGRlZmluZSBTVEFUVVNfTEVEX1BFUklP RAkoSFogLyA0KQ0KIyBkZWZpbmUgU1RBVFVTX0xFRF9TVEFURQlTVEFUVVNfTEVEX0JMSU5LSU5H DQoNCiMgZGVmaW5lIFNUQVRVU19MRURfQUNUSVZFCTEJCS8qIExFRCBvbiBmb3IgYml0ID09IDAg Ki8NCg0KIyBkZWZpbmUgU1RBVFVTX0xFRF9CT09UCTAJCS8qIExFRCAwIHVzZWQgZm9yIGJvb3Qg c3RhdHVzICovDQoNCi8qKioqKiAgSUNVODYyICAgKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQojZWxpZiBkZWZpbmVkKENPTkZJR19JQ1U4 NjIpDQoNCiMgZGVmaW5lIFNUQVRVU19MRURfUEFSCQlpbV9pb3BvcnQuaW9wX3BhcGFyDQojIGRl ZmluZSBTVEFUVVNfTEVEX0RJUgkJaW1faW9wb3J0LmlvcF9wYWRpcg0KIyBkZWZpbmUgU1RBVFVT X0xFRF9PRFIJCWltX2lvcG9ydC5pb3BfcGFvZHINCiMgZGVmaW5lIFNUQVRVU19MRURfREFUCQlp bV9pb3BvcnQuaW9wX3BhZGF0DQoNCiMgZGVmaW5lIFNUQVRVU19MRURfQklUCQkweDQwMDAJCS8q IExFRCAwIGlzIG9uIFBBLjEgKi8NCiMgZGVmaW5lIFNUQVRVU19MRURfUEVSSU9ECSgyICogSFop DQojIGRlZmluZSBTVEFUVVNfTEVEX1NUQVRFCVNUQVRVU19MRURfQkxJTktJTkcNCiMgZGVmaW5l IFNUQVRVU19MRURfQklUMQkweDEwMDAJCS8qIExFRCAxIGlzIG9uIFBBLjMgKi8NCiMgZGVmaW5l IFNUQVRVU19MRURfUEVSSU9EMQkoMSAqIEhaKQ0KIyBkZWZpbmUgU1RBVFVTX0xFRF9TVEFURTEJ U1RBVFVTX0xFRF9PRkYNCg0KIyBkZWZpbmUgU1RBVFVTX0xFRF9BQ1RJVkUJMQkJLyogTEVEIG9u IGZvciBiaXQgPT0gMQkqLw0KDQojIGRlZmluZSBTVEFUVVNfTEVEX0JPT1QJMAkJLyogTEVEIDAg dXNlZCBmb3IgYm9vdCBzdGF0dXMgKi8NCg0KLyoqKioqICBEQUI0SyAgICAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi8qIFNUQVRVU19M RURfWFhYcyBhcmUgZGVmaW5lZCBpbiBhcmNoL3BwYy9wbGF0Zm9ybXMvZGFiNGsuaCAgICAgICAg ICAgICovDQojZWxpZiBkZWZpbmVkKENPTkZJR19EQUI0SykNCg0KDQovKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Lw0KI2VsaWYgZGVmaW5lZChDT05GSUdfUkNCODI3MCkNCiMgZGVmaW5lIFNUQVRVU19MRURfUEFS CQlpbV9pb3BvcnQuaW9wX3BwYXJjDQojIGRlZmluZSBTVEFUVVNfTEVEX0RJUgkJaW1faW9wb3J0 LmlvcF9wZGlyYw0KIyBkZWZpbmUgU1RBVFVTX0xFRF9EQVQJCWltX2lvcG9ydC5pb3BfcGRhdGMN CiMgdW5kZWYgU1RBVFVTX0xFRF9PRFINCg0KIyBkZWZpbmUgU1RBVFVTX0xFRF9CSVQJCTB4MjAw MDAwMDAJLyogTEVEIDAgaXMgb24gUEMuMglPUEVSQVRFX0xFRCAqLw0KIyBkZWZpbmUgU1RBVFVT X0xFRF9QRVJJT0QJKEhaKQ0KIyBkZWZpbmUgU1RBVFVTX0xFRF9TVEFURQlTVEFUVVNfTEVEX0JM SU5LSU5HDQoNCiMgZGVmaW5lIFNUQVRVU19MRURfQklUMQkweDEwMDAwMDAwCS8qIExFRCAxIGlz IG9uIFBDLjMJQUxBUk1fTEVEICAgKi8NCiMgZGVmaW5lIFNUQVRVU19MRURfUEVSSU9EMQkoSFop DQojIGRlZmluZSBTVEFUVVNfTEVEX1NUQVRFMQlTVEFUVVNfTEVEX09ODQoNCiMgZGVmaW5lIFNU QVRVU19MRURfQklUMgkweDA4MDAwMDAwCS8qIExFRCAyIGlzIG9uIFBDLjQJQk9PVF9MRUQgICAg Ki8NCiMgZGVmaW5lIFNUQVRVU19MRURfUEVSSU9EMgkoSFopDQojIGRlZmluZSBTVEFUVVNfTEVE X1NUQVRFMglTVEFUVVNfTEVEX09GRg0KDQojIGRlZmluZSBTVEFUVVNfTEVEX0FDVElWRQkwCQkv KiBMRUQgb24gZm9yIGJpdCA9PSAxCSovDQojIGRlZmluZSBTVEFUVVNfTEVEX0JPT1QJMgkJLyog TEVEIDAgdXNlZCBmb3IgYm9vdCBzdGF0dXMgKi8NCg0KI2RlZmluZSBQQ01DSUFfTEVECQkwDQoj ZGVmaW5lIFNUQVRVU19MRUQJCTENCiNkZWZpbmUgRlJPTlRfTEVECQkyDQoNCiNlbHNlDQojIGVy cm9yIFN0YXR1cyBMRUQgY29uZmlndXJhdGlvbiBtaXNzaW5nDQojZW5kaWYNCg0Kdm9pZCBzdGF0 dXNfbGVkX3RpY2sgKHVuc2lnbmVkIGxvbmcgdGltZXN0YW1wKTsNCnZvaWQgc3RhdHVzX2xlZF9z ZXQgIChpbnQgc3RhdGUpOw0KDQojZW5kaWYJLyogX19LRVJORUxfXyAqLw0KDQojZW5kaWYJLyog X1BQQ19TVEFUVVNfTEVEX0ggKi8NCg== --=-vJ3lHk0zJxMFe9pvVAHg--