From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shobhit Kumar Subject: [v3 5/7] pwm: crc: Add Crystalcove (CRC) PWM driver Date: Fri, 26 Jun 2015 14:32:08 +0530 Message-ID: <1435309330-50725-6-git-send-email-shobhit.kumar@intel.com> References: <1435309330-50725-1-git-send-email-shobhit.kumar@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1435309330-50725-1-git-send-email-shobhit.kumar@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: linux-pwm , intel-gfx , linux-kernel , dri-devel , linux-gpio Cc: Alexandre Courbot , Paul Bolle , Samuel Ortiz , Povilas Staniulis , Jani Nikula , Shobhit Kumar , Linus Walleij , varkabhadram@gmail.com, Paul Gortmaker , bloften80@gmail.com, David Airlie , Chih-Wei Huang , Thierry Reding , Daniel Vetter , Lee Jones List-Id: dri-devel@lists.freedesktop.org VGhlIENyeXN0YWxjb3ZlIFBNSUMgcHJvdmlkZXMgdGhyZWUgUFdNIHNpZ25hbHMgYW5kIHRoaXMg ZHJpdmVyIGV4cG9ydHMKb25lIG9mIHRoZW0gb24gdGhlIEJZVCBwbGF0Zm9ybSB3aGljaCBpcyB1 c2VkIHRvIGNvbnRyb2wgYmFja2xpZ2h0IGZvcgpEU0kgcGFuZWwuIFRoaXMgaXMgcGxhdGZvcm0g ZGV2aWNlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBkcml2ZXJzL21mZApjZWxsIGRldmljZSBmb3Ig Q1JDIFBNSUMuCgpDQzogU2FtdWVsIE9ydGl6IDxzYW1lb0BsaW51eC5pbnRlbC5jb20+CkNjOiBM aW51cyBXYWxsZWlqIDxsaW51cy53YWxsZWlqQGxpbmFyby5vcmc+CkNjOiBBbGV4YW5kcmUgQ291 cmJvdCA8Z251cm91QGdtYWlsLmNvbT4KQ2M6IFRoaWVycnkgUmVkaW5nIDx0aGllcnJ5LnJlZGlu Z0BnbWFpbC5jb20+CkNjOiBQYXVsIEJvbGxlIDxwZWJvbGxlQHRpc2NhbGkubmw+CkNjOiBQYXVs IEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KVGVzdGVkLWJ5OiBWaWxs ZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5 OiBTaG9iaGl0IEt1bWFyIDxzaG9iaGl0Lmt1bWFyQGludGVsLmNvbT4KLS0tCnYyOiBVc2UgdGhl IGV4aXN0aW5nIGNvbmZpZyBjYWxsYmFjayB3aXRoIGR1dHlfbnMgYW5kIHBlcmlvZF9ucyhUaGll cnJ5KQoKdjM6IENvcnJlY3QgdGhlIHN1YmplY3QgbGluZSAoTGVlIGpvbmVzKQoKdjQ6IEFkZHJl c3MgY29tbWVudCBieSBUaGllcnJ5ICYgUGF1bAogICAgLSBDb21taXQgbWVzc2FnZSB1cGRhdGUg YW5kIGZpeGVzIGZvciBmZXcgc3ludGF4IGVycm9ycwogICAgLSBBZGQgUFdNX0NSQyBpbiBLY29u ZmlnIGFuZCBNYWtlZmlsZSBzb3J0ZWQgYWxwaGFiZXRpY2FsbHkKICAgIC0gVXNlIHRoZSBQV01f QkFTRV9DTEsgYXMgNjAwMDAwMCBmb3IgYmV0dGVyIGNvZGUgcmVhZGFiaWxpdHkKICAgIC0gUmVt b3ZlIHRoZSByZWR1bmRhbnQgcnVsZSBvZiB0aHJlZSB3aGlsZSBjYWxjdWxhdGluZyBwd20gbGV2 ZWwKICAgIC0gVXNlIHRoZSBwbGF0Zm9ybV9kZXZpY2UgaW4gcHdtX2NoaXAKICAgIC0gVXNlIGJ1 aWxpbl9wbGF0Zm9ybV9kcml2ZXIKCnY1OiBBZGRyZXNzIGNvbW1lbnRzIGJ5IFZhcmthCiAgICAt IE1ha2UgdGhlIGJpdCBkZWZpbml0aW9uIHVzaW5nIEJJVCBtYWNybwogICAgLSByZW9yZGVyIHBy b2JlIGFuZCByZW1vdmUgY29kZSB0byBkaXJlY3RseSByZXR1cm4gZnJvbSBwd21jaGlwX2FkZC9y ZW1vdmUKCiBkcml2ZXJzL3B3bS9LY29uZmlnICAgfCAgIDcgKysrCiBkcml2ZXJzL3B3bS9NYWtl ZmlsZSAgfCAgIDEgKwogZHJpdmVycy9wd20vcHdtLWNyYy5jIHwgMTQzICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDE1 MSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9wd20vcHdtLWNyYy5j CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wd20vS2NvbmZpZyBiL2RyaXZlcnMvcHdtL0tjb25maWcK aW5kZXggYjE1NDFmNC4uOTQ4ZDlhYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9wd20vS2NvbmZpZwor KysgYi9kcml2ZXJzL3B3bS9LY29uZmlnCkBAIC0xMTEsNiArMTExLDEzIEBAIGNvbmZpZyBQV01f Q0xQUzcxMVgKIAkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBN IGhlcmU6IHRoZSBtb2R1bGUKIAkgIHdpbGwgYmUgY2FsbGVkIHB3bS1jbHBzNzExeC4KIAorY29u ZmlnIFBXTV9DUkMKKwlib29sICJJbnRlbCBDcnlzdGFsY292ZSAoQ1JDKSBQV00gc3VwcG9ydCIK KwlkZXBlbmRzIG9uIFg4NiAmJiBJTlRFTF9TT0NfUE1JQworCWhlbHAKKwkgIEdlbmVyaWMgUFdN IGZyYW1ld29yayBkcml2ZXIgZm9yIENyeXN0YWxjb3ZlIChDUkMpIFBNSUMgYmFzZWQgUFdNCisJ ICBjb250cm9sLgorCiBjb25maWcgUFdNX0VQOTNYWAogCXRyaXN0YXRlICJDaXJydXMgTG9naWMg RVA5M3h4IFBXTSBzdXBwb3J0IgogCWRlcGVuZHMgb24gQVJDSF9FUDkzWFgKZGlmZiAtLWdpdCBh L2RyaXZlcnMvcHdtL01ha2VmaWxlIGIvZHJpdmVycy9wd20vTWFrZWZpbGUKaW5kZXggZWM1MGVi NS4uZDE4NmYzNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9wd20vTWFrZWZpbGUKKysrIGIvZHJpdmVy cy9wd20vTWFrZWZpbGUKQEAgLTgsNiArOCw3IEBAIG9iai0kKENPTkZJR19QV01fQkNNX0tPTkEp CSs9IHB3bS1iY20ta29uYS5vCiBvYmotJChDT05GSUdfUFdNX0JDTTI4MzUpCSs9IHB3bS1iY20y ODM1Lm8KIG9iai0kKENPTkZJR19QV01fQkZJTikJCSs9IHB3bS1iZmluLm8KIG9iai0kKENPTkZJ R19QV01fQ0xQUzcxMVgpCSs9IHB3bS1jbHBzNzExeC5vCitvYmotJChDT05GSUdfUFdNX0NSQykJ CSs9IHB3bS1jcmMubwogb2JqLSQoQ09ORklHX1BXTV9FUDkzWFgpCSs9IHB3bS1lcDkzeHgubwog b2JqLSQoQ09ORklHX1BXTV9GU0xfRlRNKQkrPSBwd20tZnNsLWZ0bS5vCiBvYmotJChDT05GSUdf UFdNX0lNRykJCSs9IHB3bS1pbWcubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wd20vcHdtLWNyYy5j IGIvZHJpdmVycy9wd20vcHdtLWNyYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjcxMDFjNzAKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3B3bS9wd20tY3JjLmMKQEAg LTAsMCArMSwxNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSW50ZWwgQ29ycG9yYXRp b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbgorICog MiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIEF1dGhvcjogU2hvYmhpdCBLdW1hciA8c2hvYmhpdC5r dW1hckBpbnRlbC5jb20+CisgKi8KKworI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5o PgorI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgorI2luY2x1ZGUgPGxpbnV4L21mZC9pbnRlbF9z b2NfcG1pYy5oPgorI2luY2x1ZGUgPGxpbnV4L3B3bS5oPgorCisjZGVmaW5lIFBXTTBfQ0xLX0RJ VgkJMHg0QgorI2RlZmluZSAgUFdNX09VVFBVVF9FTkFCTEUJQklUKDcpCisjZGVmaW5lICBQV01f RElWX0NMS18wCQkweDAwIC8qIERJVklERUNMSyA9IEJBU0VDTEsgKi8KKyNkZWZpbmUgIFBXTV9E SVZfQ0xLXzEwMAkweDYzIC8qIERJVklERUNMSyA9IEJBU0VDTEsvMTAwICovCisjZGVmaW5lICBQ V01fRElWX0NMS18xMjgJMHg3RiAvKiBESVZJREVDTEsgPSBCQVNFQ0xLLzEyOCAqLworCisjZGVm aW5lIFBXTTBfRFVUWV9DWUNMRQkJMHg0RQorI2RlZmluZSBCQUNLTElHSFRfRU4JCTB4NTEKKwor I2RlZmluZSBQV01fTUFYX0xFVkVMCQkweEZGCisKKyNkZWZpbmUgUFdNX0JBU0VfQ0xLCQk2MDAw MDAwICAvKiA2IE1IeiAqLworI2RlZmluZSBQV01fTUFYX1BFUklPRF9OUwkyMTMzMyAgICAvKiA0 Ni44NzVLSHogKi8KKworLyoqCisgKiBzdHJ1Y3QgY3J5c3RhbGNvdmVfcHdtIC0gQ3J5c3RhbCBD b3ZlIFBXTSBjb250cm9sbGVyCisgKiBAY2hpcDogdGhlIGFic3RyYWN0IHB3bV9jaGlwIHN0cnVj dHVyZS4KKyAqIEByZWdtYXA6IHRoZSByZWdtYXAgZnJvbSB0aGUgcGFyZW50IGRldmljZS4KKyAq Lworc3RydWN0IGNyeXN0YWxjb3ZlX3B3bSB7CisJc3RydWN0IHB3bV9jaGlwIGNoaXA7CisJc3Ry dWN0IHJlZ21hcCAqcmVnbWFwOworfTsKKworc3RhdGljIGlubGluZSBzdHJ1Y3QgY3J5c3RhbGNv dmVfcHdtICp0b19jcmNfcHdtKHN0cnVjdCBwd21fY2hpcCAqcGMpCit7CisJcmV0dXJuIGNvbnRh aW5lcl9vZihwYywgc3RydWN0IGNyeXN0YWxjb3ZlX3B3bSwgY2hpcCk7Cit9CisKK3N0YXRpYyBp bnQgY3JjX3B3bV9lbmFibGUoc3RydWN0IHB3bV9jaGlwICpjLCBzdHJ1Y3QgcHdtX2RldmljZSAq cHdtKQoreworCXN0cnVjdCBjcnlzdGFsY292ZV9wd20gKmNyY19wd20gPSB0b19jcmNfcHdtKGMp OworCisJcmVnbWFwX3dyaXRlKGNyY19wd20tPnJlZ21hcCwgQkFDS0xJR0hUX0VOLCAxKTsKKwor CXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBjcmNfcHdtX2Rpc2FibGUoc3RydWN0IHB3bV9j aGlwICpjLCBzdHJ1Y3QgcHdtX2RldmljZSAqcHdtKQoreworCXN0cnVjdCBjcnlzdGFsY292ZV9w d20gKmNyY19wd20gPSB0b19jcmNfcHdtKGMpOworCisJcmVnbWFwX3dyaXRlKGNyY19wd20tPnJl Z21hcCwgQkFDS0xJR0hUX0VOLCAwKTsKK30KKworc3RhdGljIGludCBjcmNfcHdtX2NvbmZpZyhz dHJ1Y3QgcHdtX2NoaXAgKmMsIHN0cnVjdCBwd21fZGV2aWNlICpwd20sCisJCQkgIGludCBkdXR5 X25zLCBpbnQgcGVyaW9kX25zKQoreworCXN0cnVjdCBjcnlzdGFsY292ZV9wd20gKmNyY19wd20g PSB0b19jcmNfcHdtKGMpOworCXN0cnVjdCBkZXZpY2UgKmRldiA9IGNyY19wd20tPmNoaXAuZGV2 OworCWludCBsZXZlbDsKKworCWlmIChwZXJpb2RfbnMgPiBQV01fTUFYX1BFUklPRF9OUykgewor CQlkZXZfZXJyKGRldiwgInVuLXN1cHBvcnRlZCBwZXJpb2RfbnNcbiIpOworCQlyZXR1cm4gLUVJ TlZBTDsKKwl9CisKKwlpZiAocHdtLT5wZXJpb2QgIT0gcGVyaW9kX25zKSB7CisJCWludCBjbGtf ZGl2OworCisJCS8qIGNoYW5naW5nIHRoZSBjbGsgZGl2aXNvciwgbmVlZCB0byBkaXNhYmxlIGZp c3J0ICovCisJCWNyY19wd21fZGlzYWJsZShjLCBwd20pOworCQljbGtfZGl2ID0gUFdNX0JBU0Vf Q0xLICogcGVyaW9kX25zIC8gTlNFQ19QRVJfU0VDOworCisJCXJlZ21hcF93cml0ZShjcmNfcHdt LT5yZWdtYXAsIFBXTTBfQ0xLX0RJViwKKwkJCQkJY2xrX2RpdiB8IFBXTV9PVVRQVVRfRU5BQkxF KTsKKworCQkvKiBlbmFibGUgYmFjayAqLworCQljcmNfcHdtX2VuYWJsZShjLCBwd20pOworCX0K KworCS8qIGNoYW5nZSB0aGUgcHdtIGR1dHkgY3ljbGUgKi8KKwlsZXZlbCA9IGR1dHlfbnMgKiBQ V01fTUFYX0xFVkVMIC8gcGVyaW9kX25zOworCXJlZ21hcF93cml0ZShjcmNfcHdtLT5yZWdtYXAs IFBXTTBfRFVUWV9DWUNMRSwgbGV2ZWwpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25z dCBzdHJ1Y3QgcHdtX29wcyBjcmNfcHdtX29wcyA9IHsKKwkuY29uZmlnID0gY3JjX3B3bV9jb25m aWcsCisJLmVuYWJsZSA9IGNyY19wd21fZW5hYmxlLAorCS5kaXNhYmxlID0gY3JjX3B3bV9kaXNh YmxlLAorfTsKKworc3RhdGljIGludCBjcnlzdGFsY292ZV9wd21fcHJvYmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgY3J5c3RhbGNvdmVfcHdtICpwd207CisJc3Ry dWN0IGRldmljZSAqZGV2ID0gcGRldi0+ZGV2LnBhcmVudDsKKwlzdHJ1Y3QgaW50ZWxfc29jX3Bt aWMgKnBtaWMgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKworCXB3bSA9IGRldm1fa3phbGxvYygm cGRldi0+ZGV2LCBzaXplb2YoKnB3bSksIEdGUF9LRVJORUwpOworCWlmICghcHdtKQorCQlyZXR1 cm4gLUVOT01FTTsKKworCXB3bS0+Y2hpcC5kZXYgPSAmcGRldi0+ZGV2OworCXB3bS0+Y2hpcC5v cHMgPSAmY3JjX3B3bV9vcHM7CisJcHdtLT5jaGlwLmJhc2UgPSAtMTsKKwlwd20tPmNoaXAubnB3 bSA9IDE7CisKKwkvKiBnZXQgdGhlIFBNSUMgcmVnbWFwICovCisJcHdtLT5yZWdtYXAgPSBwbWlj LT5yZWdtYXA7CisKKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBwd20pOworCisJcmV0dXJu IHB3bWNoaXBfYWRkKCZwd20tPmNoaXApOworfQorCitzdGF0aWMgaW50IGNyeXN0YWxjb3ZlX3B3 bV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgY3J5c3Rh bGNvdmVfcHdtICpwd20gPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKKworCXJldHVybiBw d21jaGlwX3JlbW92ZSgmcHdtLT5jaGlwKTsKK30KKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9k cml2ZXIgY3J5c3RhbGNvdmVfcHdtX2RyaXZlciA9IHsKKwkucHJvYmUgPSBjcnlzdGFsY292ZV9w d21fcHJvYmUsCisJLnJlbW92ZSA9IGNyeXN0YWxjb3ZlX3B3bV9yZW1vdmUsCisJLmRyaXZlciA9 IHsKKwkJLm5hbWUgPSAiY3J5c3RhbF9jb3ZlX3B3bSIsCisJfSwKK307CisKK2J1aWx0aW5fcGxh dGZvcm1fZHJpdmVyKGNyeXN0YWxjb3ZlX3B3bV9kcml2ZXIpOwotLSAKMS45LjEKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==