From mboxrd@z Thu Jan 1 00:00:00 1970 From: frederic rodo Subject: [PATCH 1/2] MX27 FEC add mii_bus Date: Mon, 9 Feb 2009 11:22:57 +0100 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=0015174c34a222c4a1046279c1b2 Cc: Sascha Hauer , gerg@snapgear.com, netdev@vger.kernel.org To: linux-arm-kernel@lists.arm.linux.org.uk Return-path: Received: from ey-out-2122.google.com ([74.125.78.26]:41461 "EHLO ey-out-2122.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752957AbZBIKXA (ORCPT ); Mon, 9 Feb 2009 05:23:00 -0500 Received: by ey-out-2122.google.com with SMTP id 25so491270eya.37 for ; Mon, 09 Feb 2009 02:22:57 -0800 (PST) Sender: netdev-owner@vger.kernel.org List-ID: --0015174c34a222c4a1046279c1b2 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Hi, This patch add the mii bus to the fec driver from the Sasha Hauer's tree. I don't know why some times a mii transfer failed (hardware or driver problem). So I've add a test case in the adjust_link callback. Is there's another way to do this? bye --0015174c34a222c4a1046279c1b2 Content-Type: text/x-patch; charset=US-ASCII; name="mxc_fec_add_mii_bus.patch" Content-Disposition: attachment; filename="mxc_fec_add_mii_bus.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fqyzgz260 U2lnbmVkLW9mZi1ieTogRnJlZGVyaWMgUm9kbyA8ZnJlZC5yb2RvQGdtYWlsLmNvbT4KZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L2ZlYy5jIGIvZHJpdmVycy9uZXQvZmVjLmMKaW5kZXggZWQ0ODI1 Yi4uMjRkZjE4NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZmVjLmMKKysrIGIvZHJpdmVycy9u ZXQvZmVjLmMKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDxsaW51eC9pcnEuaD4KICNpbmNs dWRlIDxsaW51eC9jbGsuaD4KICNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNp bmNsdWRlIDxsaW51eC9waHkuaD4KIAogI2luY2x1ZGUgPGFzbS9jYWNoZWZsdXNoLmg+CiAKQEAg LTUxLDYgKzUyLDcgQEAKICNpbmNsdWRlICJmZWMuaCIKIAogI2lmZGVmIENPTkZJR19BUkNIX01Y QworI2luY2x1ZGUgPGxpbnV4L2ZlYy5oPgogI2luY2x1ZGUgPG1hY2gvaGFyZHdhcmUuaD4KICNk ZWZpbmUgRkVDX0FMSUdOTUVOVAkweGYKICNlbHNlCkBAIC0xMTAsOCArMTEyLDYgQEAgc3RhdGlj IHVuc2lnbmVkIGNoYXIJZmVjX21hY19kZWZhdWx0W10gPSB7CiAjZGVmaW5lCUZFQ19GTEFTSE1B QwkwCiAjZW5kaWYKIAotI2VuZGlmIC8qIEZFQ19MRUdBQ1kgKi8KLQogLyogRm9yd2FyZCBkZWNs YXJhdGlvbnMgb2Ygc29tZSBzdHJ1Y3R1cmVzIHRvIHN1cHBvcnQgZGlmZmVyZW50IFBIWXMKICov CiAKQEAgLTEzMCw2ICsxMzAsOCBAQCB0eXBlZGVmIHN0cnVjdCB7CiAJY29uc3QgcGh5X2NtZF90 ICpzaHV0ZG93bjsKIH0gcGh5X2luZm9fdDsKIAorI2VuZGlmIC8qIEZFQ19MRUdBQ1kgKi8KKwog LyogVGhlIG51bWJlciBvZiBUeCBhbmQgUnggYnVmZmVycy4gIFRoZXNlIGFyZSBhbGxvY2F0ZWQg ZnJvbSB0aGUgcGFnZQogICogcG9vbC4gIFRoZSBjb2RlIG1heSBhc3N1bWUgdGhlc2UgYXJlIHBv d2VyIG9mIHR3bywgc28gaXQgaXQgYmVzdAogICogdG8ga2VlcCB0aGVtIHRoYXQgc2l6ZS4KQEAg LTIxMywxMyArMjE1LDEzIEBAIHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlIHsKIAl1aW50CXR4X2Z1 bGw7CiAJLyogaG9sZCB3aGlsZSBhY2Nlc3NpbmcgdGhlIEhXIGxpa2UgcmluZ2J1ZmZlciBmb3Ig dHgvcnggYnV0IG5vdCBNQUMgKi8KIAlzcGlubG9ja190IGh3X2xvY2s7CisjaWZkZWYgRkVDX0xF R0FDWQogCS8qIGhvbGQgd2hpbGUgYWNjZXNzaW5nIHRoZSBtaWlfbGlzdF90KCkgZWxlbWVudHMg Ki8KIAlzcGlubG9ja190IG1paV9sb2NrOwogCiAJdWludAlwaHlfaWQ7CiAJdWludAlwaHlfaWRf ZG9uZTsKIAl1aW50CXBoeV9zdGF0dXM7Ci0JdWludAlwaHlfc3BlZWQ7CiAJcGh5X2luZm9fdCBj b25zdAkqcGh5OwogCXN0cnVjdCB3b3JrX3N0cnVjdCBwaHlfdGFzazsKIApAQCAtMjI4LDE2ICsy MzAsMjUgQEAgc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgewogCiAJdWludAlwaHlfYWRkcjsKIAor CWludAlvbGRfbGluazsKKyNlbHNlCisJc3RydWN0CXBsYXRmb3JtX2RldmljZSAqcGRldjsKKwlz dHJ1Y3QJbWlpX2J1cyAqbWlpX2J1czsKKwlzdHJ1Y3QJcGh5X2RldmljZSAqcGh5X2RldjsKKwlp bnQJbWlpX3RpbWVvdXQ7CisjZW5kaWYKKwl1aW50CXBoeV9zcGVlZDsKIAlpbnQJaW5kZXg7CiAJ aW50CW9wZW5lZDsKIAlpbnQJbGluazsKLQlpbnQJb2xkX2xpbms7CiAJaW50CWZ1bGxfZHVwbGV4 OwogfTsKIAogc3RhdGljIGludCBmZWNfZW5ldF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYp Owogc3RhdGljIGludCBmZWNfZW5ldF9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0 cnVjdCBuZXRfZGV2aWNlICpkZXYpOworI2lmZGVmIEZFQ19MRUdBQ1kKIHN0YXRpYyB2b2lkIGZl Y19lbmV0X21paShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKKyNlbmRpZgogc3RhdGljIGlycXJl dHVybl90IGZlY19lbmV0X2ludGVycnVwdChpbnQgaXJxLCB2b2lkICogZGV2X2lkKTsKIHN0YXRp YyB2b2lkIGZlY19lbmV0X3R4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwogc3RhdGljIHZvaWQg ZmVjX2VuZXRfcngoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CkBAIC0yNDgsNiArMjU5LDExIEBA IHN0YXRpYyB2b2lkIGZlY19zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwogc3RhdGljIHZv aWQgZmVjX3NldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKIAogCisvKiBU cmFuc21pdHRlciB0aW1lb3V0LgorKi8KKyNkZWZpbmUgVFhfVElNRU9VVCAoMipIWikKKworI2lm ZGVmIEZFQ19MRUdBQ1kKIC8qIE1JSSBwcm9jZXNzaW5nLiAgV2Uga2VlcCB0aGlzIGFzIHNpbXBs ZSBhcyBwb3NzaWJsZS4gIFJlcXVlc3RzIGFyZQogICogcGxhY2VkIG9uIHRoZSBsaXN0IChpZiB0 aGVyZSBpcyByb29tKS4gIFdoZW4gdGhlIHJlcXVlc3QgaXMgZmluaXNoZWQKICAqIGJ5IHRoZSBN SUksIGFuIG9wdGlvbmFsIGZ1bmN0aW9uIG1heSBiZSBjYWxsZWQuCkBAIC0yNzQsMTAgKzI5MCw2 IEBAIHN0YXRpYyBpbnQJbWlpX3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCByZXF1 ZXN0LAogCQkJCQkJKFZBTCAmIDB4ZmZmZikpCiAjZGVmaW5lIG1rX21paV9lbmQJMAogCi0vKiBU cmFuc21pdHRlciB0aW1lb3V0LgotKi8KLSNkZWZpbmUgVFhfVElNRU9VVCAoMipIWikKLQogLyog UmVnaXN0ZXIgZGVmaW5pdGlvbnMgZm9yIHRoZSBQSFkuCiAqLwogCkBAIC0zMTAsNiArMzIyLDE4 IEBAIHN0YXRpYyBpbnQJbWlpX3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCByZXF1 ZXN0LAogI2RlZmluZSBQSFlfU1RBVF8xMDBIRFgJMHg0MDAwICAvKiAxMDAgTWJpdCBoYWxmIGR1 cGxleCBzZWxlY3RlZCAqLwogI2RlZmluZSBQSFlfU1RBVF8xMDBGRFgJMHg4MDAwICAvKiAxMDAg TWJpdCBmdWxsIGR1cGxleCBzZWxlY3RlZCAqLwogCisjZWxzZQorLyogRkVDIE1NRlIgYml0cyBk ZWZpbml0aW9uICovCisjZGVmaW5lIEZFQ19NTUZSX1NUCQkoMSA8PCAzMCkKKyNkZWZpbmUgRkVD X01NRlJfT1BfUkVBRAkoMiA8PCAyOCkKKyNkZWZpbmUgRkVDX01NRlJfT1BfV1JJVEUJKDEgPDwg MjgpCisjZGVmaW5lIEZFQ19NTUZSX1BBKHYpCQkoKHYgJiAweDFmKSA8PCAyMykKKyNkZWZpbmUg RkVDX01NRlJfUkEodikJCSgodiAmIDB4MWYpIDw8IDE4KQorI2RlZmluZSBGRUNfTU1GUl9UQQkJ KDIgPDwgMTYpCisjZGVmaW5lIEZFQ19NTUZSX0RBVEEodikJKHYgJiAweGZmZmYpCisKKyNkZWZp bmUgRkVDX01JSV9UUklFUwkJMTAwMDAKKyNlbmRpZgogCiBzdGF0aWMgaW50CiBmZWNfZW5ldF9z dGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCkBA IC00OTAsMTAgKzUxNCwxMiBAQCBmZWNfZW5ldF9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqIGRl dl9pZCkKIAkJCWZlY19lbmV0X3R4KGRldik7CiAJCX0KIAorI2lmZGVmIEZFQ19MRUdBQ1kKIAkJ aWYgKGludF9ldmVudHMgJiBGRUNfRU5FVF9NSUkpIHsKIAkJCXJldCA9IElSUV9IQU5ETEVEOwog CQkJZmVjX2VuZXRfbWlpKGRldik7CiAJCX0KKyNlbmRpZgogCiAJfSB3aGlsZSAoaW50X2V2ZW50 cyk7CiAKQEAgLTcxMSw2ICs3MzcsNyBAQCB3aGlsZSAoISgoc3RhdHVzID0gYmRwLT5jYmRfc2Mp ICYgQkRfRU5FVF9SWF9FTVBUWSkpIHsKIH0KIAogCisjaWZkZWYgRkVDX0xFR0FDWQogLyogY2Fs bGVkIGZyb20gaW50ZXJydXB0IGNvbnRleHQgKi8KIHN0YXRpYyB2b2lkCiBmZWNfZW5ldF9taWko c3RydWN0IG5ldF9kZXZpY2UgKmRldikKQEAgLTEyMzgsNiArMTI2NSw3IEBAIHN0YXRpYyBwaHlf aW5mb190IGNvbnN0ICogY29uc3QgcGh5X2luZm9bXSA9IHsKIAlOVUxMCiB9OwogCisjZW5kaWYg LyogRkVDX0xFR0FDWSAqLwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogI2lmZGVmIEhBVkVfbWlp X2xpbmtfaW50ZXJydXB0CiBzdGF0aWMgaXJxcmV0dXJuX3QKQEAgLTE3MjYsNiArMTc1NCw3IEBA IHN0YXRpYyB2b2lkIF9faW5saW5lX18gZmVjX3BoeV9hY2tfaW50cih2b2lkKQogCiAvKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tICovCiAKKyNpZmRlZiBGRUNfTEVHQUNZCiBzdGF0aWMgdm9pZCBtaWlfZGlz cGxheV9zdGF0dXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgZmVjX2VuZXRf cHJpdmF0ZSAqZmVwID0gbmV0ZGV2X3ByaXYoZGV2KTsKQEAgLTE5MjcsOSArMTk1Niw3IEBAIG1p aV9kaXNjb3Zlcl9waHkodWludCBtaWlfcmVnLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCQlw cmludGsoIkZFQzogTm8gUEhZIGRldmljZSBmb3VuZC5cbiIpOwogCQkvKiBEaXNhYmxlIGV4dGVy bmFsIE1JSSBpbnRlcmZhY2UgKi8KIAkJZmVjcC0+ZmVjX21paV9zcGVlZCA9IGZlcC0+cGh5X3Nw ZWVkID0gMDsKLSNpZmRlZiBGUkVDX0xFR0FDWQogCQlmZWNfZGlzYWJsZV9waHlfaW50cigpOwot I2VuZGlmCiAJfQogfQogCkBAIC0xOTU0LDYgKzE5ODEsMjg5IEBAIG1paV9saW5rX2ludGVycnVw dChpbnQgaXJxLCB2b2lkICogZGV2X2lkKQogCXJldHVybiBJUlFfSEFORExFRDsKIH0KICNlbmRp ZgorI2Vsc2UKK3N0YXRpYyB2b2lkIGZlY19lbmV0X2hhbmRsZV9saW5rX2NoYW5nZShzdHJ1Y3Qg bmV0X2RldmljZSAqZGV2KQoreworCXN0cnVjdCBmZWNfZW5ldF9wcml2YXRlICpmZXAgPSBuZXRk ZXZfcHJpdihkZXYpOworCXN0cnVjdCBwaHlfZGV2aWNlICpwaHlfZGV2ID0gZmVwLT5waHlfZGV2 OworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlpbnQgc3RhdHVzX2NoYW5nZSA9IDA7CisKKwlz cGluX2xvY2tfaXJxc2F2ZSgmZmVwLT5od19sb2NrLCBmbGFncyk7CisKKwkvKiBQcmV2ZW50IGEg c3RhdGUgaGFsdGVkIG9uIG1paSBlcnJvciAqLworCWlmIChmZXAtPm1paV90aW1lb3V0ICYmIHBo eV9kZXYtPnN0YXRlID09IFBIWV9IQUxURUQpIHsKKwkJcHJpbnRrKEtFUk5fSU5GTyAiJXM6IG1p aSByZXN1bWVcbiIsIGRldi0+bmFtZSk7CisJCXBoeV9kZXYtPnN0YXRlID0gUEhZX1JFU1VNSU5H OworCQlnb3RvIHNwaW5fdW5sb2NrOworCX0KKworCWlmIChwaHlfZGV2LT5saW5rKSB7CisJCWlm IChmZXAtPmZ1bGxfZHVwbGV4ICE9IHBoeV9kZXYtPmR1cGxleCkgeworCQkJZmVjX3Jlc3RhcnQo ZGV2LCBwaHlfZGV2LT5kdXBsZXgpOworCQkJc3RhdHVzX2NoYW5nZSA9IDE7CisJCX0KKwl9CisK KwlpZiAocGh5X2Rldi0+bGluayAhPSBmZXAtPmxpbmspIHsKKwkJZmVwLT5saW5rID0gcGh5X2Rl di0+bGluazsKKwkJaWYgKHBoeV9kZXYtPmxpbmspCisJCQlmZWNfcmVzdGFydChkZXYsIHBoeV9k ZXYtPmR1cGxleCk7CisJCWVsc2UKKwkJCWZlY19zdG9wKGRldik7CisJCXN0YXR1c19jaGFuZ2Ug PSAxOworCX0KK3NwaW5fdW5sb2NrOgorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmZlcC0+aHdf bG9jaywgZmxhZ3MpOworCisJaWYgKHN0YXR1c19jaGFuZ2UpIHsKKwkJaWYgKHBoeV9kZXYtPmxp bmspCisJCQlwcmludGsoS0VSTl9JTkZPICIlczogbGluayB1cCAoJWQvJXMpXG4iLAorCQkJICAg ICAgIGRldi0+bmFtZSwgcGh5X2Rldi0+c3BlZWQsCisJCQkgICAgICAgRFVQTEVYX0ZVTEwgPT0g cGh5X2Rldi0+ZHVwbGV4ID8gIkZ1bGwiCisJCQkgICAgICAgOiAiSGFsZiIpOworCQllbHNlCisJ CQlwcmludGsoS0VSTl9JTkZPICIlczogbGluayBkb3duXG4iLCBkZXYtPm5hbWUpOworCX0KK30K KworLyogUGh5IHNlY3Rpb24KKyAqIE5PVEU6IGEgbWlpIHRyYW5zYWN0aW9uIGlzIGR1cmluZyBh cm91bmQgMjUgdXMsIHNvIHBvbGxpbmcgaXQuLi4KKyAqLworc3RhdGljIGludCBmZWNfZW5ldF9t ZGlvX3JlYWQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IG1paV9pZCwgaW50IHJlZ251bSkKK3sK KwlzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwID0gYnVzLT5wcml2OworCXZvbGF0aWxlIGZl Y190ICplcDsKKwlpbnQgdHJpZXMgPSBGRUNfTUlJX1RSSUVTOworCisJZmVwLT5taWlfdGltZW91 dCA9IDA7CisJZXAgPSBmZXAtPmh3cDsKKworCS8qIGNsZWFyIE1JSSBlbmQgb2YgdHJhbmZlcnQg Yml0Ki8KKwllcC0+ZmVjX2lldmVudCA9IEZFQ19FTkVUX01JSTsKKworCS8qIHN0YXJ0IGEgcmVh ZCBvcCAqLworCWVwLT5mZWNfbWlpX2RhdGEgPSBGRUNfTU1GUl9TVCB8IEZFQ19NTUZSX09QX1JF QUQgfAorCQkJICAgRkVDX01NRlJfUEEobWlpX2lkKSB8IEZFQ19NTUZSX1JBKHJlZ251bSkgfAor CQkJICAgRkVDX01NRlJfVEE7CisKKwkvKiB3YWl0IGZvciBlbmQgb2YgdHJhbnNmZXIgKi8KKwl3 aGlsZSAoIShlcC0+ZmVjX2lldmVudCAmIEZFQ19FTkVUX01JSSkgJiYgLS10cmllcykKKwkJY3B1 X3JlbGF4KCk7CisKKwlpZiAoIXRyaWVzKSB7CisJCWZlcC0+bWlpX3RpbWVvdXQgPSAxOworCQly ZXR1cm4gLUVUSU1FRE9VVDsKKwl9CisKKwkvKiByZXR1cm4gdmFsdWUgKi8KKwlyZXR1cm4gRkVD X01NRlJfREFUQShlcC0+ZmVjX21paV9kYXRhKTsKK30KKworc3RhdGljIGludCBmZWNfZW5ldF9t ZGlvX3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBtaWlfaWQsIGludCByZWdudW0sCisJ CQkgICB1MTYgdmFsdWUpCit7CisJc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCA9IGJ1cy0+ cHJpdjsKKwl2b2xhdGlsZSBmZWNfdAkqZXA7CisJaW50IHRyaWVzID0gRkVDX01JSV9UUklFUzsK KworCWZlcC0+bWlpX3RpbWVvdXQgPSAwOworCWVwID0gZmVwLT5od3A7CisKKwkvKiBjbGVhciBN SUkgZW5kIG9mIHRyYW5mZXJ0IGJpdCovCisJZXAtPmZlY19pZXZlbnQgPSBGRUNfRU5FVF9NSUk7 CisKKwkvKiBzdGFydCBhIHJlYWQgb3AgKi8KKwllcC0+ZmVjX21paV9kYXRhID0gRkVDX01NRlJf U1QgfCBGRUNfTU1GUl9PUF9SRUFEIHwKKwkJCSAgIEZFQ19NTUZSX1BBKG1paV9pZCkgfCBGRUNf TU1GUl9SQShyZWdudW0pIHwKKwkJCSAgIEZFQ19NTUZSX1RBIHwgRkVDX01NRlJfREFUQSh2YWx1 ZSk7CisKKwkvKiB3YWl0IGZvciBlbmQgb2YgdHJhbnNmZXIgKi8KKwl3aGlsZSAoIShlcC0+ZmVj X2lldmVudCAmIEZFQ19FTkVUX01JSSkgJiYgLS10cmllcykKKwkJY3B1X3JlbGF4KCk7CisKKwlp ZiAoIXRyaWVzKSB7CisJCWZlcC0+bWlpX3RpbWVvdXQgPSAxOworCQlyZXR1cm4gLUVUSU1FRE9V VDsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZmVjX2VuZXRfbWRpb19yZXNldChz dHJ1Y3QgbWlpX2J1cyAqYnVzKQoreworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGZlY19l bmV0X21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQoreworCXN0cnVjdCBmZWNfZW5l dF9wcml2YXRlICpmZXAgPSBuZXRkZXZfcHJpdihkZXYpOworCXN0cnVjdCBwaHlfZGV2aWNlICpw aHlfZGV2ID0gTlVMTDsKKwlpbnQgcGh5X2FkZHI7CisKKwkvKiBmaW5kIHRoZSBmaXJzdCBwaHkg Ki8KKwlmb3IgKHBoeV9hZGRyID0gMDsgcGh5X2FkZHIgPCBQSFlfTUFYX0FERFI7IHBoeV9hZGRy KyspIHsKKwkJaWYgKGZlcC0+bWlpX2J1cy0+cGh5X21hcFtwaHlfYWRkcl0pIHsKKwkJCXBoeV9k ZXYgPSBmZXAtPm1paV9idXMtPnBoeV9tYXBbcGh5X2FkZHJdOworCQkJYnJlYWs7CisJCX0KKwl9 CisKKwlpZiAoIXBoeV9kZXYpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICIlczogbm8gUEhZIGZvdW5k XG4iLCBkZXYtPm5hbWUpOworCQlyZXR1cm4gLTE7CisJfQorCisJLyogYXR0YWNoIHRoZSBtYWMg dG8gdGhlIHBoeSAqLworCXBoeV9kZXYgPSBwaHlfY29ubmVjdChkZXYsIHBoeV9kZXYtPmRldi5i dXNfaWQsCisJCQkgICAgICZmZWNfZW5ldF9oYW5kbGVfbGlua19jaGFuZ2UsIDAsCisJCQkgICAg IFBIWV9JTlRFUkZBQ0VfTU9ERV9NSUkpOworCWlmIChJU19FUlIocGh5X2RldikpIHsKKwkJcHJp bnRrKEtFUk5fRVJSICIlczogQ291bGQgbm90IGF0dGFjaCB0byBQSFlcbiIsIGRldi0+bmFtZSk7 CisJCXJldHVybiBQVFJfRVJSKHBoeV9kZXYpOworCX0KKworCS8qIG1hc2sgd2l0aCBNQUMgc3Vw cG9ydGVkIGZlYXR1cmVzICovCisJcGh5X2Rldi0+c3VwcG9ydGVkICY9IFBIWV9CQVNJQ19GRUFU VVJFUzsKKwlwaHlfZGV2LT5hZHZlcnRpc2luZyA9IHBoeV9kZXYtPnN1cHBvcnRlZDsKKworCWZl cC0+cGh5X2RldiA9IHBoeV9kZXY7CisJZmVwLT5saW5rID0gMDsKKwlmZXAtPmZ1bGxfZHVwbGV4 ID0gMDsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGZlY19lbmV0X21paV9pbml0KHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IG5ldF9kZXZpY2UgKmRldiA9 IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOworCXN0cnVjdCBmZWNfZW5ldF9wcml2YXRlICpm ZXAgPSBuZXRkZXZfcHJpdihkZXYpOworCXN0cnVjdCBmZWNfZW5ldF9wbGF0Zm9ybV9kYXRhICpw ZGF0YTsKKwl2b2xhdGlsZSBmZWNfdAkqZXA7CisJaW50IGVyciA9IC1FTlhJTywgaTsKKworCWVw ID0gZmVwLT5od3A7CisKKwlmZXAtPm1paV90aW1lb3V0ID0gMDsKKwkvKgorCSAqIFNldCBNSUkg c3BlZWQgdG8gMi41IE1IegorCSAqLworCWZlcC0+cGh5X3NwZWVkID0gKCgoKGNsa19nZXRfcmF0 ZShmZXAtPmNsaykgLyAyICsgNDk5OTk5OSkKKwkJCQkJLyAyNTAwMDAwKSAvIDIpICYgMHgzRikg PDwgMTsKKwllcC0+ZmVjX21paV9zcGVlZCA9IGZlcC0+cGh5X3NwZWVkOworCisJZmVwLT5taWlf YnVzID0gbWRpb2J1c19hbGxvYygpOworCWlmIChmZXAtPm1paV9idXMgPT0gTlVMTCkgeworCQll cnIgPSAtRU5PTUVNOworCQlnb3RvIGVycl9vdXQ7CisJfQorCisJZmVwLT5taWlfYnVzLT5uYW1l ID0gImZlY19lbmV0X21paV9idXMiOworCWZlcC0+bWlpX2J1cy0+cmVhZCA9ICZmZWNfZW5ldF9t ZGlvX3JlYWQ7CisJZmVwLT5taWlfYnVzLT53cml0ZSA9ICZmZWNfZW5ldF9tZGlvX3dyaXRlOwor CWZlcC0+bWlpX2J1cy0+cmVzZXQgPSAmZmVjX2VuZXRfbWRpb19yZXNldDsKKwlzbnByaW50Zihm ZXAtPm1paV9idXMtPmlkLCBNSUlfQlVTX0lEX1NJWkUsICIleCIsIHBkZXYtPmlkKTsKKwlmZXAt Pm1paV9idXMtPnByaXYgPSBmZXA7CisJZmVwLT5taWlfYnVzLT5wYXJlbnQgPSAmcGRldi0+ZGV2 OworCXBkYXRhID0gcGRldi0+ZGV2LnBsYXRmb3JtX2RhdGE7CisKKwlpZiAocGRhdGEpCisJCWZl cC0+bWlpX2J1cy0+cGh5X21hc2sgPSBwZGF0YS0+cGh5X21hc2s7CisKKwlmZXAtPm1paV9idXMt PmlycSA9IGttYWxsb2Moc2l6ZW9mKGludCkqUEhZX01BWF9BRERSLCBHRlBfS0VSTkVMKTsKKwlp ZiAoIWZlcC0+bWlpX2J1cy0+aXJxKSB7CisJCWVyciA9IC1FTk9NRU07CisJCWdvdG8gZXJyX291 dF9mcmVlX21kaW9idXM7CisJfQorCisJZm9yIChpID0gMDsgaSA8IFBIWV9NQVhfQUREUjsgaSsr KQorCQlmZXAtPm1paV9idXMtPmlycVtpXSA9IFBIWV9QT0xMOworCisJcGxhdGZvcm1fc2V0X2Ry dmRhdGEoZGV2LCBmZXAtPm1paV9idXMpOworCisJaWYgKG1kaW9idXNfcmVnaXN0ZXIoZmVwLT5t aWlfYnVzKSkKKwkJZ290byBlcnJfb3V0X2ZyZWVfbWRpb19pcnE7CisKKwlpZiAoZmVjX2VuZXRf bWlpX3Byb2JlKGRldikgIT0gMCkKKwkJZ290byBlcnJfb3V0X3VucmVnaXN0ZXJfYnVzOworCisJ cmV0dXJuIDA7CisKK2Vycl9vdXRfdW5yZWdpc3Rlcl9idXM6CisJbWRpb2J1c191bnJlZ2lzdGVy KGZlcC0+bWlpX2J1cyk7CitlcnJfb3V0X2ZyZWVfbWRpb19pcnE6CisJa2ZyZWUoZmVwLT5taWlf YnVzLT5pcnEpOworZXJyX291dF9mcmVlX21kaW9idXM6CisJbWRpb2J1c19mcmVlKGZlcC0+bWlp X2J1cyk7CitlcnJfb3V0OgorCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyB2b2lkIGZlY19lbmV0 X21paV9yZW1vdmUoc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCkKK3sKKwlpZiAoZmVwLT5w aHlfZGV2KQorCQlwaHlfZGlzY29ubmVjdChmZXAtPnBoeV9kZXYpOworCW1kaW9idXNfdW5yZWdp c3RlcihmZXAtPm1paV9idXMpOworCWtmcmVlKGZlcC0+bWlpX2J1cy0+aXJxKTsKKwltZGlvYnVz X2ZyZWUoZmVwLT5taWlfYnVzKTsKK30KKworCitzdGF0aWMgaW50IGZlY19lbmV0X2dldF9zZXR0 aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAorCQkJCSAgc3RydWN0IGV0aHRvb2xfY21kICpj bWQpCit7CisJc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCA9IG5ldGRldl9wcml2KGRldik7 CisJc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IGZlcC0+cGh5X2RldjsKKworCWlmICghcGh5 ZGV2KQorCQlyZXR1cm4gLUVOT0RFVjsKKworCXJldHVybiBwaHlfZXRodG9vbF9nc2V0KHBoeWRl diwgY21kKTsKK30KKworc3RhdGljIGludCBmZWNfZW5ldF9zZXRfc2V0dGluZ3Moc3RydWN0IG5l dF9kZXZpY2UgKmRldiwKKwkJCQkgc3RydWN0IGV0aHRvb2xfY21kICpjbWQpCit7CisJc3RydWN0 IGZlY19lbmV0X3ByaXZhdGUgKmZlcCA9IG5ldGRldl9wcml2KGRldik7CisJc3RydWN0IHBoeV9k ZXZpY2UgKnBoeWRldiA9IGZlcC0+cGh5X2RldjsKKworCWlmICghcGh5ZGV2KQorCQlyZXR1cm4g LUVOT0RFVjsKKworCXJldHVybiBwaHlfZXRodG9vbF9zc2V0KHBoeWRldiwgY21kKTsKK30KKwor c3RhdGljIHZvaWQgZmVjX2VuZXRfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwK KwkJCQkgc3RydWN0IGV0aHRvb2xfZHJ2aW5mbyAqaW5mbykKK3sKKwlzdHJ1Y3QgZmVjX2VuZXRf cHJpdmF0ZSAqZmVwID0gbmV0ZGV2X3ByaXYoZGV2KTsKKworCXN0cmNweShpbmZvLT5kcml2ZXIs IGZlcC0+cGRldi0+ZGV2LmRyaXZlci0+bmFtZSk7CisJc3RyY3B5KGluZm8tPnZlcnNpb24sICJS ZXZpc2lvbjogMS4wIik7CisJc3RyY3B5KGluZm8tPmJ1c19pbmZvLCBmZXAtPnBkZXYtPmRldi5i dXNfaWQpOworfQorCitzdGF0aWMgc3RydWN0IGV0aHRvb2xfb3BzIGZlY19lbmV0X2V0aHRvb2xf b3BzID0geworCS5nZXRfc2V0dGluZ3MJCT0gZmVjX2VuZXRfZ2V0X3NldHRpbmdzLAorCS5zZXRf c2V0dGluZ3MJCT0gZmVjX2VuZXRfc2V0X3NldHRpbmdzLAorCS5nZXRfZHJ2aW5mbwkJPSBmZWNf ZW5ldF9nZXRfZHJ2aW5mbywKKwkuZ2V0X2xpbmsJCT0gZXRodG9vbF9vcF9nZXRfbGluaywKK307 CisKK3N0YXRpYyBpbnQgZmVjX2VuZXRfaW9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3Ry dWN0IGlmcmVxICpycSwgaW50IGNtZCkKK3sKKwlzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVw ID0gbmV0ZGV2X3ByaXYoZGV2KTsKKwlzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gZmVwLT5w aHlfZGV2OworCisJaWYgKCFuZXRpZl9ydW5uaW5nKGRldikpCisJCXJldHVybiAtRUlOVkFMOwor CisJaWYgKCFwaHlkZXYpCisJCXJldHVybiAtRU5PREVWOworCisJcmV0dXJuIHBoeV9taWlfaW9j dGwocGh5ZGV2LCBpZl9taWkocnEpLCBjbWQpOworfQorI2VuZGlmIC8qIEZFQ19MRUdBQ1kgKi8K IAogc3RhdGljIGludAogZmVjX2VuZXRfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQpAQCAt MTk2NSw5ICsyMjc1LDEwIEBAIGZlY19lbmV0X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldikK IAkgKi8KIAlmZWNfc2V0X21hY19hZGRyZXNzKGRldik7CiAKLQlmZXAtPnNlcXVlbmNlX2RvbmUg PSAwOwogCWZlcC0+bGluayA9IDA7CiAKKyNpZmRlZiBGRUNfTEVHQUNZCisJZmVwLT5zZXF1ZW5j ZV9kb25lID0gMDsKIAlpZiAoZmVwLT5waHkpIHsKIAkJbWlpX2RvX2NtZChkZXYsIGZlcC0+cGh5 LT5hY2tfaW50KTsKIAkJbWlpX2RvX2NtZChkZXYsIGZlcC0+cGh5LT5jb25maWcpOwpAQCAtMTk5 Niw2ICsyMzA3LDEwIEBAIGZlY19lbmV0X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAkJ ZmVjX3Jlc3RhcnQoZGV2LCAxKTsKIAl9CiAKKyNlbHNlCisJLyogc2NoZWR1bGUgYSBsaW5rIHN0 YXRlIGNoZWNrICovCisJcGh5X3N0YXJ0KGZlcC0+cGh5X2Rldik7CisjZW5kaWYKIAluZXRpZl9z dGFydF9xdWV1ZShkZXYpOwogCWZlcC0+b3BlbmVkID0gMTsKIAlyZXR1cm4gMDsJCS8qIFN1Y2Nl c3MgKi8KQEAgLTIwMDksNiArMjMyNCw5IEBAIGZlY19lbmV0X2Nsb3NlKHN0cnVjdCBuZXRfZGV2 aWNlICpkZXYpCiAJLyogRG9uJ3Qga25vdyB3aGF0IHRvIGRvIHlldC4KIAkqLwogCWZlcC0+b3Bl bmVkID0gMDsKKyNpZm5kZWYgRkVDX0xFR0FDWQorCXBoeV9zdG9wKGZlcC0+cGh5X2Rldik7Cisj ZW5kaWYKIAluZXRpZl9zdG9wX3F1ZXVlKGRldik7CiAJZmVjX3N0b3AoZGV2KTsKIApAQCAtMjEz NCw3ICsyNDUyLDkgQEAgaW50IF9faW5pdCBmZWNfZW5ldF9pbml0KHN0cnVjdCBuZXRfZGV2aWNl ICpkZXYsIGludCBpbmRleCkKIAl9CiAKIAlzcGluX2xvY2tfaW5pdCgmZmVwLT5od19sb2NrKTsK KyNpZmRlZiBGRUNfTEVHQUNZCiAJc3Bpbl9sb2NrX2luaXQoJmZlcC0+bWlpX2xvY2spOworI2Vu ZGlmCiAKIAkvKiBDcmVhdGUgYW4gRXRoZXJuZXQgZGV2aWNlIGluc3RhbmNlLgogCSovCkBAIC0y MjU4LDI4ICsyNTc4LDI4IEBAIGludCBfX2luaXQgZmVjX2VuZXRfaW5pdChzdHJ1Y3QgbmV0X2Rl dmljZSAqZGV2LCBpbnQgaW5kZXgpCiAJZGV2LT5zdG9wID0gZmVjX2VuZXRfY2xvc2U7CiAJZGV2 LT5zZXRfbXVsdGljYXN0X2xpc3QgPSBzZXRfbXVsdGljYXN0X2xpc3Q7CiAKKyNpZmRlZiBGRUNf TEVHQUNZCiAJZm9yIChpPTA7IGk8Tk1JSS0xOyBpKyspCiAJCW1paV9jbWRzW2ldLm1paV9uZXh0 ID0gJm1paV9jbWRzW2krMV07CiAJbWlpX2ZyZWUgPSBtaWlfY21kczsKIAogCS8qIHNldHVwIE1J SSBpbnRlcmZhY2UgKi8KLSNpZmRlZiBGRUNfTEVHQUNZCiAJZmVjX3NldF9taWkoZGV2LCBmZXAp OwogI2Vsc2UKKwlkZXYtPmRvX2lvY3RsID0gZmVjX2VuZXRfaW9jdGw7CisJZGV2LT5ldGh0b29s X29wcyA9ICZmZWNfZW5ldF9ldGh0b29sX29wczsKKwogCWZlY3AtPmZlY19yX2NudHJsID0gT1BU X0ZSQU1FX1NJWkUgfCAweDA0OwogCWZlY3AtPmZlY194X2NudHJsID0gMHgwMDsKKyNlbmRpZgog Ci0JLyoKLQkgKiBTZXQgTUlJIHNwZWVkIHRvIDIuNSBNSHoKLQkgKi8KLQlmZXAtPnBoeV9zcGVl ZCA9ICgoKChjbGtfZ2V0X3JhdGUoZmVwLT5jbGspIC8gMiArIDQ5OTk5OTkpCi0JCQkJCS8gMjUw MDAwMCkgLyAyKSAmIDB4M0YpIDw8IDE7Ci0JZmVjcC0+ZmVjX21paV9zcGVlZCA9IGZlcC0+cGh5 X3NwZWVkOworI2lmZGVmIEZFQ19MRUdBQ1kKIAlmZWNfcmVzdGFydChkZXYsIDApOwogI2VuZGlm CiAKIAkvKiBDbGVhciBhbmQgZW5hYmxlIGludGVycnVwdHMgKi8KIAlmZWNwLT5mZWNfaWV2ZW50 ID0gMHhmZmMwMDAwMDsKKyNpZmRlZiBGRUNfTEVHQUNZCiAJZmVjcC0+ZmVjX2ltYXNrID0gKEZF Q19FTkVUX1RYRiB8IEZFQ19FTkVUX1JYRiB8IEZFQ19FTkVUX01JSSk7CiAKIAkvKiBRdWV1ZSB1 cCBjb21tYW5kIHRvIGRldGVjdCB0aGUgUEhZIGFuZCBpbml0aWFsaXplIHRoZQpAQCAtMjI4OCw2 ICsyNjA4LDkgQEAgaW50IF9faW5pdCBmZWNfZW5ldF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpk ZXYsIGludCBpbmRleCkKIAlmZXAtPnBoeV9pZF9kb25lID0gMDsKIAlmZXAtPnBoeV9hZGRyID0g MDsKIAltaWlfcXVldWUoZGV2LCBta19taWlfcmVhZChNSUlfUkVHX1BIWUlSMSksIG1paV9kaXNj b3Zlcl9waHkpOworI2Vsc2UKKwlmZWNwLT5mZWNfaW1hc2sgPSAoRkVDX0VORVRfVFhGIHwgRkVD X0VORVRfUlhGKTsKKyNlbmRpZgogCiAJcmV0dXJuIDA7CiB9CkBAIC0yMzE0LDcgKzI2MzcsNyBA QCBmZWNfcmVzdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgZHVwbGV4KQogCiAJLyog Q2xlYXIgYW55IG91dHN0YW5kaW5nIGludGVycnVwdC4KIAkqLwotCWZlY3AtPmZlY19pZXZlbnQg PSAweGZmYzAwMDAwOworCWZlY3AtPmZlY19pZXZlbnQgPSAweGZmYzAwMDAwICYgfkZFQ19FTkVU X01JSTsKIAogCS8qIFNldCBzdGF0aW9uIGFkZHJlc3MuCiAJKi8KQEAgLTI0MDMsNyArMjcyNiwx MSBAQCBmZWNfcmVzdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgZHVwbGV4KQogCiAJ LyogRW5hYmxlIGludGVycnVwdHMgd2Ugd2lzaCB0byBzZXJ2aWNlLgogCSovCisjaWZkZWYgRkVD X0xFR0FDWQogCWZlY3AtPmZlY19pbWFzayA9IChGRUNfRU5FVF9UWEYgfCBGRUNfRU5FVF9SWEYg fCBGRUNfRU5FVF9NSUkpOworI2Vsc2UKKwlmZWNwLT5mZWNfaW1hc2sgPSAoRkVDX0VORVRfVFhG IHwgRkVDX0VORVRfUlhGKTsKKyNlbmRpZgogfQogCiBzdGF0aWMgdm9pZApAQCAtMjQzNSw3ICsy NzYyLDExIEBAIGZlY19zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJKi8KIAlmZWNwLT5m ZWNfaWV2ZW50ID0gRkVDX0VORVRfTUlJOwogCisjaWZkZWYgRkVDX0xFR0FDWQogCWZlY3AtPmZl Y19pbWFzayA9IEZFQ19FTkVUX01JSTsKKyNlbHNlCisJZmVjcC0+ZmVjX2ltYXNrID0gMDsKKyNl bmRpZgogCWZlY3AtPmZlY19taWlfc3BlZWQgPSBmZXAtPnBoeV9zcGVlZDsKIH0KIApAQCAtMjQ5 Nyw2ICsyODI4LDcgQEAgZmVjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJ bWVtc2V0KGZlcCwgMCwgc2l6ZW9mKCpmZXApKTsKIAogCW5kZXYtPmJhc2VfYWRkciA9ICh1bnNp Z25lZCBsb25nKWlvcmVtYXAoci0+c3RhcnQsIHJlc291cmNlX3NpemUocikpOworCWZlcC0+cGRl diA9IHBkZXY7CiAKIAlpZiAoIW5kZXYtPmJhc2VfYWRkcikgewogCQlyZXQgPSAtRU5PTUVNOwpA QCAtMjUzMiwxMyArMjg2NCwyNCBAQCBmZWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikKIAlpZiAocmV0KQogCQlnb3RvIGZhaWxlZF9pbml0OwogCisJcmV0ID0gZmVjX2VuZXRf bWlpX2luaXQocGRldik7CisJaWYgKHJldCkKKwkJZ290byBmYWlsZWRfbWlpX2luaXQ7CisKIAly ZXQgPSByZWdpc3Rlcl9uZXRkZXYobmRldik7CiAJaWYgKHJldCkKIAkJZ290byBmYWlsZWRfcmVn aXN0ZXI7CiAKKwlwcmludGsoS0VSTl9JTkZPICIlczogRnJlZXNjYWxlIEZFQyBQSFkgZHJpdmVy IFslc10gIgorCSAgICAgICAiKG1paV9idXM6cGh5X2FkZHI9JXMsIGlycT0lZClcbiIsIG5kZXYt Pm5hbWUsCisJICAgICAgIGZlcC0+cGh5X2Rldi0+ZHJ2LT5uYW1lLCBmZXAtPnBoeV9kZXYtPmRl di5idXNfaWQsCisJICAgICAgIGZlcC0+cGh5X2Rldi0+aXJxKTsKKwogCXJldHVybiAwOwogCiBm YWlsZWRfcmVnaXN0ZXI6CisJZmVjX2VuZXRfbWlpX3JlbW92ZShmZXApOworZmFpbGVkX21paV9p bml0OgogZmFpbGVkX2luaXQ6CiAJY2xrX2Rpc2FibGUoZmVwLT5jbGspOwogCWNsa19wdXQoZmVw LT5jbGspOwpAQCAtMjU2NSw2ICsyOTA4LDcgQEAgZmVjX2Rydl9yZW1vdmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldikKIAlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBOVUxMKTsKIAog CWZlY19zdG9wKG5kZXYpOworCWZlY19lbmV0X21paV9yZW1vdmUoZmVwKTsKIAljbGtfZGlzYWJs ZShmZXAtPmNsayk7CiAJY2xrX3B1dChmZXAtPmNsayk7CiAJaW91bm1hcCgodm9pZCBfX2lvbWVt ICopbmRldi0+YmFzZV9hZGRyKTsK --0015174c34a222c4a1046279c1b2--