From mboxrd@z Thu Jan 1 00:00:00 1970 From: Neil Armstrong Subject: [PATCH v3 6/6] drm: bridge: dw-hdmi: Move HPD handling to PHY operations Date: Tue, 7 Mar 2017 17:42:24 +0100 Message-ID: <1488904944-14285-7-git-send-email-narmstrong@baylibre.com> References: <1488904944-14285-1-git-send-email-narmstrong@baylibre.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x233.google.com (mail-wm0-x233.google.com [IPv6:2a00:1450:400c:c09::233]) by gabe.freedesktop.org (Postfix) with ESMTPS id B02156E767 for ; Tue, 7 Mar 2017 16:42:40 +0000 (UTC) Received: by mail-wm0-x233.google.com with SMTP id v186so94515453wmd.0 for ; Tue, 07 Mar 2017 08:42:40 -0800 (PST) In-Reply-To: <1488904944-14285-1-git-send-email-narmstrong@baylibre.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, laurent.pinchart+renesas@ideasonboard.com, architt@codeaurora.org Cc: Jose.Abreu@synopsys.com, linux-doc@vger.kernel.org, Neil Armstrong , kieran.bingham@ideasonboard.com, linux-kernel@vger.kernel.org, linux-amlogic@lists.infradead.org, linux-media@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org VGhlIEhETUkgVFggY29udHJvbGxlciBzdXBwb3J0IEhQRCBhbmQgUlhTRU5TRSBzaWduYWxpbmcg ZnJvbSB0aGUgUEhZCnZpYSBpdCdzIFNUQVQwIFBIWSBpbnRlcmZhY2UsIGJ1dCBzb21lIHZlbmRv ciBQSFlzIGNhbiBtYW5hZ2UgdGhlc2UKc2lnbmFscyBpbmRlcGVuZGVudGx5IGZyb20gdGhlIGNv bnRyb2xsZXIsIHRodXMgdGhlc2UgU1RBVDAgaGFuZGxpbmcKc2hvdWxkIGJlIG1vdmVkIHRvIFBI WSBzcGVjaWZpYyBvcGVyYXRpb25zIGFuZCBiZWNvbWUgb3B0aW9uYWwuCgpUaGUgZXhpc3Rpbmcg U1RBVDAgSFBEIGFuZCBSWFNFTlNFIGhhbmRsaW5nIGNvZGUgaXMgcmVmYWN0b3JlZCBpbnRvCmEg c3VwcGxlbWVudGF0eSBzZXQgb2YgZGVmYXVsdCBQSFkgb3BlcmF0aW9ucyB0aGF0IGFyZSB1c2Vk IGF1dG9tYXRpY2FsbHkKd2hlbiB0aGUgcGxhdGZvcm0gZ2x1ZSBkb2Vzbid0IHByb3ZpZGUgaXRz IG93biBvcGVyYXRpb25zLgoKU2lnbmVkLW9mZi1ieTogTmVpbCBBcm1zdHJvbmcgPG5hcm1zdHJv bmdAYmF5bGlicmUuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc3lub3BzeXMvZHct aGRtaS5jIHwgMTM1ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogaW5jbHVkZS9kcm0v YnJpZGdlL2R3X2hkbWkuaCAgICAgICAgICAgICAgfCAgIDUgKysKIDIgZmlsZXMgY2hhbmdlZCwg ODYgaW5zZXJ0aW9ucygrKSwgNTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2JyaWRnZS9zeW5vcHN5cy9kdy1oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdl L3N5bm9wc3lzL2R3LWhkbWkuYwppbmRleCAzNDgzMTFjLi4xYzZjYjQ2IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9wc3lzL2R3LWhkbWkuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vYnJpZGdlL3N5bm9wc3lzL2R3LWhkbWkuYwpAQCAtMTIxNSwxMCArMTIxNSw0NiBAQCBz dGF0aWMgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBkd19oZG1pX3BoeV9yZWFkX2hwZChzdHJ1 Y3QgZHdfaGRtaSAqaGRtaSwKIAkJY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQgOiBjb25uZWN0 b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsKIH0KIAorc3RhdGljIHZvaWQgZHdfaGRtaV9waHlfdXBk YXRlX2hwZChzdHJ1Y3QgZHdfaGRtaSAqaGRtaSwgdm9pZCAqZGF0YSwKKwkJCQkgICBib29sIGZv cmNlLCBib29sIGRpc2FibGVkLCBib29sIHJ4c2Vuc2UpCit7CisJdTggb2xkX21hc2sgPSBoZG1p LT5waHlfbWFzazsKKworCWlmIChmb3JjZSB8fCBkaXNhYmxlZCB8fCAhcnhzZW5zZSkKKwkJaGRt aS0+cGh5X21hc2sgfD0gSERNSV9QSFlfUlhfU0VOU0U7CisJZWxzZQorCQloZG1pLT5waHlfbWFz ayAmPSB+SERNSV9QSFlfUlhfU0VOU0U7CisKKwlpZiAob2xkX21hc2sgIT0gaGRtaS0+cGh5X21h c2spCisJCWhkbWlfd3JpdGViKGhkbWksIGhkbWktPnBoeV9tYXNrLCBIRE1JX1BIWV9NQVNLMCk7 Cit9CisKK3N0YXRpYyB2b2lkIGR3X2hkbWlfcGh5X3NldHVwX2hwZChzdHJ1Y3QgZHdfaGRtaSAq aGRtaSwgdm9pZCAqZGF0YSkKK3sKKwkvKgorCSAqIENvbmZpZ3VyZSB0aGUgUEhZIFJYIFNFTlNF IGFuZCBIUEQgaW50ZXJydXB0cyBwb2xhcml0aWVzIGFuZCBjbGVhcgorCSAqIGFueSBwZW5kaW5n IGludGVycnVwdC4KKwkgKi8KKwloZG1pX3dyaXRlYihoZG1pLCBIRE1JX1BIWV9IUEQgfCBIRE1J X1BIWV9SWF9TRU5TRSwgSERNSV9QSFlfUE9MMCk7CisJaGRtaV93cml0ZWIoaGRtaSwgSERNSV9J SF9QSFlfU1RBVDBfSFBEIHwgSERNSV9JSF9QSFlfU1RBVDBfUlhfU0VOU0UsCisJCSAgICBIRE1J X0lIX1BIWV9TVEFUMCk7CisKKwkvKiBFbmFibGUgY2FibGUgaG90IHBsdWcgaXJxLiAqLworCWhk bWlfd3JpdGViKGhkbWksIGhkbWktPnBoeV9tYXNrLCBIRE1JX1BIWV9NQVNLMCk7CisKKwkvKiBD bGVhciBhbmQgdW5tdXRlIGludGVycnVwdHMuICovCisJaGRtaV93cml0ZWIoaGRtaSwgSERNSV9J SF9QSFlfU1RBVDBfSFBEIHwgSERNSV9JSF9QSFlfU1RBVDBfUlhfU0VOU0UsCisJCSAgICBIRE1J X0lIX1BIWV9TVEFUMCk7CisJaGRtaV93cml0ZWIoaGRtaSwgfihIRE1JX0lIX1BIWV9TVEFUMF9I UEQgfCBIRE1JX0lIX1BIWV9TVEFUMF9SWF9TRU5TRSksCisJCSAgICBIRE1JX0lIX01VVEVfUEhZ X1NUQVQwKTsKK30KKwogc3RhdGljIGNvbnN0IHN0cnVjdCBkd19oZG1pX3BoeV9vcHMgZHdfaGRt aV9zeW5vcHN5c19waHlfb3BzID0gewogCS5pbml0ID0gZHdfaGRtaV9waHlfaW5pdCwKIAkuZGlz YWJsZSA9IGR3X2hkbWlfcGh5X2Rpc2FibGUsCiAJLnJlYWRfaHBkID0gZHdfaGRtaV9waHlfcmVh ZF9ocGQsCisJLnVwZGF0ZV9ocGQgPSBkd19oZG1pX3BoeV91cGRhdGVfaHBkLAorCS5zZXR1cF9o cGQgPSBkd19oZG1pX3BoeV9zZXR1cF9ocGQsCiB9OwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQpAQCAtMTc0MiwzNSArMTc3OCwxMCBAQCBzdGF0aWMgdm9pZCBkd19oZG1pX3VwZGF0ZV9wb3dl cihzdHJ1Y3QgZHdfaGRtaSAqaGRtaSkKICAqLwogc3RhdGljIHZvaWQgZHdfaGRtaV91cGRhdGVf cGh5X21hc2soc3RydWN0IGR3X2hkbWkgKmhkbWkpCiB7Ci0JdTggb2xkX21hc2sgPSBoZG1pLT5w aHlfbWFzazsKLQotCWlmIChoZG1pLT5mb3JjZSB8fCBoZG1pLT5kaXNhYmxlZCB8fCAhaGRtaS0+ cnhzZW5zZSkKLQkJaGRtaS0+cGh5X21hc2sgfD0gSERNSV9QSFlfUlhfU0VOU0U7Ci0JZWxzZQot CQloZG1pLT5waHlfbWFzayAmPSB+SERNSV9QSFlfUlhfU0VOU0U7Ci0KLQlpZiAob2xkX21hc2sg IT0gaGRtaS0+cGh5X21hc2spCi0JCWhkbWlfd3JpdGViKGhkbWksIGhkbWktPnBoeV9tYXNrLCBI RE1JX1BIWV9NQVNLMCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGR3X2hkbWlfcGh5X3NldHVwX2hwZChz dHJ1Y3QgZHdfaGRtaSAqaGRtaSkKLXsKLQkvKgotCSAqIENvbmZpZ3VyZSB0aGUgUEhZIFJYIFNF TlNFIGFuZCBIUEQgaW50ZXJydXB0cyBwb2xhcml0aWVzIGFuZCBjbGVhcgotCSAqIGFueSBwZW5k aW5nIGludGVycnVwdC4KLQkgKi8KLQloZG1pX3dyaXRlYihoZG1pLCBIRE1JX1BIWV9IUEQgfCBI RE1JX1BIWV9SWF9TRU5TRSwgSERNSV9QSFlfUE9MMCk7Ci0JaGRtaV93cml0ZWIoaGRtaSwgSERN SV9JSF9QSFlfU1RBVDBfSFBEIHwgSERNSV9JSF9QSFlfU1RBVDBfUlhfU0VOU0UsCi0JCSAgICBI RE1JX0lIX1BIWV9TVEFUMCk7Ci0KLQkvKiBFbmFibGUgY2FibGUgaG90IHBsdWcgaXJxLiAqLwot CWhkbWlfd3JpdGViKGhkbWksIGhkbWktPnBoeV9tYXNrLCBIRE1JX1BIWV9NQVNLMCk7Ci0KLQkv KiBDbGVhciBhbmQgdW5tdXRlIGludGVycnVwdHMuICovCi0JaGRtaV93cml0ZWIoaGRtaSwgSERN SV9JSF9QSFlfU1RBVDBfSFBEIHwgSERNSV9JSF9QSFlfU1RBVDBfUlhfU0VOU0UsCi0JCSAgICBI RE1JX0lIX1BIWV9TVEFUMCk7Ci0JaGRtaV93cml0ZWIoaGRtaSwgfihIRE1JX0lIX1BIWV9TVEFU MF9IUEQgfCBIRE1JX0lIX1BIWV9TVEFUMF9SWF9TRU5TRSksCi0JCSAgICBIRE1JX0lIX01VVEVf UEhZX1NUQVQwKTsKKwlpZiAoaGRtaS0+cGh5Lm9wcy0+dXBkYXRlX2hwZCkKKwkJaGRtaS0+cGh5 Lm9wcy0+dXBkYXRlX2hwZChoZG1pLCBoZG1pLT5waHkuZGF0YSwKKwkJCQkJICBoZG1pLT5mb3Jj ZSwgaGRtaS0+ZGlzYWJsZWQsCisJCQkJCSAgaGRtaS0+cnhzZW5zZSk7CiB9CiAKIHN0YXRpYyBl bnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzCkBAIC0xOTYyLDYgKzE5NzMsNDEgQEAgc3RhdGljIGly cXJldHVybl90IGR3X2hkbWlfaGFyZGlycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpCiAJcmV0dXJu IHJldDsKIH0KIAordm9pZCBfX2R3X2hkbWlfc2V0dXBfcnhfc2Vuc2Uoc3RydWN0IGR3X2hkbWkg KmhkbWksIGJvb2wgaHBkLCBib29sIHJ4X3NlbnNlKQoreworCW11dGV4X2xvY2soJmhkbWktPm11 dGV4KTsKKworCWlmICghaGRtaS0+ZGlzYWJsZWQgJiYgIWhkbWktPmZvcmNlKSB7CisJCS8qCisJ CSAqIElmIHRoZSBSWCBzZW5zZSBzdGF0dXMgaW5kaWNhdGVzIHdlJ3JlIGRpc2Nvbm5lY3RlZCwK KwkJICogY2xlYXIgdGhlIHNvZnR3YXJlIHJ4c2Vuc2Ugc3RhdHVzLgorCQkgKi8KKwkJaWYgKCFy eF9zZW5zZSkKKwkJCWhkbWktPnJ4c2Vuc2UgPSBmYWxzZTsKKworCQkvKgorCQkgKiBPbmx5IHNl dCB0aGUgc29mdHdhcmUgcnhzZW5zZSBzdGF0dXMgd2hlbiBib3RoCisJCSAqIHJ4c2Vuc2UgYW5k IGhwZCBpbmRpY2F0ZXMgd2UncmUgY29ubmVjdGVkLgorCQkgKiBUaGlzIGF2b2lkcyB3aGF0IHNl ZW1zIHRvIGJlIGJhZCBiZWhhdmlvdXIgaW4KKwkJICogYXQgbGVhc3QgaU1YNlMgdmVyc2lvbnMg b2YgdGhlIHBoeS4KKwkJICovCisJCWlmIChocGQpCisJCQloZG1pLT5yeHNlbnNlID0gdHJ1ZTsK KworCQlkd19oZG1pX3VwZGF0ZV9wb3dlcihoZG1pKTsKKwkJZHdfaGRtaV91cGRhdGVfcGh5X21h c2soaGRtaSk7CisJfQorCW11dGV4X3VubG9jaygmaGRtaS0+bXV0ZXgpOworfQorCit2b2lkIGR3 X2hkbWlfc2V0dXBfcnhfc2Vuc2Uoc3RydWN0IGRldmljZSAqZGV2LCBib29sIGhwZCwgYm9vbCBy eF9zZW5zZSkKK3sKKwlzdHJ1Y3QgZHdfaGRtaSAqaGRtaSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYp OworCisJX19kd19oZG1pX3NldHVwX3J4X3NlbnNlKGhkbWksIGhwZCwgcnhfc2Vuc2UpOworfQor RVhQT1JUX1NZTUJPTF9HUEwoZHdfaGRtaV9zZXR1cF9yeF9zZW5zZSk7CisKIHN0YXRpYyBpcnFy ZXR1cm5fdCBkd19oZG1pX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpCiB7CiAJc3RydWN0IGR3 X2hkbWkgKmhkbWkgPSBkZXZfaWQ7CkBAIC0xOTk0LDMwICsyMDQwLDEwIEBAIHN0YXRpYyBpcnFy ZXR1cm5fdCBkd19oZG1pX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpCiAJICogYXNrIHRoZSBz b3VyY2UgdG8gcmUtcmVhZCB0aGUgRURJRC4KIAkgKi8KIAlpZiAoaW50cl9zdGF0ICYKLQkgICAg KEhETUlfSUhfUEhZX1NUQVQwX1JYX1NFTlNFIHwgSERNSV9JSF9QSFlfU1RBVDBfSFBEKSkgewot CQltdXRleF9sb2NrKCZoZG1pLT5tdXRleCk7Ci0JCWlmICghaGRtaS0+ZGlzYWJsZWQgJiYgIWhk bWktPmZvcmNlKSB7Ci0JCQkvKgotCQkJICogSWYgdGhlIFJYIHNlbnNlIHN0YXR1cyBpbmRpY2F0 ZXMgd2UncmUgZGlzY29ubmVjdGVkLAotCQkJICogY2xlYXIgdGhlIHNvZnR3YXJlIHJ4c2Vuc2Ug c3RhdHVzLgotCQkJICovCi0JCQlpZiAoIShwaHlfc3RhdCAmIEhETUlfUEhZX1JYX1NFTlNFKSkK LQkJCQloZG1pLT5yeHNlbnNlID0gZmFsc2U7Ci0KLQkJCS8qCi0JCQkgKiBPbmx5IHNldCB0aGUg c29mdHdhcmUgcnhzZW5zZSBzdGF0dXMgd2hlbiBib3RoCi0JCQkgKiByeHNlbnNlIGFuZCBocGQg aW5kaWNhdGVzIHdlJ3JlIGNvbm5lY3RlZC4KLQkJCSAqIFRoaXMgYXZvaWRzIHdoYXQgc2VlbXMg dG8gYmUgYmFkIGJlaGF2aW91ciBpbgotCQkJICogYXQgbGVhc3QgaU1YNlMgdmVyc2lvbnMgb2Yg dGhlIHBoeS4KLQkJCSAqLwotCQkJaWYgKHBoeV9zdGF0ICYgSERNSV9QSFlfSFBEKQotCQkJCWhk bWktPnJ4c2Vuc2UgPSB0cnVlOwotCi0JCQlkd19oZG1pX3VwZGF0ZV9wb3dlcihoZG1pKTsKLQkJ CWR3X2hkbWlfdXBkYXRlX3BoeV9tYXNrKGhkbWkpOwotCQl9Ci0JCW11dGV4X3VubG9jaygmaGRt aS0+bXV0ZXgpOwotCX0KKwkgICAgKEhETUlfSUhfUEhZX1NUQVQwX1JYX1NFTlNFIHwgSERNSV9J SF9QSFlfU1RBVDBfSFBEKSkKKwkJX19kd19oZG1pX3NldHVwX3J4X3NlbnNlKGhkbWksCisJCQkJ CSBwaHlfc3RhdCAmIEhETUlfUEhZX0hQRCwKKwkJCQkJIHBoeV9zdGF0ICYgSERNSV9QSFlfUlhf U0VOU0UpOwogCiAJaWYgKGludHJfc3RhdCAmIEhETUlfSUhfUEhZX1NUQVQwX0hQRCkgewogCQlk ZXZfZGJnKGhkbWktPmRldiwgIkVWRU5UPSVzXG4iLApAQCAtMjI5MSw3ICsyMzE3LDggQEAgc3Rh dGljIGludCBkd19oZG1pX2RldGVjdF9waHkoc3RydWN0IGR3X2hkbWkgKmhkbWkpCiAjZW5kaWYK IAogCWR3X2hkbWlfZmJfcmVnaXN0ZXJlZChoZG1pKTsKLQlkd19oZG1pX3BoeV9zZXR1cF9ocGQo aGRtaSk7CisJaWYgKGhkbWktPnBoeS5vcHMtPnNldHVwX2hwZCkKKwkJaGRtaS0+cGh5Lm9wcy0+ c2V0dXBfaHBkKGhkbWksIGhkbWktPnBoeS5kYXRhKTsKIAogCW1lbXNldCgmcGRldmluZm8sIDAs IHNpemVvZihwZGV2aW5mbykpOwogCXBkZXZpbmZvLnBhcmVudCA9IGRldjsKZGlmZiAtLWdpdCBh L2luY2x1ZGUvZHJtL2JyaWRnZS9kd19oZG1pLmggYi9pbmNsdWRlL2RybS9icmlkZ2UvZHdfaGRt aS5oCmluZGV4IGMzYjhkYTkuLmUzMzJiOGUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2JyaWRn ZS9kd19oZG1pLmgKKysrIGIvaW5jbHVkZS9kcm0vYnJpZGdlL2R3X2hkbWkuaApAQCAtMTE3LDYg KzExNyw5IEBAIHN0cnVjdCBkd19oZG1pX3BoeV9vcHMgewogCQkgICAgc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKm1vZGUpOwogCXZvaWQgKCpkaXNhYmxlKShzdHJ1Y3QgZHdfaGRtaSAqaGRtaSwg dm9pZCAqZGF0YSk7CiAJZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyAoKnJlYWRfaHBkKShzdHJ1 Y3QgZHdfaGRtaSAqaGRtaSwgdm9pZCAqZGF0YSk7CisJdm9pZCAoKnVwZGF0ZV9ocGQpKHN0cnVj dCBkd19oZG1pICpoZG1pLCB2b2lkICpkYXRhLAorCQkJICAgYm9vbCBmb3JjZSwgYm9vbCBkaXNh YmxlZCwgYm9vbCByeHNlbnNlKTsKKwl2b2lkICgqc2V0dXBfaHBkKShzdHJ1Y3QgZHdfaGRtaSAq aGRtaSwgdm9pZCAqZGF0YSk7CiB9OwogCiBzdHJ1Y3QgZHdfaGRtaV9wbGF0X2RhdGEgewpAQCAt MTQ3LDYgKzE1MCw4IEBAIGludCBkd19oZG1pX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYsCiBpbnQgZHdfaGRtaV9iaW5kKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHN0 cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKIAkJIGNvbnN0IHN0cnVjdCBkd19oZG1pX3BsYXRf ZGF0YSAqcGxhdF9kYXRhKTsKIAordm9pZCBkd19oZG1pX3NldHVwX3J4X3NlbnNlKHN0cnVjdCBk ZXZpY2UgKmRldiwgYm9vbCBocGQsIGJvb2wgcnhfc2Vuc2UpOworCiB2b2lkIGR3X2hkbWlfc2V0 X3NhbXBsZV9yYXRlKHN0cnVjdCBkd19oZG1pICpoZG1pLCB1bnNpZ25lZCBpbnQgcmF0ZSk7CiB2 b2lkIGR3X2hkbWlfYXVkaW9fZW5hYmxlKHN0cnVjdCBkd19oZG1pICpoZG1pKTsKIHZvaWQgZHdf aGRtaV9hdWRpb19kaXNhYmxlKHN0cnVjdCBkd19oZG1pICpoZG1pKTsKLS0gCjEuOS4xCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFp bGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK