From owner-freebsd-embedded@FreeBSD.ORG Wed Apr 23 14:16:10 2014 Return-Path: Delivered-To: freebsd-embedded@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3CD209BE; Wed, 23 Apr 2014 14:16:10 +0000 (UTC) Received: from mail-we0-x230.google.com (mail-we0-x230.google.com [IPv6:2a00:1450:400c:c03::230]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 996FD1B81; Wed, 23 Apr 2014 14:16:09 +0000 (UTC) Received: by mail-we0-f176.google.com with SMTP id x48so923060wes.35 for ; Wed, 23 Apr 2014 07:16:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:cc:content-type; bh=H3vgpG4Y/kL2NTtOMeEBJkasgZ6mrLoJpoCBzcUA40Q=; b=BwMhlnTvHsBbhPwpb/9OajxgA+gq8f8QUpb26zu5Z2vqOrz6F1XncoZx3hknBQ27Rc SHmJO0iDcXukUNIcwv9xHvxB+OeCGv3B6uXNmIsARGN2skklv9V2Ol8lbudHlJcLY1zj AerFPbQNeiXoLV8XNtLzuKGSFL9y/W3AuKCGY+XB+ndknYRmMX6gP6EA40W9qR2vQL3e UP0rNgcZwkDyKdfwq1RUPrpi2t5U+PH4WyBY6E8AOIzURZMMA/QDO2yFaRN0KmssOlVd 6NJIH0XUUdFEYb45fsBGvlh4d6BN6tJhFyaEYrZ3Ygfz5uBjku0+/eM4WhnPdxePAr3Y 6sPA== MIME-Version: 1.0 X-Received: by 10.180.24.72 with SMTP id s8mr2082927wif.20.1398262567895; Wed, 23 Apr 2014 07:16:07 -0700 (PDT) Received: by 10.216.168.194 with HTTP; Wed, 23 Apr 2014 07:16:07 -0700 (PDT) Date: Wed, 23 Apr 2014 11:16:07 -0300 Message-ID: Subject: Fix gpio specifiers decoding (respect #gpio-cells) From: Luiz Otavio O Souza To: "freebsd-embedded@freebsd.org" Content-Type: multipart/mixed; boundary=f46d0438933faa55ca04f7b65f6b Cc: Nathan Whitehorn X-BeenThere: freebsd-embedded@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: Dedicated and Embedded Systems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 23 Apr 2014 14:16:10 -0000 --f46d0438933faa55ca04f7b65f6b Content-Type: text/plain; charset=UTF-8 I've been working to reduce the changes we need to decode a linux DTS file (from the GPIO point of view). The attached patch now respects the GPIO controller #gpio-cells (which previously was only able to decode gpio specifiers if #gpio-cells = 3). This now make possible read linux like gpio specifiers (#gpio-cells = 2) without any change to code. Following linux, it also adds a new ofw_bus method that allows the GPIO controller to implement its own mapping to gpio specifier, allowing the specifier to be GPIO controller specific (rk30xx_gpio.c comes to my mind...). This patch also passes the gpio specifier flag as an ivar variable which is visible to child that can now act upon. Thoughts ? Luiz --f46d0438933faa55ca04f7b65f6b Content-Type: text/plain; charset=US-ASCII; name="gpio-cells.diff" Content-Disposition: attachment; filename="gpio-cells.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hucp8oo10 SW5kZXg6IHN5cy9kZXYvZ3Bpby9ncGlvYnVzdmFyLmgKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL2Rldi9n cGlvL2dwaW9idXN2YXIuaAkocmV2aXNpb24gMjY0NTUwKQorKysgc3lzL2Rldi9ncGlvL2dwaW9i dXN2YXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsMTAgKzYwLDEwIEBACiAJaW50CQkqc2NfcGlu c19tYXBwZWQ7IC8qIG1hcmsgbWFwcGVkIHBpbnMgKi8KIH07CiAKLQogc3RydWN0IGdwaW9idXNf aXZhcgogewogCXVpbnQzMl90CW5waW5zOwkvKiBwaW5zIHRvdGFsICovCisJdWludDMyX3QJKmZs YWdzOwkvKiBwaW5zIGZsYWdzICovCiAJdWludDMyX3QJKnBpbnM7CS8qIHBpbnMgbWFwICovCiB9 OwogCkluZGV4OiBzeXMvZGV2L2dwaW8vb2Z3X2dwaW9idXMuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMv ZGV2L2dwaW8vb2Z3X2dwaW9idXMuYwkocmV2aXNpb24gMjY0NTUwKQorKysgc3lzL2Rldi9ncGlv L29md19ncGlvYnVzLmMJKHdvcmtpbmcgY29weSkKQEAgLTgzLDEwICs4MywzNyBAQAogfQogCiBz dGF0aWMgaW50CitvZndfZ3Bpb2J1c19hbGxvY19pdmFycyhzdHJ1Y3QgZ3Bpb2J1c19pdmFyICpk aW5mbykKK3sKKworCS8qIEFsbG9jYXRlIHBpbnMgYW5kIGZsYWdzIG1lbW9yeS4gKi8KKwlkaW5m by0+cGlucyA9IG1hbGxvYyhzaXplb2YodWludDMyX3QpICogZGluZm8tPm5waW5zLCBNX0RFVkJV RiwKKwkgICAgTV9OT1dBSVQgfCBNX1pFUk8pOworCWlmIChkaW5mby0+cGlucyA9PSBOVUxMKQor CQlyZXR1cm4gKEVOT01FTSk7CisJZGluZm8tPmZsYWdzID0gbWFsbG9jKHNpemVvZih1aW50MzJf dCkgKiBkaW5mby0+bnBpbnMsIE1fREVWQlVGLAorCSAgICBNX05PV0FJVCB8IE1fWkVSTyk7CisJ aWYgKGRpbmZvLT5mbGFncyA9PSBOVUxMKSB7CisJCWZyZWUoZGluZm8tPnBpbnMsIE1fREVWQlVG KTsKKwkJcmV0dXJuIChFTk9NRU0pOworCX0KKworCXJldHVybiAoMCk7Cit9CisKK3N0YXRpYyB2 b2lkCitvZndfZ3Bpb2J1c19mcmVlX2l2YXJzKHN0cnVjdCBncGlvYnVzX2l2YXIgKmRpbmZvKQor eworCisJZnJlZShkaW5mby0+ZmxhZ3MsIE1fREVWQlVGKTsKKwlmcmVlKGRpbmZvLT5waW5zLCBN X0RFVkJVRik7Cit9CisKK3N0YXRpYyBpbnQKIG9md19ncGlvYnVzX3BhcnNlX2dwaW9zKHN0cnVj dCBncGlvYnVzX3NvZnRjICpzYywgc3RydWN0IGdwaW9idXNfaXZhciAqZGluZm8sCiAJcGhhbmRs ZV90IGNoaWxkKQogewotCWludCBpLCBsZW47CisJaW50IGNlbGxzLCBpLCBqLCBsZW47CiAJcGNl bGxfdCAqZ3Bpb3M7CiAJcGhhbmRsZV90IGdwaW87CiAKQEAgLTEwMiw0NCArMTI5LDgxIEBACiAJ fQogCiAJLyoKLQkgKiBFYWNoICdncGlvcycgZW50cnkgbXVzdCBjb250YWluIDQgcGNlbGxzLgot CSAqIFRoZSBmaXJzdCBvbmUgaXMgdGhlIEdQSU8gY29udHJvbGxlciBwaGFuZGxlci4KLQkgKiBU aGVuIHRoZSBsYXN0IHRocmVlIGFyZSB0aGUgR1BJTyBwaW4sIHRoZSBHUElPIHBpbiBkaXJlY3Rp b24gYW5kCi0JICogdGhlIEdQSU8gcGluIGZsYWdzLgorCSAqIFRoZSBncGlvLXNwZWNpZmllciBp cyBjb250cm9sbGVyIGluZGVwZW5kZW50LCBidXQgdGhlIGZpcnN0IHBjZWxsCisJICogaGFzIHRo ZSByZWZlcmVuY2UgdG8gdGhlIEdQSU8gY29udHJvbGxlciBwaGFuZGxlci4KKwkgKiBPbmUgdGhl IGZpcnN0IHBhc3Mgd2UgY291bnQgdGhlIG51bWJlciBvZiBlbmNvZGVkIGdwaW8tc3BlY2lmaWVy cy4KIAkgKi8KLQlpZiAoKGxlbiAvIHNpemVvZihwY2VsbF90KSkgJSA0KSB7CisJaSA9IDA7CisJ bGVuIC89IHNpemVvZihwY2VsbF90KTsKKwl3aGlsZSAoaSA8IGxlbikgeworCQkvKiBBbGxvdyBO VUxMIHNwZWNpZmllcnMuICovCisJCWlmIChncGlvc1tpXSA9PSAwKSB7CisJCQlkaW5mby0+bnBp bnMrKzsKKwkJCWkrKzsKKwkJCWNvbnRpbnVlOworCQl9CisJCWdwaW8gPSBPRl94cmVmX3BoYW5k bGUoZ3Bpb3NbaV0pOworCQkvKiBWZXJpZnkgaWYgd2UncmUgYXR0YWNoaW5nIHRvIHRoZSBjb3Jy ZWN0IEdQSU8gY29udHJvbGxlci4gKi8KKwkJaWYgKCFPRl9oYXNwcm9wKGdwaW8sICJncGlvLWNv bnRyb2xsZXIiKSB8fAorCQkgICAgZ3BpbyAhPSBvZndfYnVzX2dldF9ub2RlKHNjLT5zY19kZXYp KSB7CisJCQlmcmVlKGdwaW9zLCBNX0RFVkJVRik7CisJCQlyZXR1cm4gKEVJTlZBTCk7CisJCX0K KwkJLyogUmVhZCBncGlvLWNlbGxzIHByb3BlcnR5IGZvciB0aGlzIEdQSU8gY29udHJvbGxlci4g Ki8KKwkJaWYgKE9GX2dldGVuY3Byb3AoZ3BpbywgIiNncGlvLWNlbGxzIiwgJmNlbGxzLAorCQkg ICAgc2l6ZW9mKGNlbGxzKSkgPCAwKSB7CisJCQlmcmVlKGdwaW9zLCBNX0RFVkJVRik7CisJCQly ZXR1cm4gKEVJTlZBTCk7CisJCX0KKwkJZGluZm8tPm5waW5zKys7CisJCWkgKz0gY2VsbHMgKyAx OworCX0KKworCWlmIChkaW5mby0+bnBpbnMgPT0gMCkgewogCQlmcmVlKGdwaW9zLCBNX0RFVkJV Rik7CiAJCXJldHVybiAoRUlOVkFMKTsKIAl9Ci0JZGluZm8tPm5waW5zID0gbGVuIC8gKHNpemVv ZihwY2VsbF90KSAqIDQpOwotCWRpbmZvLT5waW5zID0gbWFsbG9jKHNpemVvZih1aW50MzJfdCkg KiBkaW5mby0+bnBpbnMsIE1fREVWQlVGLAotCSAgICBNX05PV0FJVCB8IE1fWkVSTyk7Ci0JaWYg KGRpbmZvLT5waW5zID09IE5VTEwpIHsKKworCS8qIEFsbG9jYXRlIHRoZSBjaGlsZCByZXNvdXJj ZXMuICovCisJaWYgKG9md19ncGlvYnVzX2FsbG9jX2l2YXJzKGRpbmZvKSAhPSAwKSB7CiAJCWZy ZWUoZ3Bpb3MsIE1fREVWQlVGKTsKIAkJcmV0dXJuIChFTk9NRU0pOwogCX0KIAotCWZvciAoaSA9 IDA7IGkgPCBkaW5mby0+bnBpbnM7IGkrKykgeworCS8qIERlY29kZSB0aGUgZ3BpbyBzcGVjaWZp ZXIgb24gdGhlIHNlY29uZCBwYXNzLiAqLworCWkgPSAwOworCWogPSAwOworCXdoaWxlIChpIDwg bGVuKSB7CisJCS8qIEFsbG93IE5VTEwgc3BlY2lmaWVycy4gKi8KKwkJaWYgKGdwaW9zW2ldID09 IDApIHsKKwkJCWkrKzsKKwkJCWorKzsKKwkJCWNvbnRpbnVlOworCQl9CiAKLQkJLyogVmVyaWZ5 IGlmIHdlJ3JlIGF0dGFjaGluZyB0byB0aGUgY29ycmVjdCBncGlvIGNvbnRyb2xsZXIuICovCi0J CWdwaW8gPSBPRl94cmVmX3BoYW5kbGUoZ3Bpb3NbaSAqIDQgKyAwXSk7Ci0JCWlmICghT0ZfaGFz cHJvcChncGlvLCAiZ3Bpby1jb250cm9sbGVyIikgfHwKLQkJICAgIGdwaW8gIT0gb2Z3X2J1c19n ZXRfbm9kZShzYy0+c2NfZGV2KSkgewotCQkJZnJlZShkaW5mby0+cGlucywgTV9ERVZCVUYpOwor CQlncGlvID0gT0ZfeHJlZl9waGFuZGxlKGdwaW9zW2ldKTsKKwkJLyogUmVhZCBncGlvLWNlbGxz IHByb3BlcnR5IGZvciB0aGlzIEdQSU8gY29udHJvbGxlci4gKi8KKwkJaWYgKE9GX2dldGVuY3By b3AoZ3BpbywgIiNncGlvLWNlbGxzIiwgJmNlbGxzLAorCQkgICAgc2l6ZW9mKGNlbGxzKSkgPCAw KSB7CisJCQlvZndfZ3Bpb2J1c19mcmVlX2l2YXJzKGRpbmZvKTsKIAkJCWZyZWUoZ3Bpb3MsIE1f REVWQlVGKTsKIAkJCXJldHVybiAoRUlOVkFMKTsKIAkJfQogCi0JCS8qIEdldCB0aGUgR1BJTyBw aW4gbnVtYmVyLiAqLwotCQlkaW5mby0+cGluc1tpXSA9IGdwaW9zW2kgKiA0ICsgMV07Ci0JCS8q IGdwaW9zW2kgKiA0ICsgMl0gLSBHUElPIHBpbiBkaXJlY3Rpb24gKi8KLQkJLyogZ3Bpb3NbaSAq IDQgKyAzXSAtIEdQSU8gcGluIGZsYWdzICovCisJCS8qIEdldCB0aGUgR1BJTyBwaW4gbnVtYmVy IGFuZCBmbGFncy4gKi8KKwkJaWYgKG9md19idXNfbWFwX2dwaW9zKHNjLT5zY19kZXYsIGNoaWxk LCBncGlvLCBjZWxscywKKwkJICAgICZncGlvc1tpICsgMV0sICZkaW5mby0+cGluc1tqXSwgJmRp bmZvLT5mbGFnc1tqXSkgIT0gMCkgeworCQkJb2Z3X2dwaW9idXNfZnJlZV9pdmFycyhkaW5mbyk7 CisJCQlmcmVlKGdwaW9zLCBNX0RFVkJVRik7CisJCQlyZXR1cm4gKEVJTlZBTCk7CisJCX0KIAot CQlpZiAoZGluZm8tPnBpbnNbaV0gPiBzYy0+c2NfbnBpbnMpIHsKKwkJLyogQ29uc2lzdGVuY3kg Y2hlY2suICovCisJCWlmIChkaW5mby0+cGluc1tqXSA+IHNjLT5zY19ucGlucykgewogCQkJZGV2 aWNlX3ByaW50ZihzYy0+c2NfYnVzZGV2LAogCQkJICAgICJpbnZhbGlkIHBpbiAlZCwgbWF4OiAl ZFxuIiwKLQkJCSAgICBkaW5mby0+cGluc1tpXSwgc2MtPnNjX25waW5zIC0gMSk7Ci0JCQlmcmVl KGRpbmZvLT5waW5zLCBNX0RFVkJVRik7CisJCQkgICAgZGluZm8tPnBpbnNbal0sIHNjLT5zY19u cGlucyAtIDEpOworCQkJb2Z3X2dwaW9idXNfZnJlZV9pdmFycyhkaW5mbyk7CiAJCQlmcmVlKGdw aW9zLCBNX0RFVkJVRik7CiAJCQlyZXR1cm4gKEVJTlZBTCk7CiAJCX0KQEAgLTE0NywxNSArMjEx LDE4IEBACiAJCS8qCiAJCSAqIE1hcmsgcGluIGFzIG1hcHBlZCBhbmQgZ2l2ZSB3YXJuaW5nIGlm IGl0J3MgYWxyZWFkeSBtYXBwZWQuCiAJCSAqLwotCQlpZiAoc2MtPnNjX3BpbnNfbWFwcGVkW2Rp bmZvLT5waW5zW2ldXSkgeworCQlpZiAoc2MtPnNjX3BpbnNfbWFwcGVkW2RpbmZvLT5waW5zW2pd XSkgewogCQkJZGV2aWNlX3ByaW50ZihzYy0+c2NfYnVzZGV2LAogCQkJICAgICJ3YXJuaW5nOiBw aW4gJWQgaXMgYWxyZWFkeSBtYXBwZWRcbiIsCi0JCQkgICAgZGluZm8tPnBpbnNbaV0pOwotCQkJ ZnJlZShkaW5mby0+cGlucywgTV9ERVZCVUYpOworCQkJICAgIGRpbmZvLT5waW5zW2pdKTsKKwkJ CW9md19ncGlvYnVzX2ZyZWVfaXZhcnMoZGluZm8pOwogCQkJZnJlZShncGlvcywgTV9ERVZCVUYp OwogCQkJcmV0dXJuIChFSU5WQUwpOwogCQl9Ci0JCXNjLT5zY19waW5zX21hcHBlZFtkaW5mby0+ cGluc1tpXV0gPSAxOworCQlzYy0+c2NfcGluc19tYXBwZWRbZGluZm8tPnBpbnNbal1dID0gMTsK KworCQlpICs9IGNlbGxzICsgMTsKKwkJaisrOwogCX0KIAogCWZyZWUoZ3Bpb3MsIE1fREVWQlVG KTsKSW5kZXg6IHN5cy9kZXYvb2Z3L29md19idXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvZGV2L29m dy9vZndfYnVzLmgJKHJldmlzaW9uIDI2NDU1MCkKKysrIHN5cy9kZXYvb2Z3L29md19idXMuaAko d29ya2luZyBjb3B5KQpAQCAtNzYsNCArNzYsMTIgQEAKIAlyZXR1cm4gKE9GV19CVVNfTUFQX0lO VFIoZGV2LCBkZXYsIGlwYXJlbnQsIGljZWxscywgaW50cikpOwogfQogCitzdGF0aWMgX19pbmxp bmUgaW50CitvZndfYnVzX21hcF9ncGlvcyhkZXZpY2VfdCBidXMsIHBoYW5kbGVfdCBkZXYsIHBo YW5kbGVfdCBncGFyZW50LCBpbnQgZ2NlbGxzLAorICAgIHBjZWxsX3QgKmdwaW9zLCB1aW50MzJf dCAqcGluLCB1aW50MzJfdCAqZmxhZ3MpCit7CisJcmV0dXJuIChPRldfQlVTX01BUF9HUElPUyhi dXMsIGRldiwgZ3BhcmVudCwgZ2NlbGxzLCBncGlvcywgcGluLAorCSAgICBmbGFncykpOworfQor CiAjZW5kaWYgLyogIV9ERVZfT0ZXX09GV19CVVNfSF8gKi8KSW5kZXg6IHN5cy9kZXYvb2Z3L29m d19idXNfaWYubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvZGV2L29mdy9vZndfYnVzX2lmLm0JKHJldmlz aW9uIDI2NDU1MCkKKysrIHN5cy9kZXYvb2Z3L29md19idXNfaWYubQkod29ya2luZyBjb3B5KQpA QCAtNTgsNiArNTgsNyBAQAogCXN0YXRpYyBvZndfYnVzX2dldF9ub2RlX3Qgb2Z3X2J1c19kZWZh dWx0X2dldF9ub2RlOwogCXN0YXRpYyBvZndfYnVzX2dldF90eXBlX3Qgb2Z3X2J1c19kZWZhdWx0 X2dldF90eXBlOwogCXN0YXRpYyBvZndfYnVzX21hcF9pbnRyX3Qgb2Z3X2J1c19kZWZhdWx0X21h cF9pbnRyOworCXN0YXRpYyBvZndfYnVzX21hcF9ncGlvc190IG9md19idXNfZGVmYXVsdF9tYXBf Z3Bpb3M7CiAKIAlzdGF0aWMgY29uc3Qgc3RydWN0IG9md19idXNfZGV2aW5mbyAqCiAJb2Z3X2J1 c19kZWZhdWx0X2dldF9kZXZpbmZvKGRldmljZV90IGJ1cywgZGV2aWNlX3QgZGV2KQpAQCAtMTEz LDYgKzExNCwyNCBAQAogCQkvKiBJZiB0aGF0IGZhaWxzLCB0aGVuIGFzc3VtZSBhIG9uZS1kb21h aW4gc3lzdGVtICovCiAJCXJldHVybiAoaW50ZXJydXB0WzBdKTsKIAl9CisKKwlpbnQKKwlvZndf YnVzX2RlZmF1bHRfbWFwX2dwaW9zKGRldmljZV90IGJ1cywgcGhhbmRsZV90IGRldiwKKwkgICAg cGhhbmRsZV90IGdwYXJlbnQsIGludCBnY2VsbHMsIHBjZWxsX3QgKmdwaW9zLCB1aW50MzJfdCAq cGluLAorCSAgICB1aW50MzJfdCAqZmxhZ3MpCisJeworCQkvKiBQcm9wYWdhdGUgdXAgdGhlIGJ1 cyBoaWVyYXJjaHkgdW50aWwgc29tZW9uZSBoYW5kbGVzIGl0LiAqLwkKKwkJaWYgKGRldmljZV9n ZXRfcGFyZW50KGJ1cykgIT0gTlVMTCkKKwkJCXJldHVybiBPRldfQlVTX01BUF9HUElPUyhkZXZp Y2VfZ2V0X3BhcmVudChidXMpLCBkZXYsCisJCQkgICAgZ3BhcmVudCwgZ2NlbGxzLCBncGlvcywg cGluLCBmbGFncyk7CisKKwkJLyogSWYgdGhhdCBmYWlscywgdGhlbiBhc3N1bWUgdGhlIEZyZWVC U0QgZGVmYXVsdHMuICovCisJCSpwaW4gPSBncGlvc1swXTsKKwkJaWYgKGdjZWxscyA9PSAyIHx8 IGdjZWxscyA9PSAzKQorCQkJKmZsYWdzID0gZ3Bpb3NbZ2NlbGxzIC0gMV07CisKKwkJcmV0dXJu ICgwKTsKKwl9CiB9OwogCiAjIEdldCB0aGUgb2Z3X2J1c19kZXZpbmZvIHN0cnVjdCBmb3IgdGhl IGRldmljZSBkZXYgb24gdGhlIGJ1cy4gVXNlZCBmb3IgYnVzCkBAIC0xNzAsNCArMTg5LDEzIEBA CiAJcGNlbGxfdCAqaW50ZXJydXB0OwogfSBERUZBVUxUIG9md19idXNfZGVmYXVsdF9tYXBfaW50 cjsKIAotCisjIE1hcCB0aGUgR1BJTyBjb250cm9sbGVyIHNwZWNpZmljIGdwaW8tc3BlY2lmaWVy IHRvIEdQSU8gcGluIGFuZCBmbGFncy4KK01FVEhPRCBpbnQgbWFwX2dwaW9zIHsKKwlkZXZpY2Vf dCBidXM7CisJcGhhbmRsZV90IGRldjsKKwlwaGFuZGxlX3QgZ3BhcmVudDsKKwlpbnQgZ2NlbGxz OworCXBjZWxsX3QgKmdwaW9zOworCXVpbnQzMl90ICpwaW47CisJdWludDMyX3QgKmZsYWdzOwor fSBERUZBVUxUIG9md19idXNfZGVmYXVsdF9tYXBfZ3Bpb3M7Cg== --f46d0438933faa55ca04f7b65f6b--