From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shobhit Kumar Subject: [PATCH 6/8] drivers/pwm: Add Crystalcove (CRC) PWM driver Date: Wed, 29 Apr 2015 19:30:03 +0530 Message-ID: <1430316005-16480-7-git-send-email-shobhit.kumar@intel.com> References: <1430316005-16480-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: <1430316005-16480-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: 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 aCBkdXR5X25zIGFuZCBwZXJpb2RfbnMoVGhpZXJyeSkKCkNDOiBTYW11ZWwgT3J0aXogPHNhbWVv QGxpbnV4LmludGVsLmNvbT4KQ2M6IExpbnVzIFdhbGxlaWogPGxpbnVzLndhbGxlaWpAbGluYXJv Lm9yZz4KQ2M6IEFsZXhhbmRyZSBDb3VyYm90IDxnbnVyb3VAZ21haWwuY29tPgpDYzogVGhpZXJy eSBSZWRpbmcgPHRoaWVycnkucmVkaW5nQGdtYWlsLmNvbT4KU2lnbmVkLW9mZi1ieTogU2hvYmhp dCBLdW1hciA8c2hvYmhpdC5rdW1hckBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9wd20vS2NvbmZp ZyAgIHwgICA3ICsrKwogZHJpdmVycy9wd20vTWFrZWZpbGUgIHwgICAxICsKIGRyaXZlcnMvcHdt L3B3bS1jcmMuYyB8IDE3MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxNzkgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvcHdtL3B3bS1jcmMuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHdt L0tjb25maWcgYi9kcml2ZXJzL3B3bS9LY29uZmlnCmluZGV4IGIxNTQxZjQuLjk1NGRhM2UgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvcHdtL0tjb25maWcKKysrIGIvZHJpdmVycy9wd20vS2NvbmZpZwpA QCAtMTgzLDYgKzE4MywxMyBAQCBjb25maWcgUFdNX0xQQzMyWFgKIAkgIFRvIGNvbXBpbGUgdGhp cyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUKIAkgIHdpbGwg YmUgY2FsbGVkIHB3bS1scGMzMnh4LgogCitjb25maWcgUFdNX0NSQworCWJvb2wgIkludGVsIENy eXN0YWxjb3ZlIChDUkMpIFBXTSBzdXBwb3J0IgorCWRlcGVuZHMgb24gWDg2ICYmIElOVEVMX1NP Q19QTUlDCisJaGVscAorCSAgR2VuZXJpYyBQV00gZnJhbWV3b3JrIGRyaXZlciBmb3IgQ3J5c3Rh bGNvdmUgKENSQykgUE1JQyBiYXNlZCBQV00KKwkgIGNvbnRyb2wuCisKIGNvbmZpZyBQV01fTFBT UwogCXRyaXN0YXRlICJJbnRlbCBMUFNTIFBXTSBzdXBwb3J0IgogCWRlcGVuZHMgb24gWDg2CmRp ZmYgLS1naXQgYS9kcml2ZXJzL3B3bS9NYWtlZmlsZSBiL2RyaXZlcnMvcHdtL01ha2VmaWxlCmlu ZGV4IGVjNTBlYjUuLjNkMzhmZWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcHdtL01ha2VmaWxlCisr KyBiL2RyaXZlcnMvcHdtL01ha2VmaWxlCkBAIC0zNSwzICszNSw0IEBAIG9iai0kKENPTkZJR19Q V01fVElQV01TUykJKz0gcHdtLXRpcHdtc3Mubwogb2JqLSQoQ09ORklHX1BXTV9UV0wpCQkrPSBw d20tdHdsLm8KIG9iai0kKENPTkZJR19QV01fVFdMX0xFRCkJKz0gcHdtLXR3bC1sZWQubwogb2Jq LSQoQ09ORklHX1BXTV9WVDg1MDApCSs9IHB3bS12dDg1MDAubworb2JqLSQoQ09ORklHX1BXTV9D UkMpCQkrPSBwd20tY3JjLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHdtL3B3bS1jcmMuYyBiL2Ry aXZlcnMvcHdtL3B3bS1jcmMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45 ODdmM2I0Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9wd20vcHdtLWNyYy5jCkBAIC0wLDAg KzEsMTcxIEBACisvKgorICogcHdtLWNyYy5jIC0gSW50ZWwgQ3J5c3RhbCBDb3ZlIFBXTSBEcml2 ZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbgorICogMiBhcyBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorICoKKyAqIEF1dGhvcjogU2hvYmhpdCBLdW1hciA8c2hvYmhpdC5rdW1hckBpbnRlbC5j b20+CisgKi8KKworI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L3Bs YXRmb3JtX2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgorI2luY2x1ZGUgPGxp bnV4L21mZC9pbnRlbF9zb2NfcG1pYy5oPgorI2luY2x1ZGUgPGxpbnV4L3B3bS5oPgorCisjZGVm aW5lIFBXTTBfQ0xLX0RJVgkJMHg0QgorI2RlZmluZSAgUFdNX09VVFBVVF9FTkFCTEUJKDE8PDcp CisjZGVmaW5lICBQV01fRElWX0NMS18wCQkweDAwIC8qIERJVklERUNMSyA9IEJBU0VDTEsgKi8K KyNkZWZpbmUgIFBXTV9ESVZfQ0xLXzEwMAkweDYzIC8qIERJVklERUNMSyA9IEJBU0VDTEsvMTAw ICovCisjZGVmaW5lICBQV01fRElWX0NMS18xMjgJMHg3RiAvKiBESVZJREVDTEsgPSBCQVNFQ0xL LzEyOCAqLworCisjZGVmaW5lIFBXTTBfRFVUWV9DWUNMRQkJMHg0RQorI2RlZmluZSBCQUNLTElH SFRfRU4JCTB4NTEKKworI2RlZmluZSBQV01fTUFYX0xFVkVMCQkweEZGCisKKyNkZWZpbmUgUFdN X0JBU0VfQ0xLCQk2MDAwCS8qIDYgTUh6ICovCisjZGVmaW5lIFBXTV9NQVhfUEVSSU9EX05TCTIx MzMzIC8qIDQ2Ljg3NUtIeiAqLworCisvKioKKyAqIHN0cnVjdCBjcnlzdGFsY292ZV9wd20gLSBD cnlzdGFsIENvdmUgUFdNIGNvbnRyb2xsZXIKKyAqIEBjaGlwOiB0aGUgYWJzdHJhY3QgcHdtX2No aXAgc3RydWN0dXJlLgorICogQHJlZ21hcDogdGhlIHJlZ21hcCBmcm9tIHRoZSBwYXJlbnQgZGV2 aWNlLgorICovCitzdHJ1Y3QgY3J5c3RhbGNvdmVfcHdtIHsKKwlzdHJ1Y3QgcHdtX2NoaXAgY2hp cDsKKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2OworCXN0cnVjdCByZWdtYXAgKnJlZ21h cDsKK307CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGNyeXN0YWxjb3ZlX3B3bSAqdG9fY3JjX3B3 bShzdHJ1Y3QgcHdtX2NoaXAgKnBjKQoreworCXJldHVybiBjb250YWluZXJfb2YocGMsIHN0cnVj dCBjcnlzdGFsY292ZV9wd20sIGNoaXApOworfQorCitzdGF0aWMgaW50IGNyY19wd21fZW5hYmxl KHN0cnVjdCBwd21fY2hpcCAqYywgc3RydWN0IHB3bV9kZXZpY2UgKnB3bSkKK3sKKwlzdHJ1Y3Qg Y3J5c3RhbGNvdmVfcHdtICpjcmNfcHdtID0gdG9fY3JjX3B3bShjKTsKKworCXJlZ21hcF93cml0 ZShjcmNfcHdtLT5yZWdtYXAsIEJBQ0tMSUdIVF9FTiwgMSk7CisKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIHZvaWQgY3JjX3B3bV9kaXNhYmxlKHN0cnVjdCBwd21fY2hpcCAqYywgc3RydWN0IHB3 bV9kZXZpY2UgKnB3bSkKK3sKKwlzdHJ1Y3QgY3J5c3RhbGNvdmVfcHdtICpjcmNfcHdtID0gdG9f Y3JjX3B3bShjKTsKKworCXJlZ21hcF93cml0ZShjcmNfcHdtLT5yZWdtYXAsIEJBQ0tMSUdIVF9F TiwgMCk7Cit9CisKK3N0YXRpYyBpbnQgY3JjX3B3bV9jb25maWcoc3RydWN0IHB3bV9jaGlwICpj LCBzdHJ1Y3QgcHdtX2RldmljZSAqcHdtLAorCQkJCSAgaW50IGR1dHlfbnMsIGludCBwZXJpb2Rf bnMpCit7CisJc3RydWN0IGNyeXN0YWxjb3ZlX3B3bSAqY3JjX3B3bSA9IHRvX2NyY19wd20oYyk7 CisJc3RydWN0IGRldmljZSAqZGV2ID0gJmNyY19wd20tPnBkZXYtPmRldjsKKwlpbnQgbGV2ZWws IHBlcmNlbnQ7CisKKwlpZiAocGVyaW9kX25zID4gUFdNX01BWF9QRVJJT0RfTlMpIHsKKwkJZGV2 X2VycihkZXYsICJ1bi1zdXBwb3J0ZWQgcGVyaW9kX25zXG4iKTsKKwkJcmV0dXJuIC0xOworCX0K KworCWlmIChwd20tPnBlcmlvZCAhPSBwZXJpb2RfbnMpIHsKKwkJaW50IGNsa19kaXY7CisKKwkJ LyogY2hhbmdpbmcgdGhlIGNsayBkaXZpc29yLCBuZWVkIHRvIGRpc2FibGUgZmlzcnQgKi8KKwkJ Y3JjX3B3bV9kaXNhYmxlKGMsIHB3bSk7CisJCWNsa19kaXYgPSBQV01fQkFTRV9DTEsgKiBwZXJp b2RfbnMgLyAxMDAwMDAwOworCisJCXJlZ21hcF93cml0ZShjcmNfcHdtLT5yZWdtYXAsIFBXTTBf Q0xLX0RJViwKKwkJCQkJY2xrX2RpdiB8IFBXTV9PVVRQVVRfRU5BQkxFKTsKKworCQkvKiBlbmFi bGUgYmFjayAqLworCQljcmNfcHdtX2VuYWJsZShjLCBwd20pOworCX0KKworCWlmIChkdXR5X25z ID4gcGVyaW9kX25zKSB7CisJCWRldl9lcnIoZGV2LCAiZHV0eSBjeWNsZSBjYW5ub3QgYmUgZ3Jl YXRlciB0aGFuIGN5Y2xlIHBlcmlvZFxuIik7CisJCXJldHVybiAtMTsKKwl9CisKKwkvKiBjaGFu Z2UgdGhlIHB3bSBkdXR5IGN5Y2xlICovCisJcGVyY2VudCA9IGR1dHlfbnMgKiAxMDAgLyBwZXJp b2RfbnM7CisJbGV2ZWwgPSBwZXJjZW50ICogUFdNX01BWF9MRVZFTCAvIDEwMDsKKwlyZWdtYXBf d3JpdGUoY3JjX3B3bS0+cmVnbWFwLCBQV00wX0RVVFlfQ1lDTEUsIGxldmVsKTsKKworCXJldHVy biAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHB3bV9vcHMgY3JjX3B3bV9vcHMgPSB7CisJ LmNvbmZpZyA9IGNyY19wd21fY29uZmlnLAorCS5lbmFibGUgPSBjcmNfcHdtX2VuYWJsZSwKKwku ZGlzYWJsZSA9IGNyY19wd21fZGlzYWJsZSwKKwkub3duZXIgPSBUSElTX01PRFVMRSwKK307CisK K3N0YXRpYyBpbnQgY3J5c3RhbGNvdmVfcHdtX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpCit7CisJc3RydWN0IGNyeXN0YWxjb3ZlX3B3bSAqcHdtOworCWludCByZXR2YWw7CisJ c3RydWN0IGRldmljZSAqZGV2ID0gcGRldi0+ZGV2LnBhcmVudDsKKwlzdHJ1Y3QgaW50ZWxfc29j X3BtaWMgKnBtaWMgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKworCXB3bSA9IGRldm1fa3phbGxv YygmcGRldi0+ZGV2LCBzaXplb2YoKnB3bSksIEdGUF9LRVJORUwpOworCWlmICghcHdtKQorCQly ZXR1cm4gLUVOT01FTTsKKworCXB3bS0+Y2hpcC5kZXYgPSAmcGRldi0+ZGV2OworCXB3bS0+Y2hp cC5vcHMgPSAmY3JjX3B3bV9vcHM7CisJcHdtLT5jaGlwLmJhc2UgPSAtMTsKKwlwd20tPmNoaXAu bnB3bSA9IDE7CisKKwkvKiBnZXQgdGhlIFBNSUMgcmVnbWFwICovCisJcHdtLT5yZWdtYXAgPSBw bWljLT5yZWdtYXA7CisKKwlyZXR2YWwgPSBwd21jaGlwX2FkZCgmcHdtLT5jaGlwKTsKKwlpZiAo cmV0dmFsIDwgMCkKKwkJcmV0dXJuIHJldHZhbDsKKworCWRldl9kYmcoJnBkZXYtPmRldiwgImNy Yy1wd20gcHJvYmUgc3VjY2Vzc2Z1bFxuIik7CisJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwg cHdtKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGNyeXN0YWxjb3ZlX3B3bV9yZW1v dmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgY3J5c3RhbGNvdmVf cHdtICpwd20gPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKKwlpbnQgcmV0dmFsOworCisJ cmV0dmFsID0gcHdtY2hpcF9yZW1vdmUoJnB3bS0+Y2hpcCk7CisJaWYgKHJldHZhbCA8IDApCisJ CXJldHVybiByZXR2YWw7CisKKwlkZXZfZGJnKCZwZGV2LT5kZXYsICJjcmMtcHdtIGRyaXZlciBy ZW1vdmVkXG4iKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2Ry aXZlciBjcnlzdGFsY292ZV9wd21fZHJpdmVyID0geworCS5wcm9iZSA9IGNyeXN0YWxjb3ZlX3B3 bV9wcm9iZSwKKwkucmVtb3ZlID0gY3J5c3RhbGNvdmVfcHdtX3JlbW92ZSwKKwkuZHJpdmVyID0g eworCQkubmFtZSA9ICJjcnlzdGFsX2NvdmVfcHdtIiwKKwl9LAorfTsKKworbW9kdWxlX3BsYXRm b3JtX2RyaXZlcihjcnlzdGFsY292ZV9wd21fZHJpdmVyKTsKKworTU9EVUxFX0FVVEhPUigiU2hv YmhpdCBLdW1hciA8c2hvYmhpdC5rdW1hckBpbnRlbC5jb20+Iik7CitNT0RVTEVfREVTQ1JJUFRJ T04oIkludGVsIENyeXN0YWwgQ292ZSBQV00gRHJpdmVyIik7CitNT0RVTEVfTElDRU5TRSgiR1BM IHYyIik7Ci0tIAoyLjEuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK