From mboxrd@z Thu Jan 1 00:00:00 1970 From: Puthikorn Voravootivat Subject: [PATCH RESEND v11 1/3] drm/i915: Set PWM divider to match desired frequency in vbt Date: Mon, 5 Jun 2017 14:56:05 -0700 Message-ID: <20170605215607.27766-2-puthik@chromium.org> References: <20170605215607.27766-1-puthik@chromium.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170605215607.27766-1-puthik@chromium.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org, Dhinakaran Pandiyan , Jani Nikula , Daniel Vetter Cc: Puthikorn Voravootivat , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org UmVhZCBkZXNpcmVkIFBXTSBmcmVxdWVuY3kgZnJvbSBwYW5lbCB2YnQgYW5kIGNhbGN1bGF0ZSB0 aGUKdmFsdWUgZm9yIGRpdmlkZXIgaW4gRFBDRCBhZGRyZXNzIDB4NzI0IGFuZCAweDcyOCB0byBo YXZlCmFzIG1hbnkgYml0cyBhcyBwb3NzaWJsZSBmb3IgUFdNIGR1dHkgY3lsZSBmb3IgZ3JhbnVs YXJpdHkgb2YKYnJpZ2h0bmVzcyBhZGp1c3RtZW50IHdoaWxlIHRoZSBmcmVxdWVuY3kgZGl2aXNv ciBpcyBzdGlsbAp3aXRoaW4gMjUlIG9mIHRoZSBkZXNpcmVkIHZhbHVlLgoKU2lnbmVkLW9mZi1i eTogUHV0aGlrb3JuIFZvcmF2b290aXZhdCA8cHV0aGlrQGNocm9taXVtLm9yZz4KUmV2aWV3ZWQt Ynk6IERoaW5ha2FyYW4gUGFuZGl5YW4gPGRoaW5ha2FyYW4ucGFuZGl5YW5AaW50ZWwuY29tPgot LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2F1eF9iYWNrbGlnaHQuYyB8IDk4ICsr KysrKysrKysrKysrKysrKysrKysrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDkwIGluc2VydGlvbnMo KyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHBfYXV4X2JhY2tsaWdodC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfYXV4 X2JhY2tsaWdodC5jCmluZGV4IGEwOTk1YzAwZmM4NC4uNmM2NGUxZjc1YzRlIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9hdXhfYmFja2xpZ2h0LmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfYXV4X2JhY2tsaWdodC5jCkBAIC05NywxMSArOTcs ODUgQEAgaW50ZWxfZHBfYXV4X3NldF9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAq Y29ubmVjdG9yLCB1MzIgbGV2ZWwpCiAJfQogfQogCisvKgorICogU2V0IFBXTSBGcmVxdWVuY3kg ZGl2aWRlciB0byBtYXRjaCBkZXNpcmVkIGZyZXF1ZW5jeSBpbiB2YnQuCisgKiBUaGUgUFdNIEZy ZXF1ZW5jeSBpcyBjYWxjdWxhdGVkIGFzIDI3TWh6IC8gKEYgeCBQKS4KKyAqIC0gV2hlcmUgRiA9 IFBXTSBGcmVxdWVuY3kgUHJlLURpdmlkZXIgdmFsdWUgcHJvZ3JhbW1lZCBieSBmaWVsZCA3OjAg b2YgdGhlCisgKiAgICAgICAgICAgICBFRFBfQkFDS0xJR0hUX0ZSRVFfU0VUIHJlZ2lzdGVyIChE UENEIEFkZHJlc3MgMDA3MjhoKQorICogLSBXaGVyZSBQID0gMl5Qbiwgd2hlcmUgUG4gaXMgdGhl IHZhbHVlIHByb2dyYW1tZWQgYnkgZmllbGQgNDowIG9mIHRoZQorICogICAgICAgICAgICAgRURQ X1BXTUdFTl9CSVRfQ09VTlQgcmVnaXN0ZXIgKERQQ0QgQWRkcmVzcyAwMDcyNGgpCisgKi8KK3N0 YXRpYyBib29sIGludGVsX2RwX2F1eF9zZXRfcHdtX2ZyZXEoc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqY29ubmVjdG9yKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7CisJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9 IGVuY190b19pbnRlbF9kcCgmY29ubmVjdG9yLT5lbmNvZGVyLT5iYXNlKTsKKwlpbnQgZnJlcSwg ZnhwLCBmeHBfbWluLCBmeHBfbWF4LCBmeHBfYWN0dWFsLCBmID0gMTsKKwl1OCBwbiwgcG5fbWlu LCBwbl9tYXg7CisKKwkvKiBGaW5kIGRlc2lyZWQgdmFsdWUgb2YgKEYgeCBQKQorCSAqIE5vdGUg dGhhdCwgaWYgRiB4IFAgaXMgb3V0IG9mIHN1cHBvcnRlZCByYW5nZSwgdGhlIG1heGltdW0gdmFs dWUgb3IKKwkgKiBtaW5pbXVtIHZhbHVlIHdpbGwgYXBwbGllZCBhdXRvbWF0aWNhbGx5LiBTbyBu byBuZWVkIHRvIGNoZWNrIHRoYXQuCisJICovCisJZnJlcSA9IGRldl9wcml2LT52YnQuYmFja2xp Z2h0LnB3bV9mcmVxX2h6OworCURSTV9ERUJVR19LTVMoIlZCVCBkZWZpbmVkIGJhY2tsaWdodCBm cmVxdWVuY3kgJXUgSHpcbiIsIGZyZXEpOworCWlmICghZnJlcSkgeworCQlEUk1fREVCVUdfS01T KCJVc2UgcGFuZWwgZGVmYXVsdCBiYWNrbGlnaHQgZnJlcXVlbmN5XG4iKTsKKwkJcmV0dXJuIGZh bHNlOworCX0KKworCWZ4cCA9IERJVl9ST1VORF9DTE9TRVNUKEtIeihEUF9FRFBfQkFDS0xJR0hU X0ZSRVFfQkFTRV9LSFopLCBmcmVxKTsKKworCS8qIFVzZSBoaWdoZXN0IHBvc3NpYmxlIHZhbHVl IG9mIFBuIGZvciBtb3JlIGdyYW51bGFyaXR5IG9mIGJyaWdodG5lc3MKKwkgKiBhZGp1c3RtZW50 IHdoaWxlIHNhdGlmeWluZyB0aGUgY29uZGl0aW9ucyBiZWxvdy4KKwkgKiAtIFBuIGlzIGluIHRo ZSByYW5nZSBvZiBQbl9taW4gYW5kIFBuX21heAorCSAqIC0gRiBpcyBpbiB0aGUgcmFuZ2Ugb2Yg MSBhbmQgMjU1CisJICogLSBGeFAgaXMgd2l0aGluIDI1JSBvZiBkZXNpcmVkIHZhbHVlLgorCSAq ICAgTm90ZTogMjUlIGlzIGFyYml0cmFyeSB2YWx1ZSBhbmQgbWF5IG5lZWQgc29tZSB0d2Vhay4K KwkgKi8KKwlpZiAoZHJtX2RwX2RwY2RfcmVhZGIoJmludGVsX2RwLT5hdXgsCisJCQkgICAgICAg RFBfRURQX1BXTUdFTl9CSVRfQ09VTlRfQ0FQX01JTiwgJnBuX21pbikgIT0gMSkgeworCQlEUk1f REVCVUdfS01TKCJGYWlsZWQgdG8gcmVhZCBwd21nZW4gYml0IGNvdW50IGNhcCBtaW5cbiIpOwor CQlyZXR1cm4gZmFsc2U7CisJfQorCWlmIChkcm1fZHBfZHBjZF9yZWFkYigmaW50ZWxfZHAtPmF1 eCwKKwkJCSAgICAgICBEUF9FRFBfUFdNR0VOX0JJVF9DT1VOVF9DQVBfTUFYLCAmcG5fbWF4KSAh PSAxKSB7CisJCURSTV9ERUJVR19LTVMoIkZhaWxlZCB0byByZWFkIHB3bWdlbiBiaXQgY291bnQg Y2FwIG1heFxuIik7CisJCXJldHVybiBmYWxzZTsKKwl9CisJcG5fbWluICY9IERQX0VEUF9QV01H RU5fQklUX0NPVU5UX01BU0s7CisJcG5fbWF4ICY9IERQX0VEUF9QV01HRU5fQklUX0NPVU5UX01B U0s7CisKKwlmeHBfbWluID0gRElWX1JPVU5EX0NMT1NFU1QoZnhwICogMywgNCk7CisJZnhwX21h eCA9IERJVl9ST1VORF9DTE9TRVNUKGZ4cCAqIDUsIDQpOworCWlmIChmeHBfbWluIDwgKDEgPDwg cG5fbWluKSB8fCAoMjU1IDw8IHBuX21heCkgPCBmeHBfbWF4KSB7CisJCURSTV9ERUJVR19LTVMo IlZCVCBkZWZpbmVkIGJhY2tsaWdodCBmcmVxdWVuY3kgb3V0IG9mIHJhbmdlXG4iKTsKKwkJcmV0 dXJuIGZhbHNlOworCX0KKworCWZvciAocG4gPSBwbl9tYXg7IHBuID49IHBuX21pbjsgcG4tLSkg eworCQlmID0gY2xhbXAoRElWX1JPVU5EX0NMT1NFU1QoZnhwLCAxIDw8IHBuKSwgMSwgMjU1KTsK KwkJZnhwX2FjdHVhbCA9IGYgPDwgcG47CisJCWlmIChmeHBfbWluIDw9IGZ4cF9hY3R1YWwgJiYg ZnhwX2FjdHVhbCA8PSBmeHBfbWF4KQorCQkJYnJlYWs7CisJfQorCisJaWYgKGRybV9kcF9kcGNk X3dyaXRlYigmaW50ZWxfZHAtPmF1eCwKKwkJCSAgICAgICBEUF9FRFBfUFdNR0VOX0JJVF9DT1VO VCwgcG4pIDwgMCkgeworCQlEUk1fREVCVUdfS01TKCJGYWlsZWQgdG8gd3JpdGUgYXV4IHB3bWdl biBiaXQgY291bnRcbiIpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCWlmIChkcm1fZHBfZHBjZF93 cml0ZWIoJmludGVsX2RwLT5hdXgsCisJCQkgICAgICAgRFBfRURQX0JBQ0tMSUdIVF9GUkVRX1NF VCwgKHU4KSBmKSA8IDApIHsKKwkJRFJNX0RFQlVHX0tNUygiRmFpbGVkIHRvIHdyaXRlIGF1eCBi YWNrbGlnaHQgZnJlcVxuIik7CisJCXJldHVybiBmYWxzZTsKKwl9CisJcmV0dXJuIHRydWU7Cit9 CisKIHN0YXRpYyB2b2lkIGludGVsX2RwX2F1eF9lbmFibGVfYmFja2xpZ2h0KHN0cnVjdCBpbnRl bF9jb25uZWN0b3IgKmNvbm5lY3RvcikKIHsKIAlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0g ZW5jX3RvX2ludGVsX2RwKCZjb25uZWN0b3ItPmVuY29kZXItPmJhc2UpOwotCXVpbnQ4X3QgZHBj ZF9idWYgPSAwOwotCXVpbnQ4X3QgZWRwX2JhY2tsaWdodF9tb2RlID0gMDsKKwl1aW50OF90IGRw Y2RfYnVmLCBuZXdfZHBjZF9idWYsIGVkcF9iYWNrbGlnaHRfbW9kZTsKIAogCWlmIChkcm1fZHBf ZHBjZF9yZWFkYigmaW50ZWxfZHAtPmF1eCwKIAkJCURQX0VEUF9CQUNLTElHSFRfTU9ERV9TRVRf UkVHSVNURVIsICZkcGNkX2J1ZikgIT0gMSkgewpAQCAtMTEwLDE4ICsxODQsMTUgQEAgc3RhdGlj IHZvaWQgaW50ZWxfZHBfYXV4X2VuYWJsZV9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqY29ubmVjdG9yKQogCQlyZXR1cm47CiAJfQogCisJbmV3X2RwY2RfYnVmID0gZHBjZF9idWY7 CiAJZWRwX2JhY2tsaWdodF9tb2RlID0gZHBjZF9idWYgJiBEUF9FRFBfQkFDS0xJR0hUX0NPTlRS T0xfTU9ERV9NQVNLOwogCiAJc3dpdGNoIChlZHBfYmFja2xpZ2h0X21vZGUpIHsKIAljYXNlIERQ X0VEUF9CQUNLTElHSFRfQ09OVFJPTF9NT0RFX1BXTToKIAljYXNlIERQX0VEUF9CQUNLTElHSFRf Q09OVFJPTF9NT0RFX1BSRVNFVDoKIAljYXNlIERQX0VEUF9CQUNLTElHSFRfQ09OVFJPTF9NT0RF X1BST0RVQ1Q6Ci0JCWRwY2RfYnVmICY9IH5EUF9FRFBfQkFDS0xJR0hUX0NPTlRST0xfTU9ERV9N QVNLOwotCQlkcGNkX2J1ZiB8PSBEUF9FRFBfQkFDS0xJR0hUX0NPTlRST0xfTU9ERV9EUENEOwot CQlpZiAoZHJtX2RwX2RwY2Rfd3JpdGViKCZpbnRlbF9kcC0+YXV4LAotCQkJRFBfRURQX0JBQ0tM SUdIVF9NT0RFX1NFVF9SRUdJU1RFUiwgZHBjZF9idWYpIDwgMCkgewotCQkJRFJNX0RFQlVHX0tN UygiRmFpbGVkIHRvIHdyaXRlIGF1eCBiYWNrbGlnaHQgbW9kZVxuIik7Ci0JCX0KKwkJbmV3X2Rw Y2RfYnVmICY9IH5EUF9FRFBfQkFDS0xJR0hUX0NPTlRST0xfTU9ERV9NQVNLOworCQluZXdfZHBj ZF9idWYgfD0gRFBfRURQX0JBQ0tMSUdIVF9DT05UUk9MX01PREVfRFBDRDsKIAkJYnJlYWs7CiAK IAkvKiBEbyBub3RoaW5nIHdoZW4gaXQgaXMgYWxyZWFkeSBEUENEIG1vZGUgKi8KQEAgLTEzMCw2 ICsyMDEsMTcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHBfYXV4X2VuYWJsZV9iYWNrbGlnaHQoc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogCQlicmVhazsKIAl9CiAKKwlpZiAoaW50 ZWxfZHAtPmVkcF9kcGNkWzJdICYgRFBfRURQX0JBQ0tMSUdIVF9GUkVRX0FVWF9TRVRfQ0FQKQor CQlpZiAoaW50ZWxfZHBfYXV4X3NldF9wd21fZnJlcShjb25uZWN0b3IpKQorCQkJbmV3X2RwY2Rf YnVmIHw9IERQX0VEUF9CQUNLTElHSFRfRlJFUV9BVVhfU0VUX0VOQUJMRTsKKworCWlmIChuZXdf ZHBjZF9idWYgIT0gZHBjZF9idWYpIHsKKwkJaWYgKGRybV9kcF9kcGNkX3dyaXRlYigmaW50ZWxf ZHAtPmF1eCwKKwkJCURQX0VEUF9CQUNLTElHSFRfTU9ERV9TRVRfUkVHSVNURVIsIG5ld19kcGNk X2J1ZikgPCAwKSB7CisJCQlEUk1fREVCVUdfS01TKCJGYWlsZWQgdG8gd3JpdGUgYXV4IGJhY2ts aWdodCBtb2RlXG4iKTsKKwkJfQorCX0KKwogCXNldF9hdXhfYmFja2xpZ2h0X2VuYWJsZShpbnRl bF9kcCwgdHJ1ZSk7CiAJaW50ZWxfZHBfYXV4X3NldF9iYWNrbGlnaHQoY29ubmVjdG9yLCBjb25u ZWN0b3ItPnBhbmVsLmJhY2tsaWdodC5sZXZlbCk7CiB9Ci0tIAoyLjEzLjAuNTA2LmcyN2Q1ZmUw Y2QtZ29vZwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==