* [lm-sensors] [PATCH 1/2] hwmon: convert drivers/hwmon/* to use module_i2c_driver()
@ 2012-01-20 7:38 ` Axel Lin
0 siblings, 0 replies; 4+ messages in thread
From: Axel Lin @ 2012-01-20 7:38 UTC (permalink / raw)
To: linux-kernel
Cc: Jean Delvare, Guenter Roeck, Corentin Labbe, Dirk Eibach,
Mark M. Hoffman, Steve Glendinning, Riku Voipio,
Guillaume Ligneul, David George, Hans J. Koch, Marc Hulsman,
Rudolf Marek, lm-sensors
VGhpcyBwYXRjaCBjb252ZXJ0cyB0aGUgZHJpdmVycyBpbiBkcml2ZXJzL2h3bW9uLyogdG8gdXNl
IHRoZQptb2R1bGVfaTJjX2RyaXZlcigpIG1hY3JvIHdoaWNoIG1ha2VzIHRoZSBjb2RlIHNtYWxs
ZXIgYW5kIGEgYml0IHNpbXBsZXIuCgpTaWduZWQtb2ZmLWJ5OiBBeGVsIExpbiA8YXhlbC5saW5A
Z21haWwuY29tPgpDYzogQ29yZW50aW4gTGFiYmUgPGNvcmVudGluLmxhYmJlQGdlb21hdHlzLmZy
PgpDYzogRGlyayBFaWJhY2ggPGVpYmFjaEBnZHN5cy5kZT4KQ2M6ICJNYXJrIE0uIEhvZmZtYW4i
IDxtaG9mZm1hbkBsaWdodGxpbmsuY29tPgpDYzogU3RldmUgR2xlbmRpbm5pbmcgPHN0ZXZlLmds
ZW5kaW5uaW5nQHNtc2MuY29tPgpDYzogUmlrdSBWb2lwaW8gPHJpa3Uudm9pcGlvQGlraS5maT4K
Q2M6IEd1aWxsYXVtZSBMaWduZXVsIDxndWlsbGF1bWUubGlnbmV1bEBnbWFpbC5jb20+CkNjOiBE
YXZpZCBHZW9yZ2UgPGRhdmlkLmdlb3JnZUBza2EuYWMuemE+CkNjOiAiSGFucyBKLiBLb2NoIiA8
aGprQGhhbnNqa29jaC5kZT4KQ2M6IE1hcmMgSHVsc21hbiA8bS5odWxzbWFuQHR1ZGVsZnQubmw+
CkNjOiBSdWRvbGYgTWFyZWsgPHIubWFyZWtAYXNzZW1ibGVyLmN6PgotLS0KIGRyaXZlcnMvaHdt
b24vYWQ3NDE0LmMgICAgICAgICB8ICAgMTIgKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2Fk
NzQxOC5jICAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYWRtMTAy
MS5jICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9hZG0xMDI1LmMg
ICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2FkbTEwMjYuYyAgICAg
ICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYWRtMTAyOS5jICAgICAgICB8
ICAgMTggKy0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2FkbTEwMzEuYyAgICAgICAg
fCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYWRtOTI0MC5jICAgICAgICB8ICAg
MTQgKy0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYWRzMTAxNS5jICAgICAgICB8ICAgMTMg
Ky0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9hZHQ3NDExLmMgICAgICAgIHwgICAxMiArLS0t
LS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYWR0NzQ2Mi5jICAgICAgICB8ICAgMTMgKy0tLS0tLS0t
LS0tLQogZHJpdmVycy9od21vbi9hZHQ3NDcwLmMgICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0t
CiBkcml2ZXJzL2h3bW9uL2FkdDc0NzUuYyAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRy
aXZlcnMvaHdtb24vYW1jNjgyMS5jICAgICAgICB8ICAgMTUgKy0tLS0tLS0tLS0tLS0tCiBkcml2
ZXJzL2h3bW9uL2FzYjEwMC5jICAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMv
aHdtb24vYXR4cDEuYyAgICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21v
bi9kczE2MjEuYyAgICAgICAgIHwgICAxNCArLS0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9k
czYyMC5jICAgICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2VtYzE0
MDMuYyAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vZW1jMjEwMy5j
ICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9lbWM2dzIwMS5jICAg
ICAgIHwgICAxMiArLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vZjc1Mzc1cy5jICAgICAgICB8
ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9mc2NobWQuYyAgICAgICAgIHwgICAx
MyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2c3NjBhLmMgICAgICAgICAgfCAgIDE1ICst
LS0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9nbDUxOHNtLmMgICAgICAgIHwgICAxMyArLS0t
LS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2dsNTIwc20uYyAgICAgICAgfCAgIDE1ICstLS0tLS0t
LS0tLS0tLQogZHJpdmVycy9od21vbi9qYzQyLmMgICAgICAgICAgIHwgICAxMyArLS0tLS0tLS0t
LS0tCiBkcml2ZXJzL2h3bW9uL2xpbmVhZ2UtcGVtLmMgICAgfCAgIDEzICstLS0tLS0tLS0tLS0K
IGRyaXZlcnMvaHdtb24vbG02My5jICAgICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJp
dmVycy9od21vbi9sbTczLmMgICAgICAgICAgIHwgICAxNSArLS0tLS0tLS0tLS0tLS0KIGRyaXZl
cnMvaHdtb24vbG03NS5jICAgICAgICAgICB8ICAgMTcgKy0tLS0tLS0tLS0tLS0tLS0KIGRyaXZl
cnMvaHdtb24vbG03Ny5jICAgICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9o
d21vbi9sbTgwLmMgICAgICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9u
L2xtODMuYyAgICAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbG04
NS5jICAgICAgICAgICB8ICAgMTQgKy0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbG04Ny5j
ICAgICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9sbTkwLmMgICAg
ICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2xtOTIuYyAgICAgICAg
ICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbG05My5jICAgICAgICAgICB8
ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9sbTk1MjQxLmMgICAgICAgIHwgICAx
MyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2xtOTUyNDUuYyAgICAgICAgfCAgIDEzICst
LS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbHRjNDE1MS5jICAgICAgICB8ICAgMTMgKy0tLS0t
LS0tLS0tLQogZHJpdmVycy9od21vbi9sdGM0MjE1LmMgICAgICAgIHwgICAxMyArLS0tLS0tLS0t
LS0tCiBkcml2ZXJzL2h3bW9uL2x0YzQyNDUuYyAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0K
IGRyaXZlcnMvaHdtb24vbHRjNDI2MS5jICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJp
dmVycy9od21vbi9tYXgxNjA2NS5jICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJz
L2h3bW9uL21heDE2MTkuYyAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdt
b24vbWF4MTY2OC5jICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9t
YXg2NjM5LmMgICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL21heDY2
NDIuYyAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbWF4NjY1MC5j
ICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9wbWJ1cy9hZG0xMjc1
LmMgIHwgICAxMiArLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vcG1idXMvbG0yNTA2Ni5jICB8
ICAgMTIgKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL3BtYnVzL2x0YzI5NzguYyAgfCAgIDEy
ICstLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9wbWJ1cy9tYXgxNjA2NC5jIHwgICAxMiArLS0t
LS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vcG1idXMvbWF4MzQ0NDAuYyB8ICAgMTIgKy0tLS0tLS0t
LS0tCiBkcml2ZXJzL2h3bW9uL3BtYnVzL21heDg2ODguYyAgfCAgIDEyICstLS0tLS0tLS0tLQog
ZHJpdmVycy9od21vbi9wbWJ1cy9wbWJ1cy5jICAgIHwgICAxMiArLS0tLS0tLS0tLS0KIGRyaXZl
cnMvaHdtb24vcG1idXMvdWNkOTAwMC5jICB8ICAgMTIgKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3
bW9uL3BtYnVzL3VjZDkyMDAuYyAgfCAgIDEyICstLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9w
bWJ1cy96bDYxMDAuYyAgIHwgICAxMiArLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vc2h0MjEu
YyAgICAgICAgICB8ICAgMjMgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24v
c21tNjY1LmMgICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9zbXNj
NDdtMTkyLmMgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL3RobWM1MC5j
ICAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vdG1wMTAyLmMgICAg
ICAgICB8ICAgMTIgKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL3RtcDQwMS5jICAgICAgICAg
fCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vdG1wNDIxLmMgICAgICAgICB8ICAg
MTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi93ODM3OTFkLmMgICAgICAgIHwgICAxMyAr
LS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL3c4Mzc5MmQuYyAgICAgICAgfCAgIDE2ICstLS0t
LS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vdzgzNzkzLmMgICAgICAgICB8ICAgMTMgKy0tLS0t
LS0tLS0tLQogZHJpdmVycy9od21vbi93ODM3OTUuYyAgICAgICAgIHwgICAxMyArLS0tLS0tLS0t
LS0tCiBkcml2ZXJzL2h3bW9uL3c4M2w3ODV0cy5jICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0K
IGRyaXZlcnMvaHdtb24vdzgzbDc4Nm5nLmMgICAgICB8ICAgMTUgKy0tLS0tLS0tLS0tLS0tCiA3
NCBmaWxlcyBjaGFuZ2VkLCA3NCBpbnNlcnRpb25zKCspLCA5MDkgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvZHJpdmVycy9od21vbi9hZDc0MTQuYyBiL2RyaXZlcnMvaHdtb24vYWQ3NDE0LmMK
aW5kZXggZWRiZGI2ZC4uMzY0NjUwMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9hZDc0MTQu
YworKysgYi9kcml2ZXJzL2h3bW9uL2FkNzQxNC5jCkBAIC0yNTYsMTcgKzI1Niw3IEBAIHN0YXRp
YyBzdHJ1Y3QgaTJjX2RyaXZlciBhZDc0MTRfZHJpdmVyID0gewogCS5pZF90YWJsZSA9IGFkNzQx
NF9pZCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IGFkNzQxNF9pbml0KHZvaWQpCi17Ci0JcmV0
dXJuIGkyY19hZGRfZHJpdmVyKCZhZDc0MTRfZHJpdmVyKTsKLX0KLW1vZHVsZV9pbml0KGFkNzQx
NF9pbml0KTsKLQotc3RhdGljIHZvaWQgX19leGl0IGFkNzQxNF9leGl0KHZvaWQpCi17Ci0JaTJj
X2RlbF9kcml2ZXIoJmFkNzQxNF9kcml2ZXIpOwotfQotbW9kdWxlX2V4aXQoYWQ3NDE0X2V4aXQp
OworbW9kdWxlX2kyY19kcml2ZXIoYWQ3NDE0X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlN0
ZWZhbiBSb2VzZSA8c3IgYXQgZGVueC5kZT4sICIKIAkgICAgICAiRnJhbmsgRWRlbGhhZXVzZXIg
PGZyYW5rLmVkZWxoYWV1c2VyIGF0IHNwYW5zaW9uLmNvbT4iKTsKZGlmZiAtLWdpdCBhL2RyaXZl
cnMvaHdtb24vYWQ3NDE4LmMgYi9kcml2ZXJzL2h3bW9uL2FkNzQxOC5jCmluZGV4IDQyNDYxZDEu
LmE1MGE2YmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYWQ3NDE4LmMKKysrIGIvZHJpdmVy
cy9od21vbi9hZDc0MTguYwpAQCAtMjk1LDIwICsyOTUsOSBAQCBzdGF0aWMgaW50IGFkNzQxOF9y
ZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGlj
IGludCBfX2luaXQgYWQ3NDE4X2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIo
JmFkNzQxOF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgYWQ3NDE4X2V4aXQodm9p
ZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmYWQ3NDE4X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2Ry
aXZlcihhZDc0MThfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiQWxlc3NhbmRybyBadW1tbyA8
YS56dW1tb0B0b3dlcnRlY2guaXQ+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkFENzQxNi8xNy8x
OCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKIE1PRFVMRV9WRVJTSU9OKERSVl9W
RVJTSU9OKTsKLQotbW9kdWxlX2luaXQoYWQ3NDE4X2luaXQpOwotbW9kdWxlX2V4aXQoYWQ3NDE4
X2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9hZG0xMDIxLmMgYi9kcml2ZXJzL2h3
bW9uL2FkbTEwMjEuYwppbmRleCBlNmZjMDA2Li5lYzg0MzMxIDEwMDY0NAotLS0gYS9kcml2ZXJz
L2h3bW9uL2FkbTEwMjEuYworKysgYi9kcml2ZXJzL2h3bW9uL2FkbTEwMjEuYwpAQCAtNDcxLDE1
ICs0NzEsNyBAQCBzdGF0aWMgc3RydWN0IGFkbTEwMjFfZGF0YSAqYWRtMTAyMV91cGRhdGVfZGV2
aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBf
X2luaXQgc2Vuc29yc19hZG0xMDIxX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2
ZXIoJmFkbTEwMjFfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfYWRt
MTAyMV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmFkbTEwMjFfZHJpdmVyKTsKLX0K
K21vZHVsZV9pMmNfZHJpdmVyKGFkbTEwMjFfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiRnJv
ZG8gTG9vaWphYXJkIDxmcm9kb2xAZGRzLm5sPiBhbmQgIgogCQkiUGhpbGlwIEVkZWxicm9jayA8
cGhpbEBuZXRyb2VkZ2UuY29tPiIpOwpAQCAtNDg4LDYgKzQ4MCwzIEBAIE1PRFVMRV9MSUNFTlNF
KCJHUEwiKTsKIAogbW9kdWxlX3BhcmFtKHJlYWRfb25seSwgYm9vbCwgMCk7CiBNT0RVTEVfUEFS
TV9ERVNDKHJlYWRfb25seSwgIkRvbid0IHNldCBhbnkgdmFsdWVzLCByZWFkIG9ubHkgbW9kZSIp
OwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2FkbTEwMjFfaW5pdCkKLW1vZHVsZV9leGl0KHNlbnNv
cnNfYWRtMTAyMV9leGl0KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9hZG0xMDI1LmMgYi9k
cml2ZXJzL2h3bW9uL2FkbTEwMjUuYwppbmRleCAxNGQ4OTk3Li5lZmJjOWM5IDEwMDY0NAotLS0g
YS9kcml2ZXJzL2h3bW9uL2FkbTEwMjUuYworKysgYi9kcml2ZXJzL2h3bW9uL2FkbTEwMjUuYwpA
QCAtNjE4LDE5ICs2MTgsOCBAQCBzdGF0aWMgc3RydWN0IGFkbTEwMjVfZGF0YSAqYWRtMTAyNV91
cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1cm4gZGF0YTsKIH0KIAotc3Rh
dGljIGludCBfX2luaXQgc2Vuc29yc19hZG0xMDI1X2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJj
X2FkZF9kcml2ZXIoJmFkbTEwMjVfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNl
bnNvcnNfYWRtMTAyNV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmFkbTEwMjVfZHJp
dmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGFkbTEwMjVfZHJpdmVyKTsKIAogTU9EVUxFX0FV
VEhPUigiSmVhbiBEZWx2YXJlIDxraGFsaUBsaW51eC1mci5vcmc+Iik7CiBNT0RVTEVfREVTQ1JJ
UFRJT04oIkFETTEwMjUgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVs
ZV9pbml0KHNlbnNvcnNfYWRtMTAyNV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfYWRtMTAy
NV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYWRtMTAyNi5jIGIvZHJpdmVycy9o
d21vbi9hZG0xMDI2LmMKaW5kZXggY2Q3NzNjZS4uMWY0ZjVkZSAxMDA2NDQKLS0tIGEvZHJpdmVy
cy9od21vbi9hZG0xMDI2LmMKKysrIGIvZHJpdmVycy9od21vbi9hZG0xMDI2LmMKQEAgLTE4ODEs
MjAgKzE4ODEsOSBAQCBzdGF0aWMgaW50IGFkbTEwMjZfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50
ICpjbGllbnQpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNtX2FkbTEwMjZf
aW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmYWRtMTAyNl9kcml2ZXIpOwot
fQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc21fYWRtMTAyNl9leGl0KHZvaWQpCi17Ci0JaTJjX2Rl
bF9kcml2ZXIoJmFkbTEwMjZfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGFkbTEwMjZf
ZHJpdmVyKTsKIAogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwogTU9EVUxFX0FVVEhPUigiUGhpbGlw
IFBva29ybnkgPHBwb2tvcm55QHBlbmd1aW5jb21wdXRpbmcuY29tPiwgIgogCSAgICAgICJKdXN0
aW4gVGhpZXNzZW4gPGp0aGllc3NlbkBwZW5ndWluY29tcHV0aW5nLmNvbT4iKTsKIE1PRFVMRV9E
RVNDUklQVElPTigiQURNMTAyNiBkcml2ZXIiKTsKLQotbW9kdWxlX2luaXQoc21fYWRtMTAyNl9p
bml0KTsKLW1vZHVsZV9leGl0KHNtX2FkbTEwMjZfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJz
L2h3bW9uL2FkbTEwMjkuYyBiL2RyaXZlcnMvaHdtb24vYWRtMTAyOS5jCmluZGV4IGQ3ODljMzMu
LmM2NTMxYTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYWRtMTAyOS5jCisrKyBiL2RyaXZl
cnMvaHdtb24vYWRtMTAyOS5jCkBAIC00NTAsMjQgKzQ1MCw4IEBAIHN0YXRpYyBzdHJ1Y3QgYWRt
MTAyOV9kYXRhICphZG0xMDI5X3VwZGF0ZV9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJl
dHVybiBkYXRhOwogfQogCi0vKgotCUNvbW1vbiBtb2R1bGUgc3R1ZmYKLSovCi1zdGF0aWMgaW50
IF9faW5pdCBzZW5zb3JzX2FkbTEwMjlfaW5pdCh2b2lkKQotewotCi0JcmV0dXJuIGkyY19hZGRf
ZHJpdmVyKCZhZG0xMDI5X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3Jz
X2FkbTEwMjlfZXhpdCh2b2lkKQotewotCi0JaTJjX2RlbF9kcml2ZXIoJmFkbTEwMjlfZHJpdmVy
KTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGFkbTEwMjlfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhP
UigiQ29yZW50aW4gTEFCQkUgPGNvcmVudGluLmxhYmJlQGdlb21hdHlzLmZyPiIpOwogTU9EVUxF
X0RFU0NSSVBUSU9OKCJhZG0xMDI5IGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIp
OwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2FkbTEwMjlfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5z
b3JzX2FkbTEwMjlfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2FkbTEwMzEuYyBi
L2RyaXZlcnMvaHdtb24vYWRtMTAzMS5jCmluZGV4IDk3ZTJjZmIuLjcxYjVlYzMgMTAwNjQ0Ci0t
LSBhL2RyaXZlcnMvaHdtb24vYWRtMTAzMS5jCisrKyBiL2RyaXZlcnMvaHdtb24vYWRtMTAzMS5j
CkBAIC0xMTMxLDE5ICsxMTMxLDggQEAgc3RhdGljIHN0cnVjdCBhZG0xMDMxX2RhdGEgKmFkbTEw
MzFfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAK
LXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfYWRtMTAzMV9pbml0KHZvaWQpCi17Ci0JcmV0dXJu
IGkyY19hZGRfZHJpdmVyKCZhZG0xMDMxX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhp
dCBzZW5zb3JzX2FkbTEwMzFfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZhZG0xMDMx
X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihhZG0xMDMxX2RyaXZlcik7CiAKIE1PRFVM
RV9BVVRIT1IoIkFsZXhhbmRyZSBkJ0FsdG9uIDxhbGV4QGFsZXhkYWx0b24ub3JnPiIpOwogTU9E
VUxFX0RFU0NSSVBUSU9OKCJBRE0xMDMxL0FETTEwMzAgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5T
RSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfYWRtMTAzMV9pbml0KTsKLW1vZHVsZV9l
eGl0KHNlbnNvcnNfYWRtMTAzMV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYWRt
OTI0MC5jIGIvZHJpdmVycy9od21vbi9hZG05MjQwLmMKaW5kZXggMmRlNDUxMS4uMzQwYjg0MiAx
MDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9hZG05MjQwLmMKKysrIGIvZHJpdmVycy9od21vbi9h
ZG05MjQwLmMKQEAgLTgyMSwyMSArODIxLDkgQEAgc3RhdGljIHN0cnVjdCBhZG05MjQwX2RhdGEg
KmFkbTkyNDBfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7
CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfYWRtOTI0MF9pbml0KHZvaWQpCi17Ci0J
cmV0dXJuIGkyY19hZGRfZHJpdmVyKCZhZG05MjQwX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lk
IF9fZXhpdCBzZW5zb3JzX2FkbTkyNDBfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZh
ZG05MjQwX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihhZG05MjQwX2RyaXZlcik7CiAK
IE1PRFVMRV9BVVRIT1IoIk1pY2hpZWwgUm9vayA8bWljaGllbEBncmVuZGVscHJvamVjdC5ubD4s
ICIKIAkJIkdyYW50IENvYWR5IDxnY29hZHkubGtAZ21haWwuY29tPiBhbmQgb3RoZXJzIik7CiBN
T0RVTEVfREVTQ1JJUFRJT04oIkFETTkyNDAvRFMxNzgwL0xNODEgZHJpdmVyIik7CiBNT0RVTEVf
TElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfYWRtOTI0MF9pbml0KTsKLW1v
ZHVsZV9leGl0KHNlbnNvcnNfYWRtOTI0MF9leGl0KTsKLQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9o
d21vbi9hZHMxMDE1LmMgYi9kcml2ZXJzL2h3bW9uL2FkczEwMTUuYwppbmRleCBlZWRjYTNjLi42
MGJlMzU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2FkczEwMTUuYworKysgYi9kcml2ZXJz
L2h3bW9uL2FkczEwMTUuYwpAQCAtMzA2LDE5ICszMDYsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19k
cml2ZXIgYWRzMTAxNV9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlID0gYWRzMTAxNV9pZCwKIH07CiAK
LXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfYWRzMTAxNV9pbml0KHZvaWQpCi17Ci0JcmV0dXJu
IGkyY19hZGRfZHJpdmVyKCZhZHMxMDE1X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhp
dCBzZW5zb3JzX2FkczEwMTVfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZhZHMxMDE1
X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihhZHMxMDE1X2RyaXZlcik7CiAKIE1PRFVM
RV9BVVRIT1IoIkRpcmsgRWliYWNoIDxlaWJhY2hAZ2RzeXMuZGU+Iik7CiBNT0RVTEVfREVTQ1JJ
UFRJT04oIkFEUzEwMTUgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVs
ZV9pbml0KHNlbnNvcnNfYWRzMTAxNV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfYWRzMTAx
NV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYWR0NzQxMS5jIGIvZHJpdmVycy9o
d21vbi9hZHQ3NDExLmMKaW5kZXggZmZlNjRmOC4uNzFiYWNjNSAxMDA2NDQKLS0tIGEvZHJpdmVy
cy9od21vbi9hZHQ3NDExLmMKKysrIGIvZHJpdmVycy9od21vbi9hZHQ3NDExLmMKQEAgLTM0OCwx
NyArMzQ4LDcgQEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGFkdDc0MTFfZHJpdmVyID0gewog
CS5jbGFzcyA9IEkyQ19DTEFTU19IV01PTiwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNv
cnNfYWR0NzQxMV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZhZHQ3NDEx
X2RyaXZlcik7Ci19Ci1tb2R1bGVfaW5pdChzZW5zb3JzX2FkdDc0MTFfaW5pdCkKLQotc3RhdGlj
IHZvaWQgX19leGl0IHNlbnNvcnNfYWR0NzQxMV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2
ZXIoJmFkdDc0MTFfZHJpdmVyKTsKLX0KLW1vZHVsZV9leGl0KHNlbnNvcnNfYWR0NzQxMV9leGl0
KQorbW9kdWxlX2kyY19kcml2ZXIoYWR0NzQxMV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJT
YXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+IGFuZCAiCiAJIldvbGZyYW0gU2Fu
ZyA8dy5zYW5nQHBlbmd1dHJvbml4LmRlPiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9h
ZHQ3NDYyLmMgYi9kcml2ZXJzL2h3bW9uL2FkdDc0NjIuYwppbmRleCAzZGYzMzFhLi5lNGIxY2M5
IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2FkdDc0NjIuYworKysgYi9kcml2ZXJzL2h3bW9u
L2FkdDc0NjIuYwpAQCAtMTk3NCwxOSArMTk3NCw4IEBAIHN0YXRpYyBpbnQgYWR0NzQ2Ml9yZW1v
dmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGlu
dCBfX2luaXQgYWR0NzQ2Ml9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZh
ZHQ3NDYyX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBhZHQ3NDYyX2V4aXQodm9p
ZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmYWR0NzQ2Ml9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19k
cml2ZXIoYWR0NzQ2Ml9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJEYXJyaWNrIEouIFdvbmcg
PGRqd29uZ0B1cy5pYm0uY29tPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJBRFQ3NDYyIGRyaXZl
ciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChhZHQ3NDYyX2luaXQp
OwotbW9kdWxlX2V4aXQoYWR0NzQ2Ml9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24v
YWR0NzQ3MC5jIGIvZHJpdmVycy9od21vbi9hZHQ3NDcwLmMKaW5kZXggYjIzZWZkOS4uNTRlYzg5
MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9hZHQ3NDcwLmMKKysrIGIvZHJpdmVycy9od21v
bi9hZHQ3NDcwLmMKQEAgLTEzMTcsMTkgKzEzMTcsOCBAQCBzdGF0aWMgaW50IGFkdDc0NzBfcmVt
b3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBp
bnQgX19pbml0IGFkdDc0NzBfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigm
YWR0NzQ3MF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgYWR0NzQ3MF9leGl0KHZv
aWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmFkdDc0NzBfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNf
ZHJpdmVyKGFkdDc0NzBfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiRGFycmljayBKLiBXb25n
IDxkandvbmdAdXMuaWJtLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiQURUNzQ3MCBkcml2
ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQoYWR0NzQ3MF9pbml0
KTsKLW1vZHVsZV9leGl0KGFkdDc0NzBfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9u
L2FkdDc0NzUuYyBiL2RyaXZlcnMvaHdtb24vYWR0NzQ3NS5jCmluZGV4IDcxZTlhYzQuLjUyMmNi
NzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYWR0NzQ3NS5jCisrKyBiL2RyaXZlcnMvaHdt
b24vYWR0NzQ3NS5jCkBAIC0xNjAwLDE5ICsxNjAwLDggQEAgc3RhdGljIHN0cnVjdCBhZHQ3NDc1
X2RhdGEgKmFkdDc0NzVfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJu
IGRhdGE7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfYWR0NzQ3NV9pbml0KHZvaWQp
Ci17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZhZHQ3NDc1X2RyaXZlcik7Ci19Ci0KLXN0YXRp
YyB2b2lkIF9fZXhpdCBzZW5zb3JzX2FkdDc0NzVfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJp
dmVyKCZhZHQ3NDc1X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihhZHQ3NDc1X2RyaXZl
cik7CiAKIE1PRFVMRV9BVVRIT1IoIkFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYyIpOwogTU9E
VUxFX0RFU0NSSVBUSU9OKCJhZHQ3NDc1IGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIp
OwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2FkdDc0NzVfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5z
b3JzX2FkdDc0NzVfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2FtYzY4MjEuYyBi
L2RyaXZlcnMvaHdtb24vYW1jNjgyMS5jCmluZGV4IDRhNGJmZWYuLjUyOTg4NTUgMTAwNjQ0Ci0t
LSBhL2RyaXZlcnMvaHdtb24vYW1jNjgyMS5jCisrKyBiL2RyaXZlcnMvaHdtb24vYW1jNjgyMS5j
CkBAIC0xMDk1LDIwICsxMDk1LDcgQEAgc3RhdGljIHN0cnVjdCBhbWM2ODIxX2RhdGEgKmFtYzY4
MjFfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAK
LQotc3RhdGljIGludCBfX2luaXQgYW1jNjgyMV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19h
ZGRfZHJpdmVyKCZhbWM2ODIxX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBhbWM2
ODIxX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmYW1jNjgyMV9kcml2ZXIpOwotfQot
Ci1tb2R1bGVfaW5pdChhbWM2ODIxX2luaXQpOwotbW9kdWxlX2V4aXQoYW1jNjgyMV9leGl0KTsK
LQorbW9kdWxlX2kyY19kcml2ZXIoYW1jNjgyMV9kcml2ZXIpOwogCiBNT0RVTEVfTElDRU5TRSgi
R1BMIik7CiBNT0RVTEVfQVVUSE9SKCJULiBNZXJ0ZWxqIDx0b21hei5tZXJ0ZWxqQGd1ZXN0LmFy
bmVzLnNpPiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9hc2IxMDAuYyBiL2RyaXZlcnMv
aHdtb24vYXNiMTAwLmMKaW5kZXggYTVmMTY0Mi4uNTczZmZmNSAxMDA2NDQKLS0tIGEvZHJpdmVy
cy9od21vbi9hc2IxMDAuYworKysgYi9kcml2ZXJzL2h3bW9uL2FzYjEwMC5jCkBAIC0xMDAyLDE5
ICsxMDAyLDggQEAgc3RhdGljIHN0cnVjdCBhc2IxMDBfZGF0YSAqYXNiMTAwX3VwZGF0ZV9kZXZp
Y2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi1zdGF0aWMgaW50IF9f
aW5pdCBhc2IxMDBfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmYXNiMTAw
X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBhc2IxMDBfZXhpdCh2b2lkKQotewot
CWkyY19kZWxfZHJpdmVyKCZhc2IxMDBfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGFz
YjEwMF9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJNYXJrIE0uIEhvZmZtYW4gPG1ob2ZmbWFu
QGxpZ2h0bGluay5jb20+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkFTQjEwMCBCYWNoIGRyaXZl
ciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChhc2IxMDBfaW5pdCk7
Ci1tb2R1bGVfZXhpdChhc2IxMDBfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2F0
eHAxLmMgYi9kcml2ZXJzL2h3bW9uL2F0eHAxLmMKaW5kZXggZDRhNTg5Yi4uNWE2NzFjYSAxMDA2
NDQKLS0tIGEvZHJpdmVycy9od21vbi9hdHhwMS5jCisrKyBiL2RyaXZlcnMvaHdtb24vYXR4cDEu
YwpAQCAtMzkwLDE1ICszOTAsNCBAQCBzdGF0aWMgaW50IGF0eHAxX3JlbW92ZShzdHJ1Y3QgaTJj
X2NsaWVudCAqY2xpZW50KQogCXJldHVybiAwOwogfTsKIAotc3RhdGljIGludCBfX2luaXQgYXR4
cDFfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmYXR4cDFfZHJpdmVyKTsK
LX07Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBhdHhwMV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9k
cml2ZXIoJmF0eHAxX2RyaXZlcik7Ci19OwotCi1tb2R1bGVfaW5pdChhdHhwMV9pbml0KTsKLW1v
ZHVsZV9leGl0KGF0eHAxX2V4aXQpOworbW9kdWxlX2kyY19kcml2ZXIoYXR4cDFfZHJpdmVyKTsK
ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vZHMxNjIxLmMgYi9kcml2ZXJzL2h3bW9uL2RzMTYy
MS5jCmluZGV4IGUyM2E4YWIuLjVkYzU0ODkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vZHMx
NjIxLmMKKysrIGIvZHJpdmVycy9od21vbi9kczE2MjEuYwpAQCAtMzExLDIwICszMTEsOCBAQCBz
dGF0aWMgc3RydWN0IGkyY19kcml2ZXIgZHMxNjIxX2RyaXZlciA9IHsKIAkuYWRkcmVzc19saXN0
CT0gbm9ybWFsX2kyYywKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IGRzMTYyMV9pbml0KHZvaWQp
Ci17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZkczE2MjFfZHJpdmVyKTsKLX0KLQotc3RhdGlj
IHZvaWQgX19leGl0IGRzMTYyMV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmRzMTYy
MV9kcml2ZXIpOwotfQotCittb2R1bGVfaTJjX2RyaXZlcihkczE2MjFfZHJpdmVyKTsKIAogTU9E
VUxFX0FVVEhPUigiQ2hyaXN0aWFuIFcuIFp1Y2tzY2h3ZXJkdCA8emFueUB0cmlxLm5ldD4iKTsK
IE1PRFVMRV9ERVNDUklQVElPTigiRFMxNjIxIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQ
TCIpOwotCi1tb2R1bGVfaW5pdChkczE2MjFfaW5pdCk7Ci1tb2R1bGVfZXhpdChkczE2MjFfZXhp
dCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2RzNjIwLmMgYi9kcml2ZXJzL2h3bW9uL2Rz
NjIwLmMKaW5kZXggMzAwYzNkNC4uNTA2NjNlZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9k
czYyMC5jCisrKyBiL2RyaXZlcnMvaHdtb24vZHM2MjAuYwpAQCAtMjk3LDE5ICsyOTcsOCBAQCBz
dGF0aWMgc3RydWN0IGkyY19kcml2ZXIgZHM2MjBfZHJpdmVyID0gewogCS5pZF90YWJsZSA9IGRz
NjIwX2lkLAogfTsKIAotc3RhdGljIGludCBfX2luaXQgZHM2MjBfaW5pdCh2b2lkKQotewotCXJl
dHVybiBpMmNfYWRkX2RyaXZlcigmZHM2MjBfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19l
eGl0IGRzNjIwX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmZHM2MjBfZHJpdmVyKTsK
LX0KK21vZHVsZV9pMmNfZHJpdmVyKGRzNjIwX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlJv
bGFuZCBTdGlnZ2UgPHN0aWdnZUBhbnRjb20uZGU+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkRT
NjIwIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChkczYy
MF9pbml0KTsKLW1vZHVsZV9leGl0KGRzNjIwX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9o
d21vbi9lbWMxNDAzLmMgYi9kcml2ZXJzL2h3bW9uL2VtYzE0MDMuYwppbmRleCAyNzBmZmFiLi45
OWFjMTQxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2VtYzE0MDMuYworKysgYi9kcml2ZXJz
L2h3bW9uL2VtYzE0MDMuYwpAQCAtMzY2LDE4ICszNjYsNyBAQCBzdGF0aWMgc3RydWN0IGkyY19k
cml2ZXIgc2Vuc29yX2VtYzE0MDMgPSB7CiAJLmFkZHJlc3NfbGlzdCA9IGVtYzE0MDNfYWRkcmVz
c19saXN0LAogfTsKIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yX2VtYzE0MDNfaW5pdCh2b2lk
KQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmc2Vuc29yX2VtYzE0MDMpOwotfQotCi1zdGF0
aWMgdm9pZCAgX19leGl0IHNlbnNvcl9lbWMxNDAzX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2Ry
aXZlcigmc2Vuc29yX2VtYzE0MDMpOwotfQotCi1tb2R1bGVfaW5pdChzZW5zb3JfZW1jMTQwM19p
bml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcl9lbWMxNDAzX2V4aXQpOworbW9kdWxlX2kyY19kcml2
ZXIoc2Vuc29yX2VtYzE0MDMpOwogCiBNT0RVTEVfQVVUSE9SKCJLYWxoYW4gVHJpc2FsIDxrYWxo
YW4udHJpc2FsQGludGVsLmNvbSIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJlbWMxNDAzIFRoZXJt
YWwgRHJpdmVyIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2VtYzIxMDMuYyBiL2RyaXZl
cnMvaHdtb24vZW1jMjEwMy5jCmluZGV4IDg2NTA2MzkuLjBmNTEzODIgMTAwNjQ0Ci0tLSBhL2Ry
aXZlcnMvaHdtb24vZW1jMjEwMy5jCisrKyBiL2RyaXZlcnMvaHdtb24vZW1jMjEwMy5jCkBAIC03
MjIsMTkgKzcyMiw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBlbWMyMTAzX2RyaXZlciA9
IHsKIAkuYWRkcmVzc19saXN0CT0gbm9ybWFsX2kyYywKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0
IHNlbnNvcnNfZW1jMjEwM19pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZl
bWMyMTAzX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2VtYzIxMDNf
ZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZlbWMyMTAzX2RyaXZlcik7Ci19Cittb2R1
bGVfaTJjX2RyaXZlcihlbWMyMTAzX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlN0ZXZlIEds
ZW5kaW5uaW5nIDxzdGV2ZS5nbGVuZGlubmluZ0BzbXNjLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQ
VElPTigiU01TQyBFTUMyMTAzIGh3bW9uIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIp
OwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2VtYzIxMDNfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5z
b3JzX2VtYzIxMDNfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2VtYzZ3MjAxLmMg
Yi9kcml2ZXJzL2h3bW9uL2VtYzZ3MjAxLmMKaW5kZXggNmViYjliNy4uODQwZjUxMSAxMDA2NDQK
LS0tIGEvZHJpdmVycy9od21vbi9lbWM2dzIwMS5jCisrKyBiL2RyaXZlcnMvaHdtb24vZW1jNncy
MDEuYwpAQCAtNTUyLDE3ICs1NTIsNyBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgZW1jNncy
MDFfZHJpdmVyID0gewogCS5hZGRyZXNzX2xpc3QJPSBub3JtYWxfaTJjLAogfTsKIAotc3RhdGlj
IGludCBfX2luaXQgc2Vuc29yc19lbWM2dzIwMV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19h
ZGRfZHJpdmVyKCZlbWM2dzIwMV9kcml2ZXIpOwotfQotbW9kdWxlX2luaXQoc2Vuc29yc19lbWM2
dzIwMV9pbml0KTsKLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfZW1jNncyMDFfZXhpdCh2
b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZlbWM2dzIwMV9kcml2ZXIpOwotfQotbW9kdWxlX2V4
aXQoc2Vuc29yc19lbWM2dzIwMV9leGl0KTsKK21vZHVsZV9pMmNfZHJpdmVyKGVtYzZ3MjAxX2Ry
aXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkplYW4gRGVsdmFyZSA8a2hhbGlAbGludXgtZnIub3Jn
PiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJTTVNDIEVNQzZXMjAxIGhhcmR3YXJlIG1vbml0b3Jp
bmcgZHJpdmVyIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2Y3NTM3NXMuYyBiL2RyaXZl
cnMvaHdtb24vZjc1Mzc1cy5jCmluZGV4IGVlZGY1NzQuLjM5OGRiYzggMTAwNjQ0Ci0tLSBhL2Ry
aXZlcnMvaHdtb24vZjc1Mzc1cy5jCisrKyBiL2RyaXZlcnMvaHdtb24vZjc1Mzc1cy5jCkBAIC04
NTgsMTkgKzg1OCw4IEBAIHN0YXRpYyBpbnQgZjc1Mzc1X2RldGVjdChzdHJ1Y3QgaTJjX2NsaWVu
dCAqY2xpZW50LAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX2Y3
NTM3NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZmNzUzNzVfZHJpdmVy
KTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfZjc1Mzc1X2V4aXQodm9pZCkKLXsK
LQlpMmNfZGVsX2RyaXZlcigmZjc1Mzc1X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihm
NzUzNzVfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiUmlrdSBWb2lwaW8iKTsKIE1PRFVMRV9M
SUNFTlNFKCJHUEwiKTsKIE1PRFVMRV9ERVNDUklQVElPTigiRjc1MzczL0Y3NTM3NS9GNzUzODcg
aGFyZHdhcmUgbW9uaXRvcmluZyBkcml2ZXIiKTsKLQotbW9kdWxlX2luaXQoc2Vuc29yc19mNzUz
NzVfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX2Y3NTM3NV9leGl0KTsKZGlmZiAtLWdpdCBh
L2RyaXZlcnMvaHdtb24vZnNjaG1kLmMgYi9kcml2ZXJzL2h3bW9uL2ZzY2htZC5jCmluZGV4IDA2
Y2JmNzcuLjM1ZGRmNmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vZnNjaG1kLmMKKysrIGIv
ZHJpdmVycy9od21vbi9mc2NobWQuYwpAQCAtMTM0MSwyMCArMTM0MSw5IEBAIHN0YXRpYyBzdHJ1
Y3QgZnNjaG1kX2RhdGEgKmZzY2htZF91cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikK
IAlyZXR1cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgZnNjaG1kX2luaXQodm9pZCkK
LXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmZzY2htZF9kcml2ZXIpOwotfQotCi1zdGF0aWMg
dm9pZCBfX2V4aXQgZnNjaG1kX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmZnNjaG1k
X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihmc2NobWRfZHJpdmVyKTsKIAogTU9EVUxF
X0FVVEhPUigiSGFucyBkZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4iKTsKIE1PRFVMRV9E
RVNDUklQVElPTigiRlNDIFBvc2VpZG9uLCBIZXJtZXMsIFNjeWxsYSwgSGVyYWNsZXMsIEhlaW1k
YWxsLCBIYWRlcyAiCiAJCQkiYW5kIFN5bGV1cyBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJH
UEwiKTsKLQotbW9kdWxlX2luaXQoZnNjaG1kX2luaXQpOwotbW9kdWxlX2V4aXQoZnNjaG1kX2V4
aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9nNzYwYS5jIGIvZHJpdmVycy9od21vbi9n
NzYwYS5jCmluZGV4IDgxYjZlMzUuLjA1MmUzMDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24v
Zzc2MGEuYworKysgYi9kcml2ZXJzL2h3bW9uL2c3NjBhLmMKQEAgLTI1MCwyMSArMjUwLDggQEAg
c3RhdGljIGludCBnNzYwYV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIAlyZXR1
cm4gMDsKIH0KIAotLyogbW9kdWxlIG1hbmFnZW1lbnQgKi8KLQotc3RhdGljIGludCBfX2luaXQg
Zzc2MGFfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmZzc2MGFfZHJpdmVy
KTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IGc3NjBhX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVs
X2RyaXZlcigmZzc2MGFfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGc3NjBhX2RyaXZl
cik7CiAKIE1PRFVMRV9BVVRIT1IoIkhlcmJlcnQgVmFsZXJpbyBSaWVkZWwgPGh2ckBnbnUub3Jn
PiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJHTVQgRzc2MEEgZHJpdmVyIik7CiBNT0RVTEVfTElD
RU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KGc3NjBhX2luaXQpOwotbW9kdWxlX2V4aXQoZzc2
MGFfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2dsNTE4c20uYyBiL2RyaXZlcnMv
aHdtb24vZ2w1MThzbS5jCmluZGV4IDhkMGY3MWQuLmFlMTkzZjAgMTAwNjQ0Ci0tLSBhL2RyaXZl
cnMvaHdtb24vZ2w1MThzbS5jCisrKyBiL2RyaXZlcnMvaHdtb24vZ2w1MThzbS5jCkBAIC03MTAs
MjEgKzcxMCwxMCBAQCBzdGF0aWMgc3RydWN0IGdsNTE4X2RhdGEgKmdsNTE4X3VwZGF0ZV9kZXZp
Y2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi1zdGF0aWMgaW50IF9f
aW5pdCBzZW5zb3JzX2dsNTE4c21faW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZl
cigmZ2w1MThfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfZ2w1MThz
bV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmdsNTE4X2RyaXZlcik7Ci19Cittb2R1
bGVfaTJjX2RyaXZlcihnbDUxOF9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJGcm9kbyBMb29p
amFhcmQgPGZyb2RvbEBkZHMubmw+LCAiCiAJIkt5b3N0aSBNYWxra2kgPGttYWxra2lAY2MuaHV0
LmZpPiBhbmQgIgogCSJIb25nLUd1bm4gQ2hldyA8aGdsaW51eEBndW5uZXQub3JnPiIpOwogTU9E
VUxFX0RFU0NSSVBUSU9OKCJHTDUxOFNNIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIp
OwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2dsNTE4c21faW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5z
b3JzX2dsNTE4c21fZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2dsNTIwc20uYyBi
L2RyaXZlcnMvaHdtb24vZ2w1MjBzbS5jCmluZGV4IDE5MDkwOTcuLjUyZGFkYjIgMTAwNjQ0Ci0t
LSBhL2RyaXZlcnMvaHdtb24vZ2w1MjBzbS5jCisrKyBiL2RyaXZlcnMvaHdtb24vZ2w1MjBzbS5j
CkBAIC05NzksMjMgKzk3OSwxMCBAQCBzdGF0aWMgc3RydWN0IGdsNTIwX2RhdGEgKmdsNTIwX3Vw
ZGF0ZV9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi0KLXN0
YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfZ2w1MjBzbV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGky
Y19hZGRfZHJpdmVyKCZnbDUyMF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vu
c29yc19nbDUyMHNtX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmZ2w1MjBfZHJpdmVy
KTsKLX0KLQorbW9kdWxlX2kyY19kcml2ZXIoZ2w1MjBfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhP
UigiRnJvZG8gTG9vaWphYXJkIDxmcm9kb2xAZGRzLm5sPiwgIgogCSJLecO2c3RpIE3DpGxra2kg
PGttYWxra2lAY2MuaHV0LmZpPiwgIgogCSJNYWFydGVuIERlcHJleiA8bWFhcnRlbmRlcHJlekB1
c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkdMNTIwU00gZHJp
dmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfZ2w1
MjBzbV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfZ2w1MjBzbV9leGl0KTsKZGlmZiAtLWdp
dCBhL2RyaXZlcnMvaHdtb24vamM0Mi5jIGIvZHJpdmVycy9od21vbi9qYzQyLmMKaW5kZXggMjhj
MDllZS4uMzA4MzQ2YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9qYzQyLmMKKysrIGIvZHJp
dmVycy9od21vbi9qYzQyLmMKQEAgLTU4OCwxOSArNTg4LDggQEAgYWJvcnQ6CiAJcmV0dXJuIHJl
dDsKIH0KIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc19qYzQyX2luaXQodm9pZCkKLXsKLQly
ZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmpjNDJfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19l
eGl0IHNlbnNvcnNfamM0Ml9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmpjNDJfZHJp
dmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGpjNDJfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhP
UigiR3VlbnRlciBSb2VjayA8Z3VlbnRlci5yb2Vja0Blcmljc3Nvbi5jb20+Iik7CiBNT0RVTEVf
REVTQ1JJUFRJT04oIkpDNDIgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1v
ZHVsZV9pbml0KHNlbnNvcnNfamM0Ml9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfamM0Ml9l
eGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbGluZWFnZS1wZW0uYyBiL2RyaXZlcnMv
aHdtb24vbGluZWFnZS1wZW0uYwppbmRleCA1OGVkZWQyLi41YjhjOWFlIDEwMDY0NAotLS0gYS9k
cml2ZXJzL2h3bW9uL2xpbmVhZ2UtcGVtLmMKKysrIGIvZHJpdmVycy9od21vbi9saW5lYWdlLXBl
bS5jCkBAIC01NjgsMTkgKzU2OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBwZW1fZHJp
dmVyID0gewogCS5pZF90YWJsZSA9IHBlbV9pZCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHBl
bV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZwZW1fZHJpdmVyKTsKLX0K
LQotc3RhdGljIHZvaWQgX19leGl0IHBlbV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIo
JnBlbV9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIocGVtX2RyaXZlcik7CiAKIE1PRFVM
RV9BVVRIT1IoIkd1ZW50ZXIgUm9lY2sgPGd1ZW50ZXIucm9lY2tAZXJpY3Nzb24uY29tPiIpOwog
TU9EVUxFX0RFU0NSSVBUSU9OKCJMaW5lYWdlIENQTCBQRU0gaGFyZHdhcmUgbW9uaXRvcmluZyBk
cml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQocGVtX2luaXQp
OwotbW9kdWxlX2V4aXQocGVtX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9sbTYz
LmMgYi9kcml2ZXJzL2h3bW9uL2xtNjMuYwppbmRleCA1ZTY0NTdhLi4xNWMwNWNjIDEwMDY0NAot
LS0gYS9kcml2ZXJzL2h3bW9uL2xtNjMuYworKysgYi9kcml2ZXJzL2h3bW9uL2xtNjMuYwpAQCAt
MTExOSwxOSArMTExOSw4IEBAIHN0YXRpYyBzdHJ1Y3QgbG02M19kYXRhICpsbTYzX3VwZGF0ZV9k
ZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi1zdGF0aWMgaW50
IF9faW5pdCBzZW5zb3JzX2xtNjNfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZl
cigmbG02M19kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vuc29yc19sbTYzX2V4
aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbG02M19kcml2ZXIpOwotfQorbW9kdWxlX2ky
Y19kcml2ZXIobG02M19kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJKZWFuIERlbHZhcmUgPGto
YWxpQGxpbnV4LWZyLm9yZz4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTE02MyBkcml2ZXIiKTsK
IE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQoc2Vuc29yc19sbTYzX2luaXQp
OwotbW9kdWxlX2V4aXQoc2Vuc29yc19sbTYzX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9o
d21vbi9sbTczLmMgYi9kcml2ZXJzL2h3bW9uL2xtNzMuYwppbmRleCA5YzgwOTNjLi44ZmEyNjMy
IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2xtNzMuYworKysgYi9kcml2ZXJzL2h3bW9uL2xt
NzMuYwpAQCAtMTk0LDIxICsxOTQsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbG03M19k
cml2ZXIgPSB7CiAJLmFkZHJlc3NfbGlzdAk9IG5vcm1hbF9pMmMsCiB9OwogCi0vKiBtb2R1bGUg
Z2x1ZSAqLwotCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX2xtNzNfaW5pdCh2b2lkKQotewot
CXJldHVybiBpMmNfYWRkX2RyaXZlcigmbG03M19kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBf
X2V4aXQgc2Vuc29yc19sbTczX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbG03M19k
cml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobG03M19kcml2ZXIpOwogCiBNT0RVTEVfQVVU
SE9SKCJHdWlsbGF1bWUgTGlnbmV1bCA8Z3VpbGxhdW1lLmxpZ25ldWxAZ21haWwuY29tPiIpOwog
TU9EVUxFX0RFU0NSSVBUSU9OKCJMTTczIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIp
OwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2xtNzNfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3Jz
X2xtNzNfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2xtNzUuYyBiL2RyaXZlcnMv
aHdtb24vbG03NS5jCmluZGV4IGIzMzExYjEuLmE4M2YyMDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv
aHdtb24vbG03NS5jCisrKyBiL2RyaXZlcnMvaHdtb24vbG03NS5jCkBAIC00MzgsMjMgKzQzOCw4
IEBAIGFib3J0OgogCXJldHVybiByZXQ7CiB9CiAKLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotCi0vKiBt
b2R1bGUgZ2x1ZSAqLwotCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX2xtNzVfaW5pdCh2b2lk
KQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmbG03NV9kcml2ZXIpOwotfQotCi1zdGF0aWMg
dm9pZCBfX2V4aXQgc2Vuc29yc19sbTc1X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigm
bG03NV9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobG03NV9kcml2ZXIpOwogCiBNT0RV
TEVfQVVUSE9SKCJGcm9kbyBMb29pamFhcmQgPGZyb2RvbEBkZHMubmw+Iik7CiBNT0RVTEVfREVT
Q1JJUFRJT04oIkxNNzUgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVs
ZV9pbml0KHNlbnNvcnNfbG03NV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfbG03NV9leGl0
KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG03Ny5jIGIvZHJpdmVycy9od21vbi9sbTc3
LmMKaW5kZXggMDhmN2ZmZS4uZDhjMWYzNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sbTc3
LmMKKysrIGIvZHJpdmVycy9od21vbi9sbTc3LmMKQEAgLTQ0MywxOSArNDQzLDggQEAgc3RhdGlj
IHN0cnVjdCBsbTc3X2RhdGEgKmxtNzdfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYp
CiAJcmV0dXJuIGRhdGE7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfbG03N19pbml0
KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZsbTc3X2RyaXZlcik7Ci19Ci0KLXN0
YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2xtNzdfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJp
dmVyKCZsbTc3X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihsbTc3X2RyaXZlcik7CiAK
IE1PRFVMRV9BVVRIT1IoIkFuZHJhcyBCQUxJIDxkcmV3aWVAZnJlZW1haWwuaHU+Iik7CiBNT0RV
TEVfREVTQ1JJUFRJT04oIkxNNzcgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0K
LW1vZHVsZV9pbml0KHNlbnNvcnNfbG03N19pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfbG03
N19leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG04MC5jIGIvZHJpdmVycy9od21v
bi9sbTgwLmMKaW5kZXggZGM2ZGY0ZS4uNmEyYTc3NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21v
bi9sbTgwLmMKKysrIGIvZHJpdmVycy9od21vbi9sbTgwLmMKQEAgLTY5NywyMCArNjk3LDkgQEAg
ZG9uZToKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX2xtODBf
aW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmbG04MF9kcml2ZXIpOwotfQot
Ci1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vuc29yc19sbTgwX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVs
X2RyaXZlcigmbG04MF9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobG04MF9kcml2ZXIp
OwogCiBNT0RVTEVfQVVUSE9SKCJGcm9kbyBMb29pamFhcmQgPGZyb2RvbEBkZHMubmw+IGFuZCAi
CiAJIlBoaWxpcCBFZGVsYnJvY2sgPHBoaWxAbmV0cm9lZGdlLmNvbT4iKTsKIE1PRFVMRV9ERVND
UklQVElPTigiTE04MCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxl
X2luaXQoc2Vuc29yc19sbTgwX2luaXQpOwotbW9kdWxlX2V4aXQoc2Vuc29yc19sbTgwX2V4aXQp
OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9sbTgzLmMgYi9kcml2ZXJzL2h3bW9uL2xtODMu
YwppbmRleCAxZmVkMjY1Li5jZDQ1YjlkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2xtODMu
YworKysgYi9kcml2ZXJzL2h3bW9uL2xtODMuYwpAQCAtNDMwLDE5ICs0MzAsOCBAQCBzdGF0aWMg
c3RydWN0IGxtODNfZGF0YSAqbG04M191cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikK
IAlyZXR1cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc19sbTgzX2luaXQo
dm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmxtODNfZHJpdmVyKTsKLX0KLQotc3Rh
dGljIHZvaWQgX19leGl0IHNlbnNvcnNfbG04M19leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2
ZXIoJmxtODNfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGxtODNfZHJpdmVyKTsKIAog
TU9EVUxFX0FVVEhPUigiSmVhbiBEZWx2YXJlIDxraGFsaUBsaW51eC1mci5vcmc+Iik7CiBNT0RV
TEVfREVTQ1JJUFRJT04oIkxNODMgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0K
LW1vZHVsZV9pbml0KHNlbnNvcnNfbG04M19pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfbG04
M19leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG04NS5jIGIvZHJpdmVycy9od21v
bi9sbTg1LmMKaW5kZXggMjQwYjdmOS4uN2U0NmViYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21v
bi9sbTg1LmMKKysrIGIvZHJpdmVycy9od21vbi9sbTg1LmMKQEAgLTE2OTUsMjIgKzE2OTUsMTAg
QEAgc3RhdGljIHN0cnVjdCBsbTg1X2RhdGEgKmxtODVfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2
aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAKLQotc3RhdGljIGludCBfX2luaXQgc21fbG04
NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZsbTg1X2RyaXZlcik7Ci19
Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzbV9sbTg1X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2Ry
aXZlcigmbG04NV9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobG04NV9kcml2ZXIpOwog
CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CiBNT0RVTEVfQVVUSE9SKCJQaGlsaXAgUG9rb3JueSA8
cHBva29ybnlAcGVuZ3VpbmNvbXB1dGluZy5jb20+LCAiCiAJIk1hcmdpdCBTY2h1YmVydC1XaGls
ZSA8bWFyZ2l0c3dAdC1vbmxpbmUuZGU+LCAiCiAJIkp1c3RpbiBUaGllc3NlbiA8anRoaWVzc2Vu
QHBlbmd1aW5jb21wdXRpbmcuY29tPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJMTTg1LUIsIExN
ODUtQyBkcml2ZXIiKTsKLQotbW9kdWxlX2luaXQoc21fbG04NV9pbml0KTsKLW1vZHVsZV9leGl0
KHNtX2xtODVfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2xtODcuYyBiL2RyaXZl
cnMvaHdtb24vbG04Ny5jCmluZGV4IGViZjRlZmQuLjA5MGY1ZWYgMTAwNjQ0Ci0tLSBhL2RyaXZl
cnMvaHdtb24vbG04Ny5jCisrKyBiL2RyaXZlcnMvaHdtb24vbG04Ny5jCkBAIC0xMDU0LDE5ICsx
MDU0LDggQEAgc3RhdGljIHN0cnVjdCBsbTg3X2RhdGEgKmxtODdfdXBkYXRlX2RldmljZShzdHJ1
Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNl
bnNvcnNfbG04N19pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZsbTg3X2Ry
aXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2xtODdfZXhpdCh2b2lkKQot
ewotCWkyY19kZWxfZHJpdmVyKCZsbTg3X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihs
bTg3X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkplYW4gRGVsdmFyZSA8a2hhbGlAbGludXgt
ZnIub3JnPiBhbmQgb3RoZXJzIik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkxNODcgZHJpdmVyIik7
CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfbG04N19pbml0
KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfbG04N19leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv
aHdtb24vbG05MC5jIGIvZHJpdmVycy9od21vbi9sbTkwLmMKaW5kZXggZDJkZDVmOS4uMjQ4ZjJi
NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sbTkwLmMKKysrIGIvZHJpdmVycy9od21vbi9s
bTkwLmMKQEAgLTE1MTQsMTkgKzE1MTQsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbG05
MF9kcml2ZXIgPSB7CiAJLmFkZHJlc3NfbGlzdAk9IG5vcm1hbF9pMmMsCiB9OwogCi1zdGF0aWMg
aW50IF9faW5pdCBzZW5zb3JzX2xtOTBfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2Ry
aXZlcigmbG05MF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vuc29yc19sbTkw
X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbG05MF9kcml2ZXIpOwotfQorbW9kdWxl
X2kyY19kcml2ZXIobG05MF9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJKZWFuIERlbHZhcmUg
PGtoYWxpQGxpbnV4LWZyLm9yZz4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTE05MC9BRE0xMDMy
IGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChzZW5zb3Jz
X2xtOTBfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX2xtOTBfZXhpdCk7CmRpZmYgLS1naXQg
YS9kcml2ZXJzL2h3bW9uL2xtOTIuYyBiL2RyaXZlcnMvaHdtb24vbG05Mi5jCmluZGV4IDk1Y2Rh
NDEuLjBmZTJmMzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbG05Mi5jCisrKyBiL2RyaXZl
cnMvaHdtb24vbG05Mi5jCkBAIC00MzIsMTkgKzQzMiw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2Ry
aXZlciBsbTkyX2RyaXZlciA9IHsKIAkuYWRkcmVzc19saXN0CT0gbm9ybWFsX2kyYywKIH07CiAK
LXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfbG05Ml9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGky
Y19hZGRfZHJpdmVyKCZsbTkyX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5z
b3JzX2xtOTJfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZsbTkyX2RyaXZlcik7Ci19
Cittb2R1bGVfaTJjX2RyaXZlcihsbTkyX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkplYW4g
RGVsdmFyZSA8a2hhbGlAbGludXgtZnIub3JnPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJMTTky
L01BWDY2MzUgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0
KHNlbnNvcnNfbG05Ml9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfbG05Ml9leGl0KTsKZGlm
ZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG05My5jIGIvZHJpdmVycy9od21vbi9sbTkzLmMKaW5k
ZXggZDJmYzRhYy4uMjJhZTVmMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sbTkzLmMKKysr
IGIvZHJpdmVycy9od21vbi9sbTkzLmMKQEAgLTI3NjEsMjAgKzI3NjEsOSBAQCBzdGF0aWMgc3Ry
dWN0IGkyY19kcml2ZXIgbG05M19kcml2ZXIgPSB7CiAJLmFkZHJlc3NfbGlzdAk9IG5vcm1hbF9p
MmMsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBsbTkzX2luaXQodm9pZCkKLXsKLQlyZXR1cm4g
aTJjX2FkZF9kcml2ZXIoJmxtOTNfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IGxt
OTNfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZsbTkzX2RyaXZlcik7Ci19Cittb2R1
bGVfaTJjX2RyaXZlcihsbTkzX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIk1hcmsgTS4gSG9m
Zm1hbiA8bWhvZmZtYW5AbGlnaHRsaW5rLmNvbT4sICIKIAkJIkhhbnMgSi4gS29jaCA8aGprQGhh
bnNqa29jaC5kZT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTE05MyBkcml2ZXIiKTsKIE1PRFVM
RV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQobG05M19pbml0KTsKLW1vZHVsZV9leGl0
KGxtOTNfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2xtOTUyNDEuYyBiL2RyaXZl
cnMvaHdtb24vbG05NTI0MS5jCmluZGV4IDcwYmNhNjcuLmJkOGNkYjcgMTAwNjQ0Ci0tLSBhL2Ry
aXZlcnMvaHdtb24vbG05NTI0MS5jCisrKyBiL2RyaXZlcnMvaHdtb24vbG05NTI0MS5jCkBAIC00
NTUsMTkgKzQ1NSw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBsbTk1MjQxX2RyaXZlciA9
IHsKIAkuYWRkcmVzc19saXN0CT0gbm9ybWFsX2kyYywKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0
IHNlbnNvcnNfbG05NTI0MV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZs
bTk1MjQxX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2xtOTUyNDFf
ZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZsbTk1MjQxX2RyaXZlcik7Ci19Cittb2R1
bGVfaTJjX2RyaXZlcihsbTk1MjQxX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkRhdmlkZSBS
aXp6byA8ZWxwYS5yaXp6b0BnbWFpbC5jb20+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkxNOTUy
NDEgc2Vuc29yIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5p
dChzZW5zb3JzX2xtOTUyNDFfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX2xtOTUyNDFfZXhp
dCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2xtOTUyNDUuYyBiL2RyaXZlcnMvaHdtb24v
bG05NTI0NS5jCmluZGV4IDVlNWZjMWIuLjlhNDZjMTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdt
b24vbG05NTI0NS5jCisrKyBiL2RyaXZlcnMvaHdtb24vbG05NTI0NS5jCkBAIC01MjUsMTkgKzUy
NSw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBsbTk1MjQ1X2RyaXZlciA9IHsKIAkuYWRk
cmVzc19saXN0CT0gbm9ybWFsX2kyYywKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNf
bG05NTI0NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZsbTk1MjQ1X2Ry
aXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2xtOTUyNDVfZXhpdCh2b2lk
KQotewotCWkyY19kZWxfZHJpdmVyKCZsbTk1MjQ1X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2Ry
aXZlcihsbTk1MjQ1X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkFsZXhhbmRlciBTdGVpbiA8
YWxleGFuZGVyLnN0ZWluQHN5c3RlYy1lbGVjdHJvbmljLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQ
VElPTigiTE05NTI0NSBzZW5zb3IgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0K
LW1vZHVsZV9pbml0KHNlbnNvcnNfbG05NTI0NV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNf
bG05NTI0NV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbHRjNDE1MS5jIGIvZHJp
dmVycy9od21vbi9sdGM0MTUxLmMKaW5kZXggNGFjMDZiNy4uZjY0NmI0NSAxMDA2NDQKLS0tIGEv
ZHJpdmVycy9od21vbi9sdGM0MTUxLmMKKysrIGIvZHJpdmVycy9od21vbi9sdGM0MTUxLmMKQEAg
LTIzOCwxOSArMjM4LDggQEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGx0YzQxNTFfZHJpdmVy
ID0gewogCS5pZF90YWJsZQk9IGx0YzQxNTFfaWQsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBs
dGM0MTUxX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmx0YzQxNTFfZHJp
dmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IGx0YzQxNTFfZXhpdCh2b2lkKQotewotCWky
Y19kZWxfZHJpdmVyKCZsdGM0MTUxX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihsdGM0
MTUxX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlBlciBEYWxlbiA8cGVyLmRhbGVuQGFwcGVh
cnR2LmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTFRDNDE1MSBkcml2ZXIiKTsKIE1PRFVM
RV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQobHRjNDE1MV9pbml0KTsKLW1vZHVsZV9l
eGl0KGx0YzQxNTFfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2x0YzQyMTUuYyBi
L2RyaXZlcnMvaHdtb24vbHRjNDIxNS5jCmluZGV4IGM3ZTZkOGUuLjA3ODliNjMgMTAwNjQ0Ci0t
LSBhL2RyaXZlcnMvaHdtb24vbHRjNDIxNS5jCisrKyBiL2RyaXZlcnMvaHdtb24vbHRjNDIxNS5j
CkBAIC0zMDksMTkgKzMwOSw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBsdGM0MjE1X2Ry
aXZlciA9IHsKIAkuaWRfdGFibGUJPSBsdGM0MjE1X2lkLAogfTsKIAotc3RhdGljIGludCBfX2lu
aXQgbHRjNDIxNV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZsdGM0MjE1
X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBsdGM0MjE1X2V4aXQodm9pZCkKLXsK
LQlpMmNfZGVsX2RyaXZlcigmbHRjNDIxNV9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIo
bHRjNDIxNV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJJcmEgVy4gU255ZGVyIDxpd3NAb3Zy
by5jYWx0ZWNoLmVkdT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTFRDNDIxNSBkcml2ZXIiKTsK
IE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQobHRjNDIxNV9pbml0KTsKLW1v
ZHVsZV9leGl0KGx0YzQyMTVfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2x0YzQy
NDUuYyBiL2RyaXZlcnMvaHdtb24vbHRjNDI0NS5jCmluZGV4IDY1OTMwODMuLjY5M2E2YmQgMTAw
NjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbHRjNDI0NS5jCisrKyBiL2RyaXZlcnMvaHdtb24vbHRj
NDI0NS5jCkBAIC01NzgsMTkgKzU3OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBsdGM0
MjQ1X2RyaXZlciA9IHsKIAkuaWRfdGFibGUJPSBsdGM0MjQ1X2lkLAogfTsKIAotc3RhdGljIGlu
dCBfX2luaXQgbHRjNDI0NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZs
dGM0MjQ1X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBsdGM0MjQ1X2V4aXQodm9p
ZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbHRjNDI0NV9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19k
cml2ZXIobHRjNDI0NV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJJcmEgVy4gU255ZGVyIDxp
d3NAb3Zyby5jYWx0ZWNoLmVkdT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTFRDNDI0NSBkcml2
ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQobHRjNDI0NV9pbml0
KTsKLW1vZHVsZV9leGl0KGx0YzQyNDVfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9u
L2x0YzQyNjEuYyBiL2RyaXZlcnMvaHdtb24vbHRjNDI2MS5jCmluZGV4IGNlNTIzNTUuLmFiMWJm
YmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbHRjNDI2MS5jCisrKyBiL2RyaXZlcnMvaHdt
b24vbHRjNDI2MS5jCkBAIC0yOTcsMTkgKzI5Nyw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZl
ciBsdGM0MjYxX2RyaXZlciA9IHsKIAkuaWRfdGFibGUgPSBsdGM0MjYxX2lkLAogfTsKIAotc3Rh
dGljIGludCBfX2luaXQgbHRjNDI2MV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJp
dmVyKCZsdGM0MjYxX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBsdGM0MjYxX2V4
aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbHRjNDI2MV9kcml2ZXIpOwotfQorbW9kdWxl
X2kyY19kcml2ZXIobHRjNDI2MV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJHdWVudGVyIFJv
ZWNrIDxndWVudGVyLnJvZWNrQGVyaWNzc29uLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigi
TFRDNDI2MSBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQo
bHRjNDI2MV9pbml0KTsKLW1vZHVsZV9leGl0KGx0YzQyNjFfZXhpdCk7CmRpZmYgLS1naXQgYS9k
cml2ZXJzL2h3bW9uL21heDE2MDY1LmMgYi9kcml2ZXJzL2h3bW9uL21heDE2MDY1LmMKaW5kZXgg
ZjhlMzIzYS4uNTFlZGFlOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9tYXgxNjA2NS5jCisr
KyBiL2RyaXZlcnMvaHdtb24vbWF4MTYwNjUuYwpAQCAtNjk5LDE5ICs2OTksOCBAQCBzdGF0aWMg
c3RydWN0IGkyY19kcml2ZXIgbWF4MTYwNjVfZHJpdmVyID0gewogCS5pZF90YWJsZSA9IG1heDE2
MDY1X2lkLAogfTsKIAotc3RhdGljIGludCBfX2luaXQgbWF4MTYwNjVfaW5pdCh2b2lkKQotewot
CXJldHVybiBpMmNfYWRkX2RyaXZlcigmbWF4MTYwNjVfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZv
aWQgX19leGl0IG1heDE2MDY1X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbWF4MTYw
NjVfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKG1heDE2MDY1X2RyaXZlcik7CiAKIE1P
RFVMRV9BVVRIT1IoIkd1ZW50ZXIgUm9lY2sgPGd1ZW50ZXIucm9lY2tAZXJpY3Nzb24uY29tPiIp
OwogTU9EVUxFX0RFU0NSSVBUSU9OKCJNQVgxNjA2NSBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNF
KCJHUEwiKTsKLQotbW9kdWxlX2luaXQobWF4MTYwNjVfaW5pdCk7Ci1tb2R1bGVfZXhpdChtYXgx
NjA2NV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbWF4MTYxOS5jIGIvZHJpdmVy
cy9od21vbi9tYXgxNjE5LmMKaW5kZXggZjE5NTk5Zi4uZWNhYzA0YSAxMDA2NDQKLS0tIGEvZHJp
dmVycy9od21vbi9tYXgxNjE5LmMKKysrIGIvZHJpdmVycy9od21vbi9tYXgxNjE5LmMKQEAgLTM2
MCwyMCArMzYwLDkgQEAgc3RhdGljIHN0cnVjdCBtYXgxNjE5X2RhdGEgKm1heDE2MTlfdXBkYXRl
X2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAKLXN0YXRpYyBp
bnQgX19pbml0IHNlbnNvcnNfbWF4MTYxOV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRf
ZHJpdmVyKCZtYXgxNjE5X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3Jz
X21heDE2MTlfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZtYXgxNjE5X2RyaXZlcik7
Ci19Cittb2R1bGVfaTJjX2RyaXZlcihtYXgxNjE5X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1Io
IkFsZXhleSBGaXNoZXIgPGZpc2hvckBtYWlsLnJ1PiBhbmQgIgogCSJKZWFuIERlbHZhcmUgPGto
YWxpQGxpbnV4LWZyLm9yZz4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTUFYMTYxOSBzZW5zb3Ig
ZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNf
bWF4MTYxOV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfbWF4MTYxOV9leGl0KTsKZGlmZiAt
LWdpdCBhL2RyaXZlcnMvaHdtb24vbWF4MTY2OC5jIGIvZHJpdmVycy9od21vbi9tYXgxNjY4LmMK
aW5kZXggODg5NTNmOS4uMTIyNDlmNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9tYXgxNjY4
LmMKKysrIGIvZHJpdmVycy9od21vbi9tYXgxNjY4LmMKQEAgLTQ4NCwxOSArNDg0LDggQEAgc3Rh
dGljIHN0cnVjdCBpMmNfZHJpdmVyIG1heDE2NjhfZHJpdmVyID0gewogCS5hZGRyZXNzX2xpc3Qg
PSBtYXgxNjY4X2FkZHJfbGlzdCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfbWF4
MTY2OF9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZtYXgxNjY4X2RyaXZl
cik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX21heDE2NjhfZXhpdCh2b2lkKQot
ewotCWkyY19kZWxfZHJpdmVyKCZtYXgxNjY4X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZl
cihtYXgxNjY4X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkRhdmlkIEdlb3JnZSA8ZGF2aWQu
Z2VvcmdlQHNrYS5hYy56YT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTUFYMTY2OCByZW1vdGUg
dGVtcGVyYXR1cmUgc2Vuc29yIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1t
b2R1bGVfaW5pdChzZW5zb3JzX21heDE2NjhfaW5pdCkKLW1vZHVsZV9leGl0KHNlbnNvcnNfbWF4
MTY2OF9leGl0KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9tYXg2NjM5LmMgYi9kcml2ZXJz
L2h3bW9uL21heDY2MzkuYwppbmRleCBlMTBhMDkyLi5kMjAzZWIxIDEwMDY0NAotLS0gYS9kcml2
ZXJzL2h3bW9uL21heDY2MzkuYworKysgYi9kcml2ZXJzL2h3bW9uL21heDY2MzkuYwpAQCAtNjM1
LDE5ICs2MzUsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbWF4NjYzOV9kcml2ZXIgPSB7
CiAJLmFkZHJlc3NfbGlzdCA9IG5vcm1hbF9pMmMsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBt
YXg2NjM5X2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJm1heDY2MzlfZHJp
dmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IG1heDY2MzlfZXhpdCh2b2lkKQotewotCWky
Y19kZWxfZHJpdmVyKCZtYXg2NjM5X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihtYXg2
NjM5X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlJvbGFuZCBTdGlnZ2UgPHN0aWdnZUBhbnRj
b20uZGU+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIm1heDY2MzkgZHJpdmVyIik7CiBNT0RVTEVf
TElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KG1heDY2MzlfaW5pdCk7Ci1tb2R1bGVfZXhp
dChtYXg2NjM5X2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9tYXg2NjQyLmMgYi9k
cml2ZXJzL2h3bW9uL21heDY2NDIuYwppbmRleCAyMDllOGE1Li40Mjk4OTA5IDEwMDY0NAotLS0g
YS9kcml2ZXJzL2h3bW9uL21heDY2NDIuYworKysgYi9kcml2ZXJzL2h3bW9uL21heDY2NDIuYwpA
QCAtMzUyLDE5ICszNTIsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbWF4NjY0Ml9kcml2
ZXIgPSB7CiAJLmFkZHJlc3NfbGlzdAk9IG5vcm1hbF9pMmMsCiB9OwogCi1zdGF0aWMgaW50IF9f
aW5pdCBtYXg2NjQyX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJm1heDY2
NDJfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IG1heDY2NDJfZXhpdCh2b2lkKQot
ewotCWkyY19kZWxfZHJpdmVyKCZtYXg2NjQyX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZl
cihtYXg2NjQyX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlBlciBEYWxlbiA8cGVyLmRhbGVu
QGFwcGVhcnR2LmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTUFYNjY0MiBzZW5zb3IgZHJp
dmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KG1heDY2NDJfaW5p
dCk7Ci1tb2R1bGVfZXhpdChtYXg2NjQyX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21v
bi9tYXg2NjUwLmMgYi9kcml2ZXJzL2h3bW9uL21heDY2NTAuYwppbmRleCAxNTljZTAyLi4zMjk2
ZTZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL21heDY2NTAuYworKysgYi9kcml2ZXJzL2h3
bW9uL21heDY2NTAuYwpAQCAtNzI2LDE5ICs3MjYsOCBAQCBzdGF0aWMgc3RydWN0IG1heDY2NTBf
ZGF0YSAqbWF4NjY1MF91cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1cm4g
ZGF0YTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc19tYXg2NjUwX2luaXQodm9pZCkK
LXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJm1heDY2NTBfZHJpdmVyKTsKLX0KLQotc3RhdGlj
IHZvaWQgX19leGl0IHNlbnNvcnNfbWF4NjY1MF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2
ZXIoJm1heDY2NTBfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKG1heDY2NTBfZHJpdmVy
KTsKIAogTU9EVUxFX0FVVEhPUigiSGFucyBKLiBLb2NoIik7CiBNT0RVTEVfREVTQ1JJUFRJT04o
Ik1BWDY2NTAgc2Vuc29yIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1
bGVfaW5pdChzZW5zb3JzX21heDY2NTBfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX21heDY2
NTBfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3BtYnVzL2FkbTEyNzUuYyBiL2Ry
aXZlcnMvaHdtb24vcG1idXMvYWRtMTI3NS5jCmluZGV4IDgxYzdjMmUuLmZlNTJjM2MgMTAwNjQ0
Ci0tLSBhL2RyaXZlcnMvaHdtb24vcG1idXMvYWRtMTI3NS5jCisrKyBiL2RyaXZlcnMvaHdtb24v
cG1idXMvYWRtMTI3NS5jCkBAIC0zMjYsMTggKzMyNiw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2Ry
aXZlciBhZG0xMjc1X2RyaXZlciA9IHsKIAkuaWRfdGFibGUgPSBhZG0xMjc1X2lkLAogfTsKIAot
c3RhdGljIGludCBfX2luaXQgYWRtMTI3NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRf
ZHJpdmVyKCZhZG0xMjc1X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBhZG0xMjc1
X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmYWRtMTI3NV9kcml2ZXIpOwotfQorbW9k
dWxlX2kyY19kcml2ZXIoYWRtMTI3NV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJHdWVudGVy
IFJvZWNrIik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlBNQnVzIGRyaXZlciBmb3IgQW5hbG9nIERl
dmljZXMgQURNMTI3NSBhbmQgY29tcGF0aWJsZXMiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsK
LW1vZHVsZV9pbml0KGFkbTEyNzVfaW5pdCk7Ci1tb2R1bGVfZXhpdChhZG0xMjc1X2V4aXQpOwpk
aWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9wbWJ1cy9sbTI1MDY2LmMgYi9kcml2ZXJzL2h3bW9u
L3BtYnVzL2xtMjUwNjYuYwppbmRleCA4NGEzN2YwLi44NmFjMTVhIDEwMDY0NAotLS0gYS9kcml2
ZXJzL2h3bW9uL3BtYnVzL2xtMjUwNjYuYworKysgYi9kcml2ZXJzL2h3bW9uL3BtYnVzL2xtMjUw
NjYuYwpAQCAtMzM0LDE4ICszMzQsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbG0yNTA2
Nl9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlID0gbG0yNTA2Nl9pZCwKIH07CiAKLXN0YXRpYyBpbnQg
X19pbml0IGxtMjUwNjZfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmbG0y
NTA2Nl9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgbG0yNTA2Nl9leGl0KHZvaWQp
Ci17Ci0JaTJjX2RlbF9kcml2ZXIoJmxtMjUwNjZfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJp
dmVyKGxtMjUwNjZfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiR3VlbnRlciBSb2VjayIpOwog
TU9EVUxFX0RFU0NSSVBUSU9OKCJQTUJ1cyBkcml2ZXIgZm9yIExNMjUwNjYvTE01MDY0L0xNNTA2
NiIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotbW9kdWxlX2luaXQobG0yNTA2Nl9pbml0KTsK
LW1vZHVsZV9leGl0KGxtMjUwNjZfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3Bt
YnVzL2x0YzI5NzguYyBiL2RyaXZlcnMvaHdtb24vcG1idXMvbHRjMjk3OC5jCmluZGV4IDgyMGZm
ZjQuLmM5ZTRkZDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vcG1idXMvbHRjMjk3OC5jCisr
KyBiL2RyaXZlcnMvaHdtb24vcG1idXMvbHRjMjk3OC5jCkBAIC0zOTEsMTggKzM5MSw4IEBAIHN0
YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBsdGMyOTc4X2RyaXZlciA9IHsKIAkuaWRfdGFibGUgPSBs
dGMyOTc4X2lkLAogfTsKIAotc3RhdGljIGludCBfX2luaXQgbHRjMjk3OF9pbml0KHZvaWQpCi17
Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZsdGMyOTc4X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2
b2lkIF9fZXhpdCBsdGMyOTc4X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbHRjMjk3
OF9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobHRjMjk3OF9kcml2ZXIpOwogCiBNT0RV
TEVfQVVUSE9SKCJHdWVudGVyIFJvZWNrIik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlBNQnVzIGRy
aXZlciBmb3IgTFRDMjk3OCBhbmQgTFRDMzg4MCIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwot
bW9kdWxlX2luaXQobHRjMjk3OF9pbml0KTsKLW1vZHVsZV9leGl0KGx0YzI5NzhfZXhpdCk7CmRp
ZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3BtYnVzL21heDE2MDY0LmMgYi9kcml2ZXJzL2h3bW9u
L3BtYnVzL21heDE2MDY0LmMKaW5kZXggMWQ3N2NmNC4uNWNmZTIwZiAxMDA2NDQKLS0tIGEvZHJp
dmVycy9od21vbi9wbWJ1cy9tYXgxNjA2NC5jCisrKyBiL2RyaXZlcnMvaHdtb24vcG1idXMvbWF4
MTYwNjQuYwpAQCAtMTI2LDE4ICsxMjYsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbWF4
MTYwNjRfZHJpdmVyID0gewogCS5pZF90YWJsZSA9IG1heDE2MDY0X2lkLAogfTsKIAotc3RhdGlj
IGludCBfX2luaXQgbWF4MTYwNjRfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZl
cigmbWF4MTYwNjRfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IG1heDE2MDY0X2V4
aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbWF4MTYwNjRfZHJpdmVyKTsKLX0KK21vZHVs
ZV9pMmNfZHJpdmVyKG1heDE2MDY0X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkd1ZW50ZXIg
Um9lY2siKTsKIE1PRFVMRV9ERVNDUklQVElPTigiUE1CdXMgZHJpdmVyIGZvciBNYXhpbSBNQVgx
NjA2NCIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotbW9kdWxlX2luaXQobWF4MTYwNjRfaW5p
dCk7Ci1tb2R1bGVfZXhpdChtYXgxNjA2NF9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdt
b24vcG1idXMvbWF4MzQ0NDAuYyBiL2RyaXZlcnMvaHdtb24vcG1idXMvbWF4MzQ0NDAuYwppbmRl
eCBiZWFmNWE4Li44OWFlMzAzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3BtYnVzL21heDM0
NDQwLmMKKysrIGIvZHJpdmVycy9od21vbi9wbWJ1cy9tYXgzNDQ0MC5jCkBAIC0yNDgsMTggKzI0
OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBtYXgzNDQ0MF9kcml2ZXIgPSB7CiAJLmlk
X3RhYmxlID0gbWF4MzQ0NDBfaWQsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBtYXgzNDQ0MF9p
bml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZtYXgzNDQ0MF9kcml2ZXIpOwot
fQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgbWF4MzQ0NDBfZXhpdCh2b2lkKQotewotCWkyY19kZWxf
ZHJpdmVyKCZtYXgzNDQ0MF9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobWF4MzQ0NDBf
ZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiR3VlbnRlciBSb2VjayIpOwogTU9EVUxFX0RFU0NS
SVBUSU9OKCJQTUJ1cyBkcml2ZXIgZm9yIE1heGltIE1BWDM0NDQwL01BWDM0NDQxIik7CiBNT0RV
TEVfTElDRU5TRSgiR1BMIik7Ci1tb2R1bGVfaW5pdChtYXgzNDQ0MF9pbml0KTsKLW1vZHVsZV9l
eGl0KG1heDM0NDQwX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9wbWJ1cy9tYXg4
Njg4LmMgYi9kcml2ZXJzL2h3bW9uL3BtYnVzL21heDg2ODguYwppbmRleCBlMmI3NGJiLi44MmM1
OThkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3BtYnVzL21heDg2ODguYworKysgYi9kcml2
ZXJzL2h3bW9uL3BtYnVzL21heDg2ODguYwpAQCAtMjAzLDE4ICsyMDMsOCBAQCBzdGF0aWMgc3Ry
dWN0IGkyY19kcml2ZXIgbWF4ODY4OF9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlID0gbWF4ODY4OF9p
ZCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IG1heDg2ODhfaW5pdCh2b2lkKQotewotCXJldHVy
biBpMmNfYWRkX2RyaXZlcigmbWF4ODY4OF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4
aXQgbWF4ODY4OF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJm1heDg2ODhfZHJpdmVy
KTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKG1heDg2ODhfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhP
UigiR3VlbnRlciBSb2VjayIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJQTUJ1cyBkcml2ZXIgZm9y
IE1heGltIE1BWDg2ODgiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLW1vZHVsZV9pbml0KG1h
eDg2ODhfaW5pdCk7Ci1tb2R1bGVfZXhpdChtYXg4Njg4X2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJp
dmVycy9od21vbi9wbWJ1cy9wbWJ1cy5jIGIvZHJpdmVycy9od21vbi9wbWJ1cy9wbWJ1cy5jCmlu
ZGV4IDE4YTM4NWUuLmRhNWZlMzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vcG1idXMvcG1i
dXMuYworKysgYi9kcml2ZXJzL2h3bW9uL3BtYnVzL3BtYnVzLmMKQEAgLTIyNCwxOCArMjI0LDgg
QEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHBtYnVzX2RyaXZlciA9IHsKIAkuaWRfdGFibGUg
PSBwbWJ1c19pZCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHBtYnVzX2luaXQodm9pZCkKLXsK
LQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJnBtYnVzX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lk
IF9fZXhpdCBwbWJ1c19leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnBtYnVzX2RyaXZl
cik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihwbWJ1c19kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9S
KCJHdWVudGVyIFJvZWNrIik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkdlbmVyaWMgUE1CdXMgZHJp
dmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci1tb2R1bGVfaW5pdChwbWJ1c19pbml0KTsK
LW1vZHVsZV9leGl0KHBtYnVzX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9wbWJ1
cy91Y2Q5MDAwLmMgYi9kcml2ZXJzL2h3bW9uL3BtYnVzL3VjZDkwMDAuYwppbmRleCA0ZmY2Y2Yy
Li43NTlhNTYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3BtYnVzL3VjZDkwMDAuYworKysg
Yi9kcml2ZXJzL2h3bW9uL3BtYnVzL3VjZDkwMDAuYwpAQCAtMjU4LDE4ICsyNTgsOCBAQCBzdGF0
aWMgc3RydWN0IGkyY19kcml2ZXIgdWNkOTAwMF9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlID0gdWNk
OTAwMF9pZCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHVjZDkwMDBfaW5pdCh2b2lkKQotewot
CXJldHVybiBpMmNfYWRkX2RyaXZlcigmdWNkOTAwMF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9p
ZCBfX2V4aXQgdWNkOTAwMF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnVjZDkwMDBf
ZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKHVjZDkwMDBfZHJpdmVyKTsKIAogTU9EVUxF
X0FVVEhPUigiR3VlbnRlciBSb2VjayIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJQTUJ1cyBkcml2
ZXIgZm9yIFRJIFVDRDkweHh4Iik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci1tb2R1bGVfaW5p
dCh1Y2Q5MDAwX2luaXQpOwotbW9kdWxlX2V4aXQodWNkOTAwMF9leGl0KTsKZGlmZiAtLWdpdCBh
L2RyaXZlcnMvaHdtb24vcG1idXMvdWNkOTIwMC5jIGIvZHJpdmVycy9od21vbi9wbWJ1cy91Y2Q5
MjAwLmMKaW5kZXggNmUxYzFhOC4uNjI5ZDBjOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9w
bWJ1cy91Y2Q5MjAwLmMKKysrIGIvZHJpdmVycy9od21vbi9wbWJ1cy91Y2Q5MjAwLmMKQEAgLTE5
MCwxOCArMTkwLDggQEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHVjZDkyMDBfZHJpdmVyID0g
ewogCS5pZF90YWJsZSA9IHVjZDkyMDBfaWQsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCB1Y2Q5
MjAwX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJnVjZDkyMDBfZHJpdmVy
KTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHVjZDkyMDBfZXhpdCh2b2lkKQotewotCWkyY19k
ZWxfZHJpdmVyKCZ1Y2Q5MjAwX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcih1Y2Q5MjAw
X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkd1ZW50ZXIgUm9lY2siKTsKIE1PRFVMRV9ERVND
UklQVElPTigiUE1CdXMgZHJpdmVyIGZvciBUSSBVQ0Q5MjJ4LCBVQ0Q5MjR4Iik7CiBNT0RVTEVf
TElDRU5TRSgiR1BMIik7Ci1tb2R1bGVfaW5pdCh1Y2Q5MjAwX2luaXQpOwotbW9kdWxlX2V4aXQo
dWNkOTIwMF9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vcG1idXMvemw2MTAwLmMg
Yi9kcml2ZXJzL2h3bW9uL3BtYnVzL3psNjEwMC5jCmluZGV4IDQ4YzdiNGEuLjBiYjdiYmEgMTAw
NjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vcG1idXMvemw2MTAwLmMKKysrIGIvZHJpdmVycy9od21v
bi9wbWJ1cy96bDYxMDAuYwpAQCAtMjY4LDE4ICsyNjgsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19k
cml2ZXIgemw2MTAwX2RyaXZlciA9IHsKIAkuaWRfdGFibGUgPSB6bDYxMDBfaWQsCiB9OwogCi1z
dGF0aWMgaW50IF9faW5pdCB6bDYxMDBfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2Ry
aXZlcigmemw2MTAwX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCB6bDYxMDBfZXhp
dCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZ6bDYxMDBfZHJpdmVyKTsKLX0KK21vZHVsZV9p
MmNfZHJpdmVyKHpsNjEwMF9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJHdWVudGVyIFJvZWNr
Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlBNQnVzIGRyaXZlciBmb3IgWkw2MTAwIGFuZCBjb21w
YXRpYmxlcyIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotbW9kdWxlX2luaXQoemw2MTAwX2lu
aXQpOwotbW9kdWxlX2V4aXQoemw2MTAwX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21v
bi9zaHQyMS5jIGIvZHJpdmVycy9od21vbi9zaHQyMS5jCmluZGV4IDE1Mzk4NzguLjZjMmRlZGUg
MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vc2h0MjEuYworKysgYi9kcml2ZXJzL2h3bW9uL3No
dDIxLmMKQEAgLTI2MSwyOCArMjYxLDcgQEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHNodDIx
X2RyaXZlciA9IHsKIAkuaWRfdGFibGUgICAgPSBzaHQyMV9pZCwKIH07CiAKLS8qKgotICogc2h0
MjFfaW5pdCgpIC0gaW5pdGlhbGl6ZSBkcml2ZXIKLSAqCi0gKiBDYWxsZWQgd2hlbiBrZXJuZWwg
aXMgYm9vdGVkIG9yIG1vZHVsZSBpcyBpbnNlcnRlZC4KLSAqIFJldHVybnMgMCBvbiBzdWNjZXNz
LgotICovCi1zdGF0aWMgaW50IF9faW5pdCBzaHQyMV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGky
Y19hZGRfZHJpdmVyKCZzaHQyMV9kcml2ZXIpOwotfQotbW9kdWxlX2luaXQoc2h0MjFfaW5pdCk7
Ci0KLS8qKgotICogc2h0MjFfaW5pdCgpIC0gY2xlYW4gdXAgZHJpdmVyCi0gKgotICogQ2FsbGVk
IHdoZW4gbW9kdWxlIGlzIHJlbW92ZWQuCi0gKi8KLXN0YXRpYyB2b2lkIF9fZXhpdCBzaHQyMV9l
eGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnNodDIxX2RyaXZlcik7Ci19Ci1tb2R1bGVf
ZXhpdChzaHQyMV9leGl0KTsKK21vZHVsZV9pMmNfZHJpdmVyKHNodDIxX2RyaXZlcik7CiAKIE1P
RFVMRV9BVVRIT1IoIlVycyBGbGVpc2NoIDx1cnMuZmxlaXNjaEBzZW5zaXJpb24uY29tPiIpOwog
TU9EVUxFX0RFU0NSSVBUSU9OKCJTZW5zaXJpb24gU0hUMjEgaHVtaWRpdHkgYW5kIHRlbXBlcmF0
dXJlIHNlbnNvciBkcml2ZXIiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vc21tNjY1LmMg
Yi9kcml2ZXJzL2h3bW9uL3NtbTY2NS5jCmluZGV4IDFiNDMwMWYuLjI0MzgyYzcgMTAwNjQ0Ci0t
LSBhL2RyaXZlcnMvaHdtb24vc21tNjY1LmMKKysrIGIvZHJpdmVycy9od21vbi9zbW02NjUuYwpA
QCAtNzE4LDE5ICs3MTgsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgc21tNjY1X2RyaXZl
ciA9IHsKIAkuaWRfdGFibGUgPSBzbW02NjVfaWQsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBz
bW02NjVfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmc21tNjY1X2RyaXZl
cik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzbW02NjVfZXhpdCh2b2lkKQotewotCWkyY19k
ZWxfZHJpdmVyKCZzbW02NjVfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKHNtbTY2NV9k
cml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJHdWVudGVyIFJvZWNrIik7CiBNT0RVTEVfREVTQ1JJ
UFRJT04oIlNNTTY2NSBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxl
X2luaXQoc21tNjY1X2luaXQpOwotbW9kdWxlX2V4aXQoc21tNjY1X2V4aXQpOwpkaWZmIC0tZ2l0
IGEvZHJpdmVycy9od21vbi9zbXNjNDdtMTkyLmMgYi9kcml2ZXJzL2h3bW9uL3Ntc2M0N20xOTIu
YwppbmRleCA5NTc2MWJkLi4zMDdlNmE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3Ntc2M0
N20xOTIuYworKysgYi9kcml2ZXJzL2h3bW9uL3Ntc2M0N20xOTIuYwpAQCAtNjY5LDE5ICs2Njks
OCBAQCBzdGF0aWMgc3RydWN0IHNtc2M0N20xOTJfZGF0YSAqc21zYzQ3bTE5Ml91cGRhdGVfZGV2
aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBf
X2luaXQgc21zYzQ3bTE5Ml9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZz
bXNjNDdtMTkyX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzbXNjNDdtMTkyX2V4
aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmc21zYzQ3bTE5Ml9kcml2ZXIpOwotfQorbW9k
dWxlX2kyY19kcml2ZXIoc21zYzQ3bTE5Ml9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJIYXJ0
bXV0IFJpY2sgPGxpbnV4QHJpY2suY2xhcmFuZXQuZGU+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04o
IlNNU0M0N00xOTIgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9p
bml0KHNtc2M0N20xOTJfaW5pdCk7Ci1tb2R1bGVfZXhpdChzbXNjNDdtMTkyX2V4aXQpOwpkaWZm
IC0tZ2l0IGEvZHJpdmVycy9od21vbi90aG1jNTAuYyBiL2RyaXZlcnMvaHdtb24vdGhtYzUwLmMK
aW5kZXggYTE5NTkxNC4uNTFkZGIzNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi90aG1jNTAu
YworKysgYi9kcml2ZXJzL2h3bW9uL3RobWM1MC5jCkBAIC00ODIsMTggKzQ4Miw3IEBAIHN0YXRp
YyBzdHJ1Y3QgdGhtYzUwX2RhdGEgKnRobWM1MF91cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2Ug
KmRldikKIAlyZXR1cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgc21fdGhtYzUwX2lu
aXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJnRobWM1MF9kcml2ZXIpOwotfQot
Ci1zdGF0aWMgdm9pZCBfX2V4aXQgc21fdGhtYzUwX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2Ry
aXZlcigmdGhtYzUwX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcih0aG1jNTBfZHJpdmVy
KTsKIAogTU9EVUxFX0FVVEhPUigiS3J6eXN6dG9mIEhlbHQgPGtyenlzenRvZi5oMUB3cC5wbD4i
KTsKIE1PRFVMRV9ERVNDUklQVElPTigiVEhNQzUwIGRyaXZlciIpOwotCi1tb2R1bGVfaW5pdChz
bV90aG1jNTBfaW5pdCk7Ci1tb2R1bGVfZXhpdChzbV90aG1jNTBfZXhpdCk7CmRpZmYgLS1naXQg
YS9kcml2ZXJzL2h3bW9uL3RtcDEwMi5jIGIvZHJpdmVycy9od21vbi90bXAxMDIuYwppbmRleCBj
MDhlZWUyLi4wZDQ2NmI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3RtcDEwMi5jCisrKyBi
L2RyaXZlcnMvaHdtb24vdG1wMTAyLmMKQEAgLTI5MiwxNyArMjkyLDcgQEAgc3RhdGljIHN0cnVj
dCBpMmNfZHJpdmVyIHRtcDEwMl9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlCT0gdG1wMTAyX2lkLAog
fTsKIAotc3RhdGljIGludCBfX2luaXQgdG1wMTAyX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJj
X2FkZF9kcml2ZXIoJnRtcDEwMl9kcml2ZXIpOwotfQotbW9kdWxlX2luaXQodG1wMTAyX2luaXQp
OwotCi1zdGF0aWMgdm9pZCBfX2V4aXQgdG1wMTAyX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2Ry
aXZlcigmdG1wMTAyX2RyaXZlcik7Ci19Ci1tb2R1bGVfZXhpdCh0bXAxMDJfZXhpdCk7Cittb2R1
bGVfaTJjX2RyaXZlcih0bXAxMDJfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiU3RldmVuIEtp
bmcgPHNma2luZ0BmZHdkYy5jb20+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlRleGFzIEluc3Ry
dW1lbnRzIFRNUDEwMiB0ZW1wZXJhdHVyZSBzZW5zb3IgZHJpdmVyIik7CmRpZmYgLS1naXQgYS9k
cml2ZXJzL2h3bW9uL3RtcDQwMS5jIGIvZHJpdmVycy9od21vbi90bXA0MDEuYwppbmRleCA4Yjlh
Nzc0Li45MmI3ZjFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3RtcDQwMS5jCisrKyBiL2Ry
aXZlcnMvaHdtb24vdG1wNDAxLmMKQEAgLTY2MiwxOSArNjYyLDggQEAgc3RhdGljIHN0cnVjdCBp
MmNfZHJpdmVyIHRtcDQwMV9kcml2ZXIgPSB7CiAJLmFkZHJlc3NfbGlzdAk9IG5vcm1hbF9pMmMs
CiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCB0bXA0MDFfaW5pdCh2b2lkKQotewotCXJldHVybiBp
MmNfYWRkX2RyaXZlcigmdG1wNDAxX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCB0
bXA0MDFfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZ0bXA0MDFfZHJpdmVyKTsKLX0K
K21vZHVsZV9pMmNfZHJpdmVyKHRtcDQwMV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJIYW5z
IGRlIEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJU
ZXhhcyBJbnN0cnVtZW50cyBUTVA0MDEgdGVtcGVyYXR1cmUgc2Vuc29yIGRyaXZlciIpOwogTU9E
VUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdCh0bXA0MDFfaW5pdCk7Ci1tb2R1bGVf
ZXhpdCh0bXA0MDFfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3RtcDQyMS5jIGIv
ZHJpdmVycy9od21vbi90bXA0MjEuYwppbmRleCBjNDgzODFmLi44ZmFjODdhIDEwMDY0NAotLS0g
YS9kcml2ZXJzL2h3bW9uL3RtcDQyMS5jCisrKyBiL2RyaXZlcnMvaHdtb24vdG1wNDIxLmMKQEAg
LTMyNCwyMCArMzI0LDkgQEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHRtcDQyMV9kcml2ZXIg
PSB7CiAJLmFkZHJlc3NfbGlzdCA9IG5vcm1hbF9pMmMsCiB9OwogCi1zdGF0aWMgaW50IF9faW5p
dCB0bXA0MjFfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmdG1wNDIxX2Ry
aXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCB0bXA0MjFfZXhpdCh2b2lkKQotewotCWky
Y19kZWxfZHJpdmVyKCZ0bXA0MjFfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKHRtcDQy
MV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJBbmRyZSBQcmVuZGVsIDxhbmRyZS5wcmVuZGVs
QGdteC5kZT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiVGV4YXMgSW5zdHJ1bWVudHMgVE1QNDIx
LzQyMi80MjMgdGVtcGVyYXR1cmUgc2Vuc29yIgogCQkgICAiIGRyaXZlciIpOwogTU9EVUxFX0xJ
Q0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdCh0bXA0MjFfaW5pdCk7Ci1tb2R1bGVfZXhpdCh0
bXA0MjFfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3c4Mzc5MWQuYyBiL2RyaXZl
cnMvaHdtb24vdzgzNzkxZC5jCmluZGV4IDY3OTE0NmQuLmI5MmYwMWYgMTAwNjQ0Ci0tLSBhL2Ry
aXZlcnMvaHdtb24vdzgzNzkxZC5jCisrKyBiL2RyaXZlcnMvaHdtb24vdzgzNzkxZC5jCkBAIC0x
NjY4LDE5ICsxNjY4LDggQEAgc3RhdGljIHZvaWQgdzgzNzkxZF9wcmludF9kZWJ1ZyhzdHJ1Y3Qg
dzgzNzkxZF9kYXRhICpkYXRhLCBzdHJ1Y3QgZGV2aWNlICpkZXYpCiB9CiAjZW5kaWYKIAotc3Rh
dGljIGludCBfX2luaXQgc2Vuc29yc193ODM3OTFkX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJj
X2FkZF9kcml2ZXIoJnc4Mzc5MWRfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNl
bnNvcnNfdzgzNzkxZF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnc4Mzc5MWRfZHJp
dmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKHc4Mzc5MWRfZHJpdmVyKTsKIAogTU9EVUxFX0FV
VEhPUigiQ2hhcmxlcyBTcGlyYWtpcyA8YmV6YXVyQGdtYWlsLmNvbT4iKTsKIE1PRFVMRV9ERVND
UklQVElPTigiVzgzNzkxRCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9k
dWxlX2luaXQoc2Vuc29yc193ODM3OTFkX2luaXQpOwotbW9kdWxlX2V4aXQoc2Vuc29yc193ODM3
OTFkX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi93ODM3OTJkLmMgYi9kcml2ZXJz
L2h3bW9uL3c4Mzc5MmQuYwppbmRleCBlMzU2NjE4Li4xMTc1ZGNmIDEwMDY0NAotLS0gYS9kcml2
ZXJzL2h3bW9uL3c4Mzc5MmQuYworKysgYi9kcml2ZXJzL2h3bW9uL3c4Mzc5MmQuYwpAQCAtMTcw
OCwyMiArMTcwOCw4IEBAIHN0YXRpYyB2b2lkIHc4Mzc5MmRfcHJpbnRfZGVidWcoc3RydWN0IHc4
Mzc5MmRfZGF0YSAqZGF0YSwgc3RydWN0IGRldmljZSAqZGV2KQogfQogI2VuZGlmCiAKLXN0YXRp
YyBpbnQgX19pbml0Ci1zZW5zb3JzX3c4Mzc5MmRfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNf
YWRkX2RyaXZlcigmdzgzNzkyZF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQKLXNl
bnNvcnNfdzgzNzkyZF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnc4Mzc5MmRfZHJp
dmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKHc4Mzc5MmRfZHJpdmVyKTsKIAogTU9EVUxFX0FV
VEhPUigiQ2h1bmhhbyBIdWFuZyBAIFdpbmJvbmQgPERaU2hlbkBXaW5ib25kLmNvbS50dz4iKTsK
IE1PRFVMRV9ERVNDUklQVElPTigiVzgzNzkyQUQvRCBkcml2ZXIgZm9yIGxpbnV4LTIuNiIpOwog
TU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX3c4Mzc5MmRfaW5p
dCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX3c4Mzc5MmRfZXhpdCk7Ci0KZGlmZiAtLWdpdCBhL2Ry
aXZlcnMvaHdtb24vdzgzNzkzLmMgYi9kcml2ZXJzL2h3bW9uL3c4Mzc5My5jCmluZGV4IDU5Mjlk
NDQuLjQ3Zjk3NWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vdzgzNzkzLmMKKysrIGIvZHJp
dmVycy9od21vbi93ODM3OTMuYwpAQCAtMjE2OSwxOSArMjE2OSw4IEBAIEVORDoKIAlyZXR1cm4g
cmVzOwogfQogCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX3c4Mzc5M19pbml0KHZvaWQpCi17
Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZ3ODM3OTNfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZv
aWQgX19leGl0IHNlbnNvcnNfdzgzNzkzX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigm
dzgzNzkzX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcih3ODM3OTNfZHJpdmVyKTsKIAog
TU9EVUxFX0FVVEhPUigiWXVhbiBNdSwgU3ZlbiBBbmRlcnMiKTsKIE1PRFVMRV9ERVNDUklQVElP
TigidzgzNzkzIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5p
dChzZW5zb3JzX3c4Mzc5M19pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfdzgzNzkzX2V4aXQp
OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi93ODM3OTUuYyBiL2RyaXZlcnMvaHdtb24vdzgz
Nzk1LmMKaW5kZXggYWE1OGIyNS4uZGViMTJjOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi93
ODM3OTUuYworKysgYi9kcml2ZXJzL2h3bW9uL3c4Mzc5NS5jCkBAIC0yMjQ0LDE5ICsyMjQ0LDgg
QEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHc4Mzc5NV9kcml2ZXIgPSB7CiAJLmFkZHJlc3Nf
bGlzdAk9IG5vcm1hbF9pMmMsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX3c4Mzc5
NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZ3ODM3OTVfZHJpdmVyKTsK
LX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfdzgzNzk1X2V4aXQodm9pZCkKLXsKLQlp
MmNfZGVsX2RyaXZlcigmdzgzNzk1X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcih3ODM3
OTVfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiV2VpIFNvbmcsIEplYW4gRGVsdmFyZSA8a2hh
bGlAbGludXgtZnIub3JnPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJXODM3OTVHL0FERyBoYXJk
d2FyZSBtb25pdG9yaW5nIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1
bGVfaW5pdChzZW5zb3JzX3c4Mzc5NV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfdzgzNzk1
X2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi93ODNsNzg1dHMuYyBiL2RyaXZlcnMv
aHdtb24vdzgzbDc4NXRzLmMKaW5kZXggZWRmYzFlYy4uYmMwNzE0NCAxMDA2NDQKLS0tIGEvZHJp
dmVycy9od21vbi93ODNsNzg1dHMuYworKysgYi9kcml2ZXJzL2h3bW9uL3c4M2w3ODV0cy5jCkBA
IC0zMDIsMTkgKzMwMiw4IEBAIHN0YXRpYyBzdHJ1Y3QgdzgzbDc4NXRzX2RhdGEgKnc4M2w3ODV0
c191cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1cm4gZGF0YTsKIH0KIAot
c3RhdGljIGludCBfX2luaXQgc2Vuc29yc193ODNsNzg1dHNfaW5pdCh2b2lkKQotewotCXJldHVy
biBpMmNfYWRkX2RyaXZlcigmdzgzbDc4NXRzX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9f
ZXhpdCBzZW5zb3JzX3c4M2w3ODV0c19leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnc4
M2w3ODV0c19kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIodzgzbDc4NXRzX2RyaXZlcik7
CiAKIE1PRFVMRV9BVVRIT1IoIkplYW4gRGVsdmFyZSA8a2hhbGlAbGludXgtZnIub3JnPiIpOwog
TU9EVUxFX0RFU0NSSVBUSU9OKCJXODNMNzg1VFMtUyBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNF
KCJHUEwiKTsKLQotbW9kdWxlX2luaXQoc2Vuc29yc193ODNsNzg1dHNfaW5pdCk7Ci1tb2R1bGVf
ZXhpdChzZW5zb3JzX3c4M2w3ODV0c19leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24v
dzgzbDc4Nm5nLmMgYi9kcml2ZXJzL2h3bW9uL3c4M2w3ODZuZy5jCmluZGV4IDZlYWM1ZDkuLmE2
MzEwYjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vdzgzbDc4Nm5nLmMKKysrIGIvZHJpdmVy
cy9od21vbi93ODNsNzg2bmcuYwpAQCAtODA2LDIxICs4MDYsOCBAQCBzdGF0aWMgc3RydWN0IHc4
M2w3ODZuZ19kYXRhICp3ODNsNzg2bmdfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYp
CiAJcmV0dXJuIGRhdGE7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0Ci1zZW5zb3JzX3c4M2w3ODZu
Z19pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZ3ODNsNzg2bmdfZHJpdmVy
KTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0Ci1zZW5zb3JzX3c4M2w3ODZuZ19leGl0KHZvaWQp
Ci17Ci0JaTJjX2RlbF9kcml2ZXIoJnc4M2w3ODZuZ19kcml2ZXIpOwotfQorbW9kdWxlX2kyY19k
cml2ZXIodzgzbDc4Nm5nX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIktldmluIExvIik7CiBN
T0RVTEVfREVTQ1JJUFRJT04oInc4M2w3ODZuZyBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJH
UEwiKTsKLQotbW9kdWxlX2luaXQoc2Vuc29yc193ODNsNzg2bmdfaW5pdCk7Ci1tb2R1bGVfZXhp
dChzZW5zb3JzX3c4M2w3ODZuZ19leGl0KTsKLS0gCjEuNy41LjQKCgoKCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxtLXNlbnNvcnMgbWFpbGluZyBsaXN0
CmxtLXNlbnNvcnNAbG0tc2Vuc29ycy5vcmcKaHR0cDovL2xpc3RzLmxtLXNlbnNvcnMub3JnL21h
aWxtYW4vbGlzdGluZm8vbG0tc2Vuc29ycw=
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/2] hwmon: convert drivers/hwmon/* to use module_i2c_driver()
@ 2012-01-20 7:38 ` Axel Lin
0 siblings, 0 replies; 4+ messages in thread
From: Axel Lin @ 2012-01-20 7:38 UTC (permalink / raw)
To: linux-kernel
Cc: Jean Delvare, Guenter Roeck, Corentin Labbe, Dirk Eibach,
Mark M. Hoffman, Steve Glendinning, Riku Voipio,
Guillaume Ligneul, David George, Hans J. Koch, Marc Hulsman,
Rudolf Marek, lm-sensors
This patch converts the drivers in drivers/hwmon/* to use the
module_i2c_driver() macro which makes the code smaller and a bit simpler.
Signed-off-by: Axel Lin <axel.lin@gmail.com>
Cc: Corentin Labbe <corentin.labbe@geomatys.fr>
Cc: Dirk Eibach <eibach@gdsys.de>
Cc: "Mark M. Hoffman" <mhoffman@lightlink.com>
Cc: Steve Glendinning <steve.glendinning@smsc.com>
Cc: Riku Voipio <riku.voipio@iki.fi>
Cc: Guillaume Ligneul <guillaume.ligneul@gmail.com>
Cc: David George <david.george@ska.ac.za>
Cc: "Hans J. Koch" <hjk@hansjkoch.de>
Cc: Marc Hulsman <m.hulsman@tudelft.nl>
Cc: Rudolf Marek <r.marek@assembler.cz>
---
drivers/hwmon/ad7414.c | 12 +-----------
drivers/hwmon/ad7418.c | 13 +------------
drivers/hwmon/adm1021.c | 13 +------------
drivers/hwmon/adm1025.c | 13 +------------
drivers/hwmon/adm1026.c | 13 +------------
drivers/hwmon/adm1029.c | 18 +-----------------
drivers/hwmon/adm1031.c | 13 +------------
drivers/hwmon/adm9240.c | 14 +-------------
drivers/hwmon/ads1015.c | 13 +------------
drivers/hwmon/adt7411.c | 12 +-----------
drivers/hwmon/adt7462.c | 13 +------------
drivers/hwmon/adt7470.c | 13 +------------
drivers/hwmon/adt7475.c | 13 +------------
drivers/hwmon/amc6821.c | 15 +--------------
drivers/hwmon/asb100.c | 13 +------------
drivers/hwmon/atxp1.c | 13 +------------
drivers/hwmon/ds1621.c | 14 +-------------
drivers/hwmon/ds620.c | 13 +------------
drivers/hwmon/emc1403.c | 13 +------------
drivers/hwmon/emc2103.c | 13 +------------
drivers/hwmon/emc6w201.c | 12 +-----------
drivers/hwmon/f75375s.c | 13 +------------
drivers/hwmon/fschmd.c | 13 +------------
drivers/hwmon/g760a.c | 15 +--------------
drivers/hwmon/gl518sm.c | 13 +------------
drivers/hwmon/gl520sm.c | 15 +--------------
drivers/hwmon/jc42.c | 13 +------------
drivers/hwmon/lineage-pem.c | 13 +------------
drivers/hwmon/lm63.c | 13 +------------
drivers/hwmon/lm73.c | 15 +--------------
drivers/hwmon/lm75.c | 17 +----------------
drivers/hwmon/lm77.c | 13 +------------
drivers/hwmon/lm80.c | 13 +------------
drivers/hwmon/lm83.c | 13 +------------
drivers/hwmon/lm85.c | 14 +-------------
drivers/hwmon/lm87.c | 13 +------------
drivers/hwmon/lm90.c | 13 +------------
drivers/hwmon/lm92.c | 13 +------------
drivers/hwmon/lm93.c | 13 +------------
drivers/hwmon/lm95241.c | 13 +------------
drivers/hwmon/lm95245.c | 13 +------------
drivers/hwmon/ltc4151.c | 13 +------------
drivers/hwmon/ltc4215.c | 13 +------------
drivers/hwmon/ltc4245.c | 13 +------------
drivers/hwmon/ltc4261.c | 13 +------------
drivers/hwmon/max16065.c | 13 +------------
drivers/hwmon/max1619.c | 13 +------------
drivers/hwmon/max1668.c | 13 +------------
drivers/hwmon/max6639.c | 13 +------------
drivers/hwmon/max6642.c | 13 +------------
drivers/hwmon/max6650.c | 13 +------------
drivers/hwmon/pmbus/adm1275.c | 12 +-----------
drivers/hwmon/pmbus/lm25066.c | 12 +-----------
drivers/hwmon/pmbus/ltc2978.c | 12 +-----------
drivers/hwmon/pmbus/max16064.c | 12 +-----------
drivers/hwmon/pmbus/max34440.c | 12 +-----------
drivers/hwmon/pmbus/max8688.c | 12 +-----------
drivers/hwmon/pmbus/pmbus.c | 12 +-----------
drivers/hwmon/pmbus/ucd9000.c | 12 +-----------
drivers/hwmon/pmbus/ucd9200.c | 12 +-----------
drivers/hwmon/pmbus/zl6100.c | 12 +-----------
drivers/hwmon/sht21.c | 23 +----------------------
drivers/hwmon/smm665.c | 13 +------------
drivers/hwmon/smsc47m192.c | 13 +------------
drivers/hwmon/thmc50.c | 13 +------------
drivers/hwmon/tmp102.c | 12 +-----------
drivers/hwmon/tmp401.c | 13 +------------
drivers/hwmon/tmp421.c | 13 +------------
drivers/hwmon/w83791d.c | 13 +------------
drivers/hwmon/w83792d.c | 16 +---------------
drivers/hwmon/w83793.c | 13 +------------
drivers/hwmon/w83795.c | 13 +------------
drivers/hwmon/w83l785ts.c | 13 +------------
drivers/hwmon/w83l786ng.c | 15 +--------------
74 files changed, 74 insertions(+), 909 deletions(-)
diff --git a/drivers/hwmon/ad7414.c b/drivers/hwmon/ad7414.c
index edbdb6d..3646500 100644
--- a/drivers/hwmon/ad7414.c
+++ b/drivers/hwmon/ad7414.c
@@ -256,17 +256,7 @@ static struct i2c_driver ad7414_driver = {
.id_table = ad7414_id,
};
-static int __init ad7414_init(void)
-{
- return i2c_add_driver(&ad7414_driver);
-}
-module_init(ad7414_init);
-
-static void __exit ad7414_exit(void)
-{
- i2c_del_driver(&ad7414_driver);
-}
-module_exit(ad7414_exit);
+module_i2c_driver(ad7414_driver);
MODULE_AUTHOR("Stefan Roese <sr at denx.de>, "
"Frank Edelhaeuser <frank.edelhaeuser at spansion.com>");
diff --git a/drivers/hwmon/ad7418.c b/drivers/hwmon/ad7418.c
index 42461d1..a50a6be 100644
--- a/drivers/hwmon/ad7418.c
+++ b/drivers/hwmon/ad7418.c
@@ -295,20 +295,9 @@ static int ad7418_remove(struct i2c_client *client)
return 0;
}
-static int __init ad7418_init(void)
-{
- return i2c_add_driver(&ad7418_driver);
-}
-
-static void __exit ad7418_exit(void)
-{
- i2c_del_driver(&ad7418_driver);
-}
+module_i2c_driver(ad7418_driver);
MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>");
MODULE_DESCRIPTION("AD7416/17/18 driver");
MODULE_LICENSE("GPL");
MODULE_VERSION(DRV_VERSION);
-
-module_init(ad7418_init);
-module_exit(ad7418_exit);
diff --git a/drivers/hwmon/adm1021.c b/drivers/hwmon/adm1021.c
index e6fc006..ec84331 100644
--- a/drivers/hwmon/adm1021.c
+++ b/drivers/hwmon/adm1021.c
@@ -471,15 +471,7 @@ static struct adm1021_data *adm1021_update_device(struct device *dev)
return data;
}
-static int __init sensors_adm1021_init(void)
-{
- return i2c_add_driver(&adm1021_driver);
-}
-
-static void __exit sensors_adm1021_exit(void)
-{
- i2c_del_driver(&adm1021_driver);
-}
+module_i2c_driver(adm1021_driver);
MODULE_AUTHOR("Frodo Looijaard <frodol@dds.nl> and "
"Philip Edelbrock <phil@netroedge.com>");
@@ -488,6 +480,3 @@ MODULE_LICENSE("GPL");
module_param(read_only, bool, 0);
MODULE_PARM_DESC(read_only, "Don't set any values, read only mode");
-
-module_init(sensors_adm1021_init)
-module_exit(sensors_adm1021_exit)
diff --git a/drivers/hwmon/adm1025.c b/drivers/hwmon/adm1025.c
index 14d8997..efbc9c9 100644
--- a/drivers/hwmon/adm1025.c
+++ b/drivers/hwmon/adm1025.c
@@ -618,19 +618,8 @@ static struct adm1025_data *adm1025_update_device(struct device *dev)
return data;
}
-static int __init sensors_adm1025_init(void)
-{
- return i2c_add_driver(&adm1025_driver);
-}
-
-static void __exit sensors_adm1025_exit(void)
-{
- i2c_del_driver(&adm1025_driver);
-}
+module_i2c_driver(adm1025_driver);
MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org>");
MODULE_DESCRIPTION("ADM1025 driver");
MODULE_LICENSE("GPL");
-
-module_init(sensors_adm1025_init);
-module_exit(sensors_adm1025_exit);
diff --git a/drivers/hwmon/adm1026.c b/drivers/hwmon/adm1026.c
index cd773ce..1f4f5de 100644
--- a/drivers/hwmon/adm1026.c
+++ b/drivers/hwmon/adm1026.c
@@ -1881,20 +1881,9 @@ static int adm1026_remove(struct i2c_client *client)
return 0;
}
-static int __init sm_adm1026_init(void)
-{
- return i2c_add_driver(&adm1026_driver);
-}
-
-static void __exit sm_adm1026_exit(void)
-{
- i2c_del_driver(&adm1026_driver);
-}
+module_i2c_driver(adm1026_driver);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Philip Pokorny <ppokorny@penguincomputing.com>, "
"Justin Thiessen <jthiessen@penguincomputing.com>");
MODULE_DESCRIPTION("ADM1026 driver");
-
-module_init(sm_adm1026_init);
-module_exit(sm_adm1026_exit);
diff --git a/drivers/hwmon/adm1029.c b/drivers/hwmon/adm1029.c
index d789c33..c6531a8 100644
--- a/drivers/hwmon/adm1029.c
+++ b/drivers/hwmon/adm1029.c
@@ -450,24 +450,8 @@ static struct adm1029_data *adm1029_update_device(struct device *dev)
return data;
}
-/*
- Common module stuff
-*/
-static int __init sensors_adm1029_init(void)
-{
-
- return i2c_add_driver(&adm1029_driver);
-}
-
-static void __exit sensors_adm1029_exit(void)
-{
-
- i2c_del_driver(&adm1029_driver);
-}
+module_i2c_driver(adm1029_driver);
MODULE_AUTHOR("Corentin LABBE <corentin.labbe@geomatys.fr>");
MODULE_DESCRIPTION("adm1029 driver");
MODULE_LICENSE("GPL v2");
-
-module_init(sensors_adm1029_init);
-module_exit(sensors_adm1029_exit);
diff --git a/drivers/hwmon/adm1031.c b/drivers/hwmon/adm1031.c
index 97e2cfb..71b5ec3 100644
--- a/drivers/hwmon/adm1031.c
+++ b/drivers/hwmon/adm1031.c
@@ -1131,19 +1131,8 @@ static struct adm1031_data *adm1031_update_device(struct device *dev)
return data;
}
-static int __init sensors_adm1031_init(void)
-{
- return i2c_add_driver(&adm1031_driver);
-}
-
-static void __exit sensors_adm1031_exit(void)
-{
- i2c_del_driver(&adm1031_driver);
-}
+module_i2c_driver(adm1031_driver);
MODULE_AUTHOR("Alexandre d'Alton <alex@alexdalton.org>");
MODULE_DESCRIPTION("ADM1031/ADM1030 driver");
MODULE_LICENSE("GPL");
-
-module_init(sensors_adm1031_init);
-module_exit(sensors_adm1031_exit);
diff --git a/drivers/hwmon/adm9240.c b/drivers/hwmon/adm9240.c
index 2de4511..340b842 100644
--- a/drivers/hwmon/adm9240.c
+++ b/drivers/hwmon/adm9240.c
@@ -821,21 +821,9 @@ static struct adm9240_data *adm9240_update_device(struct device *dev)
return data;
}
-static int __init sensors_adm9240_init(void)
-{
- return i2c_add_driver(&adm9240_driver);
-}
-
-static void __exit sensors_adm9240_exit(void)
-{
- i2c_del_driver(&adm9240_driver);
-}
+module_i2c_driver(adm9240_driver);
MODULE_AUTHOR("Michiel Rook <michiel@grendelproject.nl>, "
"Grant Coady <gcoady.lk@gmail.com> and others");
MODULE_DESCRIPTION("ADM9240/DS1780/LM81 driver");
MODULE_LICENSE("GPL");
-
-module_init(sensors_adm9240_init);
-module_exit(sensors_adm9240_exit);
-
diff --git a/drivers/hwmon/ads1015.c b/drivers/hwmon/ads1015.c
index eedca3c..60be358 100644
--- a/drivers/hwmon/ads1015.c
+++ b/drivers/hwmon/ads1015.c
@@ -306,19 +306,8 @@ static struct i2c_driver ads1015_driver = {
.id_table = ads1015_id,
};
-static int __init sensors_ads1015_init(void)
-{
- return i2c_add_driver(&ads1015_driver);
-}
-
-static void __exit sensors_ads1015_exit(void)
-{
- i2c_del_driver(&ads1015_driver);
-}
+module_i2c_driver(ads1015_driver);
MODULE_AUTHOR("Dirk Eibach <eibach@gdsys.de>");
MODULE_DESCRIPTION("ADS1015 driver");
MODULE_LICENSE("GPL");
-
-module_init(sensors_ads1015_init);
-module_exit(sensors_ads1015_exit);
diff --git a/drivers/hwmon/adt7411.c b/drivers/hwmon/adt7411.c
index ffe64f8..71bacc5 100644
--- a/drivers/hwmon/adt7411.c
+++ b/drivers/hwmon/adt7411.c
@@ -348,17 +348,7 @@ static struct i2c_driver adt7411_driver = {
.class = I2C_CLASS_HWMON,
};
-static int __init sensors_adt7411_init(void)
-{
- return i2c_add_driver(&adt7411_driver);
-}
-module_init(sensors_adt7411_init)
-
-static void __exit sensors_adt7411_exit(void)
-{
- i2c_del_driver(&adt7411_driver);
-}
-module_exit(sensors_adt7411_exit)
+module_i2c_driver(adt7411_driver);
MODULE_AUTHOR("Sascha Hauer <s.hauer@pengutronix.de> and "
"Wolfram Sang <w.sang@pengutronix.de>");
diff --git a/drivers/hwmon/adt7462.c b/drivers/hwmon/adt7462.c
index 3df331a..e4b1cc9 100644
--- a/drivers/hwmon/adt7462.c
+++ b/drivers/hwmon/adt7462.c
@@ -1974,19 +1974,8 @@ static int adt7462_remove(struct i2c_client *client)
return 0;
}
-static int __init adt7462_init(void)
-{
- return i2c_add_driver(&adt7462_driver);
-}
-
-static void __exit adt7462_exit(void)
-{
- i2c_del_driver(&adt7462_driver);
-}
+module_i2c_driver(adt7462_driver);
MODULE_AUTHOR("Darrick J. Wong <djwong@us.ibm.com>");
MODULE_DESCRIPTION("ADT7462 driver");
MODULE_LICENSE("GPL");
-
-module_init(adt7462_init);
-module_exit(adt7462_exit);
diff --git a/drivers/hwmon/adt7470.c b/drivers/hwmon/adt7470.c
index b23efd9..54ec890 100644
--- a/drivers/hwmon/adt7470.c
+++ b/drivers/hwmon/adt7470.c
@@ -1317,19 +1317,8 @@ static int adt7470_remove(struct i2c_client *client)
return 0;
}
-static int __init adt7470_init(void)
-{
- return i2c_add_driver(&adt7470_driver);
-}
-
-static void __exit adt7470_exit(void)
-{
- i2c_del_driver(&adt7470_driver);
-}
+module_i2c_driver(adt7470_driver);
MODULE_AUTHOR("Darrick J. Wong <djwong@us.ibm.com>");
MODULE_DESCRIPTION("ADT7470 driver");
MODULE_LICENSE("GPL");
-
-module_init(adt7470_init);
-module_exit(adt7470_exit);
diff --git a/drivers/hwmon/adt7475.c b/drivers/hwmon/adt7475.c
index 71e9ac4..522cb76 100644
--- a/drivers/hwmon/adt7475.c
+++ b/drivers/hwmon/adt7475.c
@@ -1600,19 +1600,8 @@ static struct adt7475_data *adt7475_update_device(struct device *dev)
return data;
}
-static int __init sensors_adt7475_init(void)
-{
- return i2c_add_driver(&adt7475_driver);
-}
-
-static void __exit sensors_adt7475_exit(void)
-{
- i2c_del_driver(&adt7475_driver);
-}
+module_i2c_driver(adt7475_driver);
MODULE_AUTHOR("Advanced Micro Devices, Inc");
MODULE_DESCRIPTION("adt7475 driver");
MODULE_LICENSE("GPL");
-
-module_init(sensors_adt7475_init);
-module_exit(sensors_adt7475_exit);
diff --git a/drivers/hwmon/amc6821.c b/drivers/hwmon/amc6821.c
index 4a4bfef..5298855 100644
--- a/drivers/hwmon/amc6821.c
+++ b/drivers/hwmon/amc6821.c
@@ -1095,20 +1095,7 @@ static struct amc6821_data *amc6821_update_device(struct device *dev)
return data;
}
-
-static int __init amc6821_init(void)
-{
- return i2c_add_driver(&amc6821_driver);
-}
-
-static void __exit amc6821_exit(void)
-{
- i2c_del_driver(&amc6821_driver);
-}
-
-module_init(amc6821_init);
-module_exit(amc6821_exit);
-
+module_i2c_driver(amc6821_driver);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("T. Mertelj <tomaz.mertelj@guest.arnes.si>");
diff --git a/drivers/hwmon/asb100.c b/drivers/hwmon/asb100.c
index a5f1642..573fff5 100644
--- a/drivers/hwmon/asb100.c
+++ b/drivers/hwmon/asb100.c
@@ -1002,19 +1002,8 @@ static struct asb100_data *asb100_update_device(struct device *dev)
return data;
}
-static int __init asb100_init(void)
-{
- return i2c_add_driver(&asb100_driver);
-}
-
-static void __exit asb100_exit(void)
-{
- i2c_del_driver(&asb100_driver);
-}
+module_i2c_driver(asb100_driver);
MODULE_AUTHOR("Mark M. Hoffman <mhoffman@lightlink.com>");
MODULE_DESCRIPTION("ASB100 Bach driver");
MODULE_LICENSE("GPL");
-
-module_init(asb100_init);
-module_exit(asb100_exit);
diff --git a/drivers/hwmon/atxp1.c b/drivers/hwmon/atxp1.c
index d4a589b..5a671ca 100644
--- a/drivers/hwmon/atxp1.c
+++ b/drivers/hwmon/atxp1.c
@@ -390,15 +390,4 @@ static int atxp1_remove(struct i2c_client *client)
return 0;
};
-static int __init atxp1_init(void)
-{
- return i2c_add_driver(&atxp1_driver);
-};
-
-static void __exit atxp1_exit(void)
-{
- i2c_del_driver(&atxp1_driver);
-};
-
-module_init(atxp1_init);
-module_exit(atxp1_exit);
+module_i2c_driver(atxp1_driver);
diff --git a/drivers/hwmon/ds1621.c b/drivers/hwmon/ds1621.c
index e23a8ab..5dc5489 100644
--- a/drivers/hwmon/ds1621.c
+++ b/drivers/hwmon/ds1621.c
@@ -311,20 +311,8 @@ static struct i2c_driver ds1621_driver = {
.address_list = normal_i2c,
};
-static int __init ds1621_init(void)
-{
- return i2c_add_driver(&ds1621_driver);
-}
-
-static void __exit ds1621_exit(void)
-{
- i2c_del_driver(&ds1621_driver);
-}
-
+module_i2c_driver(ds1621_driver);
MODULE_AUTHOR("Christian W. Zuckschwerdt <zany@triq.net>");
MODULE_DESCRIPTION("DS1621 driver");
MODULE_LICENSE("GPL");
-
-module_init(ds1621_init);
-module_exit(ds1621_exit);
diff --git a/drivers/hwmon/ds620.c b/drivers/hwmon/ds620.c
index 300c3d4..50663ef 100644
--- a/drivers/hwmon/ds620.c
+++ b/drivers/hwmon/ds620.c
@@ -297,19 +297,8 @@ static struct i2c_driver ds620_driver = {
.id_table = ds620_id,
};
-static int __init ds620_init(void)
-{
- return i2c_add_driver(&ds620_driver);
-}
-
-static void __exit ds620_exit(void)
-{
- i2c_del_driver(&ds620_driver);
-}
+module_i2c_driver(ds620_driver);
MODULE_AUTHOR("Roland Stigge <stigge@antcom.de>");
MODULE_DESCRIPTION("DS620 driver");
MODULE_LICENSE("GPL");
-
-module_init(ds620_init);
-module_exit(ds620_exit);
diff --git a/drivers/hwmon/emc1403.c b/drivers/hwmon/emc1403.c
index 270ffab..99ac141 100644
--- a/drivers/hwmon/emc1403.c
+++ b/drivers/hwmon/emc1403.c
@@ -366,18 +366,7 @@ static struct i2c_driver sensor_emc1403 = {
.address_list = emc1403_address_list,
};
-static int __init sensor_emc1403_init(void)
-{
- return i2c_add_driver(&sensor_emc1403);
-}
-
-static void __exit sensor_emc1403_exit(void)
-{
- i2c_del_driver(&sensor_emc1403);
-}
-
-module_init(sensor_emc1403_init);
-module_exit(sensor_emc1403_exit);
+module_i2c_driver(sensor_emc1403);
MODULE_AUTHOR("Kalhan Trisal <kalhan.trisal@intel.com");
MODULE_DESCRIPTION("emc1403 Thermal Driver");
diff --git a/drivers/hwmon/emc2103.c b/drivers/hwmon/emc2103.c
index 8650639..0f51382 100644
--- a/drivers/hwmon/emc2103.c
+++ b/drivers/hwmon/emc2103.c
@@ -722,19 +722,8 @@ static struct i2c_driver emc2103_driver = {
.address_list = normal_i2c,
};
-static int __init sensors_emc2103_init(void)
-{
- return i2c_add_driver(&emc2103_driver);
-}
-
-static void __exit sensors_emc2103_exit(void)
-{
- i2c_del_driver(&emc2103_driver);
-}
+module_i2c_driver(emc2103_driver);
MODULE_AUTHOR("Steve Glendinning <steve.glendinning@smsc.com>");
MODULE_DESCRIPTION("SMSC EMC2103 hwmon driver");
MODULE_LICENSE("GPL");
-
-module_init(sensors_emc2103_init);
-module_exit(sensors_emc2103_exit);
diff --git a/drivers/hwmon/emc6w201.c b/drivers/hwmon/emc6w201.c
index 6ebb9b7..840f511 100644
--- a/drivers/hwmon/emc6w201.c
+++ b/drivers/hwmon/emc6w201.c
@@ -552,17 +552,7 @@ static struct i2c_driver emc6w201_driver = {
.address_list = normal_i2c,
};
-static int __init sensors_emc6w201_init(void)
-{
- return i2c_add_driver(&emc6w201_driver);
-}
-module_init(sensors_emc6w201_init);
-
-static void __exit sensors_emc6w201_exit(void)
-{
- i2c_del_driver(&emc6w201_driver);
-}
-module_exit(sensors_emc6w201_exit);
+module_i2c_driver(emc6w201_driver);
MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org>");
MODULE_DESCRIPTION("SMSC EMC6W201 hardware monitoring driver");
diff --git a/drivers/hwmon/f75375s.c b/drivers/hwmon/f75375s.c
index eedf574..398dbc8 100644
--- a/drivers/hwmon/f75375s.c
+++ b/drivers/hwmon/f75375s.c
@@ -858,19 +858,8 @@ static int f75375_detect(struct i2c_client *client,
return 0;
}
-static int __init sensors_f75375_init(void)
-{
- return i2c_add_driver(&f75375_driver);
-}
-
-static void __exit sensors_f75375_exit(void)
-{
- i2c_del_driver(&f75375_driver);
-}
+module_i2c_driver(f75375_driver);
MODULE_AUTHOR("Riku Voipio");
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("F75373/F75375/F75387 hardware monitoring driver");
-
-module_init(sensors_f75375_init);
-module_exit(sensors_f75375_exit);
diff --git a/drivers/hwmon/fschmd.c b/drivers/hwmon/fschmd.c
index 06cbf77..35ddf6d 100644
--- a/drivers/hwmon/fschmd.c
+++ b/drivers/hwmon/fschmd.c
@@ -1341,20 +1341,9 @@ static struct fschmd_data *fschmd_update_device(struct device *dev)
return data;
}
-static int __init fschmd_init(void)
-{
- return i2c_add_driver(&fschmd_driver);
-}
-
-static void __exit fschmd_exit(void)
-{
- i2c_del_driver(&fschmd_driver);
-}
+module_i2c_driver(fschmd_driver);
MODULE_AUTHOR("Hans de Goede <hdegoede@redhat.com>");
MODULE_DESCRIPTION("FSC Poseidon, Hermes, Scylla, Heracles, Heimdall, Hades "
"and Syleus driver");
MODULE_LICENSE("GPL");
-
-module_init(fschmd_init);
-module_exit(fschmd_exit);
diff --git a/drivers/hwmon/g760a.c b/drivers/hwmon/g760a.c
index 81b6e35..052e304 100644
--- a/drivers/hwmon/g760a.c
+++ b/drivers/hwmon/g760a.c
@@ -250,21 +250,8 @@ static int g760a_remove(struct i2c_client *client)
return 0;
}
-/* module management */
-
-static int __init g760a_init(void)
-{
- return i2c_add_driver(&g760a_driver);
-}
-
-static void __exit g760a_exit(void)
-{
- i2c_del_driver(&g760a_driver);
-}
+module_i2c_driver(g760a_driver);
MODULE_AUTHOR("Herbert Valerio Riedel <hvr@gnu.org>");
MODULE_DESCRIPTION("GMT G760A driver");
MODULE_LICENSE("GPL");
-
-module_init(g760a_init);
-module_exit(g760a_exit);
diff --git a/drivers/hwmon/gl518sm.c b/drivers/hwmon/gl518sm.c
index 8d0f71d..ae193f0 100644
--- a/drivers/hwmon/gl518sm.c
+++ b/drivers/hwmon/gl518sm.c
@@ -710,21 +710,10 @@ static struct gl518_data *gl518_update_device(struct device *dev)
return data;
}
-static int __init sensors_gl518sm_init(void)
-{
- return i2c_add_driver(&gl518_driver);
-}
-
-static void __exit sensors_gl518sm_exit(void)
-{
- i2c_del_driver(&gl518_driver);
-}
+module_i2c_driver(gl518_driver);
MODULE_AUTHOR("Frodo Looijaard <frodol@dds.nl>, "
"Kyosti Malkki <kmalkki@cc.hut.fi> and "
"Hong-Gunn Chew <hglinux@gunnet.org>");
MODULE_DESCRIPTION("GL518SM driver");
MODULE_LICENSE("GPL");
-
-module_init(sensors_gl518sm_init);
-module_exit(sensors_gl518sm_exit);
diff --git a/drivers/hwmon/gl520sm.c b/drivers/hwmon/gl520sm.c
index 1909097..52dadb2 100644
--- a/drivers/hwmon/gl520sm.c
+++ b/drivers/hwmon/gl520sm.c
@@ -979,23 +979,10 @@ static struct gl520_data *gl520_update_device(struct device *dev)
return data;
}
-
-static int __init sensors_gl520sm_init(void)
-{
- return i2c_add_driver(&gl520_driver);
-}
-
-static void __exit sensors_gl520sm_exit(void)
-{
- i2c_del_driver(&gl520_driver);
-}
-
+module_i2c_driver(gl520_driver);
MODULE_AUTHOR("Frodo Looijaard <frodol@dds.nl>, "
"Kyösti Mälkki <kmalkki@cc.hut.fi>, "
"Maarten Deprez <maartendeprez@users.sourceforge.net>");
MODULE_DESCRIPTION("GL520SM driver");
MODULE_LICENSE("GPL");
-
-module_init(sensors_gl520sm_init);
-module_exit(sensors_gl520sm_exit);
diff --git a/drivers/hwmon/jc42.c b/drivers/hwmon/jc42.c
index 28c09ee..308346c 100644
--- a/drivers/hwmon/jc42.c
+++ b/drivers/hwmon/jc42.c
@@ -588,19 +588,8 @@ abort:
return ret;
}
-static int __init sensors_jc42_init(void)
-{
- return i2c_add_driver(&jc42_driver);
-}
-
-static void __exit sensors_jc42_exit(void)
-{
- i2c_del_driver(&jc42_driver);
-}
+module_i2c_driver(jc42_driver);
MODULE_AUTHOR("Guenter Roeck <guenter.roeck@ericsson.com>");
MODULE_DESCRIPTION("JC42 driver");
MODULE_LICENSE("GPL");
-
-module_init(sensors_jc42_init);
-module_exit(sensors_jc42_exit);
diff --git a/drivers/hwmon/lineage-pem.c b/drivers/hwmon/lineage-pem.c
index 58eded2..5b8c9ae 100644
--- a/drivers/hwmon/lineage-pem.c
+++ b/drivers/hwmon/lineage-pem.c
@@ -568,19 +568,8 @@ static struct i2c_driver pem_driver = {
.id_table = pem_id,
};
-static int __init pem_init(void)
-{
- return i2c_add_driver(&pem_driver);
-}
-
-static void __exit pem_exit(void)
-{
- i2c_del_driver(&pem_driver);
-}
+module_i2c_driver(pem_driver);
MODULE_AUTHOR("Guenter Roeck <guenter.roeck@ericsson.com>");
MODULE_DESCRIPTION("Lineage CPL PEM hardware monitoring driver");
MODULE_LICENSE("GPL");
-
-module_init(pem_init);
-module_exit(pem_exit);
diff --git a/drivers/hwmon/lm63.c b/drivers/hwmon/lm63.c
index 5e6457a..15c05cc 100644
--- a/drivers/hwmon/lm63.c
+++ b/drivers/hwmon/lm63.c
@@ -1119,19 +1119,8 @@ static struct lm63_data *lm63_update_device(struct device *dev)
return data;
}
-static int __init sensors_lm63_init(void)
-{
- return i2c_add_driver(&lm63_driver);
-}
-
-static void __exit sensors_lm63_exit(void)
-{
- i2c_del_driver(&lm63_driver);
-}
+module_i2c_driver(lm63_driver);
MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org>");
MODULE_DESCRIPTION("LM63 driver");
MODULE_LICENSE("GPL");
-
-module_init(sensors_lm63_init);
-module_exit(sensors_lm63_exit);
diff --git a/drivers/hwmon/lm73.c b/drivers/hwmon/lm73.c
index 9c8093c..8fa2632 100644
--- a/drivers/hwmon/lm73.c
+++ b/drivers/hwmon/lm73.c
@@ -194,21 +194,8 @@ static struct i2c_driver lm73_driver = {
.address_list = normal_i2c,
};
-/* module glue */
-
-static int __init sensors_lm73_init(void)
-{
- return i2c_add_driver(&lm73_driver);
-}
-
-static void __exit sensors_lm73_exit(void)
-{
- i2c_del_driver(&lm73_driver);
-}
+module_i2c_driver(lm73_driver);
MODULE_AUTHOR("Guillaume Ligneul <guillaume.ligneul@gmail.com>");
MODULE_DESCRIPTION("LM73 driver");
MODULE_LICENSE("GPL");
-
-module_init(sensors_lm73_init);
-module_exit(sensors_lm73_exit);
diff --git a/drivers/hwmon/lm75.c b/drivers/hwmon/lm75.c
index b3311b1..a83f206 100644
--- a/drivers/hwmon/lm75.c
+++ b/drivers/hwmon/lm75.c
@@ -438,23 +438,8 @@ abort:
return ret;
}
-/*-----------------------------------------------------------------------*/
-
-/* module glue */
-
-static int __init sensors_lm75_init(void)
-{
- return i2c_add_driver(&lm75_driver);
-}
-
-static void __exit sensors_lm75_exit(void)
-{
- i2c_del_driver(&lm75_driver);
-}
+module_i2c_driver(lm75_driver);
MODULE_AUTHOR("Frodo Looijaard <frodol@dds.nl>");
MODULE_DESCRIPTION("LM75 driver");
MODULE_LICENSE("GPL");
-
-module_init(sensors_lm75_init);
-module_exit(sensors_lm75_exit);
diff --git a/drivers/hwmon/lm77.c b/drivers/hwmon/lm77.c
index 08f7ffe..d8c1f35 100644
--- a/drivers/hwmon/lm77.c
+++ b/drivers/hwmon/lm77.c
@@ -443,19 +443,8 @@ static struct lm77_data *lm77_update_device(struct device *dev)
return data;
}
-static int __init sensors_lm77_init(void)
-{
- return i2c_add_driver(&lm77_driver);
-}
-
-static void __exit sensors_lm77_exit(void)
-{
- i2c_del_driver(&lm77_driver);
-}
+module_i2c_driver(lm77_driver);
MODULE_AUTHOR("Andras BALI <drewie@freemail.hu>");
MODULE_DESCRIPTION("LM77 driver");
MODULE_LICENSE("GPL");
-
-module_init(sensors_lm77_init);
-module_exit(sensors_lm77_exit);
diff --git a/drivers/hwmon/lm80.c b/drivers/hwmon/lm80.c
index dc6df4e..6a2a777 100644
--- a/drivers/hwmon/lm80.c
+++ b/drivers/hwmon/lm80.c
@@ -697,20 +697,9 @@ done:
return ret;
}
-static int __init sensors_lm80_init(void)
-{
- return i2c_add_driver(&lm80_driver);
-}
-
-static void __exit sensors_lm80_exit(void)
-{
- i2c_del_driver(&lm80_driver);
-}
+module_i2c_driver(lm80_driver);
MODULE_AUTHOR("Frodo Looijaard <frodol@dds.nl> and "
"Philip Edelbrock <phil@netroedge.com>");
MODULE_DESCRIPTION("LM80 driver");
MODULE_LICENSE("GPL");
-
-module_init(sensors_lm80_init);
-module_exit(sensors_lm80_exit);
diff --git a/drivers/hwmon/lm83.c b/drivers/hwmon/lm83.c
index 1fed265..cd45b9d 100644
--- a/drivers/hwmon/lm83.c
+++ b/drivers/hwmon/lm83.c
@@ -430,19 +430,8 @@ static struct lm83_data *lm83_update_device(struct device *dev)
return data;
}
-static int __init sensors_lm83_init(void)
-{
- return i2c_add_driver(&lm83_driver);
-}
-
-static void __exit sensors_lm83_exit(void)
-{
- i2c_del_driver(&lm83_driver);
-}
+module_i2c_driver(lm83_driver);
MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org>");
MODULE_DESCRIPTION("LM83 driver");
MODULE_LICENSE("GPL");
-
-module_init(sensors_lm83_init);
-module_exit(sensors_lm83_exit);
diff --git a/drivers/hwmon/lm85.c b/drivers/hwmon/lm85.c
index 240b7f9..7e46ebb 100644
--- a/drivers/hwmon/lm85.c
+++ b/drivers/hwmon/lm85.c
@@ -1695,22 +1695,10 @@ static struct lm85_data *lm85_update_device(struct device *dev)
return data;
}
-
-static int __init sm_lm85_init(void)
-{
- return i2c_add_driver(&lm85_driver);
-}
-
-static void __exit sm_lm85_exit(void)
-{
- i2c_del_driver(&lm85_driver);
-}
+module_i2c_driver(lm85_driver);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Philip Pokorny <ppokorny@penguincomputing.com>, "
"Margit Schubert-While <margitsw@t-online.de>, "
"Justin Thiessen <jthiessen@penguincomputing.com>");
MODULE_DESCRIPTION("LM85-B, LM85-C driver");
-
-module_init(sm_lm85_init);
-module_exit(sm_lm85_exit);
diff --git a/drivers/hwmon/lm87.c b/drivers/hwmon/lm87.c
index ebf4efd..090f5ef 100644
--- a/drivers/hwmon/lm87.c
+++ b/drivers/hwmon/lm87.c
@@ -1054,19 +1054,8 @@ static struct lm87_data *lm87_update_device(struct device *dev)
return data;
}
-static int __init sensors_lm87_init(void)
-{
- return i2c_add_driver(&lm87_driver);
-}
-
-static void __exit sensors_lm87_exit(void)
-{
- i2c_del_driver(&lm87_driver);
-}
+module_i2c_driver(lm87_driver);
MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org> and others");
MODULE_DESCRIPTION("LM87 driver");
MODULE_LICENSE("GPL");
-
-module_init(sensors_lm87_init);
-module_exit(sensors_lm87_exit);
diff --git a/drivers/hwmon/lm90.c b/drivers/hwmon/lm90.c
index d2dd5f9..248f2b4 100644
--- a/drivers/hwmon/lm90.c
+++ b/drivers/hwmon/lm90.c
@@ -1514,19 +1514,8 @@ static struct i2c_driver lm90_driver = {
.address_list = normal_i2c,
};
-static int __init sensors_lm90_init(void)
-{
- return i2c_add_driver(&lm90_driver);
-}
-
-static void __exit sensors_lm90_exit(void)
-{
- i2c_del_driver(&lm90_driver);
-}
+module_i2c_driver(lm90_driver);
MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org>");
MODULE_DESCRIPTION("LM90/ADM1032 driver");
MODULE_LICENSE("GPL");
-
-module_init(sensors_lm90_init);
-module_exit(sensors_lm90_exit);
diff --git a/drivers/hwmon/lm92.c b/drivers/hwmon/lm92.c
index 95cda41..0fe2f37 100644
--- a/drivers/hwmon/lm92.c
+++ b/drivers/hwmon/lm92.c
@@ -432,19 +432,8 @@ static struct i2c_driver lm92_driver = {
.address_list = normal_i2c,
};
-static int __init sensors_lm92_init(void)
-{
- return i2c_add_driver(&lm92_driver);
-}
-
-static void __exit sensors_lm92_exit(void)
-{
- i2c_del_driver(&lm92_driver);
-}
+module_i2c_driver(lm92_driver);
MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org>");
MODULE_DESCRIPTION("LM92/MAX6635 driver");
MODULE_LICENSE("GPL");
-
-module_init(sensors_lm92_init);
-module_exit(sensors_lm92_exit);
diff --git a/drivers/hwmon/lm93.c b/drivers/hwmon/lm93.c
index d2fc4ac..22ae5f0 100644
--- a/drivers/hwmon/lm93.c
+++ b/drivers/hwmon/lm93.c
@@ -2761,20 +2761,9 @@ static struct i2c_driver lm93_driver = {
.address_list = normal_i2c,
};
-static int __init lm93_init(void)
-{
- return i2c_add_driver(&lm93_driver);
-}
-
-static void __exit lm93_exit(void)
-{
- i2c_del_driver(&lm93_driver);
-}
+module_i2c_driver(lm93_driver);
MODULE_AUTHOR("Mark M. Hoffman <mhoffman@lightlink.com>, "
"Hans J. Koch <hjk@hansjkoch.de>");
MODULE_DESCRIPTION("LM93 driver");
MODULE_LICENSE("GPL");
-
-module_init(lm93_init);
-module_exit(lm93_exit);
diff --git a/drivers/hwmon/lm95241.c b/drivers/hwmon/lm95241.c
index 70bca67..bd8cdb7 100644
--- a/drivers/hwmon/lm95241.c
+++ b/drivers/hwmon/lm95241.c
@@ -455,19 +455,8 @@ static struct i2c_driver lm95241_driver = {
.address_list = normal_i2c,
};
-static int __init sensors_lm95241_init(void)
-{
- return i2c_add_driver(&lm95241_driver);
-}
-
-static void __exit sensors_lm95241_exit(void)
-{
- i2c_del_driver(&lm95241_driver);
-}
+module_i2c_driver(lm95241_driver);
MODULE_AUTHOR("Davide Rizzo <elpa.rizzo@gmail.com>");
MODULE_DESCRIPTION("LM95241 sensor driver");
MODULE_LICENSE("GPL");
-
-module_init(sensors_lm95241_init);
-module_exit(sensors_lm95241_exit);
diff --git a/drivers/hwmon/lm95245.c b/drivers/hwmon/lm95245.c
index 5e5fc1b..9a46c10 100644
--- a/drivers/hwmon/lm95245.c
+++ b/drivers/hwmon/lm95245.c
@@ -525,19 +525,8 @@ static struct i2c_driver lm95245_driver = {
.address_list = normal_i2c,
};
-static int __init sensors_lm95245_init(void)
-{
- return i2c_add_driver(&lm95245_driver);
-}
-
-static void __exit sensors_lm95245_exit(void)
-{
- i2c_del_driver(&lm95245_driver);
-}
+module_i2c_driver(lm95245_driver);
MODULE_AUTHOR("Alexander Stein <alexander.stein@systec-electronic.com>");
MODULE_DESCRIPTION("LM95245 sensor driver");
MODULE_LICENSE("GPL");
-
-module_init(sensors_lm95245_init);
-module_exit(sensors_lm95245_exit);
diff --git a/drivers/hwmon/ltc4151.c b/drivers/hwmon/ltc4151.c
index 4ac06b7..f646b45 100644
--- a/drivers/hwmon/ltc4151.c
+++ b/drivers/hwmon/ltc4151.c
@@ -238,19 +238,8 @@ static struct i2c_driver ltc4151_driver = {
.id_table = ltc4151_id,
};
-static int __init ltc4151_init(void)
-{
- return i2c_add_driver(<c4151_driver);
-}
-
-static void __exit ltc4151_exit(void)
-{
- i2c_del_driver(<c4151_driver);
-}
+module_i2c_driver(ltc4151_driver);
MODULE_AUTHOR("Per Dalen <per.dalen@appeartv.com>");
MODULE_DESCRIPTION("LTC4151 driver");
MODULE_LICENSE("GPL");
-
-module_init(ltc4151_init);
-module_exit(ltc4151_exit);
diff --git a/drivers/hwmon/ltc4215.c b/drivers/hwmon/ltc4215.c
index c7e6d8e..0789b63 100644
--- a/drivers/hwmon/ltc4215.c
+++ b/drivers/hwmon/ltc4215.c
@@ -309,19 +309,8 @@ static struct i2c_driver ltc4215_driver = {
.id_table = ltc4215_id,
};
-static int __init ltc4215_init(void)
-{
- return i2c_add_driver(<c4215_driver);
-}
-
-static void __exit ltc4215_exit(void)
-{
- i2c_del_driver(<c4215_driver);
-}
+module_i2c_driver(ltc4215_driver);
MODULE_AUTHOR("Ira W. Snyder <iws@ovro.caltech.edu>");
MODULE_DESCRIPTION("LTC4215 driver");
MODULE_LICENSE("GPL");
-
-module_init(ltc4215_init);
-module_exit(ltc4215_exit);
diff --git a/drivers/hwmon/ltc4245.c b/drivers/hwmon/ltc4245.c
index 6593083..693a6bd 100644
--- a/drivers/hwmon/ltc4245.c
+++ b/drivers/hwmon/ltc4245.c
@@ -578,19 +578,8 @@ static struct i2c_driver ltc4245_driver = {
.id_table = ltc4245_id,
};
-static int __init ltc4245_init(void)
-{
- return i2c_add_driver(<c4245_driver);
-}
-
-static void __exit ltc4245_exit(void)
-{
- i2c_del_driver(<c4245_driver);
-}
+module_i2c_driver(ltc4245_driver);
MODULE_AUTHOR("Ira W. Snyder <iws@ovro.caltech.edu>");
MODULE_DESCRIPTION("LTC4245 driver");
MODULE_LICENSE("GPL");
-
-module_init(ltc4245_init);
-module_exit(ltc4245_exit);
diff --git a/drivers/hwmon/ltc4261.c b/drivers/hwmon/ltc4261.c
index ce52355..ab1bfbf 100644
--- a/drivers/hwmon/ltc4261.c
+++ b/drivers/hwmon/ltc4261.c
@@ -297,19 +297,8 @@ static struct i2c_driver ltc4261_driver = {
.id_table = ltc4261_id,
};
-static int __init ltc4261_init(void)
-{
- return i2c_add_driver(<c4261_driver);
-}
-
-static void __exit ltc4261_exit(void)
-{
- i2c_del_driver(<c4261_driver);
-}
+module_i2c_driver(ltc4261_driver);
MODULE_AUTHOR("Guenter Roeck <guenter.roeck@ericsson.com>");
MODULE_DESCRIPTION("LTC4261 driver");
MODULE_LICENSE("GPL");
-
-module_init(ltc4261_init);
-module_exit(ltc4261_exit);
diff --git a/drivers/hwmon/max16065.c b/drivers/hwmon/max16065.c
index f8e323a..51edae9 100644
--- a/drivers/hwmon/max16065.c
+++ b/drivers/hwmon/max16065.c
@@ -699,19 +699,8 @@ static struct i2c_driver max16065_driver = {
.id_table = max16065_id,
};
-static int __init max16065_init(void)
-{
- return i2c_add_driver(&max16065_driver);
-}
-
-static void __exit max16065_exit(void)
-{
- i2c_del_driver(&max16065_driver);
-}
+module_i2c_driver(max16065_driver);
MODULE_AUTHOR("Guenter Roeck <guenter.roeck@ericsson.com>");
MODULE_DESCRIPTION("MAX16065 driver");
MODULE_LICENSE("GPL");
-
-module_init(max16065_init);
-module_exit(max16065_exit);
diff --git a/drivers/hwmon/max1619.c b/drivers/hwmon/max1619.c
index f19599f..ecac04a 100644
--- a/drivers/hwmon/max1619.c
+++ b/drivers/hwmon/max1619.c
@@ -360,20 +360,9 @@ static struct max1619_data *max1619_update_device(struct device *dev)
return data;
}
-static int __init sensors_max1619_init(void)
-{
- return i2c_add_driver(&max1619_driver);
-}
-
-static void __exit sensors_max1619_exit(void)
-{
- i2c_del_driver(&max1619_driver);
-}
+module_i2c_driver(max1619_driver);
MODULE_AUTHOR("Alexey Fisher <fishor@mail.ru> and "
"Jean Delvare <khali@linux-fr.org>");
MODULE_DESCRIPTION("MAX1619 sensor driver");
MODULE_LICENSE("GPL");
-
-module_init(sensors_max1619_init);
-module_exit(sensors_max1619_exit);
diff --git a/drivers/hwmon/max1668.c b/drivers/hwmon/max1668.c
index 88953f9..12249f7 100644
--- a/drivers/hwmon/max1668.c
+++ b/drivers/hwmon/max1668.c
@@ -484,19 +484,8 @@ static struct i2c_driver max1668_driver = {
.address_list = max1668_addr_list,
};
-static int __init sensors_max1668_init(void)
-{
- return i2c_add_driver(&max1668_driver);
-}
-
-static void __exit sensors_max1668_exit(void)
-{
- i2c_del_driver(&max1668_driver);
-}
+module_i2c_driver(max1668_driver);
MODULE_AUTHOR("David George <david.george@ska.ac.za>");
MODULE_DESCRIPTION("MAX1668 remote temperature sensor driver");
MODULE_LICENSE("GPL");
-
-module_init(sensors_max1668_init)
-module_exit(sensors_max1668_exit)
diff --git a/drivers/hwmon/max6639.c b/drivers/hwmon/max6639.c
index e10a092..d203eb1 100644
--- a/drivers/hwmon/max6639.c
+++ b/drivers/hwmon/max6639.c
@@ -635,19 +635,8 @@ static struct i2c_driver max6639_driver = {
.address_list = normal_i2c,
};
-static int __init max6639_init(void)
-{
- return i2c_add_driver(&max6639_driver);
-}
-
-static void __exit max6639_exit(void)
-{
- i2c_del_driver(&max6639_driver);
-}
+module_i2c_driver(max6639_driver);
MODULE_AUTHOR("Roland Stigge <stigge@antcom.de>");
MODULE_DESCRIPTION("max6639 driver");
MODULE_LICENSE("GPL");
-
-module_init(max6639_init);
-module_exit(max6639_exit);
diff --git a/drivers/hwmon/max6642.c b/drivers/hwmon/max6642.c
index 209e8a5..4298909 100644
--- a/drivers/hwmon/max6642.c
+++ b/drivers/hwmon/max6642.c
@@ -352,19 +352,8 @@ static struct i2c_driver max6642_driver = {
.address_list = normal_i2c,
};
-static int __init max6642_init(void)
-{
- return i2c_add_driver(&max6642_driver);
-}
-
-static void __exit max6642_exit(void)
-{
- i2c_del_driver(&max6642_driver);
-}
+module_i2c_driver(max6642_driver);
MODULE_AUTHOR("Per Dalen <per.dalen@appeartv.com>");
MODULE_DESCRIPTION("MAX6642 sensor driver");
MODULE_LICENSE("GPL");
-
-module_init(max6642_init);
-module_exit(max6642_exit);
diff --git a/drivers/hwmon/max6650.c b/drivers/hwmon/max6650.c
index 159ce02..3296e6e 100644
--- a/drivers/hwmon/max6650.c
+++ b/drivers/hwmon/max6650.c
@@ -726,19 +726,8 @@ static struct max6650_data *max6650_update_device(struct device *dev)
return data;
}
-static int __init sensors_max6650_init(void)
-{
- return i2c_add_driver(&max6650_driver);
-}
-
-static void __exit sensors_max6650_exit(void)
-{
- i2c_del_driver(&max6650_driver);
-}
+module_i2c_driver(max6650_driver);
MODULE_AUTHOR("Hans J. Koch");
MODULE_DESCRIPTION("MAX6650 sensor driver");
MODULE_LICENSE("GPL");
-
-module_init(sensors_max6650_init);
-module_exit(sensors_max6650_exit);
diff --git a/drivers/hwmon/pmbus/adm1275.c b/drivers/hwmon/pmbus/adm1275.c
index 81c7c2e..fe52c3c 100644
--- a/drivers/hwmon/pmbus/adm1275.c
+++ b/drivers/hwmon/pmbus/adm1275.c
@@ -326,18 +326,8 @@ static struct i2c_driver adm1275_driver = {
.id_table = adm1275_id,
};
-static int __init adm1275_init(void)
-{
- return i2c_add_driver(&adm1275_driver);
-}
-
-static void __exit adm1275_exit(void)
-{
- i2c_del_driver(&adm1275_driver);
-}
+module_i2c_driver(adm1275_driver);
MODULE_AUTHOR("Guenter Roeck");
MODULE_DESCRIPTION("PMBus driver for Analog Devices ADM1275 and compatibles");
MODULE_LICENSE("GPL");
-module_init(adm1275_init);
-module_exit(adm1275_exit);
diff --git a/drivers/hwmon/pmbus/lm25066.c b/drivers/hwmon/pmbus/lm25066.c
index 84a37f0..86ac15a 100644
--- a/drivers/hwmon/pmbus/lm25066.c
+++ b/drivers/hwmon/pmbus/lm25066.c
@@ -334,18 +334,8 @@ static struct i2c_driver lm25066_driver = {
.id_table = lm25066_id,
};
-static int __init lm25066_init(void)
-{
- return i2c_add_driver(&lm25066_driver);
-}
-
-static void __exit lm25066_exit(void)
-{
- i2c_del_driver(&lm25066_driver);
-}
+module_i2c_driver(lm25066_driver);
MODULE_AUTHOR("Guenter Roeck");
MODULE_DESCRIPTION("PMBus driver for LM25066/LM5064/LM5066");
MODULE_LICENSE("GPL");
-module_init(lm25066_init);
-module_exit(lm25066_exit);
diff --git a/drivers/hwmon/pmbus/ltc2978.c b/drivers/hwmon/pmbus/ltc2978.c
index 820fff4..c9e4dd2 100644
--- a/drivers/hwmon/pmbus/ltc2978.c
+++ b/drivers/hwmon/pmbus/ltc2978.c
@@ -391,18 +391,8 @@ static struct i2c_driver ltc2978_driver = {
.id_table = ltc2978_id,
};
-static int __init ltc2978_init(void)
-{
- return i2c_add_driver(<c2978_driver);
-}
-
-static void __exit ltc2978_exit(void)
-{
- i2c_del_driver(<c2978_driver);
-}
+module_i2c_driver(ltc2978_driver);
MODULE_AUTHOR("Guenter Roeck");
MODULE_DESCRIPTION("PMBus driver for LTC2978 and LTC3880");
MODULE_LICENSE("GPL");
-module_init(ltc2978_init);
-module_exit(ltc2978_exit);
diff --git a/drivers/hwmon/pmbus/max16064.c b/drivers/hwmon/pmbus/max16064.c
index 1d77cf4..5cfe20f 100644
--- a/drivers/hwmon/pmbus/max16064.c
+++ b/drivers/hwmon/pmbus/max16064.c
@@ -126,18 +126,8 @@ static struct i2c_driver max16064_driver = {
.id_table = max16064_id,
};
-static int __init max16064_init(void)
-{
- return i2c_add_driver(&max16064_driver);
-}
-
-static void __exit max16064_exit(void)
-{
- i2c_del_driver(&max16064_driver);
-}
+module_i2c_driver(max16064_driver);
MODULE_AUTHOR("Guenter Roeck");
MODULE_DESCRIPTION("PMBus driver for Maxim MAX16064");
MODULE_LICENSE("GPL");
-module_init(max16064_init);
-module_exit(max16064_exit);
diff --git a/drivers/hwmon/pmbus/max34440.c b/drivers/hwmon/pmbus/max34440.c
index beaf5a8..89ae303 100644
--- a/drivers/hwmon/pmbus/max34440.c
+++ b/drivers/hwmon/pmbus/max34440.c
@@ -248,18 +248,8 @@ static struct i2c_driver max34440_driver = {
.id_table = max34440_id,
};
-static int __init max34440_init(void)
-{
- return i2c_add_driver(&max34440_driver);
-}
-
-static void __exit max34440_exit(void)
-{
- i2c_del_driver(&max34440_driver);
-}
+module_i2c_driver(max34440_driver);
MODULE_AUTHOR("Guenter Roeck");
MODULE_DESCRIPTION("PMBus driver for Maxim MAX34440/MAX34441");
MODULE_LICENSE("GPL");
-module_init(max34440_init);
-module_exit(max34440_exit);
diff --git a/drivers/hwmon/pmbus/max8688.c b/drivers/hwmon/pmbus/max8688.c
index e2b74bb..82c598d 100644
--- a/drivers/hwmon/pmbus/max8688.c
+++ b/drivers/hwmon/pmbus/max8688.c
@@ -203,18 +203,8 @@ static struct i2c_driver max8688_driver = {
.id_table = max8688_id,
};
-static int __init max8688_init(void)
-{
- return i2c_add_driver(&max8688_driver);
-}
-
-static void __exit max8688_exit(void)
-{
- i2c_del_driver(&max8688_driver);
-}
+module_i2c_driver(max8688_driver);
MODULE_AUTHOR("Guenter Roeck");
MODULE_DESCRIPTION("PMBus driver for Maxim MAX8688");
MODULE_LICENSE("GPL");
-module_init(max8688_init);
-module_exit(max8688_exit);
diff --git a/drivers/hwmon/pmbus/pmbus.c b/drivers/hwmon/pmbus/pmbus.c
index 18a385e..da5fe36 100644
--- a/drivers/hwmon/pmbus/pmbus.c
+++ b/drivers/hwmon/pmbus/pmbus.c
@@ -224,18 +224,8 @@ static struct i2c_driver pmbus_driver = {
.id_table = pmbus_id,
};
-static int __init pmbus_init(void)
-{
- return i2c_add_driver(&pmbus_driver);
-}
-
-static void __exit pmbus_exit(void)
-{
- i2c_del_driver(&pmbus_driver);
-}
+module_i2c_driver(pmbus_driver);
MODULE_AUTHOR("Guenter Roeck");
MODULE_DESCRIPTION("Generic PMBus driver");
MODULE_LICENSE("GPL");
-module_init(pmbus_init);
-module_exit(pmbus_exit);
diff --git a/drivers/hwmon/pmbus/ucd9000.c b/drivers/hwmon/pmbus/ucd9000.c
index 4ff6cf2..759a563 100644
--- a/drivers/hwmon/pmbus/ucd9000.c
+++ b/drivers/hwmon/pmbus/ucd9000.c
@@ -258,18 +258,8 @@ static struct i2c_driver ucd9000_driver = {
.id_table = ucd9000_id,
};
-static int __init ucd9000_init(void)
-{
- return i2c_add_driver(&ucd9000_driver);
-}
-
-static void __exit ucd9000_exit(void)
-{
- i2c_del_driver(&ucd9000_driver);
-}
+module_i2c_driver(ucd9000_driver);
MODULE_AUTHOR("Guenter Roeck");
MODULE_DESCRIPTION("PMBus driver for TI UCD90xxx");
MODULE_LICENSE("GPL");
-module_init(ucd9000_init);
-module_exit(ucd9000_exit);
diff --git a/drivers/hwmon/pmbus/ucd9200.c b/drivers/hwmon/pmbus/ucd9200.c
index 6e1c1a8..629d0c9 100644
--- a/drivers/hwmon/pmbus/ucd9200.c
+++ b/drivers/hwmon/pmbus/ucd9200.c
@@ -190,18 +190,8 @@ static struct i2c_driver ucd9200_driver = {
.id_table = ucd9200_id,
};
-static int __init ucd9200_init(void)
-{
- return i2c_add_driver(&ucd9200_driver);
-}
-
-static void __exit ucd9200_exit(void)
-{
- i2c_del_driver(&ucd9200_driver);
-}
+module_i2c_driver(ucd9200_driver);
MODULE_AUTHOR("Guenter Roeck");
MODULE_DESCRIPTION("PMBus driver for TI UCD922x, UCD924x");
MODULE_LICENSE("GPL");
-module_init(ucd9200_init);
-module_exit(ucd9200_exit);
diff --git a/drivers/hwmon/pmbus/zl6100.c b/drivers/hwmon/pmbus/zl6100.c
index 48c7b4a..0bb7bba 100644
--- a/drivers/hwmon/pmbus/zl6100.c
+++ b/drivers/hwmon/pmbus/zl6100.c
@@ -268,18 +268,8 @@ static struct i2c_driver zl6100_driver = {
.id_table = zl6100_id,
};
-static int __init zl6100_init(void)
-{
- return i2c_add_driver(&zl6100_driver);
-}
-
-static void __exit zl6100_exit(void)
-{
- i2c_del_driver(&zl6100_driver);
-}
+module_i2c_driver(zl6100_driver);
MODULE_AUTHOR("Guenter Roeck");
MODULE_DESCRIPTION("PMBus driver for ZL6100 and compatibles");
MODULE_LICENSE("GPL");
-module_init(zl6100_init);
-module_exit(zl6100_exit);
diff --git a/drivers/hwmon/sht21.c b/drivers/hwmon/sht21.c
index 1539878..6c2dede 100644
--- a/drivers/hwmon/sht21.c
+++ b/drivers/hwmon/sht21.c
@@ -261,28 +261,7 @@ static struct i2c_driver sht21_driver = {
.id_table = sht21_id,
};
-/**
- * sht21_init() - initialize driver
- *
- * Called when kernel is booted or module is inserted.
- * Returns 0 on success.
- */
-static int __init sht21_init(void)
-{
- return i2c_add_driver(&sht21_driver);
-}
-module_init(sht21_init);
-
-/**
- * sht21_init() - clean up driver
- *
- * Called when module is removed.
- */
-static void __exit sht21_exit(void)
-{
- i2c_del_driver(&sht21_driver);
-}
-module_exit(sht21_exit);
+module_i2c_driver(sht21_driver);
MODULE_AUTHOR("Urs Fleisch <urs.fleisch@sensirion.com>");
MODULE_DESCRIPTION("Sensirion SHT21 humidity and temperature sensor driver");
diff --git a/drivers/hwmon/smm665.c b/drivers/hwmon/smm665.c
index 1b4301f..24382c7 100644
--- a/drivers/hwmon/smm665.c
+++ b/drivers/hwmon/smm665.c
@@ -718,19 +718,8 @@ static struct i2c_driver smm665_driver = {
.id_table = smm665_id,
};
-static int __init smm665_init(void)
-{
- return i2c_add_driver(&smm665_driver);
-}
-
-static void __exit smm665_exit(void)
-{
- i2c_del_driver(&smm665_driver);
-}
+module_i2c_driver(smm665_driver);
MODULE_AUTHOR("Guenter Roeck");
MODULE_DESCRIPTION("SMM665 driver");
MODULE_LICENSE("GPL");
-
-module_init(smm665_init);
-module_exit(smm665_exit);
diff --git a/drivers/hwmon/smsc47m192.c b/drivers/hwmon/smsc47m192.c
index 95761bd..307e6a6 100644
--- a/drivers/hwmon/smsc47m192.c
+++ b/drivers/hwmon/smsc47m192.c
@@ -669,19 +669,8 @@ static struct smsc47m192_data *smsc47m192_update_device(struct device *dev)
return data;
}
-static int __init smsc47m192_init(void)
-{
- return i2c_add_driver(&smsc47m192_driver);
-}
-
-static void __exit smsc47m192_exit(void)
-{
- i2c_del_driver(&smsc47m192_driver);
-}
+module_i2c_driver(smsc47m192_driver);
MODULE_AUTHOR("Hartmut Rick <linux@rick.claranet.de>");
MODULE_DESCRIPTION("SMSC47M192 driver");
MODULE_LICENSE("GPL");
-
-module_init(smsc47m192_init);
-module_exit(smsc47m192_exit);
diff --git a/drivers/hwmon/thmc50.c b/drivers/hwmon/thmc50.c
index a195914..51ddb37 100644
--- a/drivers/hwmon/thmc50.c
+++ b/drivers/hwmon/thmc50.c
@@ -482,18 +482,7 @@ static struct thmc50_data *thmc50_update_device(struct device *dev)
return data;
}
-static int __init sm_thmc50_init(void)
-{
- return i2c_add_driver(&thmc50_driver);
-}
-
-static void __exit sm_thmc50_exit(void)
-{
- i2c_del_driver(&thmc50_driver);
-}
+module_i2c_driver(thmc50_driver);
MODULE_AUTHOR("Krzysztof Helt <krzysztof.h1@wp.pl>");
MODULE_DESCRIPTION("THMC50 driver");
-
-module_init(sm_thmc50_init);
-module_exit(sm_thmc50_exit);
diff --git a/drivers/hwmon/tmp102.c b/drivers/hwmon/tmp102.c
index c08eee2..0d466b9 100644
--- a/drivers/hwmon/tmp102.c
+++ b/drivers/hwmon/tmp102.c
@@ -292,17 +292,7 @@ static struct i2c_driver tmp102_driver = {
.id_table = tmp102_id,
};
-static int __init tmp102_init(void)
-{
- return i2c_add_driver(&tmp102_driver);
-}
-module_init(tmp102_init);
-
-static void __exit tmp102_exit(void)
-{
- i2c_del_driver(&tmp102_driver);
-}
-module_exit(tmp102_exit);
+module_i2c_driver(tmp102_driver);
MODULE_AUTHOR("Steven King <sfking@fdwdc.com>");
MODULE_DESCRIPTION("Texas Instruments TMP102 temperature sensor driver");
diff --git a/drivers/hwmon/tmp401.c b/drivers/hwmon/tmp401.c
index 8b9a774..92b7f1b 100644
--- a/drivers/hwmon/tmp401.c
+++ b/drivers/hwmon/tmp401.c
@@ -662,19 +662,8 @@ static struct i2c_driver tmp401_driver = {
.address_list = normal_i2c,
};
-static int __init tmp401_init(void)
-{
- return i2c_add_driver(&tmp401_driver);
-}
-
-static void __exit tmp401_exit(void)
-{
- i2c_del_driver(&tmp401_driver);
-}
+module_i2c_driver(tmp401_driver);
MODULE_AUTHOR("Hans de Goede <hdegoede@redhat.com>");
MODULE_DESCRIPTION("Texas Instruments TMP401 temperature sensor driver");
MODULE_LICENSE("GPL");
-
-module_init(tmp401_init);
-module_exit(tmp401_exit);
diff --git a/drivers/hwmon/tmp421.c b/drivers/hwmon/tmp421.c
index c48381f..8fac87a 100644
--- a/drivers/hwmon/tmp421.c
+++ b/drivers/hwmon/tmp421.c
@@ -324,20 +324,9 @@ static struct i2c_driver tmp421_driver = {
.address_list = normal_i2c,
};
-static int __init tmp421_init(void)
-{
- return i2c_add_driver(&tmp421_driver);
-}
-
-static void __exit tmp421_exit(void)
-{
- i2c_del_driver(&tmp421_driver);
-}
+module_i2c_driver(tmp421_driver);
MODULE_AUTHOR("Andre Prendel <andre.prendel@gmx.de>");
MODULE_DESCRIPTION("Texas Instruments TMP421/422/423 temperature sensor"
" driver");
MODULE_LICENSE("GPL");
-
-module_init(tmp421_init);
-module_exit(tmp421_exit);
diff --git a/drivers/hwmon/w83791d.c b/drivers/hwmon/w83791d.c
index 679146d..b92f01f 100644
--- a/drivers/hwmon/w83791d.c
+++ b/drivers/hwmon/w83791d.c
@@ -1668,19 +1668,8 @@ static void w83791d_print_debug(struct w83791d_data *data, struct device *dev)
}
#endif
-static int __init sensors_w83791d_init(void)
-{
- return i2c_add_driver(&w83791d_driver);
-}
-
-static void __exit sensors_w83791d_exit(void)
-{
- i2c_del_driver(&w83791d_driver);
-}
+module_i2c_driver(w83791d_driver);
MODULE_AUTHOR("Charles Spirakis <bezaur@gmail.com>");
MODULE_DESCRIPTION("W83791D driver");
MODULE_LICENSE("GPL");
-
-module_init(sensors_w83791d_init);
-module_exit(sensors_w83791d_exit);
diff --git a/drivers/hwmon/w83792d.c b/drivers/hwmon/w83792d.c
index e356618..1175dcf 100644
--- a/drivers/hwmon/w83792d.c
+++ b/drivers/hwmon/w83792d.c
@@ -1708,22 +1708,8 @@ static void w83792d_print_debug(struct w83792d_data *data, struct device *dev)
}
#endif
-static int __init
-sensors_w83792d_init(void)
-{
- return i2c_add_driver(&w83792d_driver);
-}
-
-static void __exit
-sensors_w83792d_exit(void)
-{
- i2c_del_driver(&w83792d_driver);
-}
+module_i2c_driver(w83792d_driver);
MODULE_AUTHOR("Chunhao Huang @ Winbond <DZShen@Winbond.com.tw>");
MODULE_DESCRIPTION("W83792AD/D driver for linux-2.6");
MODULE_LICENSE("GPL");
-
-module_init(sensors_w83792d_init);
-module_exit(sensors_w83792d_exit);
-
diff --git a/drivers/hwmon/w83793.c b/drivers/hwmon/w83793.c
index 5929d44..47f975c 100644
--- a/drivers/hwmon/w83793.c
+++ b/drivers/hwmon/w83793.c
@@ -2169,19 +2169,8 @@ END:
return res;
}
-static int __init sensors_w83793_init(void)
-{
- return i2c_add_driver(&w83793_driver);
-}
-
-static void __exit sensors_w83793_exit(void)
-{
- i2c_del_driver(&w83793_driver);
-}
+module_i2c_driver(w83793_driver);
MODULE_AUTHOR("Yuan Mu, Sven Anders");
MODULE_DESCRIPTION("w83793 driver");
MODULE_LICENSE("GPL");
-
-module_init(sensors_w83793_init);
-module_exit(sensors_w83793_exit);
diff --git a/drivers/hwmon/w83795.c b/drivers/hwmon/w83795.c
index aa58b25..deb12c9 100644
--- a/drivers/hwmon/w83795.c
+++ b/drivers/hwmon/w83795.c
@@ -2244,19 +2244,8 @@ static struct i2c_driver w83795_driver = {
.address_list = normal_i2c,
};
-static int __init sensors_w83795_init(void)
-{
- return i2c_add_driver(&w83795_driver);
-}
-
-static void __exit sensors_w83795_exit(void)
-{
- i2c_del_driver(&w83795_driver);
-}
+module_i2c_driver(w83795_driver);
MODULE_AUTHOR("Wei Song, Jean Delvare <khali@linux-fr.org>");
MODULE_DESCRIPTION("W83795G/ADG hardware monitoring driver");
MODULE_LICENSE("GPL");
-
-module_init(sensors_w83795_init);
-module_exit(sensors_w83795_exit);
diff --git a/drivers/hwmon/w83l785ts.c b/drivers/hwmon/w83l785ts.c
index edfc1ec..bc07144 100644
--- a/drivers/hwmon/w83l785ts.c
+++ b/drivers/hwmon/w83l785ts.c
@@ -302,19 +302,8 @@ static struct w83l785ts_data *w83l785ts_update_device(struct device *dev)
return data;
}
-static int __init sensors_w83l785ts_init(void)
-{
- return i2c_add_driver(&w83l785ts_driver);
-}
-
-static void __exit sensors_w83l785ts_exit(void)
-{
- i2c_del_driver(&w83l785ts_driver);
-}
+module_i2c_driver(w83l785ts_driver);
MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org>");
MODULE_DESCRIPTION("W83L785TS-S driver");
MODULE_LICENSE("GPL");
-
-module_init(sensors_w83l785ts_init);
-module_exit(sensors_w83l785ts_exit);
diff --git a/drivers/hwmon/w83l786ng.c b/drivers/hwmon/w83l786ng.c
index 6eac5d9..a6310b8 100644
--- a/drivers/hwmon/w83l786ng.c
+++ b/drivers/hwmon/w83l786ng.c
@@ -806,21 +806,8 @@ static struct w83l786ng_data *w83l786ng_update_device(struct device *dev)
return data;
}
-static int __init
-sensors_w83l786ng_init(void)
-{
- return i2c_add_driver(&w83l786ng_driver);
-}
-
-static void __exit
-sensors_w83l786ng_exit(void)
-{
- i2c_del_driver(&w83l786ng_driver);
-}
+module_i2c_driver(w83l786ng_driver);
MODULE_AUTHOR("Kevin Lo");
MODULE_DESCRIPTION("w83l786ng driver");
MODULE_LICENSE("GPL");
-
-module_init(sensors_w83l786ng_init);
-module_exit(sensors_w83l786ng_exit);
--
1.7.5.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [lm-sensors] [PATCH 1/2] hwmon: convert drivers/hwmon/* to use module_i2c_driver()
2012-01-20 7:38 ` Axel Lin
@ 2012-01-20 9:57 ` Guenter Roeck
-1 siblings, 0 replies; 4+ messages in thread
From: Guenter Roeck @ 2012-01-20 9:57 UTC (permalink / raw)
To: Axel Lin
Cc: linux-kernel@vger.kernel.org, Jean Delvare, Corentin Labbe,
Dirk Eibach, Mark M. Hoffman, Steve Glendinning, Riku Voipio,
Guillaume Ligneul, David George, Hans J. Koch, Marc Hulsman,
Rudolf Marek, lm-sensors@lm-sensors.org
On Fri, Jan 20, 2012 at 02:38:18AM -0500, Axel Lin wrote:
> This patch converts the drivers in drivers/hwmon/* to use the
> module_i2c_driver() macro which makes the code smaller and a bit simpler.
>
> Signed-off-by: Axel Lin <axel.lin@gmail.com>
> Cc: Corentin Labbe <corentin.labbe@geomatys.fr>
> Cc: Dirk Eibach <eibach@gdsys.de>
> Cc: "Mark M. Hoffman" <mhoffman@lightlink.com>
> Cc: Steve Glendinning <steve.glendinning@smsc.com>
> Cc: Riku Voipio <riku.voipio@iki.fi>
> Cc: Guillaume Ligneul <guillaume.ligneul@gmail.com>
> Cc: David George <david.george@ska.ac.za>
> Cc: "Hans J. Koch" <hjk@hansjkoch.de>
> Cc: Marc Hulsman <m.hulsman@tudelft.nl>
> Cc: Rudolf Marek <r.marek@assembler.cz>
> ---
Applied.
Thanks,
Guenter
_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 1/2] hwmon: convert drivers/hwmon/* to use module_i2c_driver()
@ 2012-01-20 9:57 ` Guenter Roeck
0 siblings, 0 replies; 4+ messages in thread
From: Guenter Roeck @ 2012-01-20 9:57 UTC (permalink / raw)
To: Axel Lin
Cc: linux-kernel@vger.kernel.org, Jean Delvare, Corentin Labbe,
Dirk Eibach, Mark M. Hoffman, Steve Glendinning, Riku Voipio,
Guillaume Ligneul, David George, Hans J. Koch, Marc Hulsman,
Rudolf Marek, lm-sensors@lm-sensors.org
On Fri, Jan 20, 2012 at 02:38:18AM -0500, Axel Lin wrote:
> This patch converts the drivers in drivers/hwmon/* to use the
> module_i2c_driver() macro which makes the code smaller and a bit simpler.
>
> Signed-off-by: Axel Lin <axel.lin@gmail.com>
> Cc: Corentin Labbe <corentin.labbe@geomatys.fr>
> Cc: Dirk Eibach <eibach@gdsys.de>
> Cc: "Mark M. Hoffman" <mhoffman@lightlink.com>
> Cc: Steve Glendinning <steve.glendinning@smsc.com>
> Cc: Riku Voipio <riku.voipio@iki.fi>
> Cc: Guillaume Ligneul <guillaume.ligneul@gmail.com>
> Cc: David George <david.george@ska.ac.za>
> Cc: "Hans J. Koch" <hjk@hansjkoch.de>
> Cc: Marc Hulsman <m.hulsman@tudelft.nl>
> Cc: Rudolf Marek <r.marek@assembler.cz>
> ---
Applied.
Thanks,
Guenter
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2012-01-20 10:00 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-01-20 7:38 [lm-sensors] [PATCH 1/2] hwmon: convert drivers/hwmon/* to use module_i2c_driver() Axel Lin
2012-01-20 7:38 ` Axel Lin
2012-01-20 9:57 ` [lm-sensors] " Guenter Roeck
2012-01-20 9:57 ` Guenter Roeck
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.