From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shobhit Kumar Subject: [v2 5/7] pwm: crc: Add Crystalcove (CRC) PWM driver Date: Mon, 22 Jun 2015 16:24:23 +0530 Message-ID: <1434970465-12687-6-git-send-email-shobhit.kumar@intel.com> References: <1434970465-12687-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: <1434970465-12687-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 , Paul Gortmaker , bloften80@gmail.com, David Airlie , Chih-Wei Huang , Thierry Reding , Daniel Vetter , Lee Jones List-Id: linux-pwm@vger.kernel.org VGhlIENyeXN0YWxjb3ZlIFBNSUMgcHJvdmlkZXMgdGhyZWUgUFdNIHNpZ25hbHMgYW5kIHRoaXMg ZHJpdmVyIGV4cG9ydHMKb25lIG9mIHRoZW0gb24gdGhlIEJZVCBwbGF0Zm9ybSB3aGljaCBpcyB1 c2VkIHRvIGNvbnRyb2wgYmFja2xpZ2h0IGZvcgpEU0kgcGFuZWwuIFRoaXMgaXMgcGxhdGZvcm0g ZGV2aWNlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBkcml2ZXJzL21mZApjZWxsIGRldmljZSBmb3Ig Q1JDIFBNSUMuCgp2MjogVXNlIHRoZSBleGlzdGluZyBjb25maWcgY2FsbGJhY2sgd2l0aCBkdXR5 X25zIGFuZCBwZXJpb2RfbnMoVGhpZXJyeSkKCnYzOiBDb3JyZWN0IHRoZSBzdWJqZWN0IGxpbmUg KExlZSBqb25lcykKCnY0OiBBZGRyZXNzIGNvbW1lbnQgYnkgVGhpZXJyeSAmIFBhdWwKICAgIC0g Q29tbWl0IG1lc3NhZ2UgdXBkYXRlIGFuZCBmaXhlcyBmb3IgZmV3IHN5bnRheCBlcnJvcnMKICAg IC0gQWRkIFBXTV9DUkMgaW4gS2NvbmZpZyBhbmQgTWFrZWZpbGUgc29ydGVkIGFscGhhYmV0aWNh bGx5CiAgICAtIFVzZSB0aGUgUFdNX0JBU0VfQ0xLIGFzIDYwMDAwMDAgZm9yIGJldHRlciBjb2Rl IHJlYWRhYmlsaXR5CiAgICAtIFJlbW92ZSB0aGUgcmVkdW5kYW50IHJ1bGUgb2YgdGhyZWUgd2hp bGUgY2FsY3VsYXRpbmcgcHdtIGxldmVsCiAgICAtIFVzZSB0aGUgcGxhdGZvcm1fZGV2aWNlIGlu IHB3bV9jaGlwCiAgICAtIFVzZSBidWlsaW5fcGxhdGZvcm1fZHJpdmVyCgpDQzogU2FtdWVsIE9y dGl6IDxzYW1lb0BsaW51eC5pbnRlbC5jb20+CkNjOiBMaW51cyBXYWxsZWlqIDxsaW51cy53YWxs ZWlqQGxpbmFyby5vcmc+CkNjOiBBbGV4YW5kcmUgQ291cmJvdCA8Z251cm91QGdtYWlsLmNvbT4K Q2M6IFRoaWVycnkgUmVkaW5nIDx0aGllcnJ5LnJlZGluZ0BnbWFpbC5jb20+CkNjOiBQYXVsIEJv bGxlIDxwZWJvbGxlQHRpc2NhbGkubmw+CkNjOiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFr ZXJAd2luZHJpdmVyLmNvbT4KU2lnbmVkLW9mZi1ieTogU2hvYmhpdCBLdW1hciA8c2hvYmhpdC5r dW1hckBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9wd20vS2NvbmZpZyAgIHwgICA3ICsrKwogZHJp dmVycy9wd20vTWFrZWZpbGUgIHwgICAxICsKIGRyaXZlcnMvcHdtL3B3bS1jcmMuYyB8IDE1NSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxl cyBjaGFuZ2VkLCAxNjMgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv cHdtL3B3bS1jcmMuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHdtL0tjb25maWcgYi9kcml2ZXJz L3B3bS9LY29uZmlnCmluZGV4IGIxNTQxZjQuLjk0OGQ5YWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv cHdtL0tjb25maWcKKysrIGIvZHJpdmVycy9wd20vS2NvbmZpZwpAQCAtMTExLDYgKzExMSwxMyBA QCBjb25maWcgUFdNX0NMUFM3MTFYCiAJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9k dWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlCiAJICB3aWxsIGJlIGNhbGxlZCBwd20tY2xw czcxMXguCiAKK2NvbmZpZyBQV01fQ1JDCisJYm9vbCAiSW50ZWwgQ3J5c3RhbGNvdmUgKENSQykg UFdNIHN1cHBvcnQiCisJZGVwZW5kcyBvbiBYODYgJiYgSU5URUxfU09DX1BNSUMKKwloZWxwCisJ ICBHZW5lcmljIFBXTSBmcmFtZXdvcmsgZHJpdmVyIGZvciBDcnlzdGFsY292ZSAoQ1JDKSBQTUlD IGJhc2VkIFBXTQorCSAgY29udHJvbC4KKwogY29uZmlnIFBXTV9FUDkzWFgKIAl0cmlzdGF0ZSAi Q2lycnVzIExvZ2ljIEVQOTN4eCBQV00gc3VwcG9ydCIKIAlkZXBlbmRzIG9uIEFSQ0hfRVA5M1hY CmRpZmYgLS1naXQgYS9kcml2ZXJzL3B3bS9NYWtlZmlsZSBiL2RyaXZlcnMvcHdtL01ha2VmaWxl CmluZGV4IGVjNTBlYjUuLmQxODZmMzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcHdtL01ha2VmaWxl CisrKyBiL2RyaXZlcnMvcHdtL01ha2VmaWxlCkBAIC04LDYgKzgsNyBAQCBvYmotJChDT05GSUdf UFdNX0JDTV9LT05BKQkrPSBwd20tYmNtLWtvbmEubwogb2JqLSQoQ09ORklHX1BXTV9CQ00yODM1 KQkrPSBwd20tYmNtMjgzNS5vCiBvYmotJChDT05GSUdfUFdNX0JGSU4pCQkrPSBwd20tYmZpbi5v CiBvYmotJChDT05GSUdfUFdNX0NMUFM3MTFYKQkrPSBwd20tY2xwczcxMXgubworb2JqLSQoQ09O RklHX1BXTV9DUkMpCQkrPSBwd20tY3JjLm8KIG9iai0kKENPTkZJR19QV01fRVA5M1hYKQkrPSBw d20tZXA5M3h4Lm8KIG9iai0kKENPTkZJR19QV01fRlNMX0ZUTSkJKz0gcHdtLWZzbC1mdG0ubwog b2JqLSQoQ09ORklHX1BXTV9JTUcpCQkrPSBwd20taW1nLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMv cHdtL3B3bS1jcmMuYyBiL2RyaXZlcnMvcHdtL3B3bS1jcmMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5kY2Q5NzgyCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9wd20v cHdtLWNyYy5jCkBAIC0wLDAgKzEsMTU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElu dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IHZlcnNpb24KKyAqIDIgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBBdXRob3I6IFNob2JoaXQgS3Vt YXIgPHNob2JoaXQua3VtYXJAaW50ZWwuY29tPgorICovCisKKyNpbmNsdWRlIDxsaW51eC9wbGF0 Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KKyNpbmNsdWRlIDxsaW51 eC9tZmQvaW50ZWxfc29jX3BtaWMuaD4KKyNpbmNsdWRlIDxsaW51eC9wd20uaD4KKworI2RlZmlu ZSBQV00wX0NMS19ESVYJCTB4NEIKKyNkZWZpbmUgIFBXTV9PVVRQVVRfRU5BQkxFCSgxIDw8IDcp CisjZGVmaW5lICBQV01fRElWX0NMS18wCQkweDAwIC8qIERJVklERUNMSyA9IEJBU0VDTEsgKi8K KyNkZWZpbmUgIFBXTV9ESVZfQ0xLXzEwMAkweDYzIC8qIERJVklERUNMSyA9IEJBU0VDTEsvMTAw ICovCisjZGVmaW5lICBQV01fRElWX0NMS18xMjgJMHg3RiAvKiBESVZJREVDTEsgPSBCQVNFQ0xL LzEyOCAqLworCisjZGVmaW5lIFBXTTBfRFVUWV9DWUNMRQkJMHg0RQorI2RlZmluZSBCQUNLTElH SFRfRU4JCTB4NTEKKworI2RlZmluZSBQV01fTUFYX0xFVkVMCQkweEZGCisKKyNkZWZpbmUgUFdN X0JBU0VfQ0xLCQk2MDAwMDAwICAvKiA2IE1IeiAqLworI2RlZmluZSBQV01fTUFYX1BFUklPRF9O UwkyMTMzMyAgICAvKiA0Ni44NzVLSHogKi8KKworLyoqCisgKiBzdHJ1Y3QgY3J5c3RhbGNvdmVf cHdtIC0gQ3J5c3RhbCBDb3ZlIFBXTSBjb250cm9sbGVyCisgKiBAY2hpcDogdGhlIGFic3RyYWN0 IHB3bV9jaGlwIHN0cnVjdHVyZS4KKyAqIEByZWdtYXA6IHRoZSByZWdtYXAgZnJvbSB0aGUgcGFy ZW50IGRldmljZS4KKyAqLworc3RydWN0IGNyeXN0YWxjb3ZlX3B3bSB7CisJc3RydWN0IHB3bV9j aGlwIGNoaXA7CisJc3RydWN0IHJlZ21hcCAqcmVnbWFwOworfTsKKworc3RhdGljIGlubGluZSBz dHJ1Y3QgY3J5c3RhbGNvdmVfcHdtICp0b19jcmNfcHdtKHN0cnVjdCBwd21fY2hpcCAqcGMpCit7 CisJcmV0dXJuIGNvbnRhaW5lcl9vZihwYywgc3RydWN0IGNyeXN0YWxjb3ZlX3B3bSwgY2hpcCk7 Cit9CisKK3N0YXRpYyBpbnQgY3JjX3B3bV9lbmFibGUoc3RydWN0IHB3bV9jaGlwICpjLCBzdHJ1 Y3QgcHdtX2RldmljZSAqcHdtKQoreworCXN0cnVjdCBjcnlzdGFsY292ZV9wd20gKmNyY19wd20g PSB0b19jcmNfcHdtKGMpOworCisJcmVnbWFwX3dyaXRlKGNyY19wd20tPnJlZ21hcCwgQkFDS0xJ R0hUX0VOLCAxKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBjcmNfcHdtX2Rpc2Fi bGUoc3RydWN0IHB3bV9jaGlwICpjLCBzdHJ1Y3QgcHdtX2RldmljZSAqcHdtKQoreworCXN0cnVj dCBjcnlzdGFsY292ZV9wd20gKmNyY19wd20gPSB0b19jcmNfcHdtKGMpOworCisJcmVnbWFwX3dy aXRlKGNyY19wd20tPnJlZ21hcCwgQkFDS0xJR0hUX0VOLCAwKTsKK30KKworc3RhdGljIGludCBj cmNfcHdtX2NvbmZpZyhzdHJ1Y3QgcHdtX2NoaXAgKmMsIHN0cnVjdCBwd21fZGV2aWNlICpwd20s CisJCQkgIGludCBkdXR5X25zLCBpbnQgcGVyaW9kX25zKQoreworCXN0cnVjdCBjcnlzdGFsY292 ZV9wd20gKmNyY19wd20gPSB0b19jcmNfcHdtKGMpOworCXN0cnVjdCBkZXZpY2UgKmRldiA9IGNy Y19wd20tPmNoaXAuZGV2OworCWludCBsZXZlbDsKKworCWlmIChwZXJpb2RfbnMgPiBQV01fTUFY X1BFUklPRF9OUykgeworCQlkZXZfZXJyKGRldiwgInVuLXN1cHBvcnRlZCBwZXJpb2RfbnNcbiIp OworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlpZiAocHdtLT5wZXJpb2QgIT0gcGVyaW9kX25z KSB7CisJCWludCBjbGtfZGl2OworCisJCS8qIGNoYW5naW5nIHRoZSBjbGsgZGl2aXNvciwgbmVl ZCB0byBkaXNhYmxlIGZpc3J0ICovCisJCWNyY19wd21fZGlzYWJsZShjLCBwd20pOworCQljbGtf ZGl2ID0gUFdNX0JBU0VfQ0xLICogcGVyaW9kX25zIC8gTlNFQ19QRVJfU0VDOworCisJCXJlZ21h cF93cml0ZShjcmNfcHdtLT5yZWdtYXAsIFBXTTBfQ0xLX0RJViwKKwkJCQkJY2xrX2RpdiB8IFBX TV9PVVRQVVRfRU5BQkxFKTsKKworCQkvKiBlbmFibGUgYmFjayAqLworCQljcmNfcHdtX2VuYWJs ZShjLCBwd20pOworCX0KKworCS8qIGNoYW5nZSB0aGUgcHdtIGR1dHkgY3ljbGUgKi8KKwlsZXZl bCA9IGR1dHlfbnMgKiBQV01fTUFYX0xFVkVMIC8gcGVyaW9kX25zOworCXJlZ21hcF93cml0ZShj cmNfcHdtLT5yZWdtYXAsIFBXTTBfRFVUWV9DWUNMRSwgbGV2ZWwpOworCisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcHdtX29wcyBjcmNfcHdtX29wcyA9IHsKKwkuY29uZmln ID0gY3JjX3B3bV9jb25maWcsCisJLmVuYWJsZSA9IGNyY19wd21fZW5hYmxlLAorCS5kaXNhYmxl ID0gY3JjX3B3bV9kaXNhYmxlLAorfTsKKworc3RhdGljIGludCBjcnlzdGFsY292ZV9wd21fcHJv YmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgY3J5c3RhbGNvdmVf cHdtICpwd207CisJaW50IHJldHZhbDsKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwZGV2LT5kZXYu cGFyZW50OworCXN0cnVjdCBpbnRlbF9zb2NfcG1pYyAqcG1pYyA9IGRldl9nZXRfZHJ2ZGF0YShk ZXYpOworCisJcHdtID0gZGV2bV9remFsbG9jKCZwZGV2LT5kZXYsIHNpemVvZigqcHdtKSwgR0ZQ X0tFUk5FTCk7CisJaWYgKCFwd20pCisJCXJldHVybiAtRU5PTUVNOworCisJcHdtLT5jaGlwLmRl diA9ICZwZGV2LT5kZXY7CisJcHdtLT5jaGlwLm9wcyA9ICZjcmNfcHdtX29wczsKKwlwd20tPmNo aXAuYmFzZSA9IC0xOworCXB3bS0+Y2hpcC5ucHdtID0gMTsKKworCS8qIGdldCB0aGUgUE1JQyBy ZWdtYXAgKi8KKwlwd20tPnJlZ21hcCA9IHBtaWMtPnJlZ21hcDsKKworCXJldHZhbCA9IHB3bWNo aXBfYWRkKCZwd20tPmNoaXApOworCWlmIChyZXR2YWwgPCAwKQorCQlyZXR1cm4gcmV0dmFsOwor CisJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgcHdtKTsKKworCXJldHVybiAwOworfQorCitz dGF0aWMgaW50IGNyeXN0YWxjb3ZlX3B3bV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikKK3sKKwlzdHJ1Y3QgY3J5c3RhbGNvdmVfcHdtICpwd20gPSBwbGF0Zm9ybV9nZXRfZHJ2 ZGF0YShwZGV2KTsKKwlpbnQgcmV0dmFsOworCisJcmV0dmFsID0gcHdtY2hpcF9yZW1vdmUoJnB3 bS0+Y2hpcCk7CisJaWYgKHJldHZhbCA8IDApCisJCXJldHVybiByZXR2YWw7CisKKwlkZXZfZGJn KCZwZGV2LT5kZXYsICJjcmMtcHdtIGRyaXZlciByZW1vdmVkXG4iKTsKKworCXJldHVybiAwOwor fQorCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBjcnlzdGFsY292ZV9wd21fZHJpdmVy ID0geworCS5wcm9iZSA9IGNyeXN0YWxjb3ZlX3B3bV9wcm9iZSwKKwkucmVtb3ZlID0gY3J5c3Rh bGNvdmVfcHdtX3JlbW92ZSwKKwkuZHJpdmVyID0geworCQkubmFtZSA9ICJjcnlzdGFsX2NvdmVf cHdtIiwKKwl9LAorfTsKKworYnVpbHRpbl9wbGF0Zm9ybV9kcml2ZXIoY3J5c3RhbGNvdmVfcHdt X2RyaXZlcik7Ci0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK