From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Shevchenko, Andriy" Subject: Re: [PATCH] dt: add helper function to read u8 & u16 variables & arrays Date: Mon, 15 Oct 2012 07:56:16 +0000 Message-ID: <1350287772.10584.178.camel@smile> References: <425b4bec021bce9a2de49959121907aeede6a0b9.1350064805.git.viresh.kumar@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <425b4bec021bce9a2de49959121907aeede6a0b9.1350064805.git.viresh.kumar@linaro.org> Content-Language: en-US Content-ID: Sender: linux-kernel-owner@vger.kernel.org To: Viresh Kumar Cc: "rob.herring@calxeda.com" , "grant.likely@secretlab.ca" , "spear-devel@list.st.com" , "devicetree-discuss@lists.ozlabs.org" , "linux-kernel@vger.kernel.org" List-Id: devicetree@vger.kernel.org T24gRnJpLCAyMDEyLTEwLTEyIGF0IDIzOjMxICswNTMwLCBWaXJlc2ggS3VtYXIgd3JvdGU6IA0K PiBUaGlzIGFkZHMgZm9sbG93aW5nIGhlbHBlciByb3V0aW5lczoNCj4gLSBvZl9wcm9wZXJ0eV9y ZWFkX3U4X2FycmF5KCkNCj4gLSBvZl9wcm9wZXJ0eV9yZWFkX3UxNl9hcnJheSgpDQo+IC0gb2Zf cHJvcGVydHlfcmVhZF91OCgpDQo+IC0gb2ZfcHJvcGVydHlfcmVhZF91MTYoKQ0KPiANCj4gRmly c3QgdHdvIGFjdHVhbGx5IHNoYXJlIG1vc3Qgb2YgdGhlIGNvZGUgd2l0aCBvZl9wcm9wZXJ0eV9y ZWFkX3UzMl9hcnJheSgpLCBzbw0KPiB0aGUgY29tbW9uIHBhcnQgaXMgdGFrZW4gb3V0IGludG8g YSBtYWNybywgd2hpY2ggY2FuIGJlIHVzZWQgYnkgYWxsIHRocmVlDQo+ICpfYXJyYXkoKSByb3V0 aW5lcy4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IFZpcmVzaCBLdW1hciA8dmlyZXNoLmt1bWFyQGxp bmFyby5vcmc+DQo+IC0tLQ0KPiAgZHJpdmVycy9vZi9iYXNlLmMgIHwgNzMgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tDQo+ICBpbmNsdWRlL2xp bnV4L29mLmggfCAzMCArKysrKysrKysrKysrKysrKysrKysrDQo+ICAyIGZpbGVzIGNoYW5nZWQs IDg5IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvb2YvYmFzZS5jIGIvZHJpdmVycy9vZi9iYXNlLmMNCj4gaW5kZXggMzg4OTJhOS4uNDQ2 ZmU3ZiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9vZi9iYXNlLmMNCj4gKysrIGIvZHJpdmVycy9v Zi9iYXNlLmMNCj4gQEAgLTY3MCw2ICs2NzAsNjQgQEAgc3RydWN0IGRldmljZV9ub2RlICpvZl9m aW5kX25vZGVfYnlfcGhhbmRsZShwaGFuZGxlIGhhbmRsZSkNCj4gIH0NCj4gIEVYUE9SVF9TWU1C T0wob2ZfZmluZF9ub2RlX2J5X3BoYW5kbGUpOw0KPiAgDQo+ICsjZGVmaW5lIG9mX3Byb3BlcnR5 X3JlYWRfYXJyYXkoX25wLCBfcG5hbWUsIF9vdXQsIF9zeiwgX3R5cGUpCQlcDQo+ICsJc3RydWN0 IHByb3BlcnR5ICpfcHJvcCA9IG9mX2ZpbmRfcHJvcGVydHkoX25wLCBfcG5hbWUsIE5VTEwpOwlc DQo+ICsJY29uc3QgX19iZTMyICpfdmFsOwkJCQkJCVwNCj4gKwkJCQkJCQkJCVwNCj4gKwlpZiAo IV9wcm9wKQkJCQkJCQlcDQo+ICsJCXJldHVybiAtRUlOVkFMOwkJCQkJCVwNCj4gKwlpZiAoIV9w cm9wLT52YWx1ZSkJCQkJCQlcDQo+ICsJCXJldHVybiAtRU5PREFUQTsJCQkJCVwNCj4gKwlpZiAo KF9zeiAqIHNpemVvZigqX291dCkpID4gX3Byb3AtPmxlbmd0aCkJCQlcDQo+ICsJCXJldHVybiAt RU9WRVJGTE9XOwkJCQkJXA0KPiArCQkJCQkJCQkJXA0KPiArCV92YWwgPSBfcHJvcC0+dmFsdWU7 CQkJCQkJXA0KPiArCXdoaWxlIChfc3otLSkJCQkJCQkJXA0KPiArCQkqX291dCsrID0gKF90eXBl KWJlMzJfdG9fY3B1cChfdmFsKyspOwkJCVwNCkhvdyBhYm91dCANCipfb3V0KysgPSAodHlwZW9m KCpfb3V0KSkuLi4NCj8NCg0KPiArCXJldHVybiAwOw0KPiArDQo+ICsvKioNCj4gKyAqIG9mX3By b3BlcnR5X3JlYWRfdThfYXJyYXkgLSBGaW5kIGFuZCByZWFkIGFuIGFycmF5IG9mIHU4IGZyb20g YSBwcm9wZXJ0eS4NCj4gKyAqDQo+ICsgKiBAbnA6CQlkZXZpY2Ugbm9kZSBmcm9tIHdoaWNoIHRo ZSBwcm9wZXJ0eSB2YWx1ZSBpcyB0byBiZSByZWFkLg0KPiArICogQHByb3BuYW1lOgluYW1lIG9m IHRoZSBwcm9wZXJ0eSB0byBiZSBzZWFyY2hlZC4NCj4gKyAqIEBvdXRfdmFsdWU6CXBvaW50ZXIg dG8gcmV0dXJuIHZhbHVlLCBtb2RpZmllZCBvbmx5IGlmIHJldHVybiB2YWx1ZSBpcyAwLg0KPiAr ICoNCj4gKyAqIFNlYXJjaCBmb3IgYSBwcm9wZXJ0eSBpbiBhIGRldmljZSBub2RlIGFuZCByZWFk IDgtYml0IHZhbHVlKHMpIGZyb20NCj4gKyAqIGl0LiBSZXR1cm5zIDAgb24gc3VjY2VzcywgLUVJ TlZBTCBpZiB0aGUgcHJvcGVydHkgZG9lcyBub3QgZXhpc3QsDQo+ICsgKiAtRU5PREFUQSBpZiBw cm9wZXJ0eSBkb2VzIG5vdCBoYXZlIGEgdmFsdWUsIGFuZCAtRU9WRVJGTE9XIGlmIHRoZQ0KPiAr ICogcHJvcGVydHkgZGF0YSBpc24ndCBsYXJnZSBlbm91Z2guDQo+ICsgKg0KPiArICogVGhlIG91 dF92YWx1ZSBpcyBtb2RpZmllZCBvbmx5IGlmIGEgdmFsaWQgdTggdmFsdWUgY2FuIGJlIGRlY29k ZWQuDQo+ICsgKi8NCj4gK2ludCBvZl9wcm9wZXJ0eV9yZWFkX3U4X2FycmF5KGNvbnN0IHN0cnVj dCBkZXZpY2Vfbm9kZSAqbnAsDQo+ICsJCQljb25zdCBjaGFyICpwcm9wbmFtZSwgdTggKm91dF92 YWx1ZXMsIHNpemVfdCBzeikNCj4gK3sNCj4gKwlvZl9wcm9wZXJ0eV9yZWFkX2FycmF5KG5wLCBw cm9wbmFtZSwgb3V0X3ZhbHVlcywgc3osIHU4KTsNCj4gK30NCj4gK0VYUE9SVF9TWU1CT0xfR1BM KG9mX3Byb3BlcnR5X3JlYWRfdThfYXJyYXkpOw0KPiArDQo+ICsvKioNCj4gKyAqIG9mX3Byb3Bl cnR5X3JlYWRfdTE2X2FycmF5IC0gRmluZCBhbmQgcmVhZCBhbiBhcnJheSBvZiB1MTYgZnJvbSBh IHByb3BlcnR5Lg0KPiArICoNCj4gKyAqIEBucDoJCWRldmljZSBub2RlIGZyb20gd2hpY2ggdGhl IHByb3BlcnR5IHZhbHVlIGlzIHRvIGJlIHJlYWQuDQo+ICsgKiBAcHJvcG5hbWU6CW5hbWUgb2Yg dGhlIHByb3BlcnR5IHRvIGJlIHNlYXJjaGVkLg0KPiArICogQG91dF92YWx1ZToJcG9pbnRlciB0 byByZXR1cm4gdmFsdWUsIG1vZGlmaWVkIG9ubHkgaWYgcmV0dXJuIHZhbHVlIGlzIDAuDQo+ICsg Kg0KPiArICogU2VhcmNoIGZvciBhIHByb3BlcnR5IGluIGEgZGV2aWNlIG5vZGUgYW5kIHJlYWQg MTYtYml0IHZhbHVlKHMpIGZyb20NCj4gKyAqIGl0LiBSZXR1cm5zIDAgb24gc3VjY2VzcywgLUVJ TlZBTCBpZiB0aGUgcHJvcGVydHkgZG9lcyBub3QgZXhpc3QsDQo+ICsgKiAtRU5PREFUQSBpZiBw cm9wZXJ0eSBkb2VzIG5vdCBoYXZlIGEgdmFsdWUsIGFuZCAtRU9WRVJGTE9XIGlmIHRoZQ0KPiAr ICogcHJvcGVydHkgZGF0YSBpc24ndCBsYXJnZSBlbm91Z2guDQo+ICsgKg0KPiArICogVGhlIG91 dF92YWx1ZSBpcyBtb2RpZmllZCBvbmx5IGlmIGEgdmFsaWQgdTE2IHZhbHVlIGNhbiBiZSBkZWNv ZGVkLg0KPiArICovDQo+ICtpbnQgb2ZfcHJvcGVydHlfcmVhZF91MTZfYXJyYXkoY29uc3Qgc3Ry dWN0IGRldmljZV9ub2RlICpucCwNCj4gKwkJCWNvbnN0IGNoYXIgKnByb3BuYW1lLCB1MTYgKm91 dF92YWx1ZXMsIHNpemVfdCBzeikNCj4gK3sNCj4gKwlvZl9wcm9wZXJ0eV9yZWFkX2FycmF5KG5w LCBwcm9wbmFtZSwgb3V0X3ZhbHVlcywgc3osIHUxNik7DQo+ICt9DQo+ICtFWFBPUlRfU1lNQk9M X0dQTChvZl9wcm9wZXJ0eV9yZWFkX3UxNl9hcnJheSk7DQo+ICsNCj4gIC8qKg0KPiAgICogb2Zf cHJvcGVydHlfcmVhZF91MzJfYXJyYXkgLSBGaW5kIGFuZCByZWFkIGFuIGFycmF5IG9mIDMyIGJp dCBpbnRlZ2Vycw0KPiAgICogZnJvbSBhIHByb3BlcnR5Lg0KPiBAQCAtNjg5LDIwICs3NDcsNyBA QCBpbnQgb2ZfcHJvcGVydHlfcmVhZF91MzJfYXJyYXkoY29uc3Qgc3RydWN0IGRldmljZV9ub2Rl ICpucCwNCj4gIAkJCSAgICAgICBjb25zdCBjaGFyICpwcm9wbmFtZSwgdTMyICpvdXRfdmFsdWVz LA0KPiAgCQkJICAgICAgIHNpemVfdCBzeikNCj4gIHsNCj4gLQlzdHJ1Y3QgcHJvcGVydHkgKnBy b3AgPSBvZl9maW5kX3Byb3BlcnR5KG5wLCBwcm9wbmFtZSwgTlVMTCk7DQo+IC0JY29uc3QgX19i ZTMyICp2YWw7DQo+IC0NCj4gLQlpZiAoIXByb3ApDQo+IC0JCXJldHVybiAtRUlOVkFMOw0KPiAt CWlmICghcHJvcC0+dmFsdWUpDQo+IC0JCXJldHVybiAtRU5PREFUQTsNCj4gLQlpZiAoKHN6ICog c2l6ZW9mKCpvdXRfdmFsdWVzKSkgPiBwcm9wLT5sZW5ndGgpDQo+IC0JCXJldHVybiAtRU9WRVJG TE9XOw0KPiAtDQo+IC0JdmFsID0gcHJvcC0+dmFsdWU7DQo+IC0Jd2hpbGUgKHN6LS0pDQo+IC0J CSpvdXRfdmFsdWVzKysgPSBiZTMyX3RvX2NwdXAodmFsKyspOw0KPiAtCXJldHVybiAwOw0KPiAr CW9mX3Byb3BlcnR5X3JlYWRfYXJyYXkobnAsIHByb3BuYW1lLCBvdXRfdmFsdWVzLCBzeiwgdTMy KTsNCj4gIH0NCj4gIEVYUE9SVF9TWU1CT0xfR1BMKG9mX3Byb3BlcnR5X3JlYWRfdTMyX2FycmF5 KTsNCj4gIA0KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9vZi5oIGIvaW5jbHVkZS9saW51 eC9vZi5oDQo+IGluZGV4IDcyODQzYjcuLmUyZDliNDAgMTAwNjQ0DQo+IC0tLSBhL2luY2x1ZGUv bGludXgvb2YuaA0KPiArKysgYi9pbmNsdWRlL2xpbnV4L29mLmgNCj4gQEAgLTIyMyw2ICsyMjMs MTAgQEAgZXh0ZXJuIHN0cnVjdCBkZXZpY2Vfbm9kZSAqb2ZfZmluZF9ub2RlX3dpdGhfcHJvcGVy dHkoDQo+ICBleHRlcm4gc3RydWN0IHByb3BlcnR5ICpvZl9maW5kX3Byb3BlcnR5KGNvbnN0IHN0 cnVjdCBkZXZpY2Vfbm9kZSAqbnAsDQo+ICAJCQkJCSBjb25zdCBjaGFyICpuYW1lLA0KPiAgCQkJ CQkgaW50ICpsZW5wKTsNCj4gK2V4dGVybiBpbnQgb2ZfcHJvcGVydHlfcmVhZF91OF9hcnJheShj b25zdCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLA0KPiArCQkJY29uc3QgY2hhciAqcHJvcG5hbWUs IHU4ICpvdXRfdmFsdWVzLCBzaXplX3Qgc3opOw0KPiArZXh0ZXJuIGludCBvZl9wcm9wZXJ0eV9y ZWFkX3UxNl9hcnJheShjb25zdCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLA0KPiArCQkJY29uc3Qg Y2hhciAqcHJvcG5hbWUsIHUxNiAqb3V0X3ZhbHVlcywgc2l6ZV90IHN6KTsNCj4gIGV4dGVybiBp bnQgb2ZfcHJvcGVydHlfcmVhZF91MzJfYXJyYXkoY29uc3Qgc3RydWN0IGRldmljZV9ub2RlICpu cCwNCj4gIAkJCQkgICAgICBjb25zdCBjaGFyICpwcm9wbmFtZSwNCj4gIAkJCQkgICAgICB1MzIg Km91dF92YWx1ZXMsDQo+IEBAIC0zNTcsNiArMzYxLDE4IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0 IGRldmljZV9ub2RlICpvZl9maW5kX2NvbXBhdGlibGVfbm9kZSgNCj4gIAlyZXR1cm4gTlVMTDsN Cj4gIH0NCj4gIA0KPiArc3RhdGljIGlubGluZSBpbnQgb2ZfcHJvcGVydHlfcmVhZF91OF9hcnJh eShjb25zdCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLA0KPiArCQkJY29uc3QgY2hhciAqcHJvcG5h bWUsIHU4ICpvdXRfdmFsdWVzLCBzaXplX3Qgc3opDQo+ICt7DQo+ICsJcmV0dXJuIC1FTk9TWVM7 DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgaW50IG9mX3Byb3BlcnR5X3JlYWRfdTE2X2Fy cmF5KGNvbnN0IHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsDQo+ICsJCQljb25zdCBjaGFyICpwcm9w bmFtZSwgdTE2ICpvdXRfdmFsdWVzLCBzaXplX3Qgc3opDQo+ICt7DQo+ICsJcmV0dXJuIC1FTk9T WVM7DQo+ICt9DQo+ICsNCj4gIHN0YXRpYyBpbmxpbmUgaW50IG9mX3Byb3BlcnR5X3JlYWRfdTMy X2FycmF5KGNvbnN0IHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsDQo+ICAJCQkJCSAgICAgY29uc3Qg Y2hhciAqcHJvcG5hbWUsDQo+ICAJCQkJCSAgICAgdTMyICpvdXRfdmFsdWVzLCBzaXplX3Qgc3op DQo+IEBAIC00NjMsNiArNDc5LDIwIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBvZl9wcm9wZXJ0eV9y ZWFkX2Jvb2woY29uc3Qgc3RydWN0IGRldmljZV9ub2RlICpucCwNCj4gIAlyZXR1cm4gcHJvcCA/ IHRydWUgOiBmYWxzZTsNCj4gIH0NCj4gIA0KPiArc3RhdGljIGlubGluZSBpbnQgb2ZfcHJvcGVy dHlfcmVhZF91OChjb25zdCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLA0KPiArCQkJCSAgICAgICBj b25zdCBjaGFyICpwcm9wbmFtZSwNCj4gKwkJCQkgICAgICAgdTggKm91dF92YWx1ZSkNCj4gK3sN Cj4gKwlyZXR1cm4gb2ZfcHJvcGVydHlfcmVhZF91OF9hcnJheShucCwgcHJvcG5hbWUsIG91dF92 YWx1ZSwgMSk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgaW50IG9mX3Byb3BlcnR5X3Jl YWRfdTE2KGNvbnN0IHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsDQo+ICsJCQkJICAgICAgIGNvbnN0 IGNoYXIgKnByb3BuYW1lLA0KPiArCQkJCSAgICAgICB1MTYgKm91dF92YWx1ZSkNCj4gK3sNCj4g KwlyZXR1cm4gb2ZfcHJvcGVydHlfcmVhZF91MTZfYXJyYXkobnAsIHByb3BuYW1lLCBvdXRfdmFs dWUsIDEpOw0KPiArfQ0KPiArDQo+ICBzdGF0aWMgaW5saW5lIGludCBvZl9wcm9wZXJ0eV9yZWFk X3UzMihjb25zdCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLA0KPiAgCQkJCSAgICAgICBjb25zdCBj aGFyICpwcm9wbmFtZSwNCj4gIAkJCQkgICAgICAgdTMyICpvdXRfdmFsdWUpDQoNCi0tIA0KQW5k eSBTaGV2Y2hlbmtvIDxhbmRyaXkuc2hldmNoZW5rb0BpbnRlbC5jb20+DQpJbnRlbCBGaW5sYW5k IE95DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KSW50ZWwgRmlubGFuZCBPeQpSZWdpc3RlcmVkIEFkZHJlc3M6IFBM IDI4MSwgMDAxODEgSGVsc2lua2kgCkJ1c2luZXNzIElkZW50aXR5IENvZGU6IDAzNTc2MDYgLSA0 IApEb21pY2lsZWQgaW4gSGVsc2lua2kgCgpUaGlzIGUtbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRz IG1heSBjb250YWluIGNvbmZpZGVudGlhbCBtYXRlcmlhbCBmb3IKdGhlIHNvbGUgdXNlIG9mIHRo ZSBpbnRlbmRlZCByZWNpcGllbnQocykuIEFueSByZXZpZXcgb3IgZGlzdHJpYnV0aW9uCmJ5IG90 aGVycyBpcyBzdHJpY3RseSBwcm9oaWJpdGVkLiBJZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQK cmVjaXBpZW50LCBwbGVhc2UgY29udGFjdCB0aGUgc2VuZGVyIGFuZCBkZWxldGUgYWxsIGNvcGll cy4K From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752689Ab2JOH4V (ORCPT ); Mon, 15 Oct 2012 03:56:21 -0400 Received: from mga01.intel.com ([192.55.52.88]:21648 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752248Ab2JOH4T (ORCPT ); Mon, 15 Oct 2012 03:56:19 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.80,587,1344236400"; d="scan'208";a="235033110" From: "Shevchenko, Andriy" To: Viresh Kumar CC: "rob.herring@calxeda.com" , "grant.likely@secretlab.ca" , "spear-devel@list.st.com" , "devicetree-discuss@lists.ozlabs.org" , "linux-kernel@vger.kernel.org" Subject: Re: [PATCH] dt: add helper function to read u8 & u16 variables & arrays Thread-Topic: [PATCH] dt: add helper function to read u8 & u16 variables & arrays Thread-Index: AQHNqKOqLdjCc5+BsEK9xzC+oOhiCpe58wsA Date: Mon, 15 Oct 2012 07:56:16 +0000 Message-ID: <1350287772.10584.178.camel@smile> References: <425b4bec021bce9a2de49959121907aeede6a0b9.1350064805.git.viresh.kumar@linaro.org> In-Reply-To: <425b4bec021bce9a2de49959121907aeede6a0b9.1350064805.git.viresh.kumar@linaro.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.237.72.62] Content-Type: text/plain; charset="utf-8" Content-ID: MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by mail.home.local id q9F7uQXI023840 On Fri, 2012-10-12 at 23:31 +0530, Viresh Kumar wrote: > This adds following helper routines: > - of_property_read_u8_array() > - of_property_read_u16_array() > - of_property_read_u8() > - of_property_read_u16() > > First two actually share most of the code with of_property_read_u32_array(), so > the common part is taken out into a macro, which can be used by all three > *_array() routines. > > Signed-off-by: Viresh Kumar > --- > drivers/of/base.c | 73 +++++++++++++++++++++++++++++++++++++++++++----------- > include/linux/of.h | 30 ++++++++++++++++++++++ > 2 files changed, 89 insertions(+), 14 deletions(-) > > diff --git a/drivers/of/base.c b/drivers/of/base.c > index 38892a9..446fe7f 100644 > --- a/drivers/of/base.c > +++ b/drivers/of/base.c > @@ -670,6 +670,64 @@ struct device_node *of_find_node_by_phandle(phandle handle) > } > EXPORT_SYMBOL(of_find_node_by_phandle); > > +#define of_property_read_array(_np, _pname, _out, _sz, _type) \ > + struct property *_prop = of_find_property(_np, _pname, NULL); \ > + const __be32 *_val; \ > + \ > + if (!_prop) \ > + return -EINVAL; \ > + if (!_prop->value) \ > + return -ENODATA; \ > + if ((_sz * sizeof(*_out)) > _prop->length) \ > + return -EOVERFLOW; \ > + \ > + _val = _prop->value; \ > + while (_sz--) \ > + *_out++ = (_type)be32_to_cpup(_val++); \ How about *_out++ = (typeof(*_out))... ? > + return 0; > + > +/** > + * of_property_read_u8_array - Find and read an array of u8 from a property. > + * > + * @np: device node from which the property value is to be read. > + * @propname: name of the property to be searched. > + * @out_value: pointer to return value, modified only if return value is 0. > + * > + * Search for a property in a device node and read 8-bit value(s) from > + * it. Returns 0 on success, -EINVAL if the property does not exist, > + * -ENODATA if property does not have a value, and -EOVERFLOW if the > + * property data isn't large enough. > + * > + * The out_value is modified only if a valid u8 value can be decoded. > + */ > +int of_property_read_u8_array(const struct device_node *np, > + const char *propname, u8 *out_values, size_t sz) > +{ > + of_property_read_array(np, propname, out_values, sz, u8); > +} > +EXPORT_SYMBOL_GPL(of_property_read_u8_array); > + > +/** > + * of_property_read_u16_array - Find and read an array of u16 from a property. > + * > + * @np: device node from which the property value is to be read. > + * @propname: name of the property to be searched. > + * @out_value: pointer to return value, modified only if return value is 0. > + * > + * Search for a property in a device node and read 16-bit value(s) from > + * it. Returns 0 on success, -EINVAL if the property does not exist, > + * -ENODATA if property does not have a value, and -EOVERFLOW if the > + * property data isn't large enough. > + * > + * The out_value is modified only if a valid u16 value can be decoded. > + */ > +int of_property_read_u16_array(const struct device_node *np, > + const char *propname, u16 *out_values, size_t sz) > +{ > + of_property_read_array(np, propname, out_values, sz, u16); > +} > +EXPORT_SYMBOL_GPL(of_property_read_u16_array); > + > /** > * of_property_read_u32_array - Find and read an array of 32 bit integers > * from a property. > @@ -689,20 +747,7 @@ int of_property_read_u32_array(const struct device_node *np, > const char *propname, u32 *out_values, > size_t sz) > { > - struct property *prop = of_find_property(np, propname, NULL); > - const __be32 *val; > - > - if (!prop) > - return -EINVAL; > - if (!prop->value) > - return -ENODATA; > - if ((sz * sizeof(*out_values)) > prop->length) > - return -EOVERFLOW; > - > - val = prop->value; > - while (sz--) > - *out_values++ = be32_to_cpup(val++); > - return 0; > + of_property_read_array(np, propname, out_values, sz, u32); > } > EXPORT_SYMBOL_GPL(of_property_read_u32_array); > > diff --git a/include/linux/of.h b/include/linux/of.h > index 72843b7..e2d9b40 100644 > --- a/include/linux/of.h > +++ b/include/linux/of.h > @@ -223,6 +223,10 @@ extern struct device_node *of_find_node_with_property( > extern struct property *of_find_property(const struct device_node *np, > const char *name, > int *lenp); > +extern int of_property_read_u8_array(const struct device_node *np, > + const char *propname, u8 *out_values, size_t sz); > +extern int of_property_read_u16_array(const struct device_node *np, > + const char *propname, u16 *out_values, size_t sz); > extern int of_property_read_u32_array(const struct device_node *np, > const char *propname, > u32 *out_values, > @@ -357,6 +361,18 @@ static inline struct device_node *of_find_compatible_node( > return NULL; > } > > +static inline int of_property_read_u8_array(const struct device_node *np, > + const char *propname, u8 *out_values, size_t sz) > +{ > + return -ENOSYS; > +} > + > +static inline int of_property_read_u16_array(const struct device_node *np, > + const char *propname, u16 *out_values, size_t sz) > +{ > + return -ENOSYS; > +} > + > static inline int of_property_read_u32_array(const struct device_node *np, > const char *propname, > u32 *out_values, size_t sz) > @@ -463,6 +479,20 @@ static inline bool of_property_read_bool(const struct device_node *np, > return prop ? true : false; > } > > +static inline int of_property_read_u8(const struct device_node *np, > + const char *propname, > + u8 *out_value) > +{ > + return of_property_read_u8_array(np, propname, out_value, 1); > +} > + > +static inline int of_property_read_u16(const struct device_node *np, > + const char *propname, > + u16 *out_value) > +{ > + return of_property_read_u16_array(np, propname, out_value, 1); > +} > + > static inline int of_property_read_u32(const struct device_node *np, > const char *propname, > u32 *out_value) -- Andy Shevchenko Intel Finland Oy --------------------------------------------------------------------- Intel Finland Oy Registered Address: PL 281, 00181 Helsinki Business Identity Code: 0357606 - 4 Domiciled in Helsinki This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies. {.n++%ݶw{.n+{G{ayʇڙ,jfhz_(階ݢj"mG?&~iOzv^m ?I