From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shobhit Kumar Subject: [PATCH 6/8] pwm: crc: Add Crystalcove (CRC) PWM driver Date: Tue, 5 May 2015 15:08:36 +0530 Message-ID: <1430818716-27287-1-git-send-email-shobhit.kumar@intel.com> References: <1430316005-16480-7-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: <1430316005-16480-7-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: intel-gfx , linux-kernel , linux-gpio , linux-pwm , dri-devel Cc: Alexandre Courbot , Samuel Ortiz , Povilas Staniulis , David Airlie , Shobhit Kumar , Linus Walleij , Jani Nikula , Chih-Wei Huang , Thierry Reding , Daniel Vetter , Lee Jones List-Id: linux-gpio@vger.kernel.org VGhlIENyeXN0YWxjb3ZlIFBNSUMgY29udHJvbHMgUFdNIHNpZ25hbHMgYW5kIHRoaXMgZHJpdmVy IGV4cG9ydHMgdGhhdApjYXBhYmlsaXR5IGFzIGEgUFdNIGNoaXAgZHJpdmVyLiBUaGlzIGlzIHBs YXRmb3JtIGRldmljZSBpbXBsZW1lbnR0YWlvbgpvZiB0aGUgZHJpdmVycy9tZmQgY2VsbCBkZXZp Y2UgZm9yIENSQyBQTUlDCgp2MjogVXNlIHRoZSBleGlzdGluZyBjb25maWcgY2FsbGJhY2sgd2l0 aCBkdXR5X25zIGFuZCBwZXJpb2RfbnMoVGhpZXJyeSkKCnYzOiBDb3JyZWN0IHRoZSBzdWJqZWN0 IGxpbmUgKExlZSBqb25lcykKCkNDOiBTYW11ZWwgT3J0aXogPHNhbWVvQGxpbnV4LmludGVsLmNv bT4KQ2M6IExpbnVzIFdhbGxlaWogPGxpbnVzLndhbGxlaWpAbGluYXJvLm9yZz4KQ2M6IEFsZXhh bmRyZSBDb3VyYm90IDxnbnVyb3VAZ21haWwuY29tPgpDYzogVGhpZXJyeSBSZWRpbmcgPHRoaWVy cnkucmVkaW5nQGdtYWlsLmNvbT4KU2lnbmVkLW9mZi1ieTogU2hvYmhpdCBLdW1hciA8c2hvYmhp dC5rdW1hckBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9wd20vS2NvbmZpZyAgIHwgICA3ICsrKwog ZHJpdmVycy9wd20vTWFrZWZpbGUgIHwgICAxICsKIGRyaXZlcnMvcHdtL3B3bS1jcmMuYyB8IDE3 MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBm aWxlcyBjaGFuZ2VkLCAxNzkgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvcHdtL3B3bS1jcmMuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHdtL0tjb25maWcgYi9kcml2 ZXJzL3B3bS9LY29uZmlnCmluZGV4IGIxNTQxZjQuLjk1NGRhM2UgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvcHdtL0tjb25maWcKKysrIGIvZHJpdmVycy9wd20vS2NvbmZpZwpAQCAtMTgzLDYgKzE4Mywx MyBAQCBjb25maWcgUFdNX0xQQzMyWFgKIAkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBt b2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUKIAkgIHdpbGwgYmUgY2FsbGVkIHB3bS1s cGMzMnh4LgogCitjb25maWcgUFdNX0NSQworCWJvb2wgIkludGVsIENyeXN0YWxjb3ZlIChDUkMp IFBXTSBzdXBwb3J0IgorCWRlcGVuZHMgb24gWDg2ICYmIElOVEVMX1NPQ19QTUlDCisJaGVscAor CSAgR2VuZXJpYyBQV00gZnJhbWV3b3JrIGRyaXZlciBmb3IgQ3J5c3RhbGNvdmUgKENSQykgUE1J QyBiYXNlZCBQV00KKwkgIGNvbnRyb2wuCisKIGNvbmZpZyBQV01fTFBTUwogCXRyaXN0YXRlICJJ bnRlbCBMUFNTIFBXTSBzdXBwb3J0IgogCWRlcGVuZHMgb24gWDg2CmRpZmYgLS1naXQgYS9kcml2 ZXJzL3B3bS9NYWtlZmlsZSBiL2RyaXZlcnMvcHdtL01ha2VmaWxlCmluZGV4IGVjNTBlYjUuLjNk MzhmZWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcHdtL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvcHdt L01ha2VmaWxlCkBAIC0zNSwzICszNSw0IEBAIG9iai0kKENPTkZJR19QV01fVElQV01TUykJKz0g cHdtLXRpcHdtc3Mubwogb2JqLSQoQ09ORklHX1BXTV9UV0wpCQkrPSBwd20tdHdsLm8KIG9iai0k KENPTkZJR19QV01fVFdMX0xFRCkJKz0gcHdtLXR3bC1sZWQubwogb2JqLSQoQ09ORklHX1BXTV9W VDg1MDApCSs9IHB3bS12dDg1MDAubworb2JqLSQoQ09ORklHX1BXTV9DUkMpCQkrPSBwd20tY3Jj Lm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHdtL3B3bS1jcmMuYyBiL2RyaXZlcnMvcHdtL3B3bS1j cmMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODdmM2I0Ci0tLSAvZGV2 L251bGwKKysrIGIvZHJpdmVycy9wd20vcHdtLWNyYy5jCkBAIC0wLDAgKzEsMTcxIEBACisvKgor ICogcHdtLWNyYy5jIC0gSW50ZWwgQ3J5c3RhbCBDb3ZlIFBXTSBEcml2ZXIKKyAqCisgKiBDb3B5 cmlnaHQgKEMpIDIwMTUgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg KgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbgorICogMiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisg KiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIEF1 dGhvcjogU2hvYmhpdCBLdW1hciA8c2hvYmhpdC5rdW1hckBpbnRlbC5jb20+CisgKi8KKworI2lu Y2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5o PgorI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgorI2luY2x1ZGUgPGxpbnV4L21mZC9pbnRlbF9z b2NfcG1pYy5oPgorI2luY2x1ZGUgPGxpbnV4L3B3bS5oPgorCisjZGVmaW5lIFBXTTBfQ0xLX0RJ VgkJMHg0QgorI2RlZmluZSAgUFdNX09VVFBVVF9FTkFCTEUJKDE8PDcpCisjZGVmaW5lICBQV01f RElWX0NMS18wCQkweDAwIC8qIERJVklERUNMSyA9IEJBU0VDTEsgKi8KKyNkZWZpbmUgIFBXTV9E SVZfQ0xLXzEwMAkweDYzIC8qIERJVklERUNMSyA9IEJBU0VDTEsvMTAwICovCisjZGVmaW5lICBQ V01fRElWX0NMS18xMjgJMHg3RiAvKiBESVZJREVDTEsgPSBCQVNFQ0xLLzEyOCAqLworCisjZGVm aW5lIFBXTTBfRFVUWV9DWUNMRQkJMHg0RQorI2RlZmluZSBCQUNLTElHSFRfRU4JCTB4NTEKKwor I2RlZmluZSBQV01fTUFYX0xFVkVMCQkweEZGCisKKyNkZWZpbmUgUFdNX0JBU0VfQ0xLCQk2MDAw CS8qIDYgTUh6ICovCisjZGVmaW5lIFBXTV9NQVhfUEVSSU9EX05TCTIxMzMzIC8qIDQ2Ljg3NUtI eiAqLworCisvKioKKyAqIHN0cnVjdCBjcnlzdGFsY292ZV9wd20gLSBDcnlzdGFsIENvdmUgUFdN IGNvbnRyb2xsZXIKKyAqIEBjaGlwOiB0aGUgYWJzdHJhY3QgcHdtX2NoaXAgc3RydWN0dXJlLgor ICogQHJlZ21hcDogdGhlIHJlZ21hcCBmcm9tIHRoZSBwYXJlbnQgZGV2aWNlLgorICovCitzdHJ1 Y3QgY3J5c3RhbGNvdmVfcHdtIHsKKwlzdHJ1Y3QgcHdtX2NoaXAgY2hpcDsKKwlzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2OworCXN0cnVjdCByZWdtYXAgKnJlZ21hcDsKK307CisKK3N0YXRp YyBpbmxpbmUgc3RydWN0IGNyeXN0YWxjb3ZlX3B3bSAqdG9fY3JjX3B3bShzdHJ1Y3QgcHdtX2No aXAgKnBjKQoreworCXJldHVybiBjb250YWluZXJfb2YocGMsIHN0cnVjdCBjcnlzdGFsY292ZV9w d20sIGNoaXApOworfQorCitzdGF0aWMgaW50IGNyY19wd21fZW5hYmxlKHN0cnVjdCBwd21fY2hp cCAqYywgc3RydWN0IHB3bV9kZXZpY2UgKnB3bSkKK3sKKwlzdHJ1Y3QgY3J5c3RhbGNvdmVfcHdt ICpjcmNfcHdtID0gdG9fY3JjX3B3bShjKTsKKworCXJlZ21hcF93cml0ZShjcmNfcHdtLT5yZWdt YXAsIEJBQ0tMSUdIVF9FTiwgMSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgY3Jj X3B3bV9kaXNhYmxlKHN0cnVjdCBwd21fY2hpcCAqYywgc3RydWN0IHB3bV9kZXZpY2UgKnB3bSkK K3sKKwlzdHJ1Y3QgY3J5c3RhbGNvdmVfcHdtICpjcmNfcHdtID0gdG9fY3JjX3B3bShjKTsKKwor CXJlZ21hcF93cml0ZShjcmNfcHdtLT5yZWdtYXAsIEJBQ0tMSUdIVF9FTiwgMCk7Cit9CisKK3N0 YXRpYyBpbnQgY3JjX3B3bV9jb25maWcoc3RydWN0IHB3bV9jaGlwICpjLCBzdHJ1Y3QgcHdtX2Rl dmljZSAqcHdtLAorCQkJCSAgaW50IGR1dHlfbnMsIGludCBwZXJpb2RfbnMpCit7CisJc3RydWN0 IGNyeXN0YWxjb3ZlX3B3bSAqY3JjX3B3bSA9IHRvX2NyY19wd20oYyk7CisJc3RydWN0IGRldmlj ZSAqZGV2ID0gJmNyY19wd20tPnBkZXYtPmRldjsKKwlpbnQgbGV2ZWwsIHBlcmNlbnQ7CisKKwlp ZiAocGVyaW9kX25zID4gUFdNX01BWF9QRVJJT0RfTlMpIHsKKwkJZGV2X2VycihkZXYsICJ1bi1z dXBwb3J0ZWQgcGVyaW9kX25zXG4iKTsKKwkJcmV0dXJuIC0xOworCX0KKworCWlmIChwd20tPnBl cmlvZCAhPSBwZXJpb2RfbnMpIHsKKwkJaW50IGNsa19kaXY7CisKKwkJLyogY2hhbmdpbmcgdGhl IGNsayBkaXZpc29yLCBuZWVkIHRvIGRpc2FibGUgZmlzcnQgKi8KKwkJY3JjX3B3bV9kaXNhYmxl KGMsIHB3bSk7CisJCWNsa19kaXYgPSBQV01fQkFTRV9DTEsgKiBwZXJpb2RfbnMgLyAxMDAwMDAw OworCisJCXJlZ21hcF93cml0ZShjcmNfcHdtLT5yZWdtYXAsIFBXTTBfQ0xLX0RJViwKKwkJCQkJ Y2xrX2RpdiB8IFBXTV9PVVRQVVRfRU5BQkxFKTsKKworCQkvKiBlbmFibGUgYmFjayAqLworCQlj cmNfcHdtX2VuYWJsZShjLCBwd20pOworCX0KKworCWlmIChkdXR5X25zID4gcGVyaW9kX25zKSB7 CisJCWRldl9lcnIoZGV2LCAiZHV0eSBjeWNsZSBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIGN5Y2xl IHBlcmlvZFxuIik7CisJCXJldHVybiAtMTsKKwl9CisKKwkvKiBjaGFuZ2UgdGhlIHB3bSBkdXR5 IGN5Y2xlICovCisJcGVyY2VudCA9IGR1dHlfbnMgKiAxMDAgLyBwZXJpb2RfbnM7CisJbGV2ZWwg PSBwZXJjZW50ICogUFdNX01BWF9MRVZFTCAvIDEwMDsKKwlyZWdtYXBfd3JpdGUoY3JjX3B3bS0+ cmVnbWFwLCBQV00wX0RVVFlfQ1lDTEUsIGxldmVsKTsKKworCXJldHVybiAwOworfQorCitzdGF0 aWMgY29uc3Qgc3RydWN0IHB3bV9vcHMgY3JjX3B3bV9vcHMgPSB7CisJLmNvbmZpZyA9IGNyY19w d21fY29uZmlnLAorCS5lbmFibGUgPSBjcmNfcHdtX2VuYWJsZSwKKwkuZGlzYWJsZSA9IGNyY19w d21fZGlzYWJsZSwKKwkub3duZXIgPSBUSElTX01PRFVMRSwKK307CisKK3N0YXRpYyBpbnQgY3J5 c3RhbGNvdmVfcHdtX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3Ry dWN0IGNyeXN0YWxjb3ZlX3B3bSAqcHdtOworCWludCByZXR2YWw7CisJc3RydWN0IGRldmljZSAq ZGV2ID0gcGRldi0+ZGV2LnBhcmVudDsKKwlzdHJ1Y3QgaW50ZWxfc29jX3BtaWMgKnBtaWMgPSBk ZXZfZ2V0X2RydmRhdGEoZGV2KTsKKworCXB3bSA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2LCBz aXplb2YoKnB3bSksIEdGUF9LRVJORUwpOworCWlmICghcHdtKQorCQlyZXR1cm4gLUVOT01FTTsK KworCXB3bS0+Y2hpcC5kZXYgPSAmcGRldi0+ZGV2OworCXB3bS0+Y2hpcC5vcHMgPSAmY3JjX3B3 bV9vcHM7CisJcHdtLT5jaGlwLmJhc2UgPSAtMTsKKwlwd20tPmNoaXAubnB3bSA9IDE7CisKKwkv KiBnZXQgdGhlIFBNSUMgcmVnbWFwICovCisJcHdtLT5yZWdtYXAgPSBwbWljLT5yZWdtYXA7CisK KwlyZXR2YWwgPSBwd21jaGlwX2FkZCgmcHdtLT5jaGlwKTsKKwlpZiAocmV0dmFsIDwgMCkKKwkJ cmV0dXJuIHJldHZhbDsKKworCWRldl9kYmcoJnBkZXYtPmRldiwgImNyYy1wd20gcHJvYmUgc3Vj Y2Vzc2Z1bFxuIik7CisJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgcHdtKTsKKworCXJldHVy biAwOworfQorCitzdGF0aWMgaW50IGNyeXN0YWxjb3ZlX3B3bV9yZW1vdmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgY3J5c3RhbGNvdmVfcHdtICpwd20gPSBwbGF0 Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKKwlpbnQgcmV0dmFsOworCisJcmV0dmFsID0gcHdtY2hp cF9yZW1vdmUoJnB3bS0+Y2hpcCk7CisJaWYgKHJldHZhbCA8IDApCisJCXJldHVybiByZXR2YWw7 CisKKwlkZXZfZGJnKCZwZGV2LT5kZXYsICJjcmMtcHdtIGRyaXZlciByZW1vdmVkXG4iKTsKKwor CXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBjcnlzdGFsY292 ZV9wd21fZHJpdmVyID0geworCS5wcm9iZSA9IGNyeXN0YWxjb3ZlX3B3bV9wcm9iZSwKKwkucmVt b3ZlID0gY3J5c3RhbGNvdmVfcHdtX3JlbW92ZSwKKwkuZHJpdmVyID0geworCQkubmFtZSA9ICJj cnlzdGFsX2NvdmVfcHdtIiwKKwl9LAorfTsKKworbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihjcnlz dGFsY292ZV9wd21fZHJpdmVyKTsKKworTU9EVUxFX0FVVEhPUigiU2hvYmhpdCBLdW1hciA8c2hv YmhpdC5rdW1hckBpbnRlbC5jb20+Iik7CitNT0RVTEVfREVTQ1JJUFRJT04oIkludGVsIENyeXN0 YWwgQ292ZSBQV00gRHJpdmVyIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7Ci0tIAoyLjEu MAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK