From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Ga=C3=ABl=20PORTAY?= Subject: [PATCHv3 2/4] ARM: at91/tclib: move initialization from alloc to probe Date: Fri, 5 Sep 2014 16:14:38 +0200 Message-ID: <1409926480-16367-3-git-send-email-gael.portay@gmail.com> References: <1409926480-16367-1-git-send-email-gael.portay@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1409926480-16367-1-git-send-email-gael.portay@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Arnd Bergmann , Daniel Lezcano , Greg Kroah-Hartman , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-pwm@vger.kernel.org, Nicolas Ferre , Thomas Gleixner , Thierry Reding , Boris Brezillon , Alexandre Belloni , Jean-Christophe PLAGNIOL-VILLARD Cc: =?utf-8?q?Ga=C3=ABl=20PORTAY?= List-Id: linux-pwm@vger.kernel.org TW92ZSByZXNvdXJjZSByZXRyaWV2YWwgZnJvbSBhdG1lbF90Y19hbGxvYyB0byB0Y19wcm9iZSB0 byBhdm9pZCBsYXRlbHkKcmVwb3J0aW5nIHJlc291cmNlIHJlbGF0ZWQgaXNzdWVzIHdoZW4gYSBU QyBibG9jayB1c2VyIHJlcXVlc3QgYSBUQyBibG9jay4KCk1vcmVvdmVyLCByZXNvdXJjZXMgcmV0 cmlldmFsIGFyZSB1c3VhbGx5IGRvbmUgaW4gdGhlIHByb2JlIGZ1bmN0aW9uLAp0aHVzIG1vdmlu ZyB0aGVtIGFkZCBzb21lIGNvbnNpc3RlbmN5IHdpdGggb3RoZXIgZHJpdmVycy4KCkluaXRpYWxp emF0aW9uIGlzIGRvbmUgb25jZSwgaWUgbm90IGV2ZXJ5IHRpbWUgYSB0YyBibG9jayBpcyByZXF1 ZXN0ZWQuCklmIGl0IGZhaWxzLCB0aGUgZGV2aWNlIGlzIG5vdCBhcHBlbmRlZCB0byB0aGUgbGlz dCBvZiB0YyBibG9ja3MuCgpGdXJoZXJtb3JlLCB0aGUgZGV2aWNlIGlkIGlzIHJldHJpZXZlZCBh dCBwcm9iZSBhcyB3ZWxsLCBhdm9pZGluZyBwYXJzaW5nCkRUIGV2ZXJ5IHRpbWUgdGhlIHVzZXIg cmVxdWVzdHMgb2YgdGMgYmxvY2suCgpTaWduZWQtb2ZmLWJ5OiBHYcOrbCBQT1JUQVkgPGdhZWwu cG9ydGF5QGdtYWlsLmNvbT4KQWNrZWQtYnk6IFRoaWVycnkgUmVkaW5nIDx0aGllcnJ5LnJlZGlu Z0BnbWFpbC5jb20+CkFja2VkLWJ5OiBCb3JpcyBCcmV6aWxsb24gPGJvcmlzLmJyZXppbGxvbkBm cmVlLWVsZWN0cm9ucy5jb20+Ci0tLQogZHJpdmVycy9jbG9ja3NvdXJjZS90Y2JfY2xrc3JjLmMg fCAgMiArLQogZHJpdmVycy9taXNjL2F0bWVsX3RjbGliLmMgICAgICAgfCA3MSArKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL3B3bS9wd20tYXRtZWwtdGNi LmMgICAgICB8ICAyICstCiBpbmNsdWRlL2xpbnV4L2F0bWVsX3RjLmggICAgICAgICB8ICA4ICsr Ky0tCiA0IGZpbGVzIGNoYW5nZWQsIDI5IGluc2VydGlvbnMoKyksIDU0IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2xvY2tzb3VyY2UvdGNiX2Nsa3NyYy5jIGIvZHJpdmVycy9j bG9ja3NvdXJjZS90Y2JfY2xrc3JjLmMKaW5kZXggYThkN2VhMS4uZjkyMmU4MSAxMDA2NDQKLS0t IGEvZHJpdmVycy9jbG9ja3NvdXJjZS90Y2JfY2xrc3JjLmMKKysrIGIvZHJpdmVycy9jbG9ja3Nv dXJjZS90Y2JfY2xrc3JjLmMKQEAgLTI3OSw3ICsyNzksNyBAQCBzdGF0aWMgaW50IF9faW5pdCB0 Y2JfY2xrc3JjX2luaXQodm9pZCkKIAlpbnQgaTsKIAlpbnQgcmV0OwogCi0JdGMgPSBhdG1lbF90 Y19hbGxvYyhDT05GSUdfQVRNRUxfVENCX0NMS1NSQ19CTE9DSywgY2xrc3JjLm5hbWUpOworCXRj ID0gYXRtZWxfdGNfYWxsb2MoQ09ORklHX0FUTUVMX1RDQl9DTEtTUkNfQkxPQ0spOwogCWlmICgh dGMpIHsKIAkJcHJfZGVidWcoImNhbid0IGFsbG9jIFRDIGZvciBjbG9ja3NvdXJjZVxuIik7CiAJ CXJldHVybiAtRU5PREVWOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9taXNjL2F0bWVsX3RjbGliLmMg Yi9kcml2ZXJzL21pc2MvYXRtZWxfdGNsaWIuYwppbmRleCBiNTE0YTJkLi5kNTA1ZDFlIDEwMDY0 NAotLS0gYS9kcml2ZXJzL21pc2MvYXRtZWxfdGNsaWIuYworKysgYi9kcml2ZXJzL21pc2MvYXRt ZWxfdGNsaWIuYwpAQCAtMzUsNjAgKzM1LDMxIEBAIHN0YXRpYyBMSVNUX0hFQUQodGNfbGlzdCk7 CiAvKioKICAqIGF0bWVsX3RjX2FsbG9jIC0gYWxsb2NhdGUgYSBzcGVjaWZpZWQgVEMgYmxvY2sK ICAqIEBibG9jazogd2hpY2ggYmxvY2sgdG8gYWxsb2NhdGUKLSAqIEBuYW1lOiBuYW1lIHRvIGJl IGFzc29jaWF0ZWQgd2l0aCB0aGUgaW9tZW0gcmVzb3VyY2UKICAqCiAgKiBDYWxsZXIgYWxsb2Nh dGVzIGEgYmxvY2suICBJZiBpdCBpcyBhdmFpbGFibGUsIGEgcG9pbnRlciB0byBhCiAgKiBwcmUt aW5pdGlhbGl6ZWQgc3RydWN0IGF0bWVsX3RjIGlzIHJldHVybmVkLiBUaGUgY2FsbGVyIGNhbiBh Y2Nlc3MKICAqIHRoZSByZWdpc3RlcnMgZGlyZWN0bHkgdGhyb3VnaCB0aGUgInJlZ3MiIGZpZWxk LgogICovCi1zdHJ1Y3QgYXRtZWxfdGMgKmF0bWVsX3RjX2FsbG9jKHVuc2lnbmVkIGJsb2NrLCBj b25zdCBjaGFyICpuYW1lKQorc3RydWN0IGF0bWVsX3RjICphdG1lbF90Y19hbGxvYyh1bnNpZ25l ZCBibG9jaykKIHsKIAlzdHJ1Y3QgYXRtZWxfdGMJCSp0YzsKIAlzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlCSpwZGV2ID0gTlVMTDsKLQlzdHJ1Y3QgcmVzb3VyY2UJCSpyOwotCXNpemVfdAkJCXNpemU7 CiAKIAlzcGluX2xvY2soJnRjX2xpc3RfbG9jayk7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeSh0Yywg JnRjX2xpc3QsIG5vZGUpIHsKLQkJaWYgKHRjLT5wZGV2LT5kZXYub2Zfbm9kZSkgewotCQkJaWYg KG9mX2FsaWFzX2dldF9pZCh0Yy0+cGRldi0+ZGV2Lm9mX25vZGUsICJ0Y2IiKQotCQkJCQk9PSBi bG9jaykgewotCQkJCXBkZXYgPSB0Yy0+cGRldjsKLQkJCQlicmVhazsKLQkJCX0KLQkJfSBlbHNl IGlmICh0Yy0+cGRldi0+aWQgPT0gYmxvY2spIHsKKwkJaWYgKHRjLT5hbGxvY2F0ZWQpCisJCQlj b250aW51ZTsKKworCQlpZiAoKHRjLT5wZGV2LT5kZXYub2Zfbm9kZSAmJiB0Yy0+aWQgPT0gYmxv Y2spIHx8CisJCSAgICAodGMtPnBkZXYtPmlkID09IGJsb2NrKSkgewogCQkJcGRldiA9IHRjLT5w ZGV2OworCQkJdGMtPmFsbG9jYXRlZCA9IHRydWU7CiAJCQlicmVhazsKIAkJfQogCX0KLQotCWlm ICghcGRldiB8fCB0Yy0+aW9tZW0pCi0JCWdvdG8gZmFpbDsKLQotCXIgPSBwbGF0Zm9ybV9nZXRf cmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOwotCWlmICghcikKLQkJZ290byBmYWls OwotCi0Jc2l6ZSA9IHJlc291cmNlX3NpemUocik7Ci0JciA9IHJlcXVlc3RfbWVtX3JlZ2lvbihy LT5zdGFydCwgc2l6ZSwgbmFtZSk7Ci0JaWYgKCFyKQotCQlnb3RvIGZhaWw7Ci0KLQl0Yy0+cmVn cyA9IGlvcmVtYXAoci0+c3RhcnQsIHNpemUpOwotCWlmICghdGMtPnJlZ3MpCi0JCWdvdG8gZmFp bF9pb3JlbWFwOwotCi0JdGMtPmlvbWVtID0gcjsKLQotb3V0OgogCXNwaW5fdW5sb2NrKCZ0Y19s aXN0X2xvY2spOwotCXJldHVybiB0YzsKIAotZmFpbF9pb3JlbWFwOgotCXJlbGVhc2VfbWVtX3Jl Z2lvbihyLT5zdGFydCwgc2l6ZSk7Ci1mYWlsOgotCXRjID0gTlVMTDsKLQlnb3RvIG91dDsKKwly ZXR1cm4gcGRldiA/IHRjIDogTlVMTDsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGF0bWVsX3RjX2Fs bG9jKTsKIApAQCAtOTYsMTkgKzY3LDE0IEBAIEVYUE9SVF9TWU1CT0xfR1BMKGF0bWVsX3RjX2Fs bG9jKTsKICAqIGF0bWVsX3RjX2ZyZWUgLSByZWxlYXNlIGEgc3BlY2lmaWVkIFRDIGJsb2NrCiAg KiBAdGM6IFRpbWVyL2NvdW50ZXIgYmxvY2sgdGhhdCB3YXMgcmV0dXJuZWQgYnkgYXRtZWxfdGNf YWxsb2MoKQogICoKLSAqIFRoaXMgcmV2ZXJzZXMgdGhlIGVmZmVjdCBvZiBhdG1lbF90Y19hbGxv YygpLCB1bm1hcHBpbmcgdGhlIEkvTwotICogcmVnaXN0ZXJzLCBpbnZhbGlkYXRpbmcgdGhlIHJl c291cmNlIHJldHVybmVkIGJ5IHRoYXQgcm91dGluZSBhbmQKLSAqIG1ha2luZyB0aGUgVEMgYXZh aWxhYmxlIHRvIG90aGVyIGRyaXZlcnMuCisgKiBUaGlzIHJldmVyc2VzIHRoZSBlZmZlY3Qgb2Yg YXRtZWxfdGNfYWxsb2MoKSwgaW52YWxpZGF0aW5nIHRoZSByZXNvdXJjZQorICogcmV0dXJuZWQg YnkgdGhhdCByb3V0aW5lIGFuZCBtYWtpbmcgdGhlIFRDIGF2YWlsYWJsZSB0byBvdGhlciBkcml2 ZXJzLgogICovCiB2b2lkIGF0bWVsX3RjX2ZyZWUoc3RydWN0IGF0bWVsX3RjICp0YykKIHsKIAlz cGluX2xvY2soJnRjX2xpc3RfbG9jayk7Ci0JaWYgKHRjLT5yZWdzKSB7Ci0JCWlvdW5tYXAodGMt PnJlZ3MpOwotCQlyZWxlYXNlX21lbV9yZWdpb24odGMtPmlvbWVtLT5zdGFydCwgcmVzb3VyY2Vf c2l6ZSh0Yy0+aW9tZW0pKTsKLQkJdGMtPnJlZ3MgPSBOVUxMOwotCQl0Yy0+aW9tZW0gPSBOVUxM OwotCX0KKwlpZiAodGMtPmFsbG9jYXRlZCkKKwkJdGMtPmFsbG9jYXRlZCA9IGZhbHNlOwogCXNw aW5fdW5sb2NrKCZ0Y19saXN0X2xvY2spOwogfQogRVhQT1JUX1NZTUJPTF9HUEwoYXRtZWxfdGNf ZnJlZSk7CkBAIC0xNDIsOSArMTA4LDcgQEAgc3RhdGljIGludCBfX2luaXQgdGNfcHJvYmUoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAlzdHJ1Y3QgYXRtZWxfdGMgKnRjOwogCXN0cnVj dCBjbGsJKmNsazsKIAlpbnQJCWlycTsKLQotCWlmICghcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBk ZXYsIElPUkVTT1VSQ0VfTUVNLCAwKSkKLQkJcmV0dXJuIC1FSU5WQUw7CisJc3RydWN0IHJlc291 cmNlCSpyOwogCiAJaXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTsKIAlpZiAoaXJxIDwg MCkKQEAgLTE2MCwxMiArMTI0LDIxIEBAIHN0YXRpYyBpbnQgX19pbml0IHRjX3Byb2JlKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJaWYgKElTX0VSUihjbGspKQogCQlyZXR1cm4gUFRS X0VSUihjbGspOwogCisJciA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNF X01FTSwgMCk7CisJdGMtPnJlZ3MgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoJnBkZXYtPmRldiwg cik7CisJaWYgKElTX0VSUih0Yy0+cmVncykpCisJCXJldHVybiBQVFJfRVJSKHRjLT5yZWdzKTsK KwogCS8qIE5vdyB0YWtlIFNvQyBpbmZvcm1hdGlvbiBpZiBhdmFpbGFibGUgKi8KIAlpZiAocGRl di0+ZGV2Lm9mX25vZGUpIHsKIAkJY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqbWF0Y2g7CiAJ CW1hdGNoID0gb2ZfbWF0Y2hfbm9kZShhdG1lbF90Y2JfZHRfaWRzLCBwZGV2LT5kZXYub2Zfbm9k ZSk7CiAJCWlmIChtYXRjaCkKIAkJCXRjLT50Y2JfY29uZmlnID0gbWF0Y2gtPmRhdGE7CisKKwkJ dGMtPmlkID0gb2ZfYWxpYXNfZ2V0X2lkKHRjLT5wZGV2LT5kZXYub2Zfbm9kZSwgInRjYiIpOwor CX0gZWxzZSB7CisJCXRjLT5pZCA9IHBkZXYtPmlkOwogCX0KIAogCXRjLT5jbGtbMF0gPSBjbGs7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL3B3bS9wd20tYXRtZWwtdGNiLmMgYi9kcml2ZXJzL3B3bS9w d20tYXRtZWwtdGNiLmMKaW5kZXggZjNkY2QwMi4uZDU2ZTViNyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9wd20vcHdtLWF0bWVsLXRjYi5jCisrKyBiL2RyaXZlcnMvcHdtL3B3bS1hdG1lbC10Y2IuYwpA QCAtMzc5LDcgKzM3OSw3IEBAIHN0YXRpYyBpbnQgYXRtZWxfdGNiX3B3bV9wcm9iZShzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQlyZXR1cm4gZXJyOwogCX0KIAotCXRjID0gYXRtZWxf dGNfYWxsb2ModGNibG9jaywgInRjYi1wd20iKTsKKwl0YyA9IGF0bWVsX3RjX2FsbG9jKHRjYmxv Y2spOwogCWlmICh0YyA9PSBOVUxMKSB7CiAJCWRldl9lcnIoJnBkZXYtPmRldiwgImZhaWxlZCB0 byBhbGxvY2F0ZSBUaW1lciBDb3VudGVyIEJsb2NrXG4iKTsKIAkJcmV0dXJuIC1FTk9NRU07CmRp ZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2F0bWVsX3RjLmggYi9pbmNsdWRlL2xpbnV4L2F0bWVs X3RjLmgKaW5kZXggODlhOTMxYi4uZDhhYTg4NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9h dG1lbF90Yy5oCisrKyBiL2luY2x1ZGUvbGludXgvYXRtZWxfdGMuaApAQCAtNDQsMTIgKzQ0LDEz IEBAIHN0cnVjdCBhdG1lbF90Y2JfY29uZmlnIHsKIC8qKgogICogc3RydWN0IGF0bWVsX3RjIC0g aW5mb3JtYXRpb24gYWJvdXQgYSBUaW1lci9Db3VudGVyIEJsb2NrCiAgKiBAcGRldjogcGh5c2lj YWwgZGV2aWNlCi0gKiBAaW9tZW06IHJlc291cmNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgSS9PIHJl Z2lzdGVyCiAgKiBAcmVnczogbWFwcGluZyB0aHJvdWdoIHdoaWNoIHRoZSBJL08gcmVnaXN0ZXJz IGNhbiBiZSBhY2Nlc3NlZAorICogQGlkOiBibG9jayBpZAogICogQHRjYl9jb25maWc6IGNvbmZp Z3VyYXRpb24gZGF0YSBmcm9tIFNvQwogICogQGlycTogaXJxIGZvciBlYWNoIG9mIHRoZSB0aHJl ZSBjaGFubmVscwogICogQGNsazogaW50ZXJuYWwgY2xvY2sgc291cmNlIGZvciBlYWNoIG9mIHRo ZSB0aHJlZSBjaGFubmVscwogICogQG5vZGU6IGxpc3Qgbm9kZSwgZm9yIHRjbGliIGludGVybmFs IHVzZQorICogQGFsbG9jYXRlZDogaWYgYWxyZWFkeSB1c2VkLCBmb3IgdGNsaWIgaW50ZXJuYWwg dXNlCiAgKgogICogT24gc29tZSBwbGF0Zm9ybXMsIGVhY2ggVEMgY2hhbm5lbCBoYXMgaXRzIG93 biBjbG9ja3MgYW5kIElSUXMsCiAgKiB3aGlsZSBvbiBvdGhlcnMsIGFsbCBUQyBjaGFubmVscyBz aGFyZSB0aGUgc2FtZSBjbG9jayBhbmQgSVJRLgpAQCAtNjEsMTUgKzYyLDE2IEBAIHN0cnVjdCBh dG1lbF90Y2JfY29uZmlnIHsKICAqLwogc3RydWN0IGF0bWVsX3RjIHsKIAlzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlCSpwZGV2OwotCXN0cnVjdCByZXNvdXJjZQkJKmlvbWVtOwogCXZvaWQgX19pb21l bQkJKnJlZ3M7CisJaW50ICAgICAgICAgICAgICAgICAgICAgaWQ7CiAJY29uc3Qgc3RydWN0IGF0 bWVsX3RjYl9jb25maWcgKnRjYl9jb25maWc7CiAJaW50CQkJaXJxWzNdOwogCXN0cnVjdCBjbGsJ CSpjbGtbM107CiAJc3RydWN0IGxpc3RfaGVhZAlub2RlOworCWJvb2wJCQlhbGxvY2F0ZWQ7CiB9 OwogCi1leHRlcm4gc3RydWN0IGF0bWVsX3RjICphdG1lbF90Y19hbGxvYyh1bnNpZ25lZCBibG9j aywgY29uc3QgY2hhciAqbmFtZSk7CitleHRlcm4gc3RydWN0IGF0bWVsX3RjICphdG1lbF90Y19h bGxvYyh1bnNpZ25lZCBibG9jayk7CiBleHRlcm4gdm9pZCBhdG1lbF90Y19mcmVlKHN0cnVjdCBh dG1lbF90YyAqdGMpOwogCiAvKiBwbGF0Zm9ybS1zcGVjaWZpYyBBVE1FTF9UQ19USU1FUl9DTE9D S3ggZGl2aXNvcnMgKDAgbWVhbnMgMzJLaUh6KSAqLwotLSAKMS45LjMKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxp bmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3Rz LmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==