From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ulrich Hecht Subject: [PROTO][PATCH 04/10] drm: rcar-du: lvds: LVDS PLL support Date: Tue, 14 Aug 2018 15:49:58 +0200 Message-ID: <1534254604-24204-5-git-send-email-uli+renesas@fpond.eu> References: <1534254604-24204-1-git-send-email-uli+renesas@fpond.eu> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mo6-p02-ob.smtp.rzone.de (mo6-p02-ob.smtp.rzone.de [IPv6:2a01:238:20a:202:5302::6]) by gabe.freedesktop.org (Postfix) with ESMTPS id 904856E144 for ; Tue, 14 Aug 2018 13:50:39 +0000 (UTC) In-Reply-To: <1534254604-24204-1-git-send-email-uli+renesas@fpond.eu> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: laurent.pinchart@ideasonboard.com Cc: linux-renesas-soc@vger.kernel.org, kieran.bingham+renesas@ideasonboard.com, jacopo+renesas@jmondi.org, Ulrich Hecht , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org SW4gUi1DYXIgRDMgYW5kIEUzLCB0aGUgRFUgZG90IGNsb2NrIGNhbiBiZSBzb3VyY2VkIGZyb20g dGhlIExWRFMgUExMLgpUaGlzIHBhdGNoIGVuYWJsZXMgdGhhdCBQTEwgaWYgcHJlc2VudC4KCkJh c2VkIG9uIHBhdGNoIGJ5IEtvamkgTWF0c3Vva2EgPGtvamkubWF0c3Vva2EueG1AcmVuZXNhcy5j b20+LgoKU2lnbmVkLW9mZi1ieTogVWxyaWNoIEhlY2h0IDx1bGkrcmVuZXNhc0BmcG9uZC5ldT4K LS0tCiBkcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X2NydGMuYyAgIHwgICAzICsKIGRy aXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfY3J0Yy5oICAgfCAgIDIgKwogZHJpdmVycy9n cHUvZHJtL3JjYXItZHUvcmNhcl9kdV9kcnYuYyAgICB8ICAgMyArLQogZHJpdmVycy9ncHUvZHJt L3JjYXItZHUvcmNhcl9kdV9kcnYuaCAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vcmNhci1k dS9yY2FyX2R1X2dyb3VwLmMgIHwgIDExICstCiBkcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2Fy X2x2ZHMuYyAgICAgIHwgMjEyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZl cnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfbHZkc19yZWdzLmggfCAgNDYgKysrKysrLQogNyBmaWxl cyBjaGFuZ2VkLCAyNzQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X2NydGMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9yY2FyLWR1L3JjYXJfZHVfY3J0Yy5jCmluZGV4IDkxNTNlN2EuLmE5MDM0NTYgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfY3J0Yy5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfY3J0Yy5jCkBAIC0yNzUsNiArMjc1LDkgQEAgc3RhdGlj IHZvaWQgcmNhcl9kdV9jcnRjX3NldF9kaXNwbGF5X3RpbWluZyhzdHJ1Y3QgcmNhcl9kdV9jcnRj ICpyY3J0YykKIAkJCW1vZGVfY2xvY2ssIGV4dHJhdGUsIHJhdGUsIGVzY3IpOwogCX0KIAorCWlm IChyY2FyX2R1X2hhcyhyY2R1LCBSQ0FSX0RVX0ZFQVRVUkVfTFZEU19QTEwpKQorCQllc2NyID0g MDsKKwogCXJjYXJfZHVfZ3JvdXBfd3JpdGUocmNydGMtPmdyb3VwLCByY3J0Yy0+aW5kZXggJSAy ID8gRVNDUjIgOiBFU0NSLAogCQkJICAgIGVzY3IpOwogCXJjYXJfZHVfZ3JvdXBfd3JpdGUocmNy dGMtPmdyb3VwLCByY3J0Yy0+aW5kZXggJSAyID8gT1RBUjIgOiBPVEFSLCAwKTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfY3J0Yy5oIGIvZHJpdmVycy9ncHUv ZHJtL3JjYXItZHUvcmNhcl9kdV9jcnRjLmgKaW5kZXggNzY4MGNiMi4uNjVkZTU1MSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9kdV9jcnRjLmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL3JjYXItZHUvcmNhcl9kdV9jcnRjLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgc3RydWN0 IHJjYXJfZHVfdnNwOwogICogQGdyb3VwOiBDUlRDIGdyb3VwIHRoaXMgQ1JUQyBiZWxvbmdzIHRv CiAgKiBAdnNwOiBWU1AgZmVlZGluZyB2aWRlbyB0byB0aGlzIENSVEMKICAqIEB2c3BfcGlwZTog aW5kZXggb2YgdGhlIFZTUCBwaXBlbGluZSBmZWVkaW5nIHZpZGVvIHRvIHRoaXMgQ1JUQworICog QGx2ZHNfY2g6IGluZGV4IG9mIExWRFMKICAqLwogc3RydWN0IHJjYXJfZHVfY3J0YyB7CiAJc3Ry dWN0IGRybV9jcnRjIGNydGM7CkBAIC02Nyw2ICs2OCw3IEBAIHN0cnVjdCByY2FyX2R1X2NydGMg ewogCXN0cnVjdCByY2FyX2R1X2dyb3VwICpncm91cDsKIAlzdHJ1Y3QgcmNhcl9kdV92c3AgKnZz cDsKIAl1bnNpZ25lZCBpbnQgdnNwX3BpcGU7CisJaW50IGx2ZHNfY2g7CiB9OwogCiAjZGVmaW5l IHRvX3JjYXJfY3J0YyhjKQljb250YWluZXJfb2YoYywgc3RydWN0IHJjYXJfZHVfY3J0YywgY3J0 YykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfZHJ2LmMgYi9k cml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X2Rydi5jCmluZGV4IGQ5MzA5OTYuLjMzMzhl ZjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfZHJ2LmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9kdV9kcnYuYwpAQCAtMjk5LDcgKzI5OSw4 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcmNhcl9kdV9kZXZpY2VfaW5mbyByY2FyX2R1X3I4YTc3 OTk1X2luZm8gPSB7CiAJLmZlYXR1cmVzID0gUkNBUl9EVV9GRUFUVVJFX0NSVENfSVJRX0NMT0NL CiAJCSAgfCBSQ0FSX0RVX0ZFQVRVUkVfRVhUX0NUUkxfUkVHUwogCQkgIHwgUkNBUl9EVV9GRUFU VVJFX1ZTUDFfU09VUkNFCi0JCSAgfCBSQ0FSX0RVX0ZFQVRVUkVfUjhBNzc5OTVfUkVHUywKKwkJ ICB8IFJDQVJfRFVfRkVBVFVSRV9SOEE3Nzk5NV9SRUdTCisJCSAgfCBSQ0FSX0RVX0ZFQVRVUkVf TFZEU19QTEwsCiAJLnF1aXJrcyA9IFJDQVJfRFVfUVVJUktfVFZNX01BU1RFUl9PTkxZLAogCS5j aGFubmVsc19tYXNrID0gQklUKDEpIHwgQklUKDApLAogCS5yb3V0ZXMgPSB7CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L3JjYXItZHUvcmNhcl9kdV9kcnYuaAppbmRleCA5MzU1YjU4Li42MDA5YjdkIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9yY2FyLWR1L3JjYXJfZHVfZHJ2LmgKQEAgLTMyLDYgKzMyLDcgQEAgc3RydWN0IHJjYXJf ZHVfZGV2aWNlOwogI2RlZmluZSBSQ0FSX0RVX0ZFQVRVUkVfVlNQMV9TT1VSQ0UJKDEgPDwgMikJ LyogSGFzIGlucHV0cyBmcm9tIFZTUDEgKi8KICNkZWZpbmUgUkNBUl9EVV9GRUFUVVJFX1I4QTc3 OTY1X1JFR1MJKDEgPDwgMykJLyogVXNlIFI4QTc3OTY1IHJlZ2lzdGVycyAqLwogI2RlZmluZSBS Q0FSX0RVX0ZFQVRVUkVfUjhBNzc5OTVfUkVHUwkoMSA8PCA0KQkvKiBVc2UgUjhBNzc5OTUgcmVn aXN0ZXJzICovCisjZGVmaW5lIFJDQVJfRFVfRkVBVFVSRV9MVkRTX1BMTAkoMSA8PCA1KQkvKiBV c2UgUExMIGluIExWRFMgKi8KIAogI2RlZmluZSBSQ0FSX0RVX1FVSVJLX0FMSUdOXzEyOEIJKDEg PDwgMCkJLyogQWxpZ24gcGl0Y2hlcyB0byAxMjggYnl0ZXMgKi8KICNkZWZpbmUgUkNBUl9EVV9R VUlSS19UVk1fTUFTVEVSX09OTFkJKDEgPDwgMSkJLyogRG9lcyBub3QgaGF2ZSBUViBzd2l0Y2gv c3luYyBtb2RlcyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9k dV9ncm91cC5jIGIvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9kdV9ncm91cC5jCmluZGV4 IDM3MWQ3ODAuLjQ0NjgxZTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3Jj YXJfZHVfZ3JvdXAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X2dyb3Vw LmMKQEAgLTEyNiw4ICsxMjYsMTUgQEAgc3RhdGljIHZvaWQgcmNhcl9kdV9ncm91cF9zZXR1cChz dHJ1Y3QgcmNhcl9kdV9ncm91cCAqcmdycCkKIAkJICogYXJlIHNldHVwIHRocm91Z2ggcGVyLWdy b3VwIHJlZ2lzdGVycywgb25seSBhdmFpbGFibGUgd2hlbgogCQkgKiB0aGUgZ3JvdXAgaGFzIHR3 byBjaGFubmVscy4KIAkJICovCi0JCWlmICgocmNkdS0+aW5mby0+Z2VuIDwgMyAmJiByZ3JwLT5p bmRleCA9PSAwKSB8fAotCQkgICAgKHJjZHUtPmluZm8tPmdlbiA9PSAzICYmICByZ3JwLT5udW1f Y3J0Y3MgPiAxKSkKKwkJaWYgKHJjYXJfZHVfaGFzKHJjZHUsIFJDQVJfRFVfRkVBVFVSRV9MVkRT X1BMTCkpCisJCQlyY2FyX2R1X2dyb3VwX3dyaXRlKHJncnAsCisJCQkJCSAgICBESURTUiwgRElE U1JfQ09ERSB8CisJCQkJCSAgICBESURTUl9MQ0RTX0xWRFMwKDEpIHwKKwkJCQkJICAgIERJRFNS X0xDRFNfTFZEUzAoMCkgfAorCQkJCQkgICAgRElEU1JfUERDU19DTEsoMSwgMCkgfAorCQkJCQkg ICAgRElEU1JfUERDU19DTEsoMCwgMCkpOworCQllbHNlIGlmICgocmNkdS0+aW5mby0+Z2VuIDwg MyAmJiByZ3JwLT5pbmRleCA9PSAwKSB8fAorCQkJIChyY2R1LT5pbmZvLT5nZW4gPT0gMyAmJiAg cmdycC0+bnVtX2NydGNzID4gMSkpCiAJCQlyY2FyX2R1X2dyb3VwX3dyaXRlKHJncnAsIERJRFNS LCBESURTUl9DT0RFKTsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1 L3JjYXJfbHZkcy5jIGIvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9sdmRzLmMKaW5kZXgg NGMzOWRlMy4uY2Q1NTU3NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNh cl9sdmRzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9sdmRzLmMKQEAgLTIz LDYgKzIzLDggQEAKICNpbmNsdWRlIDxkcm0vZHJtX3BhbmVsLmg+CiAKICNpbmNsdWRlICJyY2Fy X2x2ZHNfcmVncy5oIgorI2luY2x1ZGUgInJjYXJfZHVfY3J0Yy5oIgorI2luY2x1ZGUgInJjYXJf ZHVfZHJ2LmgiCiAKIC8qIEtlZXAgaW4gc3luYyB3aXRoIHRoZSBMVkRDUjAuTFZNRCBoYXJkd2Fy ZSByZWdpc3RlciB2YWx1ZXMuICovCiBlbnVtIHJjYXJfbHZkc19tb2RlIHsKQEAgLTY1LDYgKzY3 LDE1IEBAIHN0cnVjdCByY2FyX2x2ZHMgewogI2RlZmluZSBjb25uZWN0b3JfdG9fcmNhcl9sdmRz KGNvbm5lY3RvcikgXAogCWNvbnRhaW5lcl9vZihjb25uZWN0b3IsIHN0cnVjdCByY2FyX2x2ZHMs IGNvbm5lY3RvcikKIAorc3RydWN0IHBsbF9pbmZvIHsKKwl1bnNpZ25lZCBpbnQgcGxsY2xrOwor CXVuc2lnbmVkIGludCBkaWZmOworCXVuc2lnbmVkIGludCBjbGtfbjsKKwl1bnNpZ25lZCBpbnQg Y2xrX207CisJdW5zaWduZWQgaW50IGNsa19lOworCXVuc2lnbmVkIGludCBkaXY7Cit9OworCiBz dGF0aWMgdm9pZCByY2FyX2x2ZHNfd3JpdGUoc3RydWN0IHJjYXJfbHZkcyAqbHZkcywgdTMyIHJl ZywgdTMyIGRhdGEpCiB7CiAJaW93cml0ZTMyKGRhdGEsIGx2ZHMtPm1taW8gKyByZWcpOwpAQCAt MTU1LDYgKzE2NiwxOTggQEAgc3RhdGljIHUzMiByY2FyX2x2ZHNfbHZkcGxsY3JfZ2VuMyh1bnNp Z25lZCBpbnQgZnJlcSkKIAkJcmV0dXJuIExWRFBMTENSX1BMTERJVkNOVF8xNDhNOwogfQogCitz dGF0aWMgdm9pZCByY2FyX2x2ZHNfcGxsX2NhbGMoc3RydWN0IHJjYXJfZHVfY3J0YyAqcmNydGMs CisJCQkJICAgICBzdHJ1Y3QgcGxsX2luZm8gKnBsbCwgdW5zaWduZWQgaW50IGluX2ZyZSwKKwkJ CQkgICAgIHVuc2lnbmVkIGludCBtb2RlX2ZyZXEsIGJvb2wgZWRpdmlkZXIpCit7CisJdW5zaWdu ZWQgbG9uZyBkaWZmID0gKHVuc2lnbmVkIGxvbmcpLTE7CisJdW5zaWduZWQgbG9uZyBmb3V0LCBm cGZkLCBmdmNvLCBuLCBtLCBlLCBkaXY7CisJYm9vbCBjbGtfZGlmZl9zZXQgPSB0cnVlOworCisJ aWYgKGluX2ZyZSA8IDEyMDAwMDAwIHx8IGluX2ZyZSA+IDE5MjAwMDAwMCkKKwkJcmV0dXJuOwor CisJZm9yIChuID0gMDsgbiA8IDEyNzsgbisrKSB7CisJCWlmIChuICsgMSA8IDYwIHx8IG4gKyAx ID4gMTIwKQorCQkJY29udGludWU7CisKKwkJZm9yIChtID0gMDsgbSA8IDc7IG0rKykgeworCQkJ Zm9yIChlID0gMDsgZSA8IDE7IGUrKykgeworCQkJCWlmIChlZGl2aWRlcikKKwkJCQkJZm91dCA9 ICgoKGluX2ZyZSAvIDEwMDApICogKG4gKyAxKSkgLworCQkJCQkJKChtICsgMSkgKiAoZSArIDEp ICogMikpICoKKwkJCQkJCTEwMDA7CisJCQkJZWxzZQorCQkJCQlmb3V0ID0gKCgoaW5fZnJlIC8g MTAwMCkgKiAobiArIDEpKSAvCisJCQkJCQkobSArIDEpKSAqIDEwMDA7CisKKwkJCQlpZiAoZm91 dCA+IDEwMzk1MDAwMDApCisJCQkJCWNvbnRpbnVlOworCisJCQkJZnBmZCAgPSAoaW5fZnJlIC8g KG0gKyAxKSk7CisJCQkJaWYgKGZwZmQgPCAxMjAwMDAwMCB8fCBmcGZkID4gMjQwMDAwMDApCisJ CQkJCWNvbnRpbnVlOworCisJCQkJZnZjbyAgPSAoKChpbl9mcmUgLyAxMDAwKSAqIChuICsgMSkp IC8gKG0gKyAxKSkKKwkJCQkJICogMTAwMDsKKwkJCQlpZiAoZnZjbyA8IDkwMDAwMDAwMCB8fCBm dmNvID4gMTgwMDAwMDAwMCkKKwkJCQkJY29udGludWU7CisKKwkJCQlmb3V0ID0gZm91dCAvIDc7 IC8qIDcgZGl2aWRlciAqLworCisJCQkJZm9yIChkaXYgPSAwOyBkaXYgPCA2NDsgZGl2KyspIHsK KwkJCQkJZGlmZiA9IGFicygobG9uZykoZm91dCAvIChkaXYgKyAxKSkgLQorCQkJCQkgICAgICAg KGxvbmcpbW9kZV9mcmVxKTsKKworCQkJCQlpZiAoY2xrX2RpZmZfc2V0IHx8CisJCQkJCSAgICAo ZGlmZiA9PSAwIHx8CisJCQkJCSAgICBwbGwtPmRpZmYgPiBkaWZmKSkgeworCQkJCQkJcGxsLT5k aWZmID0gZGlmZjsKKwkJCQkJCXBsbC0+Y2xrX24gPSBuOworCQkJCQkJcGxsLT5jbGtfbSA9IG07 CisJCQkJCQlwbGwtPmNsa19lID0gZTsKKwkJCQkJCXBsbC0+cGxsY2xrID0gZm91dDsKKwkJCQkJ CXBsbC0+ZGl2ID0gZGl2OworCisJCQkJCQljbGtfZGlmZl9zZXQgPSBmYWxzZTsKKworCQkJCQkJ aWYgKGRpZmYgPT0gMCkKKwkJCQkJCQlyZXR1cm47CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0K Kwl9Cit9CisKK3N0YXRpYyB2b2lkIHJjYXJfbHZkc19wbGxfcHJlX3N0YXJ0KHN0cnVjdCByY2Fy X2x2ZHMgKmx2ZHMsCisJCQkJICAgIHN0cnVjdCByY2FyX2R1X2NydGMgKnJjcnRjKQoreworCWNv bnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0KKwkJCQkmcmNydGMtPmNydGMuc3Rh dGUtPmFkanVzdGVkX21vZGU7CisJdW5zaWduZWQgaW50IG1vZGVfZnJlcSA9IG1vZGUtPmNsb2Nr ICogMTAwMDsKKwl1bnNpZ25lZCBpbnQgZXh0X2NsayA9IDA7CisJc3RydWN0IHBsbF9pbmZvICps dmRzX3BsbFsyXTsKKwl1MzIgY2xrc2VsLCBja3NlbDsKKwlpbnQgaSwgcmV0OworCisJaWYgKHJj cnRjLT5leHRjbG9jaykKKwkJZXh0X2NsayA9IGNsa19nZXRfcmF0ZShyY3J0Yy0+ZXh0Y2xvY2sp OworCWVsc2UKKwkJZGV2X3dhcm4obHZkcy0+ZGV2LCAiZXh0ZXJuYWwgY2xvY2sgaXMgbm90IHNl dFxuIik7CisKKwlkZXZfZGJnKGx2ZHMtPmRldiwgImV4dGVybmFsIGNsb2NrICVkIEh6XG4iLCBl eHRfY2xrKTsKKworCWlmIChsdmRzLT5lbmFibGVkKQorCQlyZXR1cm47CisKKwlmb3IgKGkgPSAw OyBpIDwgMjsgaSsrKSB7CisJCWx2ZHNfcGxsW2ldID0ga3phbGxvYyhzaXplb2YoKmx2ZHNfcGxs KSwgR0ZQX0tFUk5FTCk7CisJCWlmICghbHZkc19wbGxbaV0pCisJCQlyZXR1cm47CisJfQorCisJ Lyogc29mdHdhcmUgcmVzZXQgcmVsZWFzZSAqLworCXJlc2V0X2NvbnRyb2xfZGVhc3NlcnQobHZk cy0+cnN0KTsKKworCXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShsdmRzLT5jbG9jayk7CisJaWYg KHJldCA8IDApCisJCWdvdG8gZW5kOworCisJZm9yIChpID0gMDsgaSA8IDI7IGkrKykgeworCQli b29sIGVkaXZpZGVyOworCisJCWlmIChpID09IDApCisJCQllZGl2aWRlciA9IHRydWU7CisJCWVs c2UKKwkJCWVkaXZpZGVyID0gZmFsc2U7CisKKwkJcmNhcl9sdmRzX3BsbF9jYWxjKHJjcnRjLCBs dmRzX3BsbFtpXSwgZXh0X2NsaywKKwkJCQkJIG1vZGVfZnJlcSwgZWRpdmlkZXIpOworCX0KKwor CWRldl9kYmcobHZkcy0+ZGV2LCAibW9kZV9mcmVxdWVuY3kgJWQgSHpcbiIsIG1vZGVfZnJlcSk7 CisKKwlpZiAobHZkc19wbGxbMV0tPmRpZmYgPj0gbHZkc19wbGxbMF0tPmRpZmYpIHsKKwkJLyog dXNlIEUtZWRpdmlkZXIgKi8KKwkJaSA9IDA7CisJCWNsa3NlbCA9IExWRFBMTENSX09VVENMS1NF TF9BRlRFUiB8CisJCQkgTFZEUExMQ1JfU1RQX0NMS09VVEUxX0VOOworCX0gZWxzZSB7CisJCS8q IGRvIG5vdCB1c2UgRS1kaXZpZGVyICovCisJCWkgPSAxOworCQljbGtzZWwgPSBMVkRQTExDUl9P VVRDTEtTRUxfQkVGT1JFIHwKKwkJCSBMVkRQTExDUl9TVFBfQ0xLT1VURTFfRElTOworCX0KKwlk ZXZfZGJnKGx2ZHMtPmRldiwKKwkJIkUtZGl2aWRlciAlc1xuIiwgKGkgPT0gMCA/ICJpcyB1c2Vk IiA6ICJpcyBub3QgdXNlZCIpKTsKKworCWRldl9kYmcobHZkcy0+ZGV2LAorCQkicGxsY2xrOiV1 LCBuOiV1LCBtOiV1LCBlOiV1LCBkaWZmOiV1LCBkaXY6JXVcbiIsCisJCSBsdmRzX3BsbFtpXS0+ cGxsY2xrLCBsdmRzX3BsbFtpXS0+Y2xrX24sIGx2ZHNfcGxsW2ldLT5jbGtfbSwKKwkJIGx2ZHNf cGxsW2ldLT5jbGtfZSwgbHZkc19wbGxbaV0tPmRpZmYsIGx2ZHNfcGxsW2ldLT5kaXYpOworCisJ aWYgKHJjcnRjLT5leHRhbF91c2UpCisJCWNrc2VsID0gTFZEUExMQ1JfQ0tTRUxfRVhUQUw7CisJ ZWxzZQorCQlja3NlbCA9IExWRFBMTENSX0NLU0VMX0RVX0RPVENMS0lOKHJjcnRjLT5pbmRleCk7 CisKKwlyY2FyX2x2ZHNfd3JpdGUobHZkcywgTFZEUExMQ1IsIExWRFBMTENSX1BMTE9OIHwKKwkJ CUxWRFBMTENSX09DS1NFTF83IHwgY2xrc2VsIHwgTFZEUExMQ1JfQ0xLT1VUX0VOQUJMRSB8CisJ CQlja3NlbCB8IChsdmRzX3BsbFtpXS0+Y2xrX2UgPDwgMTApIHwKKwkJCShsdmRzX3BsbFtpXS0+ Y2xrX24gPDwgMykgfCBsdmRzX3BsbFtpXS0+Y2xrX20pOworCisJaWYgKGx2ZHNfcGxsW2ldLT5k aXYgPiAwKQorCQlyY2FyX2x2ZHNfd3JpdGUobHZkcywgTFZERElWLCBMVkRESVZfRElWU0VMIHwK KwkJCQlMVkRESVZfRElWUkVTRVQgfCBsdmRzX3BsbFtpXS0+ZGl2KTsKKwllbHNlCisJCXJjYXJf bHZkc193cml0ZShsdmRzLCBMVkRESVYsIDApOworCisJZGV2X2RiZyhsdmRzLT5kZXYsICJMVkRQ TExDUjogMHgleFxuIiwKKwkJaW9yZWFkMzIobHZkcy0+bW1pbyArIExWRFBMTENSKSk7CisJZGV2 X2RiZyhsdmRzLT5kZXYsICJMVkRESVY6IDB4JXhcbiIsCisJCWlvcmVhZDMyKGx2ZHMtPm1taW8g KyBMVkRESVYpKTsKKworZW5kOgorCWZvciAoaSA9IDA7IGkgPCAyOyBpKyspCisJCWtmcmVlKGx2 ZHNfcGxsW2ldKTsKK30KKworc3RhdGljIHZvaWQgcmNhcl9sdmRzX3BsbF9zdGFydChzdHJ1Y3Qg cmNhcl9sdmRzICpsdmRzLAorCQkJICAgICAgIHN0cnVjdCByY2FyX2R1X2NydGMgKnJjcnRjKQor eworCXUzMiBsdmRoY3IsIGx2ZGNyMDsKKworCXJjYXJfbHZkc193cml0ZShsdmRzLCBMVkRDVFJD UiwgTFZEQ1RSQ1JfQ1RSM1NFTF9aRVJPIHwKKwkJCUxWRENUUkNSX0NUUjJTRUxfRElTUCB8IExW RENUUkNSX0NUUjFTRUxfVlNZTkMgfAorCQkJTFZEQ1RSQ1JfQ1RSMFNFTF9IU1lOQyk7CisKKwls dmRoY3IgPSBMVkRDSENSX0NIU0VMX0NIKDAsIDApIHwgTFZEQ0hDUl9DSFNFTF9DSCgxLCAxKSB8 CisJCSBMVkRDSENSX0NIU0VMX0NIKDIsIDIpIHwgTFZEQ0hDUl9DSFNFTF9DSCgzLCAzKTsKKwly Y2FyX2x2ZHNfd3JpdGUobHZkcywgTFZEQ0hDUiwgbHZkaGNyKTsKKworCXJjYXJfbHZkc193cml0 ZShsdmRzLCBMVkRTVFJJUEUsIDApOworCS8qIFR1cm4gYWxsIHRoZSBjaGFubmVscyBvbi4gKi8K KwlyY2FyX2x2ZHNfd3JpdGUobHZkcywgTFZEQ1IxLAorCQkJTFZEQ1IxX0NIU1RCWSgzKSB8IExW RENSMV9DSFNUQlkoMikgfAorCQkJTFZEQ1IxX0NIU1RCWSgxKSB8IExWRENSMV9DSFNUQlkoMCkg fAorCQkJTFZEQ1IxX0NMS1NUQlkpOworCS8qCisJICogVHVybiB0aGUgUExMIG9uLCBzZXQgaXQg dG8gTFZEUyBub3JtYWwgbW9kZSwgd2FpdCBmb3IgdGhlIHN0YXJ0dXAKKwkgKiBkZWxheSBhbmQg dHVybiB0aGUgb3V0cHV0IG9uLgorCSAqLworCWx2ZGNyMCA9IChsdmRzLT5tb2RlIDw8IExWRENS MF9MVk1EX1NISUZUKSB8IExWRENSMF9QV0Q7CisJcmNhcl9sdmRzX3dyaXRlKGx2ZHMsIExWRENS MCwgbHZkY3IwKTsKKworCWx2ZGNyMCB8PSBMVkRDUjBfTFZFTjsKKwlyY2FyX2x2ZHNfd3JpdGUo bHZkcywgTFZEQ1IwLCBsdmRjcjApOworCisJbHZkY3IwIHw9IExWRENSMF9MVlJFUzsKKwlyY2Fy X2x2ZHNfd3JpdGUobHZkcywgTFZEQ1IwLCBsdmRjcjApOworCisJbHZkcy0+ZW5hYmxlZCA9IHRy dWU7Cit9CisKIHN0YXRpYyB2b2lkIHJjYXJfbHZkc19lbmFibGUoc3RydWN0IGRybV9icmlkZ2Ug KmJyaWRnZSkKIHsKIAlzdHJ1Y3QgcmNhcl9sdmRzICpsdmRzID0gYnJpZGdlX3RvX3JjYXJfbHZk cyhicmlkZ2UpOwpAQCAtMTY0LDYgKzM2Nyw3IEBAIHN0YXRpYyB2b2lkIHJjYXJfbHZkc19lbmFi bGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKIAkgKiBkbyB3ZSBnZXQgYSBzdGF0ZSBwb2lu dGVyPwogCSAqLwogCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGx2ZHMtPmJyaWRnZS5lbmNvZGVy LT5jcnRjOworCXN0cnVjdCByY2FyX2R1X2RldmljZSAqcmNkdSA9IHRvX3JjYXJfY3J0YyhjcnRj KS0+Z3JvdXAtPmRldjsKIAl1MzIgbHZkcGxsY3I7CiAJdTMyIGx2ZGhjcjsKIAl1MzIgbHZkY3Iw OwpAQCAtMTcxLDYgKzM3NSwxMiBAQCBzdGF0aWMgdm9pZCByY2FyX2x2ZHNfZW5hYmxlKHN0cnVj dCBkcm1fYnJpZGdlICpicmlkZ2UpCiAKIAlXQVJOX09OKGx2ZHMtPmVuYWJsZWQpOwogCisJaWYg KHJjYXJfZHVfaGFzKHJjZHUsIFJDQVJfRFVfRkVBVFVSRV9MVkRTX1BMTCkpIHsKKwkJcmNhcl9s dmRzX3BsbF9wcmVfc3RhcnQobHZkcywgdG9fcmNhcl9jcnRjKGNydGMpKTsKKwkJcmNhcl9sdmRz X3BsbF9zdGFydChsdmRzLCB0b19yY2FyX2NydGMoY3J0YykpOworCQlyZXR1cm47CisJfQorCiAJ cmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGx2ZHMtPmNsb2NrKTsKIAlpZiAocmV0IDwgMCkKIAkJ cmV0dXJuOwpAQCAtMjY0LDYgKzQ3NCw3IEBAIHN0YXRpYyB2b2lkIHJjYXJfbHZkc19kaXNhYmxl KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCiAKIAlyY2FyX2x2ZHNfd3JpdGUobHZkcywgTFZE Q1IwLCAwKTsKIAlyY2FyX2x2ZHNfd3JpdGUobHZkcywgTFZEQ1IxLCAwKTsKKwlyY2FyX2x2ZHNf d3JpdGUobHZkcywgTFZEUExMQ1IsIDApOwogCiAJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGx2ZHMt PmNsb2NrKTsKIApAQCAtNTIyLDYgKzczMyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2 aWNlX2lkIHJjYXJfbHZkc19vZl90YWJsZVtdID0gewogCXsgLmNvbXBhdGlibGUgPSAicmVuZXNh cyxyOGE3Nzk1LWx2ZHMiLCAuZGF0YSA9ICZyY2FyX2x2ZHNfZ2VuM19pbmZvIH0sCiAJeyAuY29t cGF0aWJsZSA9ICJyZW5lc2FzLHI4YTc3OTYtbHZkcyIsIC5kYXRhID0gJnJjYXJfbHZkc19nZW4z X2luZm8gfSwKIAl7IC5jb21wYXRpYmxlID0gInJlbmVzYXMscjhhNzc5NzAtbHZkcyIsIC5kYXRh ID0gJnJjYXJfbHZkc19yOGE3Nzk3MF9pbmZvIH0sCisJeyAuY29tcGF0aWJsZSA9ICJyZW5lc2Fz LHI4YTc3OTk1LWx2ZHMiLCAuZGF0YSA9ICZyY2FyX2x2ZHNfZ2VuM19pbmZvIH0sCiAJeyB9CiB9 OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2x2ZHNfcmVncy5o IGIvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9sdmRzX3JlZ3MuaAppbmRleCAyODk2ODM1 Li5lMzdkYjk1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2x2ZHNf cmVncy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfbHZkc19yZWdzLmgKQEAg LTIxLDcgKzIxLDcgQEAKICNkZWZpbmUgTFZEQ1IwX1BMTE9OCQkJKDEgPDwgNCkKICNkZWZpbmUg TFZEQ1IwX1BXRAkJCSgxIDw8IDIpCQkvKiBHZW4zIG9ubHkgKi8KICNkZWZpbmUgTFZEQ1IwX0JF TgkJCSgxIDw8IDIpCQkvKiBHZW4yIG9ubHkgKi8KLSNkZWZpbmUgTFZEQ1IwX0xWRU4JCQkoMSA8 PCAxKQkJLyogR2VuMiBvbmx5ICovCisjZGVmaW5lIExWRENSMF9MVkVOCQkJKDEgPDwgMSkKICNk ZWZpbmUgTFZEQ1IwX0xWUkVTCQkJKDEgPDwgMCkKIAogI2RlZmluZSBMVkRDUjEJCQkJMHgwMDA0 CkBAIC00Niw2ICs0NiwyNCBAQAogI2RlZmluZSBMVkRQTExDUl9QTExESVZDTlRfMTQ4TQkJKDB4 MDQ2YzEgPDwgMCkKICNkZWZpbmUgTFZEUExMQ1JfUExMRElWQ05UX01BU0sJCSgweDdmZmZmIDw8 IDApCiAKKy8qIFItQ2FyIEQzICovCisjZGVmaW5lIExWRFBMTENSX1BMTE9OCQkJKDEgPDwgMjIp CisjZGVmaW5lIExWRFBMTENSX1BMTFNFTF9QTEwwCQkoMCA8PCAyMCkKKyNkZWZpbmUgTFZEUExM Q1JfUExMU0VMX0xWWAkJKDEgPDwgMjApCisjZGVmaW5lIExWRFBMTENSX1BMTFNFTF9QTEwxCQko MiA8PCAyMCkKKyNkZWZpbmUgTFZEUExMQ1JfQ0tTRUxfTFZYCQkoMSA8PCAxNykKKyNkZWZpbmUg TFZEUExMQ1JfQ0tTRUxfRVhUQUwJCSgzIDw8IDE3KQorI2RlZmluZSBMVkRQTExDUl9DS1NFTF9E VV9ET1RDTEtJTjAJKDUgPDwgMTcpCisjZGVmaW5lIExWRFBMTENSX0NLU0VMX0RVX0RPVENMS0lO MQkoNyA8PCAxNykKKyNkZWZpbmUgTFZEUExMQ1JfT0NLU0VMXzcJCSgwIDw8IDE2KQorI2RlZmlu ZSBMVkRQTExDUl9PQ0tTRUxfTk9UX0RJVklERUQJKDEgPDwgMTYpCisjZGVmaW5lIExWRFBMTENS X1NUUF9DTEtPVVRFMV9ESVMJKDAgPDwgMTQpCisjZGVmaW5lIExWRFBMTENSX1NUUF9DTEtPVVRF MV9FTgkoMSA8PCAxNCkKKyNkZWZpbmUgTFZEUExMQ1JfT1VUQ0xLU0VMX0JFRk9SRQkoMCA8PCAx MikKKyNkZWZpbmUgTFZEUExMQ1JfT1VUQ0xLU0VMX0FGVEVSCSgxIDw8IDEyKQorI2RlZmluZSBM VkRQTExDUl9DTEtPVVRfRElTQUJMRQkJKDAgPDwgMTEpCisjZGVmaW5lIExWRFBMTENSX0NMS09V VF9FTkFCTEUJCSgxIDw8IDExKQorCiAjZGVmaW5lIExWRENUUkNSCQkJMHgwMDBjCiAjZGVmaW5l IExWRENUUkNSX0NUUjNTRUxfWkVSTwkJKDAgPDwgMTIpCiAjZGVmaW5lIExWRENUUkNSX0NUUjNT RUxfT0RECQkoMSA8PCAxMikKQEAgLTc0LDQgKzkyLDMwIEBACiAjZGVmaW5lIExWRENIQ1JfQ0hT RUxfQ0gobiwgYykJCSgoKChjKSAtIChuKSkgJiAzKSA8PCAoKG4pICogNCkpCiAjZGVmaW5lIExW RENIQ1JfQ0hTRUxfTUFTSyhuKQkJKDMgPDwgKChuKSAqIDQpKQogCisjZGVmaW5lIExWRFNUUklQ RQkJCTB4MDAxNAorI2RlZmluZSBMVkRTVFJJUEVfU1RfVFJHU0VMX0RJU1AJKDAgPDwgMikKKyNk ZWZpbmUgTFZEU1RSSVBFX1NUX1RSR1NFTF9IU1lOQ19SCSgxIDw8IDIpCisjZGVmaW5lIExWRFNU UklQRV9TVF9UUkdTRUxfSFNZTkNfRgkoMiA8PCAyKQorCisjZGVmaW5lIExWRFNUUklQRV9TVF9T V0FQX05PUk1BTAkoMCA8PCAxKQorI2RlZmluZSBMVkRTVFJJUEVfU1RfU1dBUF9TV0FQCQkoMSA8 PCAxKQorI2RlZmluZSBMVkRTVFJJUEVfU1RfT04JCQkoMSA8PCAwKQorCisjZGVmaW5lIExWRFND UgkJCQkweDAwMTgKKyNkZWZpbmUgTFZEU0NSX0RFUFRIX0RQMQkJKDAgPDwgMjkpCisjZGVmaW5l IExWRFNDUl9ERVBUSF9EUDIJCSgxIDw8IDI5KQorI2RlZmluZSBMVkRTQ1JfREVQVEhfRFAzCQko MiA8PCAyOSkKKyNkZWZpbmUgTFZEU0NSX0JBTkRTRVRfMTBLSFpfTEVTU19USEFOCSgxIDw8IDI4 KQorI2RlZmluZSBMVkRTQ1JfU0RJVl9TUjEJCQkoMCA8PCAyMikKKyNkZWZpbmUgTFZEU0NSX1NE SVZfU1IyCQkJKDEgPDwgMjIpCisjZGVmaW5lIExWRFNDUl9TRElWX1NSNAkJCSgyIDw8IDIyKQor I2RlZmluZSBMVkRTQ1JfU0RJVl9TUjgJCQkoMyA8PCAyMikKKyNkZWZpbmUgTFZEU0NSX01PREVf RE9XTgkJKDEgPDwgMjEpCisjZGVmaW5lIExWRFNDUl9SU1ROX0VOQUJMRQkJKDEgPDwgMjApCisK KyNkZWZpbmUgTFZERElWCQkJCTB4MDAxYworI2RlZmluZSBMVkRESVZfRElWU0VMCQkJKDEgPDwg OCkKKyNkZWZpbmUgTFZERElWX0RJVlJFU0VUCQkJKDEgPDwgNykKKyNkZWZpbmUgTFZERElWX0RJ VlNUUAkJCSgxIDw8IDYpCisKICNlbmRpZiAvKiBfX1JDQVJfTFZEU19SRUdTX0hfXyAqLwotLSAK Mi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRy aS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=