Date: Thu, 11 Aug 2022 16:30:55 +0800 From: Ganbold Tsagaankhuu <ganbold@gmail.com> To: Ganbold Tsagaankhuu <ganbold@freebsd.org> Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: 0b6d133c08fc - main - Add RockChip RK356X support to existing RockChip thermal driver. Message-ID: <CAGtf9xO0c54EaB02t5CkuXtbm6s2ktPiETDcmkH6aCEd%2BQxBxg@mail.gmail.com> In-Reply-To: <202208110828.27B8Sxd3003739@gitrepo.freebsd.org> References: <202208110828.27B8Sxd3003739@gitrepo.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--0000000000009893db05e5f2fc8b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Aug 11, 2022 at 4:29 PM Ganbold Tsagaankhuu <ganbold@freebsd.org> wrote: > The branch main has been updated by ganbold: > > URL: > https://cgit.FreeBSD.org/src/commit/?id=3D0b6d133c08fcc3ae63228f32429581d= 5764e6fe5 > > commit 0b6d133c08fcc3ae63228f32429581d5764e6fe5 > Author: S=C3=B8ren Schmidt <sos@FreeBSD.org> > AuthorDate: 2022-08-11 08:26:39 +0000 > Commit: Ganbold Tsagaankhuu <ganbold@FreeBSD.org> > CommitDate: 2022-08-11 08:26:39 +0000 > > Add RockChip RK356X support to existing RockChip thermal driver. > --- > sys/arm64/rockchip/rk_tsadc.c | 118 > +++++++++++++++++++++++++++++++++++++----- > 1 file changed, 104 insertions(+), 14 deletions(-) > > diff --git a/sys/arm64/rockchip/rk_tsadc.c b/sys/arm64/rockchip/rk_tsadc.= c > index 9d5d887e27fb..2fdf13a87d79 100644 > --- a/sys/arm64/rockchip/rk_tsadc.c > +++ b/sys/arm64/rockchip/rk_tsadc.c > @@ -55,6 +55,11 @@ __FBSDID("$FreeBSD$"); > #include "syscon_if.h" > #include "rk_tsadc_if.h" > > +/* Version of HW */ > +#define TSADC_V2 1 > +#define TSADC_V3 2 > +#define TSADC_V7 3 > + > /* Global registers */ > #define TSADC_USER_CON 0x000 > #define TSADC_AUTO_CON 0x004 > @@ -78,7 +83,7 @@ __FBSDID("$FreeBSD$"); > #define TSADC_COMP0_LOW_INT 0x080 /* V3 onl= y > */ > #define TSADC_COMP1_LOW_INT 0x084 /* V3 onl= y > */ > > -/* GFR Bits */ > +/* V3 GFR registers */ > #define GRF_SARADC_TESTBIT 0x0e644 > #define GRF_SARADC_TESTBIT_ON (0x10001 > << 2) > #define GRF_TSADC_TESTBIT_L 0x0e648 > @@ -87,6 +92,13 @@ __FBSDID("$FreeBSD$"); > #define GRF_TSADC_VCM_EN_H (0x10001 > << 7) > #define GRF_TSADC_TESTBIT_H_ON (0x10001 > << 2) > > +/* V7 GRF register */ > +#define GRF_TSADC_CON 0x0600 > +#define GRF_TSADC_ANA_REG0 (0x10001 << 0) > +#define GRF_TSADC_ANA_REG1 (0x10001 << 1) > +#define GRF_TSADC_ANA_REG2 (0x10001 << 2) > +#define GRF_TSADC_TSEN (0x10001 << 8) > + > #define WR4(_sc, _r, _v) bus_write_4((_sc)->mem_res, (_r), > (_v)) > #define RD4(_sc, _r) bus_read_4((_sc)->mem_res, (_r)) > > @@ -109,7 +121,7 @@ struct tsadc_calib_info { > }; > > struct tsadc_conf { > - int use_syscon; > + int version; > int q_sel_ntc; > int shutdown_temp; > int shutdown_mode; > @@ -183,7 +195,7 @@ struct tsensor rk3288_tsensors[] =3D { > }; > > struct tsadc_conf rk3288_tsadc_conf =3D { > - .use_syscon =3D 0, > + .version =3D TSADC_V2, > .q_sel_ntc =3D 0, > .shutdown_temp =3D 95000, > .shutdown_mode =3D 1, /* GPIO */ > @@ -237,7 +249,7 @@ static struct tsensor rk3328_tsensors[] =3D { > }; > > static struct tsadc_conf rk3328_tsadc_conf =3D { > - .use_syscon =3D 0, > + .version =3D TSADC_V2, > .q_sel_ntc =3D 1, > .shutdown_temp =3D 95000, > .shutdown_mode =3D 0, /* CRU */ > @@ -293,7 +305,7 @@ static struct tsensor rk3399_tsensors[] =3D { > }; > > static struct tsadc_conf rk3399_tsadc_conf =3D { > - .use_syscon =3D 1, > + .version =3D TSADC_V3, > .q_sel_ntc =3D 1, > .shutdown_temp =3D 95000, > .shutdown_mode =3D 1, /* GPIO */ > @@ -306,10 +318,68 @@ static struct tsadc_conf rk3399_tsadc_conf =3D { > } > }; > > +static struct rk_calib_entry rk3568_calib_data[] =3D { > + {0, -40000}, > + {1584, -40000}, > + {1620, -35000}, > + {1652, -30000}, > + {1688, -25000}, > + {1720, -20000}, > + {1756, -15000}, > + {1788, -10000}, > + {1824, -5000}, > + {1856, 0}, > + {1892, 5000}, > + {1924, 10000}, > + {1956, 15000}, > + {1992, 20000}, > + {2024, 25000}, > + {2060, 30000}, > + {2092, 35000}, > + {2128, 40000}, > + {2160, 45000}, > + {2196, 50000}, > + {2228, 55000}, > + {2264, 60000}, > + {2300, 65000}, > + {2332, 70000}, > + {2368, 75000}, > + {2400, 80000}, > + {2436, 85000}, > + {2468, 90000}, > + {2500, 95000}, > + {2536, 100000}, > + {2572, 105000}, > + {2604, 110000}, > + {2636, 115000}, > + {2672, 120000}, > + {2704, 125000}, > +}; > + > +static struct tsensor rk3568_tsensors[] =3D { > + { .channel =3D 0, .id =3D 0, .name =3D "CPU"}, > + { .channel =3D 1, .id =3D 1, .name =3D "GPU"}, > +}; > + > +static struct tsadc_conf rk3568_tsadc_conf =3D { > + .version =3D TSADC_V7, > + .q_sel_ntc =3D 1, > + .shutdown_temp =3D 95000, > + .shutdown_mode =3D 1, /* GPIO */ > + .shutdown_pol =3D 0, /* Low */ > + .tsensors =3D rk3568_tsensors, > + .ntsensors =3D nitems(rk3568_tsensors), > + .calib_info =3D { > + .table =3D rk3568_calib_data, > + .nentries =3D nitems(rk3568_calib_data), > + } > +}; > + > static struct ofw_compat_data compat_data[] =3D { > {"rockchip,rk3288-tsadc", (uintptr_t)&rk3288_tsadc_conf}, > {"rockchip,rk3328-tsadc", (uintptr_t)&rk3328_tsadc_conf}, > {"rockchip,rk3399-tsadc", (uintptr_t)&rk3399_tsadc_conf}, > + {"rockchip,rk3568-tsadc", (uintptr_t)&rk3568_tsadc_conf}, > {NULL, 0} > }; > > @@ -445,13 +515,15 @@ tsadc_init(struct tsadc_softc *sc) > val |=3D TSADC_AUTO_Q_SEL; > WR4(sc, TSADC_AUTO_CON, val); > > - if (!sc->conf->use_syscon) { > + switch (sc->conf->version) { > + case TSADC_V2: > /* V2 init */ > WR4(sc, TSADC_AUTO_PERIOD, 250); /* 250 ms */ > WR4(sc, TSADC_AUTO_PERIOD_HT, 50); /* 50 ms */ > WR4(sc, TSADC_HIGHT_INT_DEBOUNCE, 4); > WR4(sc, TSADC_HIGHT_TSHUT_DEBOUNCE, 4); > - } else { > + break; > + case TSADC_V3: > /* V3 init */ > if (sc->grf =3D=3D NULL) { > /* Errata: adjust interleave to working value */ > @@ -473,6 +545,26 @@ tsadc_init(struct tsadc_softc *sc) > WR4(sc, TSADC_AUTO_PERIOD_HT, 1875); /* 2.5 ms */ > WR4(sc, TSADC_HIGHT_INT_DEBOUNCE, 4); > WR4(sc, TSADC_HIGHT_TSHUT_DEBOUNCE, 4); > + break; > + case TSADC_V7: > + /* V7 init */ > + WR4(sc, TSADC_USER_CON, 0xfc0); /* 97us, at least > 90us */ > + WR4(sc, TSADC_AUTO_PERIOD, 1622); /* 2.5ms */ > + WR4(sc, TSADC_HIGHT_INT_DEBOUNCE, 4); > + WR4(sc, TSADC_AUTO_PERIOD_HT, 1622); /* 2.5ms */ > + WR4(sc, TSADC_HIGHT_TSHUT_DEBOUNCE, 4); > + if (sc->grf) { > + SYSCON_WRITE_4(sc->grf, GRF_TSADC_CON, > GRF_TSADC_TSEN); > + DELAY(15); /* 10 usec min */ > + SYSCON_WRITE_4(sc->grf, GRF_TSADC_CON, > + GRF_TSADC_ANA_REG0); > + SYSCON_WRITE_4(sc->grf, GRF_TSADC_CON, > + GRF_TSADC_ANA_REG1); > + SYSCON_WRITE_4(sc->grf, GRF_TSADC_CON, > + GRF_TSADC_ANA_REG2); > + DELAY(100); /* 90 usec min */ > + } > + break; > } > } > > @@ -485,13 +577,11 @@ tsadc_read_temp(struct tsadc_softc *sc, struct > tsensor *sensor, int *temp) > *temp =3D tsadc_raw_to_temp(sc, val); > > #ifdef DEBUG > - printf("%s: Sensor(id: %d, ch: %d), temp: %d\n", __func__, > - sensor->id, sensor->channel, *temp); > - printf(" status: 0x%08X, 0x%08X\n", > - RD4(sc, TSADC_USER_CON), > - RD4(sc, TSADC_AUTO_CON)); > - printf(" Data: 0x%08X, 0x%08X, 0x%08X\n", > - RD4(sc, TSADC_DATA(sensor->channel)), > + device_printf(sc->dev, "%s: Sensor(id: %d, ch: %d), val: %d temp: > %d\n", > + __func__, sensor->id, sensor->channel, val, *temp); > + device_printf(sc->dev, "%s: user_con=3D0x%08x auto_con=3D0x%08x " > + "comp_int=3D0x%08x comp_shut=3D0x%08x\n", > + __func__, RD4(sc, TSADC_USER_CON), RD4(sc, TSADC_AUTO_CON), > RD4(sc, TSADC_COMP_INT(sensor->channel)), > RD4(sc, TSADC_COMP_SHUT(sensor->channel))); > #endif > > Sorry, forgot to include https://reviews.freebsd.org/D36137 Ganbold --0000000000009893db05e5f2fc8b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+PGRpdiBkaXI9Imx0ciI+PGJyPjwvZGl2Pjxicj48ZGl2IGNsYXNzPSJn bWFpbF9xdW90ZSI+PGRpdiBkaXI9Imx0ciIgY2xhc3M9ImdtYWlsX2F0dHIiPk9uIFRodSwgQXVn IDExLCAyMDIyIGF0IDQ6MjkgUE0gR2FuYm9sZCBUc2FnYWFua2h1dSAmbHQ7PGEgaHJlZj0ibWFp bHRvOmdhbmJvbGRAZnJlZWJzZC5vcmciPmdhbmJvbGRAZnJlZWJzZC5vcmc8L2E+Jmd0OyB3cm90 ZTo8YnI+PC9kaXY+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2lu OjBweCAwcHggMHB4IDAuOGV4O2JvcmRlci1sZWZ0OjFweCBzb2xpZCByZ2IoMjA0LDIwNCwyMDQp O3BhZGRpbmctbGVmdDoxZXgiPlRoZSBicmFuY2ggbWFpbiBoYXMgYmVlbiB1cGRhdGVkIGJ5IGdh bmJvbGQ6PGJyPg0KPGJyPg0KVVJMOiA8YSBocmVmPSJodHRwczovL2NnaXQuRnJlZUJTRC5vcmcv c3JjL2NvbW1pdC8/aWQ9MGI2ZDEzM2MwOGZjYzNhZTYzMjI4ZjMyNDI5NTgxZDU3NjRlNmZlNSIg cmVsPSJub3JlZmVycmVyIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9jZ2l0LkZyZWVCU0Qub3Jn L3NyYy9jb21taXQvP2lkPTBiNmQxMzNjMDhmY2MzYWU2MzIyOGYzMjQyOTU4MWQ1NzY0ZTZmZTU8 L2E+PGJyPg0KPGJyPg0KY29tbWl0IDBiNmQxMzNjMDhmY2MzYWU2MzIyOGYzMjQyOTU4MWQ1NzY0 ZTZmZTU8YnI+DQpBdXRob3I6wqAgwqAgwqBTw7hyZW4gU2NobWlkdCAmbHQ7c29zQEZyZWVCU0Qu b3JnJmd0Ozxicj4NCkF1dGhvckRhdGU6IDIwMjItMDgtMTEgMDg6MjY6MzkgKzAwMDA8YnI+DQpD b21taXQ6wqAgwqAgwqBHYW5ib2xkIFRzYWdhYW5raHV1ICZsdDtnYW5ib2xkQEZyZWVCU0Qub3Jn Jmd0Ozxicj4NCkNvbW1pdERhdGU6IDIwMjItMDgtMTEgMDg6MjY6MzkgKzAwMDA8YnI+DQo8YnI+ DQrCoCDCoCBBZGQgUm9ja0NoaXAgUkszNTZYIHN1cHBvcnQgdG8gZXhpc3RpbmcgUm9ja0NoaXAg dGhlcm1hbCBkcml2ZXIuPGJyPg0KLS0tPGJyPg0KwqBzeXMvYXJtNjQvcm9ja2NoaXAvcmtfdHNh ZGMuYyB8IDExOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS08YnI+ DQrCoDEgZmlsZSBjaGFuZ2VkLCAxMDQgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pPGJy Pg0KPGJyPg0KZGlmZiAtLWdpdCBhL3N5cy9hcm02NC9yb2NrY2hpcC9ya190c2FkYy5jIGIvc3lz L2FybTY0L3JvY2tjaGlwL3JrX3RzYWRjLmM8YnI+DQppbmRleCA5ZDVkODg3ZTI3ZmIuLjJmZGYx M2E4N2Q3OSAxMDA2NDQ8YnI+DQotLS0gYS9zeXMvYXJtNjQvcm9ja2NoaXAvcmtfdHNhZGMuYzxi cj4NCisrKyBiL3N5cy9hcm02NC9yb2NrY2hpcC9ya190c2FkYy5jPGJyPg0KQEAgLTU1LDYgKzU1 LDExIEBAIF9fRkJTRElEKCZxdW90OyRGcmVlQlNEJCZxdW90Oyk7PGJyPg0KwqAjaW5jbHVkZSAm cXVvdDtzeXNjb25faWYuaCZxdW90Ozxicj4NCsKgI2luY2x1ZGUgJnF1b3Q7cmtfdHNhZGNfaWYu aCZxdW90Ozxicj4NCjxicj4NCisvKiBWZXJzaW9uIG9mIEhXICovPGJyPg0KKyNkZWZpbmXCoCDC oCDCoCDCoCBUU0FEQ19WMsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIDE8YnI+DQorI2RlZmluZcKgIMKgIMKgIMKgIFRTQURDX1YzwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMjxicj4NCisjZGVmaW5lwqAgwqAgwqAg wqAgVFNBRENfVjfCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCAzPGJyPg0KKzxicj4NCsKgLyogR2xvYmFsIHJlZ2lzdGVycyAqLzxicj4NCsKgI2RlZmluZcKg IMKgIMKgIMKgIFRTQURDX1VTRVJfQ09OwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgMHgwMDA8YnI+DQrCoCNkZWZpbmXCoCDCoCDCoCDCoCBUU0FEQ19BVVRPX0NPTsKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDB4MDA0PGJyPg0KQEAgLTc4LDcgKzgz LDcgQEAgX19GQlNESUQoJnF1b3Q7JEZyZWVCU0QkJnF1b3Q7KTs8YnI+DQrCoCNkZWZpbmXCoCDC oCDCoCDCoCBUU0FEQ19DT01QMF9MT1dfSU5UwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAweDA4MMKgIMKgLyogVjMgb25seSAqLzxicj4NCsKgI2RlZmluZcKgIMKgIMKgIMKgIFRTQURD X0NPTVAxX0xPV19JTlTCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDB4MDg0wqAgwqAv KiBWMyBvbmx5ICovPGJyPg0KPGJyPg0KLS8qIEdGUiBCaXRzICovPGJyPg0KKy8qIFYzIEdGUiBy ZWdpc3RlcnMgKi88YnI+DQrCoCNkZWZpbmXCoCDCoCDCoCDCoCBHUkZfU0FSQURDX1RFU1RCSVTC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAweDBlNjQ0PGJyPg0KwqAjZGVmaW5lwqAg wqAgwqAgwqAgwqBHUkZfU0FSQURDX1RFU1RCSVRfT07CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCAoMHgxMDAwMSAmbHQ7Jmx0OyAyKTxicj4NCsKgI2RlZmluZSBHUkZfVFNB RENfVEVTVEJJVF9MwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMHgwZTY0ODxicj4NCkBA IC04Nyw2ICs5MiwxMyBAQCBfX0ZCU0RJRCgmcXVvdDskRnJlZUJTRCQmcXVvdDspOzxicj4NCsKg I2RlZmluZcKgIMKgIMKgIMKgIMKgR1JGX1RTQURDX1ZDTV9FTl9IwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAoMHgxMDAwMSAmbHQ7Jmx0OyA3KTxicj4NCsKgI2Rl ZmluZcKgIMKgIMKgIMKgIMKgR1JGX1RTQURDX1RFU1RCSVRfSF9PTsKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgKDB4MTAwMDEgJmx0OyZsdDsgMik8YnI+DQo8YnI+DQorLyog VjcgR1JGIHJlZ2lzdGVyICovPGJyPg0KKyNkZWZpbmXCoCDCoCDCoCDCoCBHUkZfVFNBRENfQ09O wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAweDA2MDA8YnI+DQorI2Rl ZmluZcKgIMKgIMKgIMKgIMKgR1JGX1RTQURDX0FOQV9SRUcwwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAoMHgxMDAwMSAmbHQ7Jmx0OyAwKTxicj4NCisjZGVmaW5lwqAgwqAgwqAgwqAg wqBHUkZfVFNBRENfQU5BX1JFRzHCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCgweDEw MDAxICZsdDsmbHQ7IDEpPGJyPg0KKyNkZWZpbmXCoCDCoCDCoCDCoCDCoEdSRl9UU0FEQ19BTkFf UkVHMsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKDB4MTAwMDEgJmx0OyZsdDsgMik8 YnI+DQorI2RlZmluZcKgIMKgIMKgIMKgIMKgR1JGX1RTQURDX1RTRU7CoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCgweDEwMDAxICZsdDsmbHQ7IDgpPGJyPg0KKzxicj4NCsKg I2RlZmluZcKgIMKgIMKgIMKgIFdSNChfc2MsIF9yLCBfdinCoCDCoCDCoCDCoCBidXNfd3JpdGVf NCgoX3NjKS0mZ3Q7bWVtX3JlcywgKF9yKSwgKF92KSk8YnI+DQrCoCNkZWZpbmXCoCDCoCDCoCDC oCBSRDQoX3NjLCBfcinCoCDCoCDCoCDCoCDCoCDCoCBidXNfcmVhZF80KChfc2MpLSZndDttZW1f cmVzLCAoX3IpKTxicj4NCjxicj4NCkBAIC0xMDksNyArMTIxLDcgQEAgc3RydWN0IHRzYWRjX2Nh bGliX2luZm8gezxicj4NCsKgfTs8YnI+DQo8YnI+DQrCoHN0cnVjdCB0c2FkY19jb25mIHs8YnI+ DQotwqAgwqAgwqAgwqBpbnTCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHVzZV9zeXNj b247PGJyPg0KK8KgIMKgIMKgIMKgaW50wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB2 ZXJzaW9uOzxicj4NCsKgIMKgIMKgIMKgIGludMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgcV9zZWxfbnRjOzxicj4NCsKgIMKgIMKgIMKgIGludMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgc2h1dGRvd25fdGVtcDs8YnI+DQrCoCDCoCDCoCDCoCBpbnTCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoHNodXRkb3duX21vZGU7PGJyPg0KQEAgLTE4Myw3ICsxOTUsNyBA QCBzdHJ1Y3QgdHNlbnNvciByazMyODhfdHNlbnNvcnNbXSA9IHs8YnI+DQrCoH07PGJyPg0KPGJy Pg0KwqBzdHJ1Y3QgdHNhZGNfY29uZiByazMyODhfdHNhZGNfY29uZiA9IHs8YnI+DQotwqAgwqAg wqAgwqAudXNlX3N5c2NvbiA9wqAgwqAgwqAgwqAgwqAgwqAwLDxicj4NCivCoCDCoCDCoCDCoC52 ZXJzaW9uID3CoCDCoCDCoCDCoCDCoCDCoCDCoCBUU0FEQ19WMiw8YnI+DQrCoCDCoCDCoCDCoCAu cV9zZWxfbnRjID3CoCDCoCDCoCDCoCDCoCDCoCAwLDxicj4NCsKgIMKgIMKgIMKgIC5zaHV0ZG93 bl90ZW1wID3CoCDCoCDCoCDCoCA5NTAwMCw8YnI+DQrCoCDCoCDCoCDCoCAuc2h1dGRvd25fbW9k ZSA9wqAgwqAgwqAgwqAgMSwgLyogR1BJTyAqLzxicj4NCkBAIC0yMzcsNyArMjQ5LDcgQEAgc3Rh dGljIHN0cnVjdCB0c2Vuc29yIHJrMzMyOF90c2Vuc29yc1tdID0gezxicj4NCsKgfTs8YnI+DQo8 YnI+DQrCoHN0YXRpYyBzdHJ1Y3QgdHNhZGNfY29uZiByazMzMjhfdHNhZGNfY29uZiA9IHs8YnI+ DQotwqAgwqAgwqAgwqAudXNlX3N5c2NvbiA9wqAgwqAgwqAgwqAgwqAgwqAwLDxicj4NCivCoCDC oCDCoCDCoC52ZXJzaW9uID3CoCDCoCDCoCDCoCDCoCDCoCDCoCBUU0FEQ19WMiw8YnI+DQrCoCDC oCDCoCDCoCAucV9zZWxfbnRjID3CoCDCoCDCoCDCoCDCoCDCoCAxLDxicj4NCsKgIMKgIMKgIMKg IC5zaHV0ZG93bl90ZW1wID3CoCDCoCDCoCDCoCA5NTAwMCw8YnI+DQrCoCDCoCDCoCDCoCAuc2h1 dGRvd25fbW9kZSA9wqAgwqAgwqAgwqAgMCwgLyogQ1JVICovPGJyPg0KQEAgLTI5Myw3ICszMDUs NyBAQCBzdGF0aWMgc3RydWN0IHRzZW5zb3IgcmszMzk5X3RzZW5zb3JzW10gPSB7PGJyPg0KwqB9 Ozxicj4NCjxicj4NCsKgc3RhdGljIHN0cnVjdCB0c2FkY19jb25mIHJrMzM5OV90c2FkY19jb25m ID0gezxicj4NCi3CoCDCoCDCoCDCoC51c2Vfc3lzY29uID3CoCDCoCDCoCDCoCDCoCDCoDEsPGJy Pg0KK8KgIMKgIMKgIMKgLnZlcnNpb24gPcKgIMKgIMKgIMKgIMKgIMKgIMKgIFRTQURDX1YzLDxi cj4NCsKgIMKgIMKgIMKgIC5xX3NlbF9udGMgPcKgIMKgIMKgIMKgIMKgIMKgIDEsPGJyPg0KwqAg wqAgwqAgwqAgLnNodXRkb3duX3RlbXAgPcKgIMKgIMKgIMKgIDk1MDAwLDxicj4NCsKgIMKgIMKg IMKgIC5zaHV0ZG93bl9tb2RlID3CoCDCoCDCoCDCoCAxLCAvKiBHUElPICovPGJyPg0KQEAgLTMw NiwxMCArMzE4LDY4IEBAIHN0YXRpYyBzdHJ1Y3QgdHNhZGNfY29uZiByazMzOTlfdHNhZGNfY29u ZiA9IHs8YnI+DQrCoCDCoCDCoCDCoCB9PGJyPg0KwqB9Ozxicj4NCjxicj4NCitzdGF0aWMgc3Ry dWN0IHJrX2NhbGliX2VudHJ5IHJrMzU2OF9jYWxpYl9kYXRhW10gPSB7PGJyPg0KK8KgIMKgIMKg IMKgezAsIC00MDAwMH0sPGJyPg0KK8KgIMKgIMKgIMKgezE1ODQsIC00MDAwMH0sPGJyPg0KK8Kg IMKgIMKgIMKgezE2MjAsIC0zNTAwMH0sPGJyPg0KK8KgIMKgIMKgIMKgezE2NTIsIC0zMDAwMH0s PGJyPg0KK8KgIMKgIMKgIMKgezE2ODgsIC0yNTAwMH0sPGJyPg0KK8KgIMKgIMKgIMKgezE3MjAs IC0yMDAwMH0sPGJyPg0KK8KgIMKgIMKgIMKgezE3NTYsIC0xNTAwMH0sPGJyPg0KK8KgIMKgIMKg IMKgezE3ODgsIC0xMDAwMH0sPGJyPg0KK8KgIMKgIMKgIMKgezE4MjQsIC01MDAwfSw8YnI+DQor wqAgwqAgwqAgwqB7MTg1NiwgMH0sPGJyPg0KK8KgIMKgIMKgIMKgezE4OTIsIDUwMDB9LDxicj4N CivCoCDCoCDCoCDCoHsxOTI0LCAxMDAwMH0sPGJyPg0KK8KgIMKgIMKgIMKgezE5NTYsIDE1MDAw fSw8YnI+DQorwqAgwqAgwqAgwqB7MTk5MiwgMjAwMDB9LDxicj4NCivCoCDCoCDCoCDCoHsyMDI0 LCAyNTAwMH0sPGJyPg0KK8KgIMKgIMKgIMKgezIwNjAsIDMwMDAwfSw8YnI+DQorwqAgwqAgwqAg wqB7MjA5MiwgMzUwMDB9LDxicj4NCivCoCDCoCDCoCDCoHsyMTI4LCA0MDAwMH0sPGJyPg0KK8Kg IMKgIMKgIMKgezIxNjAsIDQ1MDAwfSw8YnI+DQorwqAgwqAgwqAgwqB7MjE5NiwgNTAwMDB9LDxi cj4NCivCoCDCoCDCoCDCoHsyMjI4LCA1NTAwMH0sPGJyPg0KK8KgIMKgIMKgIMKgezIyNjQsIDYw MDAwfSw8YnI+DQorwqAgwqAgwqAgwqB7MjMwMCwgNjUwMDB9LDxicj4NCivCoCDCoCDCoCDCoHsy MzMyLCA3MDAwMH0sPGJyPg0KK8KgIMKgIMKgIMKgezIzNjgsIDc1MDAwfSw8YnI+DQorwqAgwqAg wqAgwqB7MjQwMCwgODAwMDB9LDxicj4NCivCoCDCoCDCoCDCoHsyNDM2LCA4NTAwMH0sPGJyPg0K K8KgIMKgIMKgIMKgezI0NjgsIDkwMDAwfSw8YnI+DQorwqAgwqAgwqAgwqB7MjUwMCwgOTUwMDB9 LDxicj4NCivCoCDCoCDCoCDCoHsyNTM2LCAxMDAwMDB9LDxicj4NCivCoCDCoCDCoCDCoHsyNTcy LCAxMDUwMDB9LDxicj4NCivCoCDCoCDCoCDCoHsyNjA0LCAxMTAwMDB9LDxicj4NCivCoCDCoCDC oCDCoHsyNjM2LCAxMTUwMDB9LDxicj4NCivCoCDCoCDCoCDCoHsyNjcyLCAxMjAwMDB9LDxicj4N CivCoCDCoCDCoCDCoHsyNzA0LCAxMjUwMDB9LDxicj4NCit9Ozxicj4NCis8YnI+DQorc3RhdGlj IHN0cnVjdCB0c2Vuc29yIHJrMzU2OF90c2Vuc29yc1tdID0gezxicj4NCivCoCDCoCDCoCDCoHsg LmNoYW5uZWwgPSAwLCAuaWQgPSAwLCAubmFtZSA9ICZxdW90O0NQVSZxdW90O30sPGJyPg0KK8Kg IMKgIMKgIMKgeyAuY2hhbm5lbCA9IDEsIC5pZCA9IDEsIC5uYW1lID0gJnF1b3Q7R1BVJnF1b3Q7 fSw8YnI+DQorfTs8YnI+DQorPGJyPg0KK3N0YXRpYyBzdHJ1Y3QgdHNhZGNfY29uZiByazM1Njhf dHNhZGNfY29uZiA9IHs8YnI+DQorwqAgwqAgwqAgwqAudmVyc2lvbiA9wqAgwqAgwqAgwqAgwqAg wqAgwqAgVFNBRENfVjcsPGJyPg0KK8KgIMKgIMKgIMKgLnFfc2VsX250YyA9wqAgwqAgwqAgwqAg wqAgwqAgMSw8YnI+DQorwqAgwqAgwqAgwqAuc2h1dGRvd25fdGVtcCA9wqAgwqAgwqAgwqAgOTUw MDAsPGJyPg0KK8KgIMKgIMKgIMKgLnNodXRkb3duX21vZGUgPcKgIMKgIMKgIMKgIDEsIC8qIEdQ SU8gKi88YnI+DQorwqAgwqAgwqAgwqAuc2h1dGRvd25fcG9sID3CoCDCoCDCoCDCoCDCoDAsIC8q IExvd8KgICovPGJyPg0KK8KgIMKgIMKgIMKgLnRzZW5zb3JzID3CoCDCoCDCoCDCoCDCoCDCoCDC oHJrMzU2OF90c2Vuc29ycyw8YnI+DQorwqAgwqAgwqAgwqAubnRzZW5zb3JzID3CoCDCoCDCoCDC oCDCoCDCoCBuaXRlbXMocmszNTY4X3RzZW5zb3JzKSw8YnI+DQorwqAgwqAgwqAgwqAuY2FsaWJf aW5mbyA9wqAgwqB7PGJyPg0KK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgLnRh YmxlID0gcmszNTY4X2NhbGliX2RhdGEsPGJyPg0KK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgLm5lbnRyaWVzID0gbml0ZW1zKHJrMzU2OF9jYWxpYl9kYXRhKSw8YnI+DQorwqAg wqAgwqAgwqB9PGJyPg0KK307PGJyPg0KKzxicj4NCsKgc3RhdGljIHN0cnVjdCBvZndfY29tcGF0 X2RhdGEgY29tcGF0X2RhdGFbXSA9IHs8YnI+DQrCoCDCoCDCoCDCoCB7JnF1b3Q7cm9ja2NoaXAs cmszMjg4LXRzYWRjJnF1b3Q7LMKgIMKgIMKgIMKgKHVpbnRwdHJfdCkmYW1wO3JrMzI4OF90c2Fk Y19jb25mfSw8YnI+DQrCoCDCoCDCoCDCoCB7JnF1b3Q7cm9ja2NoaXAscmszMzI4LXRzYWRjJnF1 b3Q7LMKgIMKgIMKgIMKgKHVpbnRwdHJfdCkmYW1wO3JrMzMyOF90c2FkY19jb25mfSw8YnI+DQrC oCDCoCDCoCDCoCB7JnF1b3Q7cm9ja2NoaXAscmszMzk5LXRzYWRjJnF1b3Q7LMKgIMKgIMKgIMKg KHVpbnRwdHJfdCkmYW1wO3JrMzM5OV90c2FkY19jb25mfSw8YnI+DQorwqAgwqAgwqAgwqB7JnF1 b3Q7cm9ja2NoaXAscmszNTY4LXRzYWRjJnF1b3Q7LMKgIMKgIMKgIMKgKHVpbnRwdHJfdCkmYW1w O3JrMzU2OF90c2FkY19jb25mfSw8YnI+DQrCoCDCoCDCoCDCoCB7TlVMTCzCoCDCoCDCoCDCoCDC oCAwfTxicj4NCsKgfTs8YnI+DQo8YnI+DQpAQCAtNDQ1LDEzICs1MTUsMTUgQEAgdHNhZGNfaW5p dChzdHJ1Y3QgdHNhZGNfc29mdGMgKnNjKTxicj4NCsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHZh bCB8PSBUU0FEQ19BVVRPX1FfU0VMOzxicj4NCsKgIMKgIMKgIMKgIFdSNChzYywgVFNBRENfQVVU T19DT04sIHZhbCk7PGJyPg0KPGJyPg0KLcKgIMKgIMKgIMKgaWYgKCFzYy0mZ3Q7Y29uZi0mZ3Q7 dXNlX3N5c2Nvbikgezxicj4NCivCoCDCoCDCoCDCoHN3aXRjaCAoc2MtJmd0O2NvbmYtJmd0O3Zl cnNpb24pIHs8YnI+DQorwqAgwqAgwqAgwqBjYXNlIFRTQURDX1YyOjxicj4NCsKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIC8qIFYyIGluaXQgKi88YnI+DQrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBX UjQoc2MsIFRTQURDX0FVVE9fUEVSSU9ELCAyNTApO8KgIMKgIMKgIMKgIC8qIDI1MCBtcyAqLzxi cj4NCsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFdSNChzYywgVFNBRENfQVVUT19QRVJJT0RfSFQs IDUwKTvCoCDCoCDCoCAvKsKgIDUwIG1zICovPGJyPg0KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg V1I0KHNjLCBUU0FEQ19ISUdIVF9JTlRfREVCT1VOQ0UsIDQpOzxicj4NCsKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIFdSNChzYywgVFNBRENfSElHSFRfVFNIVVRfREVCT1VOQ0UsIDQpOzxicj4NCi3C oCDCoCDCoCDCoH0gZWxzZSB7PGJyPg0KK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgYnJlYWs7PGJy Pg0KK8KgIMKgIMKgIMKgY2FzZSBUU0FEQ19WMzo8YnI+DQrCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCAvKiBWMyBpbml0ICovPGJyPg0KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKHNjLSZndDtn cmYgPT0gTlVMTCkgezxicj4NCsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC8q IEVycmF0YTogYWRqdXN0IGludGVybGVhdmUgdG8gd29ya2luZyB2YWx1ZSAqLzxicj4NCkBAIC00 NzMsNiArNTQ1LDI2IEBAIHRzYWRjX2luaXQoc3RydWN0IHRzYWRjX3NvZnRjICpzYyk8YnI+DQrC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBXUjQoc2MsIFRTQURDX0FVVE9fUEVSSU9EX0hULCAxODc1 KTvCoCDCoCAvKiAyLjUgbXMgKi88YnI+DQrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBXUjQoc2Ms IFRTQURDX0hJR0hUX0lOVF9ERUJPVU5DRSwgNCk7PGJyPg0KwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgV1I0KHNjLCBUU0FEQ19ISUdIVF9UU0hVVF9ERUJPVU5DRSwgNCk7PGJyPg0KK8KgIMKgIMKg IMKgIMKgIMKgIMKgIMKgYnJlYWs7PGJyPg0KK8KgIMKgIMKgIMKgY2FzZSBUU0FEQ19WNzo8YnI+ DQorwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAvKiBWNyBpbml0ICovPGJyPg0KK8KgIMKgIMKgIMKg IMKgIMKgIMKgIMKgV1I0KHNjLCBUU0FEQ19VU0VSX0NPTiwgMHhmYzApO8KgIMKgIMKgIMKgIMKg LyogOTd1cywgYXQgbGVhc3QgOTB1cyAqLzxicj4NCivCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFdS NChzYywgVFNBRENfQVVUT19QRVJJT0QsIDE2MjIpO8KgIMKgIMKgIMKgLyogMi41bXMgKi88YnI+ DQorwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBXUjQoc2MsIFRTQURDX0hJR0hUX0lOVF9ERUJPVU5D RSwgNCk7PGJyPg0KK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgV1I0KHNjLCBUU0FEQ19BVVRPX1BF UklPRF9IVCwgMTYyMik7wqAgwqAgLyogMi41bXMgKi88YnI+DQorwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqBXUjQoc2MsIFRTQURDX0hJR0hUX1RTSFVUX0RFQk9VTkNFLCA0KTs8YnI+DQorwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqBpZiAoc2MtJmd0O2dyZikgezxicj4NCivCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoFNZU0NPTl9XUklURV80KHNjLSZndDtncmYsIEdSRl9UU0FEQ19D T04sIEdSRl9UU0FEQ19UU0VOKTs8YnI+DQorwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqBERUxBWSgxNSk7wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgLyogMTAgdXNl YyBtaW4gKi88YnI+DQorwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBTWVNDT05f V1JJVEVfNChzYy0mZ3Q7Z3JmLCBHUkZfVFNBRENfQ09OLDxicj4NCivCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoEdSRl9UU0FEQ19BTkFfUkVHMCk7PGJyPg0KK8KgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgU1lTQ09OX1dSSVRFXzQoc2MtJmd0O2dyZiwg R1JGX1RTQURDX0NPTiw8YnI+DQorwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqBHUkZfVFNBRENfQU5BX1JFRzEpOzxicj4NCivCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoFNZU0NPTl9XUklURV80KHNjLSZndDtncmYsIEdSRl9UU0FEQ19DT04sPGJyPg0K K8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgR1JGX1RTQURDX0FOQV9S RUcyKTs8YnI+DQorwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBERUxBWSgxMDAp O8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgLyogOTAgdXNlYyBtaW4gKi88YnI+DQor wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB9PGJyPg0KK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgYnJl YWs7PGJyPg0KwqAgwqAgwqAgwqAgfTxicj4NCsKgfTxicj4NCjxicj4NCkBAIC00ODUsMTMgKzU3 NywxMSBAQCB0c2FkY19yZWFkX3RlbXAoc3RydWN0IHRzYWRjX3NvZnRjICpzYywgc3RydWN0IHRz ZW5zb3IgKnNlbnNvciwgaW50ICp0ZW1wKTxicj4NCsKgIMKgIMKgIMKgICp0ZW1wID0gdHNhZGNf cmF3X3RvX3RlbXAoc2MsIHZhbCk7PGJyPg0KPGJyPg0KwqAjaWZkZWYgREVCVUc8YnI+DQotwqAg wqAgwqAgwqBwcmludGYoJnF1b3Q7JXM6IFNlbnNvcihpZDogJWQsIGNoOiAlZCksIHRlbXA6ICVk XG4mcXVvdDssIF9fZnVuY19fLDxicj4NCi3CoCDCoCDCoCDCoCDCoCDCoHNlbnNvci0mZ3Q7aWQs IHNlbnNvci0mZ3Q7Y2hhbm5lbCwgKnRlbXApOzxicj4NCi3CoCDCoCDCoCDCoHByaW50ZigmcXVv dDsgc3RhdHVzOiAweCUwOFgsIDB4JTA4WFxuJnF1b3Q7LDxicj4NCi3CoCDCoCDCoCDCoCDCoCDC oFJENChzYywgVFNBRENfVVNFUl9DT04pLDxicj4NCi3CoCDCoCDCoCDCoCDCoCDCoFJENChzYywg VFNBRENfQVVUT19DT04pKTs8YnI+DQotwqAgwqAgwqAgwqBwcmludGYoJnF1b3Q7IERhdGE6IDB4 JTA4WCwgMHglMDhYLCAweCUwOFhcbiZxdW90Oyw8YnI+DQotwqAgwqAgwqAgwqAgwqAgwqBSRDQo c2MsIFRTQURDX0RBVEEoc2Vuc29yLSZndDtjaGFubmVsKSksPGJyPg0KK8KgIMKgIMKgIMKgZGV2 aWNlX3ByaW50ZihzYy0mZ3Q7ZGV2LCAmcXVvdDslczogU2Vuc29yKGlkOiAlZCwgY2g6ICVkKSwg dmFsOiAlZCB0ZW1wOiAlZFxuJnF1b3Q7LDxicj4NCivCoCDCoCDCoCDCoCDCoCDCoF9fZnVuY19f LCBzZW5zb3ItJmd0O2lkLCBzZW5zb3ItJmd0O2NoYW5uZWwsIHZhbCwgKnRlbXApOzxicj4NCivC oCDCoCDCoCDCoGRldmljZV9wcmludGYoc2MtJmd0O2RldiwgJnF1b3Q7JXM6IHVzZXJfY29uPTB4 JTA4eCBhdXRvX2Nvbj0weCUwOHggJnF1b3Q7PGJyPg0KK8KgIMKgIMKgIMKgIMKgIMKgJnF1b3Q7 Y29tcF9pbnQ9MHglMDh4IGNvbXBfc2h1dD0weCUwOHhcbiZxdW90Oyw8YnI+DQorwqAgwqAgwqAg wqAgwqAgwqBfX2Z1bmNfXywgUkQ0KHNjLCBUU0FEQ19VU0VSX0NPTiksIFJENChzYywgVFNBRENf QVVUT19DT04pLDxicj4NCsKgIMKgIMKgIMKgIMKgIMKgIFJENChzYywgVFNBRENfQ09NUF9JTlQo c2Vuc29yLSZndDtjaGFubmVsKSksPGJyPg0KwqAgwqAgwqAgwqAgwqAgwqAgUkQ0KHNjLCBUU0FE Q19DT01QX1NIVVQoc2Vuc29yLSZndDtjaGFubmVsKSkpOzxicj4NCsKgI2VuZGlmPGJyPg0KPGJy PjwvYmxvY2txdW90ZT48ZGl2Pjxicj48L2Rpdj48ZGl2PlNvcnJ5LCBmb3Jnb3QgdG8gaW5jbHVk ZSA8YSBocmVmPSJodHRwczovL3Jldmlld3MuZnJlZWJzZC5vcmcvRDM2MTM3Ij5odHRwczovL3Jl dmlld3MuZnJlZWJzZC5vcmcvRDM2MTM3PC9hPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+R2Fu Ym9sZDwvZGl2PjxkaXY+PGJyPjwvZGl2PjwvZGl2PjwvZGl2Pg0K --0000000000009893db05e5f2fc8b--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAGtf9xO0c54EaB02t5CkuXtbm6s2ktPiETDcmkH6aCEd%2BQxBxg>