From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Pi-Cheng Chen To: Michael Turquette , Stephen Boyd , James Liao , Daniel Kurtz Subject: [PATCH v6] clk: mediatek: Export CPU mux clocks for CPU frequency control Date: Mon, 14 Sep 2015 19:27:52 +0800 Message-Id: <1442230072-31593-1-git-send-email-pi-cheng.chen@linaro.org> Cc: linaro-kernel@lists.linaro.org, Sascha Hauer , linux-mediatek@lists.infradead.org, Matthias Brugger , linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Errors-To: linaro-kernel-bounces@lists.linaro.org Sender: "linaro-kernel" List-ID: RnJvbTogInBpLWNoZW5nLmNoZW4iIDxwaS1jaGVuZy5jaGVuQGxpbmFyby5vcmc+CgpUaGlzIHBh dGNoIGFkZHMgQ1BVIG11eCBjbG9ja3Mgd2hpY2ggYXJlIHVzZWQgYnkgTWVkaWF0ZWsgY3B1ZnJl cSBkcml2ZXIKZm9yIGludGVybWVkaWF0ZSBjbG9jayBzb3VyY2Ugc3dpdGNoaW5nLgoKU2lnbmVk LW9mZi1ieTogUGktQ2hlbmcgQ2hlbiA8cGktY2hlbmcuY2hlbkBsaW5hcm8ub3JnPgotLS0KQ2hh bmdlcyBpbiB2NjoKLSBSZWxhY2UgX19jbGtfZ2V0X251bV9wYXJlbnRzIHdpdGggY2xrX2h3X2dl dF9udW1fcGFyZW50cyB0byByZWZsZWN0CiAgQVBJIGNoYW5nZQoKQ2hhbmdlcyBpbiB2NToKLSBS ZXBsYWNlIF9faW5pdGRhdGEgd2l0aCBfX2luaXRjb25zdCB0byBmaXggY29tcGlsaW5nIGVycm9y CgpDaGFuZ2VzIGluIHY0OgotIEZpeCBzb21lIG1pbm9yIGlzc3VlcyBmb3IgdjMKLSBSZWJhc2Ug dG8gdGhlIHBhdGNoIHRoYXQgYWRkcyAxM21oeiBjbG9jayBmb3IgTVQ4MTczWzFdCgpDaGFuZ2Vz IGluIHYzOgotIFJlYmFzZSB0byA0LjItcmMxCi0gRml4IHNvbWUgaXNzdWVzIG9mIHYyCgpDaGFu Z2VzIGluIHYyOgotIFJlbW92ZSB1c2Ugb2YgLmRldGVybWluZV9yYXRlIGNhbGxiYWNrCi0tLQog ZHJpdmVycy9jbGsvbWVkaWF0ZWsvTWFrZWZpbGUgICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMv Y2xrL21lZGlhdGVrL2Nsay1jcHVtdXguYyAgICAgIHwgMTI3ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwogZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLWNwdW11eC5oICAgICAgfCAg MjIgKysrKysrCiBkcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ4MTczLmMgICAgICB8ICAyMyAr KysrKysKIGluY2x1ZGUvZHQtYmluZGluZ3MvY2xvY2svbXQ4MTczLWNsay5oIHwgICA0ICstCiA1 IGZpbGVzIGNoYW5nZWQsIDE3NiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1jcHVtdXguYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1jcHVtdXguaAoKZGlmZiAtLWdpdCBh L2RyaXZlcnMvY2xrL21lZGlhdGVrL01ha2VmaWxlIGIvZHJpdmVycy9jbGsvbWVkaWF0ZWsvTWFr ZWZpbGUKaW5kZXggOGU0YjJhNC4uMjk5OTE3YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9jbGsvbWVk aWF0ZWsvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9jbGsvbWVkaWF0ZWsvTWFrZWZpbGUKQEAgLTEs NCArMSw0IEBACi1vYmoteSArPSBjbGstbXRrLm8gY2xrLXBsbC5vIGNsay1nYXRlLm8KK29iai15 ICs9IGNsay1tdGsubyBjbGstcGxsLm8gY2xrLWdhdGUubyBjbGstY3B1bXV4Lm8KIG9iai0kKENP TkZJR19SRVNFVF9DT05UUk9MTEVSKSArPSByZXNldC5vCiBvYmoteSArPSBjbGstbXQ4MTM1Lm8K IG9iai15ICs9IGNsay1tdDgxNzMubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jbGsvbWVkaWF0ZWsv Y2xrLWNwdW11eC5jIGIvZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLWNwdW11eC5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxYjUyMzgKLS0tIC9kZXYvbnVsbAorKysgYi9k cml2ZXJzL2Nsay9tZWRpYXRlay9jbGstY3B1bXV4LmMKQEAgLTAsMCArMSwxMjcgQEAKKy8qCisg KiBDb3B5cmlnaHQgKGMpIDIwMTUgTGluYXJvIEx0ZC4KKyAqIEF1dGhvcjogUGktQ2hlbmcgQ2hl biA8cGktY2hlbmcuY2hlbkBsaW5hcm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24g MiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgor ICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqLworCisjaW5jbHVkZSA8bGludXgvY2xrLXByb3ZpZGVy Lmg+CisjaW5jbHVkZSA8bGludXgvbWZkL3N5c2Nvbi5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIu aD4KKworI2luY2x1ZGUgImNsay1tdGsuaCIKKyNpbmNsdWRlICJjbGstY3B1bXV4LmgiCisKK3N0 cnVjdCBtdGtfY2xrX2NwdW11eCB7CisJc3RydWN0IGNsa19odwlodzsKKwlzdHJ1Y3QgcmVnbWFw CSpyZWdtYXA7CisJdTMyCQlyZWc7CisJdTMyCQltYXNrOworCXU4CQlzaGlmdDsKK307CisKK3N0 YXRpYyBpbmxpbmUgc3RydWN0IG10a19jbGtfY3B1bXV4ICp0b19jbGtfbXV4KHN0cnVjdCBjbGtf aHcgKl9odykKK3sKKwlyZXR1cm4gY29udGFpbmVyX29mKF9odywgc3RydWN0IG10a19jbGtfY3B1 bXV4LCBodyk7Cit9CisKK3N0YXRpYyB1OCBjbGtfY3B1bXV4X2dldF9wYXJlbnQoc3RydWN0IGNs a19odyAqaHcpCit7CisJc3RydWN0IG10a19jbGtfY3B1bXV4ICptdXggPSB0b19jbGtfbXV4KGh3 KTsKKwlpbnQgbnVtX3BhcmVudHMgPSBjbGtfaHdfZ2V0X251bV9wYXJlbnRzKGh3KTsKKwl1bnNp Z25lZCBpbnQgdmFsOworCisJcmVnbWFwX3JlYWQobXV4LT5yZWdtYXAsIG11eC0+cmVnLCAmdmFs KTsKKworCXZhbCA+Pj0gbXV4LT5zaGlmdDsKKwl2YWwgJj0gbXV4LT5tYXNrOworCisJaWYgKHZh bCA+PSBudW1fcGFyZW50cykKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlyZXR1cm4gdmFsOworfQor CitzdGF0aWMgaW50IGNsa19jcHVtdXhfc2V0X3BhcmVudChzdHJ1Y3QgY2xrX2h3ICpodywgdTgg aW5kZXgpCit7CisJc3RydWN0IG10a19jbGtfY3B1bXV4ICptdXggPSB0b19jbGtfbXV4KGh3KTsK Kwl1MzIgbWFzaywgdmFsOworCisJdmFsID0gaW5kZXggPDwgbXV4LT5zaGlmdDsKKwltYXNrID0g bXV4LT5tYXNrIDw8IG11eC0+c2hpZnQ7CisKKwlyZXR1cm4gcmVnbWFwX3VwZGF0ZV9iaXRzKG11 eC0+cmVnbWFwLCBtdXgtPnJlZywgbWFzaywgdmFsKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVj dCBjbGtfb3BzIGNsa19jcHVtdXhfb3BzID0geworCS5nZXRfcGFyZW50ID0gY2xrX2NwdW11eF9n ZXRfcGFyZW50LAorCS5zZXRfcGFyZW50ID0gY2xrX2NwdW11eF9zZXRfcGFyZW50LAorfTsKKwor c3RhdGljIHN0cnVjdCBjbGsgX19pbml0ICptdGtfY2xrX3JlZ2lzdGVyX2NwdW11eChjb25zdCBz dHJ1Y3QgbXRrX2NvbXBvc2l0ZSAqbXV4LAorCQkJCQkgICBzdHJ1Y3QgcmVnbWFwICpyZWdtYXAp Cit7CisJc3RydWN0IG10a19jbGtfY3B1bXV4ICpjcHVtdXg7CisJc3RydWN0IGNsayAqY2xrOwor CXN0cnVjdCBjbGtfaW5pdF9kYXRhIGluaXQ7CisKKwljcHVtdXggPSBremFsbG9jKHNpemVvZigq Y3B1bXV4KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFjcHVtdXgpCisJCXJldHVybiBFUlJfUFRSKC1F Tk9NRU0pOworCisJaW5pdC5uYW1lID0gbXV4LT5uYW1lOworCWluaXQub3BzID0gJmNsa19jcHVt dXhfb3BzOworCWluaXQucGFyZW50X25hbWVzID0gbXV4LT5wYXJlbnRfbmFtZXM7CisJaW5pdC5u dW1fcGFyZW50cyA9IG11eC0+bnVtX3BhcmVudHM7CisJaW5pdC5mbGFncyA9IG11eC0+ZmxhZ3M7 CisKKwljcHVtdXgtPnJlZyA9IG11eC0+bXV4X3JlZzsKKwljcHVtdXgtPnNoaWZ0ID0gbXV4LT5t dXhfc2hpZnQ7CisJY3B1bXV4LT5tYXNrID0gQklUKG11eC0+bXV4X3dpZHRoKSAtIDE7CisJY3B1 bXV4LT5yZWdtYXAgPSByZWdtYXA7CisJY3B1bXV4LT5ody5pbml0ID0gJmluaXQ7CisKKwljbGsg PSBjbGtfcmVnaXN0ZXIoTlVMTCwgJmNwdW11eC0+aHcpOworCWlmIChJU19FUlIoY2xrKSkKKwkJ a2ZyZWUoY3B1bXV4KTsKKworCXJldHVybiBjbGs7Cit9CisKK2ludCBfX2luaXQgbXRrX2Nsa19y ZWdpc3Rlcl9jcHVtdXhlcyhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsCisJCQkgICAgICBjb25z dCBzdHJ1Y3QgbXRrX2NvbXBvc2l0ZSAqY2xrcywgaW50IG51bSwKKwkJCSAgICAgIHN0cnVjdCBj bGtfb25lY2VsbF9kYXRhICpjbGtfZGF0YSkKK3sKKwlpbnQgaTsKKwlzdHJ1Y3QgY2xrICpjbGs7 CisJc3RydWN0IHJlZ21hcCAqcmVnbWFwOworCisJcmVnbWFwID0gc3lzY29uX25vZGVfdG9fcmVn bWFwKG5vZGUpOworCWlmIChJU19FUlIocmVnbWFwKSkgeworCQlwcl9lcnIoIkNhbm5vdCBmaW5k IHJlZ21hcCBmb3IgJXM6ICVsZFxuIiwgbm9kZS0+ZnVsbF9uYW1lLAorCQkgICAgICAgUFRSX0VS UihyZWdtYXApKTsKKwkJcmV0dXJuIFBUUl9FUlIocmVnbWFwKTsKKwl9CisKKwlmb3IgKGkgPSAw OyBpIDwgbnVtOyBpKyspIHsKKwkJY29uc3Qgc3RydWN0IG10a19jb21wb3NpdGUgKm11eCA9ICZj bGtzW2ldOworCisJCWNsayA9IG10a19jbGtfcmVnaXN0ZXJfY3B1bXV4KG11eCwgcmVnbWFwKTsK KwkJaWYgKElTX0VSUihjbGspKSB7CisJCQlwcl9lcnIoIkZhaWxlZCB0byByZWdpc3RlciBjbGsg JXM6ICVsZFxuIiwKKwkJCSAgICAgICBtdXgtPm5hbWUsIFBUUl9FUlIoY2xrKSk7CisJCQljb250 aW51ZTsKKwkJfQorCisJCWNsa19kYXRhLT5jbGtzW211eC0+aWRdID0gY2xrOworCX0KKworCXJl dHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLWNwdW11eC5o IGIvZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLWNwdW11eC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjUyYzc2OWYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2Nsay9t ZWRpYXRlay9jbGstY3B1bXV4LmgKQEAgLTAsMCArMSwyMiBAQAorLyoKKyAqIENvcHlyaWdodCAo YykgMjAxNSBMaW5hcm8gTHRkLgorICogQXV0aG9yOiBQaS1DaGVuZyBDaGVuIDxwaS1jaGVuZy5j aGVuQGxpbmFyby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJs aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgorICovCisKKyNpZm5kZWYgX19EUlZfQ0xLX0NQVU1VWF9ICisjZGVmaW5lIF9fRFJW X0NMS19DUFVNVVhfSAorCitpbnQgbXRrX2Nsa19yZWdpc3Rlcl9jcHVtdXhlcyhzdHJ1Y3QgZGV2 aWNlX25vZGUgKm5vZGUsCisJCQkgICAgICBjb25zdCBzdHJ1Y3QgbXRrX2NvbXBvc2l0ZSAqY2xr cywgaW50IG51bSwKKwkJCSAgICAgIHN0cnVjdCBjbGtfb25lY2VsbF9kYXRhICpjbGtfZGF0YSk7 CisKKyNlbmRpZiAvKiBfX0RSVl9DTEtfQ1BVTVVYX0ggKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Y2xrL21lZGlhdGVrL2Nsay1tdDgxNzMuYyBiL2RyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDgx NzMuYwppbmRleCA5ZWE2YWExLi5iMDJkMzEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Nsay9tZWRp YXRlay9jbGstbXQ4MTczLmMKKysrIGIvZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10ODE3My5j CkBAIC0yMCw2ICsyMCw3IEBACiAKICNpbmNsdWRlICJjbGstbXRrLmgiCiAjaW5jbHVkZSAiY2xr LWdhdGUuaCIKKyNpbmNsdWRlICJjbGstY3B1bXV4LmgiCiAKICNpbmNsdWRlIDxkdC1iaW5kaW5n cy9jbG9jay9tdDgxNzMtY2xrLmg+CiAKQEAgLTUxOCw2ICs1MTksMjUgQEAgc3RhdGljIGNvbnN0 IGNoYXIgKiBjb25zdCBpMnMzX2JfY2tfcGFyZW50c1tdIF9faW5pdGNvbnN0ID0gewogCSJhcGxs Ml9kaXY1IgogfTsKIAorc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBjYTUzX3BhcmVudHNbXSBf X2luaXRjb25zdCA9IHsKKwkiY2xrMjZtIiwKKwkiYXJtY2E3cGxsIiwKKwkibWFpbnBsbCIsCisJ InVuaXZwbGwiCit9OworCitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGNhNTdfcGFyZW50c1td IF9faW5pdGNvbnN0ID0geworCSJjbGsyNm0iLAorCSJhcm1jYTE1cGxsIiwKKwkibWFpbnBsbCIs CisJInVuaXZwbGwiCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IG10a19jb21wb3NpdGUgY3B1 X211eGVzW10gX19pbml0Y29uc3QgPSB7CisJTVVYKENMS19JTkZSQV9DQTUzU0VMLCAiaW5mcmFf Y2E1M19zZWwiLCBjYTUzX3BhcmVudHMsIDB4MDAwMCwgMCwgMiksCisJTVVYKENMS19JTkZSQV9D QTU3U0VMLCAiaW5mcmFfY2E1N19zZWwiLCBjYTU3X3BhcmVudHMsIDB4MDAwMCwgMiwgMiksCit9 OworCiBzdGF0aWMgY29uc3Qgc3RydWN0IG10a19jb21wb3NpdGUgdG9wX211eGVzW10gX19pbml0 Y29uc3QgPSB7CiAJLyogQ0xLX0NGR18wICovCiAJTVVYKENMS19UT1BfQVhJX1NFTCwgImF4aV9z ZWwiLCBheGlfcGFyZW50cywgMHgwMDQwLCAwLCAzKSwKQEAgLTc2MCw2ICs3ODAsOSBAQCBzdGF0 aWMgdm9pZCBfX2luaXQgbXRrX2luZnJhc3lzX2luaXQoc3RydWN0IGRldmljZV9ub2RlICpub2Rl KQogCQkJCQkJY2xrX2RhdGEpOwogCW10a19jbGtfcmVnaXN0ZXJfZmFjdG9ycyhpbmZyYV9kaXZz LCBBUlJBWV9TSVpFKGluZnJhX2RpdnMpLCBjbGtfZGF0YSk7CiAKKwltdGtfY2xrX3JlZ2lzdGVy X2NwdW11eGVzKG5vZGUsIGNwdV9tdXhlcywgQVJSQVlfU0laRShjcHVfbXV4ZXMpLAorCQkJCQkJ Y2xrX2RhdGEpOworCiAJciA9IG9mX2Nsa19hZGRfcHJvdmlkZXIobm9kZSwgb2ZfY2xrX3NyY19v bmVjZWxsX2dldCwgY2xrX2RhdGEpOwogCWlmIChyKQogCQlwcl9lcnIoIiVzKCk6IGNvdWxkIG5v dCByZWdpc3RlciBjbG9jayBwcm92aWRlcjogJWRcbiIsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2R0 LWJpbmRpbmdzL2Nsb2NrL210ODE3My1jbGsuaCBiL2luY2x1ZGUvZHQtYmluZGluZ3MvY2xvY2sv bXQ4MTczLWNsay5oCmluZGV4IGZhMmEyYmIuLmExN2NiYWEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUv ZHQtYmluZGluZ3MvY2xvY2svbXQ4MTczLWNsay5oCisrKyBiL2luY2x1ZGUvZHQtYmluZGluZ3Mv Y2xvY2svbXQ4MTczLWNsay5oCkBAIC0xODgsNyArMTg4LDkgQEAKICNkZWZpbmUgQ0xLX0lORlJB X1BNSUNTUEkJCTEwCiAjZGVmaW5lIENMS19JTkZSQV9QTUlDV1JBUAkJMTEKICNkZWZpbmUgQ0xL X0lORlJBX0NMS18xM00JCTEyCi0jZGVmaW5lIENMS19JTkZSQV9OUl9DTEsJCTEzCisjZGVmaW5l IENMS19JTkZSQV9DQTUzU0VMCQkxMworI2RlZmluZSBDTEtfSU5GUkFfQ0E1N1NFTAkJMTQKKyNk ZWZpbmUgQ0xLX0lORlJBX05SX0NMSwkJMTUKIAogLyogUEVSSV9TWVMgKi8KIAotLSAKMS45LjEK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbmFyby1r ZXJuZWwgbWFpbGluZyBsaXN0CmxpbmFyby1rZXJuZWxAbGlzdHMubGluYXJvLm9yZwpodHRwczov L2xpc3RzLmxpbmFyby5vcmcvbWFpbG1hbi9saXN0aW5mby9saW5hcm8ta2VybmVsCg==