diff for duplicates of <50064593.1000302@samsung.com> diff --git a/a/1.txt b/N1/1.txt index ffa0731..17d9454 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,197 +1,135 @@ -Hi, Amit, -On 2012년 07월 14일 16:30, amit kachhap wrote: -> On Sat, Jul 14, 2012 at 7:03 AM, Kyungmin Park <kmpark@infradead.org> wrote: ->> On Fri, Jul 13, 2012 at 8:10 PM, Amit Daniel Kachhap ->> <amit.kachhap@linaro.org> wrote: ->>> Add necessary default platform data support needed for TMU driver. This ->>> dt/non-dt values are tested for origen exynos4210 and smdk exynos5250 ->>> platforms. ->> Looks good to me. -> Thanks. -> ->> just nitpicks below. ->> ->> Thank you, ->> Kyungmin Park ->>> Signed-off-by: Amit Daniel Kachhap <amit.kachhap@linaro.org> ->>> Cc: Donggeun Kim <dg77.kim@samsung.com> ->>> Acked-by: Guenter Roeck <guenter.roeck@ericsson.com> ->>> Cc: SangWook Ju <sw.ju@samsung.com> ->>> Cc: Durgadoss <durgadoss.r@intel.com> ->>> Cc: Len Brown <lenb@kernel.org> ->>> Cc: Jean Delvare <khali@linux-fr.org> ->>> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> ->>> --- ->>> drivers/thermal/exynos_thermal.c | 111 +++++++++++++++++++++++++++++++++++++- ->>> 1 files changed, 110 insertions(+), 1 deletions(-) ->>> ->>> diff --git a/drivers/thermal/exynos_thermal.c b/drivers/thermal/exynos_thermal.c ->>> index 9ef8c37..07736ea 100644 ->>> --- a/drivers/thermal/exynos_thermal.c ->>> +++ b/drivers/thermal/exynos_thermal.c ->>> @@ -662,14 +662,121 @@ static irqreturn_t exynos_tmu_irq(int irq, void *id) ->>> static struct thermal_sensor_conf exynos_sensor_conf = { ->>> .name = "exynos-therm", ->>> .read_temperature = (int (*)(void *))exynos_tmu_read, ->>> +}; ->>> + ->>> +#if defined(CONFIG_CPU_EXYNOS4210) ->> BTW, doesn't it same as exynos4412? does it different from exynos4412? -> Currently I only tested this only for origen and exynos5250 board. -> Maybe somebody can add 4412 support also. -Recently, I applied this patchset with exynos4412 and found it uses same -register map with exynos5250. -So, I think it should rename the any type of name containing exynos4 and -exynos5 (e.g. SOC_ARCH_EXYNOS4) -In my local, i renamed SOC_ARCH_EXYNOS4 to SOC_ARCH_EXYNOS4210 and -SOC_ARCH_EXYNOS5 to SOC_ARCH_EXYNOS and -other related name also. I recommend you to change all of name ->> If it's same, it's better to use CONFIG_SOC_EXYNOS4? ->>> +static struct exynos_tmu_platform_data const exynos4_default_tmu_data = { ->>> + .threshold = 80, ->>> + .trigger_levels[0] = 5, ->>> + .trigger_levels[1] = 20, ->>> + .trigger_levels[2] = 30, ->>> + .trigger_level0_en = 1, ->>> + .trigger_level1_en = 1, ->>> + .trigger_level2_en = 1, ->>> + .trigger_level3_en = 0, ->>> + .gain = 15, ->>> + .reference_voltage = 7, ->>> + .cal_type = TYPE_ONE_POINT_TRIMMING, ->>> + .freq_tab[0] = { ->>> + .freq_clip_max = 800 * 1000, ->>> + .temp_level = 85, ->>> + }, ->>> + .freq_tab[1] = { ->>> + .freq_clip_max = 200 * 1000, ->>> + .temp_level = 100, ->>> + }, ->>> + .freq_tab_count = 2, ->>> + .type = SOC_ARCH_EXYNOS4, ->>> +}; ->>> +#define EXYNOS4_TMU_DRV_DATA (&exynos4_default_tmu_data) ->>> +#else ->>> +#define EXYNOS4_TMU_DRV_DATA (NULL) ->>> +#endif ->>> + ->>> +#if defined(CONFIG_SOC_EXYNOS5250) ->> similar. ->>> +static struct exynos_tmu_platform_data const exynos5_default_tmu_data = { ->>> + .trigger_levels[0] = 85, ->>> + .trigger_levels[1] = 103, ->>> + .trigger_levels[2] = 110, ->>> + .trigger_level0_en = 1, ->>> + .trigger_level1_en = 1, ->>> + .trigger_level2_en = 1, ->>> + .trigger_level3_en = 0, ->>> + .gain = 8, ->>> + .reference_voltage = 16, ->>> + .noise_cancel_mode = 4, ->>> + .cal_type = TYPE_ONE_POINT_TRIMMING, ->>> + .efuse_value = 55, ->>> + .freq_tab[0] = { ->>> + .freq_clip_max = 800 * 1000, ->>> + .temp_level = 85, ->>> + }, ->>> + .freq_tab[1] = { ->>> + .freq_clip_max = 200 * 1000, ->>> + .temp_level = 103, ->>> + }, ->>> + .freq_tab_count = 2, ->>> + .type = SOC_ARCH_EXYNOS5, ->>> +}; ->>> +#define EXYNOS5_TMU_DRV_DATA (&exynos5_default_tmu_data) ->>> +#else ->>> +#define EXYNOS5_TMU_DRV_DATA (NULL) ->>> +#endif ->>> + ->>> +#ifdef CONFIG_OF ->>> +static const struct of_device_id exynos_tmu_match[] = { ->>> + { ->>> + .compatible = "samsung,exynos4-tmu", ->>> + .data = (void *)EXYNOS4_TMU_DRV_DATA, ->>> + }, ->>> + { ->>> + .compatible = "samsung,exynos5-tmu", ->>> + .data = (void *)EXYNOS5_TMU_DRV_DATA, ->>> + }, ->>> + {}, ->>> +}; ->>> +MODULE_DEVICE_TABLE(of, exynos_tmu_match); ->>> +#else ->>> +#define exynos_tmu_match NULL ->>> +#endif ->>> + ->>> +static struct platform_device_id exynos_tmu_driver_ids[] = { ->>> + { ->>> + .name = "exynos4-tmu", ->>> + .driver_data = (kernel_ulong_t)EXYNOS4_TMU_DRV_DATA, ->>> + }, ->>> + { ->>> + .name = "exynos5-tmu", ->>> + .driver_data = (kernel_ulong_t)EXYNOS5_TMU_DRV_DATA, ->>> + }, ->>> + { }, ->>> +}; ->>> +MODULE_DEVICE_TABLE(platform, exynos4_tmu_driver_ids); ->>> + ->>> +static inline struct exynos_tmu_platform_data *exynos_get_driver_data( ->>> + struct platform_device *pdev) ->>> +{ ->>> +#ifdef CONFIG_OF ->>> + if (pdev->dev.of_node) { ->>> + const struct of_device_id *match; ->>> + match = of_match_node(exynos_tmu_match, pdev->dev.of_node); ->>> + if (!match) ->>> + return NULL; ->>> + return (struct exynos_tmu_platform_data *) match->data; ->>> + } ->>> +#endif ->>> + return (struct exynos_tmu_platform_data *) ->>> + platform_get_device_id(pdev)->driver_data; ->>> } ->>> -; ->>> static int __devinit exynos_tmu_probe(struct platform_device *pdev) ->>> { ->>> struct exynos_tmu_data *data; ->>> struct exynos_tmu_platform_data *pdata = pdev->dev.platform_data; ->>> int ret, i; ->>> ->>> + if (!pdata) ->>> + pdata = exynos_get_driver_data(pdev); ->>> + ->>> if (!pdata) { ->>> dev_err(&pdev->dev, "No platform init data supplied.\n"); ->>> return -ENODEV; ->>> @@ -838,9 +945,11 @@ static struct platform_driver exynos_tmu_driver = { ->>> .name = "exynos-tmu", ->>> .owner = THIS_MODULE, ->>> .pm = EXYNOS_TMU_PM, ->>> + .of_match_table = exynos_tmu_match, ->>> }, ->>> .probe = exynos_tmu_probe, ->>> .remove = __devexit_p(exynos_tmu_remove), ->>> + .id_table = exynos_tmu_driver_ids, ->>> }; ->>> ->>> module_platform_driver(exynos_tmu_driver); ->>> -- ->>> 1.7.1 ->>> ->>> -- ->>> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in ->>> the body of a message to majordomo@vger.kernel.org ->>> More majordomo info at http://vger.kernel.org/majordomo-info.html ->>> Please read the FAQ at http://www.tux.org/lkml/ ->> -- ->> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in ->> the body of a message to majordomo@vger.kernel.org ->> More majordomo info at http://vger.kernel.org/majordomo-info.html -> -- -> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in -> the body of a message to majordomo@vger.kernel.org -> More majordomo info at http://vger.kernel.org/majordomo-info.html -> Please read the FAQ at http://www.tux.org/lkml/ -> -Thanks. +SGksIEFtaXQsCk9uIDIwMTLrhYQgMDfsm5QgMTTsnbwgMTY6MzAsIGFtaXQga2FjaGhhcCB3cm90 +ZToKPiBPbiBTYXQsIEp1bCAxNCwgMjAxMiBhdCA3OjAzIEFNLCBLeXVuZ21pbiBQYXJrIDxrbXBh +cmtAaW5mcmFkZWFkLm9yZz4gd3JvdGU6Cj4+IE9uIEZyaSwgSnVsIDEzLCAyMDEyIGF0IDg6MTAg +UE0sIEFtaXQgRGFuaWVsIEthY2hoYXAKPj4gPGFtaXQua2FjaGhhcEBsaW5hcm8ub3JnPiB3cm90 +ZToKPj4+IEFkZCBuZWNlc3NhcnkgZGVmYXVsdCBwbGF0Zm9ybSBkYXRhIHN1cHBvcnQgbmVlZGVk +IGZvciBUTVUgZHJpdmVyLiAgVGhpcwo+Pj4gZHQvbm9uLWR0IHZhbHVlcyBhcmUgdGVzdGVkIGZv +ciBvcmlnZW4gZXh5bm9zNDIxMCBhbmQgc21kayBleHlub3M1MjUwCj4+PiBwbGF0Zm9ybXMuCj4+ +IExvb2tzIGdvb2QgdG8gbWUuCj4gVGhhbmtzLgo+Cj4+IGp1c3Qgbml0cGlja3MgYmVsb3cuCj4+ +Cj4+IFRoYW5rIHlvdSwKPj4gS3l1bmdtaW4gUGFyawo+Pj4gU2lnbmVkLW9mZi1ieTogQW1pdCBE +YW5pZWwgS2FjaGhhcCA8YW1pdC5rYWNoaGFwQGxpbmFyby5vcmc+Cj4+PiBDYzogRG9uZ2dldW4g +S2ltIDxkZzc3LmtpbUBzYW1zdW5nLmNvbT4KPj4+IEFja2VkLWJ5OiBHdWVudGVyIFJvZWNrIDxn +dWVudGVyLnJvZWNrQGVyaWNzc29uLmNvbT4KPj4+IENjOiBTYW5nV29vayBKdSA8c3cuanVAc2Ft +c3VuZy5jb20+Cj4+PiBDYzogRHVyZ2Fkb3NzIDxkdXJnYWRvc3MuckBpbnRlbC5jb20+Cj4+PiBD +YzogTGVuIEJyb3duIDxsZW5iQGtlcm5lbC5vcmc+Cj4+PiBDYzogSmVhbiBEZWx2YXJlIDxraGFs +aUBsaW51eC1mci5vcmc+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgTW9ydG9uIDxha3BtQGxp +bnV4LWZvdW5kYXRpb24ub3JnPgo+Pj4gLS0tCj4+PiAgZHJpdmVycy90aGVybWFsL2V4eW5vc190 +aGVybWFsLmMgfCAgMTExICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4+ +PiAgMSBmaWxlcyBjaGFuZ2VkLCAxMTAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKPj4+ +Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy90aGVybWFsL2V4eW5vc190aGVybWFsLmMgYi9kcml2 +ZXJzL3RoZXJtYWwvZXh5bm9zX3RoZXJtYWwuYwo+Pj4gaW5kZXggOWVmOGMzNy4uMDc3MzZlYSAx +MDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvdGhlcm1hbC9leHlub3NfdGhlcm1hbC5jCj4+PiArKysg +Yi9kcml2ZXJzL3RoZXJtYWwvZXh5bm9zX3RoZXJtYWwuYwo+Pj4gQEAgLTY2MiwxNCArNjYyLDEy +MSBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgZXh5bm9zX3RtdV9pcnEoaW50IGlycSwgdm9pZCAqaWQp +Cj4+PiAgc3RhdGljIHN0cnVjdCB0aGVybWFsX3NlbnNvcl9jb25mIGV4eW5vc19zZW5zb3JfY29u +ZiA9IHsKPj4+ICAgICAgICAgLm5hbWUgICAgICAgICAgICAgICAgICAgPSAiZXh5bm9zLXRoZXJt +IiwKPj4+ICAgICAgICAgLnJlYWRfdGVtcGVyYXR1cmUgICAgICAgPSAoaW50ICgqKSh2b2lkICop +KWV4eW5vc190bXVfcmVhZCwKPj4+ICt9Owo+Pj4gKwo+Pj4gKyNpZiBkZWZpbmVkKENPTkZJR19D +UFVfRVhZTk9TNDIxMCkKPj4gQlRXLCBkb2Vzbid0IGl0IHNhbWUgYXMgZXh5bm9zNDQxMj8gZG9l +cyBpdCBkaWZmZXJlbnQgZnJvbSBleHlub3M0NDEyPwo+IEN1cnJlbnRseSBJIG9ubHkgdGVzdGVk +IHRoaXMgb25seSBmb3Igb3JpZ2VuIGFuZCBleHlub3M1MjUwIGJvYXJkLgo+IE1heWJlIHNvbWVi +b2R5IGNhbiBhZGQgNDQxMiBzdXBwb3J0IGFsc28uClJlY2VudGx5LCBJIGFwcGxpZWQgdGhpcyBw +YXRjaHNldCB3aXRoIGV4eW5vczQ0MTIgYW5kIGZvdW5kIGl0IHVzZXMgc2FtZQpyZWdpc3RlciBt +YXAgd2l0aCBleHlub3M1MjUwLgpTbywgSSB0aGluayBpdCBzaG91bGQgcmVuYW1lIHRoZSBhbnkg +dHlwZSBvZiBuYW1lIGNvbnRhaW5pbmcgZXh5bm9zNCBhbmQKZXh5bm9zNSAoZS5nLiBTT0NfQVJD +SF9FWFlOT1M0KQpJbiBteSBsb2NhbCwgaSByZW5hbWVkIFNPQ19BUkNIX0VYWU5PUzQgdG8gU09D +X0FSQ0hfRVhZTk9TNDIxMCBhbmQKU09DX0FSQ0hfRVhZTk9TNSB0byBTT0NfQVJDSF9FWFlOT1Mg +YW5kCm90aGVyIHJlbGF0ZWQgbmFtZSBhbHNvLiBJIHJlY29tbWVuZCB5b3UgdG8gY2hhbmdlIGFs +bCBvZiBuYW1lCj4+IElmIGl0J3Mgc2FtZSwgaXQncyBiZXR0ZXIgdG8gdXNlIENPTkZJR19TT0Nf +RVhZTk9TND8KPj4+ICtzdGF0aWMgc3RydWN0IGV4eW5vc190bXVfcGxhdGZvcm1fZGF0YSBjb25z +dCBleHlub3M0X2RlZmF1bHRfdG11X2RhdGEgPSB7Cj4+PiArICAgICAgIC50aHJlc2hvbGQgPSA4 +MCwKPj4+ICsgICAgICAgLnRyaWdnZXJfbGV2ZWxzWzBdID0gNSwKPj4+ICsgICAgICAgLnRyaWdn +ZXJfbGV2ZWxzWzFdID0gMjAsCj4+PiArICAgICAgIC50cmlnZ2VyX2xldmVsc1syXSA9IDMwLAo+ +Pj4gKyAgICAgICAudHJpZ2dlcl9sZXZlbDBfZW4gPSAxLAo+Pj4gKyAgICAgICAudHJpZ2dlcl9s +ZXZlbDFfZW4gPSAxLAo+Pj4gKyAgICAgICAudHJpZ2dlcl9sZXZlbDJfZW4gPSAxLAo+Pj4gKyAg +ICAgICAudHJpZ2dlcl9sZXZlbDNfZW4gPSAwLAo+Pj4gKyAgICAgICAuZ2FpbiA9IDE1LAo+Pj4g +KyAgICAgICAucmVmZXJlbmNlX3ZvbHRhZ2UgPSA3LAo+Pj4gKyAgICAgICAuY2FsX3R5cGUgPSBU +WVBFX09ORV9QT0lOVF9UUklNTUlORywKPj4+ICsgICAgICAgLmZyZXFfdGFiWzBdID0gewo+Pj4g +KyAgICAgICAgICAgICAgIC5mcmVxX2NsaXBfbWF4ID0gODAwICogMTAwMCwKPj4+ICsgICAgICAg +ICAgICAgICAudGVtcF9sZXZlbCA9IDg1LAo+Pj4gKyAgICAgICB9LAo+Pj4gKyAgICAgICAuZnJl +cV90YWJbMV0gPSB7Cj4+PiArICAgICAgICAgICAgICAgLmZyZXFfY2xpcF9tYXggPSAyMDAgKiAx +MDAwLAo+Pj4gKyAgICAgICAgICAgICAgIC50ZW1wX2xldmVsID0gMTAwLAo+Pj4gKyAgICAgICB9 +LAo+Pj4gKyAgICAgICAuZnJlcV90YWJfY291bnQgPSAyLAo+Pj4gKyAgICAgICAudHlwZSA9IFNP +Q19BUkNIX0VYWU5PUzQsCj4+PiArfTsKPj4+ICsjZGVmaW5lIEVYWU5PUzRfVE1VX0RSVl9EQVRB +ICgmZXh5bm9zNF9kZWZhdWx0X3RtdV9kYXRhKQo+Pj4gKyNlbHNlCj4+PiArI2RlZmluZSBFWFlO +T1M0X1RNVV9EUlZfREFUQSAoTlVMTCkKPj4+ICsjZW5kaWYKPj4+ICsKPj4+ICsjaWYgZGVmaW5l +ZChDT05GSUdfU09DX0VYWU5PUzUyNTApCj4+IHNpbWlsYXIuCj4+PiArc3RhdGljIHN0cnVjdCBl +eHlub3NfdG11X3BsYXRmb3JtX2RhdGEgY29uc3QgZXh5bm9zNV9kZWZhdWx0X3RtdV9kYXRhID0g +ewo+Pj4gKyAgICAgICAudHJpZ2dlcl9sZXZlbHNbMF0gPSA4NSwKPj4+ICsgICAgICAgLnRyaWdn +ZXJfbGV2ZWxzWzFdID0gMTAzLAo+Pj4gKyAgICAgICAudHJpZ2dlcl9sZXZlbHNbMl0gPSAxMTAs +Cj4+PiArICAgICAgIC50cmlnZ2VyX2xldmVsMF9lbiA9IDEsCj4+PiArICAgICAgIC50cmlnZ2Vy +X2xldmVsMV9lbiA9IDEsCj4+PiArICAgICAgIC50cmlnZ2VyX2xldmVsMl9lbiA9IDEsCj4+PiAr +ICAgICAgIC50cmlnZ2VyX2xldmVsM19lbiA9IDAsCj4+PiArICAgICAgIC5nYWluID0gOCwKPj4+ +ICsgICAgICAgLnJlZmVyZW5jZV92b2x0YWdlID0gMTYsCj4+PiArICAgICAgIC5ub2lzZV9jYW5j +ZWxfbW9kZSA9IDQsCj4+PiArICAgICAgIC5jYWxfdHlwZSA9IFRZUEVfT05FX1BPSU5UX1RSSU1N +SU5HLAo+Pj4gKyAgICAgICAuZWZ1c2VfdmFsdWUgPSA1NSwKPj4+ICsgICAgICAgLmZyZXFfdGFi +WzBdID0gewo+Pj4gKyAgICAgICAgICAgICAgIC5mcmVxX2NsaXBfbWF4ID0gODAwICogMTAwMCwK +Pj4+ICsgICAgICAgICAgICAgICAudGVtcF9sZXZlbCA9IDg1LAo+Pj4gKyAgICAgICB9LAo+Pj4g +KyAgICAgICAuZnJlcV90YWJbMV0gPSB7Cj4+PiArICAgICAgICAgICAgICAgLmZyZXFfY2xpcF9t +YXggPSAyMDAgKiAxMDAwLAo+Pj4gKyAgICAgICAgICAgICAgIC50ZW1wX2xldmVsID0gMTAzLAo+ +Pj4gKyAgICAgICB9LAo+Pj4gKyAgICAgICAuZnJlcV90YWJfY291bnQgPSAyLAo+Pj4gKyAgICAg +ICAudHlwZSA9IFNPQ19BUkNIX0VYWU5PUzUsCj4+PiArfTsKPj4+ICsjZGVmaW5lIEVYWU5PUzVf +VE1VX0RSVl9EQVRBICgmZXh5bm9zNV9kZWZhdWx0X3RtdV9kYXRhKQo+Pj4gKyNlbHNlCj4+PiAr +I2RlZmluZSBFWFlOT1M1X1RNVV9EUlZfREFUQSAoTlVMTCkKPj4+ICsjZW5kaWYKPj4+ICsKPj4+ +ICsjaWZkZWYgQ09ORklHX09GCj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQg +ZXh5bm9zX3RtdV9tYXRjaFtdID0gewo+Pj4gKyAgICAgICB7Cj4+PiArICAgICAgICAgICAgICAg +LmNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3M0LXRtdSIsCj4+PiArICAgICAgICAgICAgICAg +LmRhdGEgPSAodm9pZCAqKUVYWU5PUzRfVE1VX0RSVl9EQVRBLAo+Pj4gKyAgICAgICB9LAo+Pj4g +KyAgICAgICB7Cj4+PiArICAgICAgICAgICAgICAgLmNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlu +b3M1LXRtdSIsCj4+PiArICAgICAgICAgICAgICAgLmRhdGEgPSAodm9pZCAqKUVYWU5PUzVfVE1V +X0RSVl9EQVRBLAo+Pj4gKyAgICAgICB9LAo+Pj4gKyAgICAgICB7fSwKPj4+ICt9Owo+Pj4gK01P +RFVMRV9ERVZJQ0VfVEFCTEUob2YsIGV4eW5vc190bXVfbWF0Y2gpOwo+Pj4gKyNlbHNlCj4+PiAr +I2RlZmluZSAgZXh5bm9zX3RtdV9tYXRjaCBOVUxMCj4+PiArI2VuZGlmCj4+PiArCj4+PiArc3Rh +dGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2VfaWQgZXh5bm9zX3RtdV9kcml2ZXJfaWRzW10gPSB7 +Cj4+PiArICAgICAgIHsKPj4+ICsgICAgICAgICAgICAgICAubmFtZSAgICAgICAgICAgPSAiZXh5 +bm9zNC10bXUiLAo+Pj4gKyAgICAgICAgICAgICAgIC5kcml2ZXJfZGF0YSAgICA9IChrZXJuZWxf +dWxvbmdfdClFWFlOT1M0X1RNVV9EUlZfREFUQSwKPj4+ICsgICAgICAgfSwKPj4+ICsgICAgICAg +ewo+Pj4gKyAgICAgICAgICAgICAgIC5uYW1lICAgICAgICAgICA9ICJleHlub3M1LXRtdSIsCj4+ +PiArICAgICAgICAgICAgICAgLmRyaXZlcl9kYXRhICAgID0gKGtlcm5lbF91bG9uZ190KUVYWU5P +UzVfVE1VX0RSVl9EQVRBLAo+Pj4gKyAgICAgICB9LAo+Pj4gKyAgICAgICB7IH0sCj4+PiArfTsK +Pj4+ICtNT0RVTEVfREVWSUNFX1RBQkxFKHBsYXRmb3JtLCBleHlub3M0X3RtdV9kcml2ZXJfaWRz +KTsKPj4+ICsKPj4+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCAgZXh5bm9zX3RtdV9wbGF0Zm9ybV9k +YXRhICpleHlub3NfZ2V0X2RyaXZlcl9kYXRhKAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAg +c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4+ICt7Cj4+PiArI2lmZGVmIENPTkZJR19P +Rgo+Pj4gKyAgICAgICBpZiAocGRldi0+ZGV2Lm9mX25vZGUpIHsKPj4+ICsgICAgICAgICAgICAg +ICBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICptYXRjaDsKPj4+ICsgICAgICAgICAgICAgICBt +YXRjaCA9IG9mX21hdGNoX25vZGUoZXh5bm9zX3RtdV9tYXRjaCwgcGRldi0+ZGV2Lm9mX25vZGUp +Owo+Pj4gKyAgICAgICAgICAgICAgIGlmICghbWF0Y2gpCj4+PiArICAgICAgICAgICAgICAgICAg +ICAgICByZXR1cm4gTlVMTDsKPj4+ICsgICAgICAgICAgICAgICByZXR1cm4gKHN0cnVjdCBleHlu +b3NfdG11X3BsYXRmb3JtX2RhdGEgKikgbWF0Y2gtPmRhdGE7Cj4+PiArICAgICAgIH0KPj4+ICsj +ZW5kaWYKPj4+ICsgICAgICAgcmV0dXJuIChzdHJ1Y3QgZXh5bm9zX3RtdV9wbGF0Zm9ybV9kYXRh +ICopCj4+PiArICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybV9nZXRfZGV2aWNlX2lkKHBk +ZXYpLT5kcml2ZXJfZGF0YTsKPj4+ICB9Cj4+PiAtOwo+Pj4gIHN0YXRpYyBpbnQgX19kZXZpbml0 +IGV4eW5vc190bXVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4+ICB7Cj4+ +PiAgICAgICAgIHN0cnVjdCBleHlub3NfdG11X2RhdGEgKmRhdGE7Cj4+PiAgICAgICAgIHN0cnVj +dCBleHlub3NfdG11X3BsYXRmb3JtX2RhdGEgKnBkYXRhID0gcGRldi0+ZGV2LnBsYXRmb3JtX2Rh +dGE7Cj4+PiAgICAgICAgIGludCByZXQsIGk7Cj4+Pgo+Pj4gKyAgICAgICBpZiAoIXBkYXRhKQo+ +Pj4gKyAgICAgICAgICAgICAgIHBkYXRhID0gZXh5bm9zX2dldF9kcml2ZXJfZGF0YShwZGV2KTsK +Pj4+ICsKPj4+ICAgICAgICAgaWYgKCFwZGF0YSkgewo+Pj4gICAgICAgICAgICAgICAgIGRldl9l +cnIoJnBkZXYtPmRldiwgIk5vIHBsYXRmb3JtIGluaXQgZGF0YSBzdXBwbGllZC5cbiIpOwo+Pj4g +ICAgICAgICAgICAgICAgIHJldHVybiAtRU5PREVWOwo+Pj4gQEAgLTgzOCw5ICs5NDUsMTEgQEAg +c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZXh5bm9zX3RtdV9kcml2ZXIgPSB7Cj4+PiAg +ICAgICAgICAgICAgICAgLm5hbWUgICA9ICJleHlub3MtdG11IiwKPj4+ICAgICAgICAgICAgICAg +ICAub3duZXIgID0gVEhJU19NT0RVTEUsCj4+PiAgICAgICAgICAgICAgICAgLnBtICAgICA9IEVY +WU5PU19UTVVfUE0sCj4+PiArICAgICAgICAgICAgICAgLm9mX21hdGNoX3RhYmxlID0gZXh5bm9z +X3RtdV9tYXRjaCwKPj4+ICAgICAgICAgfSwKPj4+ICAgICAgICAgLnByb2JlID0gZXh5bm9zX3Rt +dV9wcm9iZSwKPj4+ICAgICAgICAgLnJlbW92ZSA9IF9fZGV2ZXhpdF9wKGV4eW5vc190bXVfcmVt +b3ZlKSwKPj4+ICsgICAgICAgLmlkX3RhYmxlID0gZXh5bm9zX3RtdV9kcml2ZXJfaWRzLAo+Pj4g +IH07Cj4+Pgo+Pj4gIG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoZXh5bm9zX3RtdV9kcml2ZXIpOwo+ +Pj4gLS0KPj4+IDEuNy4xCj4+Pgo+Pj4gLS0KPj4+IFRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBs +aXN0OiBzZW5kIHRoZSBsaW5lICJ1bnN1YnNjcmliZSBsaW51eC1rZXJuZWwiIGluCj4+PiB0aGUg +Ym9keSBvZiBhIG1lc3NhZ2UgdG8gbWFqb3Jkb21vQHZnZXIua2VybmVsLm9yZwo+Pj4gTW9yZSBt +YWpvcmRvbW8gaW5mbyBhdCAgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5o +dG1sCj4+PiBQbGVhc2UgcmVhZCB0aGUgRkFRIGF0ICBodHRwOi8vd3d3LnR1eC5vcmcvbGttbC8K +Pj4gLS0KPj4gVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhlIGxpbmUgInVu +c3Vic2NyaWJlIGxpbnV4LXNhbXN1bmctc29jIiBpbgo+PiB0aGUgYm9keSBvZiBhIG1lc3NhZ2Ug +dG8gbWFqb3Jkb21vQHZnZXIua2VybmVsLm9yZwo+PiBNb3JlIG1ham9yZG9tbyBpbmZvIGF0ICBo +dHRwOi8vdmdlci5rZXJuZWwub3JnL21ham9yZG9tby1pbmZvLmh0bWwKPiAtLQo+IFRvIHVuc3Vi +c2NyaWJlIGZyb20gdGhpcyBsaXN0OiBzZW5kIHRoZSBsaW5lICJ1bnN1YnNjcmliZSBsaW51eC1r +ZXJuZWwiIGluCj4gdGhlIGJvZHkgb2YgYSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtlcm5l +bC5vcmcKPiBNb3JlIG1ham9yZG9tbyBpbmZvIGF0ICBodHRwOi8vdmdlci5rZXJuZWwub3JnL21h +am9yZG9tby1pbmZvLmh0bWwKPiBQbGVhc2UgcmVhZCB0aGUgRkFRIGF0ICBodHRwOi8vd3d3LnR1 +eC5vcmcvbGttbC8KPgpUaGFua3MuCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f +X19fX19fX19fX19fX19fCmxtLXNlbnNvcnMgbWFpbGluZyBsaXN0CmxtLXNlbnNvcnNAbG0tc2Vu +c29ycy5vcmcKaHR0cDovL2xpc3RzLmxtLXNlbnNvcnMub3JnL21haWxtYW4vbGlzdGluZm8vbG0t +c2Vuc29ycw= diff --git a/a/content_digest b/N1/content_digest index c7c1ef9..eda157c 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -3,8 +3,8 @@ "ref\0CAH9JG2XGWgX-FiBacnrGXS-oG_7rbN1aum3mpW5HUAukiwaB7A@mail.gmail.com\0" "ref\0CADGdYn6SPTosESY5YXa=Q0PoHTiW28VYgSJuZODj0tj0kU_y=g@mail.gmail.com\0" "From\0jonghwa3.lee@samsung.com\0" - "Subject\0Re: [PATCH v5 5/5] ARM: exynos: add thermal sensor driver platform data support\0" - "Date\0Wed, 18 Jul 2012 14:11:47 +0900\0" + "Subject\0Re: [lm-sensors] [PATCH v5 5/5] ARM: exynos: add thermal sensor driver platform data support\0" + "Date\0Wed, 18 Jul 2012 05:11:47 +0000\0" "To\0amit kachhap <amit.kachhap@gmail.com>\0" "Cc\0Kyungmin Park <kmpark@infradead.org>" linux-pm@lists.linux-foundation.org @@ -19,202 +19,140 @@ " Jean Delvare <khali@linux-fr.org>\0" "\00:1\0" "b\0" - "Hi, Amit,\n" - "On 2012\353\205\204 07\354\233\224 14\354\235\274 16:30, amit kachhap wrote:\n" - "> On Sat, Jul 14, 2012 at 7:03 AM, Kyungmin Park <kmpark@infradead.org> wrote:\n" - ">> On Fri, Jul 13, 2012 at 8:10 PM, Amit Daniel Kachhap\n" - ">> <amit.kachhap@linaro.org> wrote:\n" - ">>> Add necessary default platform data support needed for TMU driver. This\n" - ">>> dt/non-dt values are tested for origen exynos4210 and smdk exynos5250\n" - ">>> platforms.\n" - ">> Looks good to me.\n" - "> Thanks.\n" - ">\n" - ">> just nitpicks below.\n" - ">>\n" - ">> Thank you,\n" - ">> Kyungmin Park\n" - ">>> Signed-off-by: Amit Daniel Kachhap <amit.kachhap@linaro.org>\n" - ">>> Cc: Donggeun Kim <dg77.kim@samsung.com>\n" - ">>> Acked-by: Guenter Roeck <guenter.roeck@ericsson.com>\n" - ">>> Cc: SangWook Ju <sw.ju@samsung.com>\n" - ">>> Cc: Durgadoss <durgadoss.r@intel.com>\n" - ">>> Cc: Len Brown <lenb@kernel.org>\n" - ">>> Cc: Jean Delvare <khali@linux-fr.org>\n" - ">>> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>\n" - ">>> ---\n" - ">>> drivers/thermal/exynos_thermal.c | 111 +++++++++++++++++++++++++++++++++++++-\n" - ">>> 1 files changed, 110 insertions(+), 1 deletions(-)\n" - ">>>\n" - ">>> diff --git a/drivers/thermal/exynos_thermal.c b/drivers/thermal/exynos_thermal.c\n" - ">>> index 9ef8c37..07736ea 100644\n" - ">>> --- a/drivers/thermal/exynos_thermal.c\n" - ">>> +++ b/drivers/thermal/exynos_thermal.c\n" - ">>> @@ -662,14 +662,121 @@ static irqreturn_t exynos_tmu_irq(int irq, void *id)\n" - ">>> static struct thermal_sensor_conf exynos_sensor_conf = {\n" - ">>> .name = \"exynos-therm\",\n" - ">>> .read_temperature = (int (*)(void *))exynos_tmu_read,\n" - ">>> +};\n" - ">>> +\n" - ">>> +#if defined(CONFIG_CPU_EXYNOS4210)\n" - ">> BTW, doesn't it same as exynos4412? does it different from exynos4412?\n" - "> Currently I only tested this only for origen and exynos5250 board.\n" - "> Maybe somebody can add 4412 support also.\n" - "Recently, I applied this patchset with exynos4412 and found it uses same\n" - "register map with exynos5250.\n" - "So, I think it should rename the any type of name containing exynos4 and\n" - "exynos5 (e.g. SOC_ARCH_EXYNOS4)\n" - "In my local, i renamed SOC_ARCH_EXYNOS4 to SOC_ARCH_EXYNOS4210 and\n" - "SOC_ARCH_EXYNOS5 to SOC_ARCH_EXYNOS and\n" - "other related name also. I recommend you to change all of name\n" - ">> If it's same, it's better to use CONFIG_SOC_EXYNOS4?\n" - ">>> +static struct exynos_tmu_platform_data const exynos4_default_tmu_data = {\n" - ">>> + .threshold = 80,\n" - ">>> + .trigger_levels[0] = 5,\n" - ">>> + .trigger_levels[1] = 20,\n" - ">>> + .trigger_levels[2] = 30,\n" - ">>> + .trigger_level0_en = 1,\n" - ">>> + .trigger_level1_en = 1,\n" - ">>> + .trigger_level2_en = 1,\n" - ">>> + .trigger_level3_en = 0,\n" - ">>> + .gain = 15,\n" - ">>> + .reference_voltage = 7,\n" - ">>> + .cal_type = TYPE_ONE_POINT_TRIMMING,\n" - ">>> + .freq_tab[0] = {\n" - ">>> + .freq_clip_max = 800 * 1000,\n" - ">>> + .temp_level = 85,\n" - ">>> + },\n" - ">>> + .freq_tab[1] = {\n" - ">>> + .freq_clip_max = 200 * 1000,\n" - ">>> + .temp_level = 100,\n" - ">>> + },\n" - ">>> + .freq_tab_count = 2,\n" - ">>> + .type = SOC_ARCH_EXYNOS4,\n" - ">>> +};\n" - ">>> +#define EXYNOS4_TMU_DRV_DATA (&exynos4_default_tmu_data)\n" - ">>> +#else\n" - ">>> +#define EXYNOS4_TMU_DRV_DATA (NULL)\n" - ">>> +#endif\n" - ">>> +\n" - ">>> +#if defined(CONFIG_SOC_EXYNOS5250)\n" - ">> similar.\n" - ">>> +static struct exynos_tmu_platform_data const exynos5_default_tmu_data = {\n" - ">>> + .trigger_levels[0] = 85,\n" - ">>> + .trigger_levels[1] = 103,\n" - ">>> + .trigger_levels[2] = 110,\n" - ">>> + .trigger_level0_en = 1,\n" - ">>> + .trigger_level1_en = 1,\n" - ">>> + .trigger_level2_en = 1,\n" - ">>> + .trigger_level3_en = 0,\n" - ">>> + .gain = 8,\n" - ">>> + .reference_voltage = 16,\n" - ">>> + .noise_cancel_mode = 4,\n" - ">>> + .cal_type = TYPE_ONE_POINT_TRIMMING,\n" - ">>> + .efuse_value = 55,\n" - ">>> + .freq_tab[0] = {\n" - ">>> + .freq_clip_max = 800 * 1000,\n" - ">>> + .temp_level = 85,\n" - ">>> + },\n" - ">>> + .freq_tab[1] = {\n" - ">>> + .freq_clip_max = 200 * 1000,\n" - ">>> + .temp_level = 103,\n" - ">>> + },\n" - ">>> + .freq_tab_count = 2,\n" - ">>> + .type = SOC_ARCH_EXYNOS5,\n" - ">>> +};\n" - ">>> +#define EXYNOS5_TMU_DRV_DATA (&exynos5_default_tmu_data)\n" - ">>> +#else\n" - ">>> +#define EXYNOS5_TMU_DRV_DATA (NULL)\n" - ">>> +#endif\n" - ">>> +\n" - ">>> +#ifdef CONFIG_OF\n" - ">>> +static const struct of_device_id exynos_tmu_match[] = {\n" - ">>> + {\n" - ">>> + .compatible = \"samsung,exynos4-tmu\",\n" - ">>> + .data = (void *)EXYNOS4_TMU_DRV_DATA,\n" - ">>> + },\n" - ">>> + {\n" - ">>> + .compatible = \"samsung,exynos5-tmu\",\n" - ">>> + .data = (void *)EXYNOS5_TMU_DRV_DATA,\n" - ">>> + },\n" - ">>> + {},\n" - ">>> +};\n" - ">>> +MODULE_DEVICE_TABLE(of, exynos_tmu_match);\n" - ">>> +#else\n" - ">>> +#define exynos_tmu_match NULL\n" - ">>> +#endif\n" - ">>> +\n" - ">>> +static struct platform_device_id exynos_tmu_driver_ids[] = {\n" - ">>> + {\n" - ">>> + .name = \"exynos4-tmu\",\n" - ">>> + .driver_data = (kernel_ulong_t)EXYNOS4_TMU_DRV_DATA,\n" - ">>> + },\n" - ">>> + {\n" - ">>> + .name = \"exynos5-tmu\",\n" - ">>> + .driver_data = (kernel_ulong_t)EXYNOS5_TMU_DRV_DATA,\n" - ">>> + },\n" - ">>> + { },\n" - ">>> +};\n" - ">>> +MODULE_DEVICE_TABLE(platform, exynos4_tmu_driver_ids);\n" - ">>> +\n" - ">>> +static inline struct exynos_tmu_platform_data *exynos_get_driver_data(\n" - ">>> + struct platform_device *pdev)\n" - ">>> +{\n" - ">>> +#ifdef CONFIG_OF\n" - ">>> + if (pdev->dev.of_node) {\n" - ">>> + const struct of_device_id *match;\n" - ">>> + match = of_match_node(exynos_tmu_match, pdev->dev.of_node);\n" - ">>> + if (!match)\n" - ">>> + return NULL;\n" - ">>> + return (struct exynos_tmu_platform_data *) match->data;\n" - ">>> + }\n" - ">>> +#endif\n" - ">>> + return (struct exynos_tmu_platform_data *)\n" - ">>> + platform_get_device_id(pdev)->driver_data;\n" - ">>> }\n" - ">>> -;\n" - ">>> static int __devinit exynos_tmu_probe(struct platform_device *pdev)\n" - ">>> {\n" - ">>> struct exynos_tmu_data *data;\n" - ">>> struct exynos_tmu_platform_data *pdata = pdev->dev.platform_data;\n" - ">>> int ret, i;\n" - ">>>\n" - ">>> + if (!pdata)\n" - ">>> + pdata = exynos_get_driver_data(pdev);\n" - ">>> +\n" - ">>> if (!pdata) {\n" - ">>> dev_err(&pdev->dev, \"No platform init data supplied.\\n\");\n" - ">>> return -ENODEV;\n" - ">>> @@ -838,9 +945,11 @@ static struct platform_driver exynos_tmu_driver = {\n" - ">>> .name = \"exynos-tmu\",\n" - ">>> .owner = THIS_MODULE,\n" - ">>> .pm = EXYNOS_TMU_PM,\n" - ">>> + .of_match_table = exynos_tmu_match,\n" - ">>> },\n" - ">>> .probe = exynos_tmu_probe,\n" - ">>> .remove = __devexit_p(exynos_tmu_remove),\n" - ">>> + .id_table = exynos_tmu_driver_ids,\n" - ">>> };\n" - ">>>\n" - ">>> module_platform_driver(exynos_tmu_driver);\n" - ">>> --\n" - ">>> 1.7.1\n" - ">>>\n" - ">>> --\n" - ">>> To unsubscribe from this list: send the line \"unsubscribe linux-kernel\" in\n" - ">>> the body of a message to majordomo@vger.kernel.org\n" - ">>> More majordomo info at http://vger.kernel.org/majordomo-info.html\n" - ">>> Please read the FAQ at http://www.tux.org/lkml/\n" - ">> --\n" - ">> To unsubscribe from this list: send the line \"unsubscribe linux-samsung-soc\" in\n" - ">> the body of a message to majordomo@vger.kernel.org\n" - ">> More majordomo info at http://vger.kernel.org/majordomo-info.html\n" - "> --\n" - "> To unsubscribe from this list: send the line \"unsubscribe linux-kernel\" in\n" - "> the body of a message to majordomo@vger.kernel.org\n" - "> More majordomo info at http://vger.kernel.org/majordomo-info.html\n" - "> Please read the FAQ at http://www.tux.org/lkml/\n" - ">\n" - Thanks. + "SGksIEFtaXQsCk9uIDIwMTLrhYQgMDfsm5QgMTTsnbwgMTY6MzAsIGFtaXQga2FjaGhhcCB3cm90\n" + "ZToKPiBPbiBTYXQsIEp1bCAxNCwgMjAxMiBhdCA3OjAzIEFNLCBLeXVuZ21pbiBQYXJrIDxrbXBh\n" + "cmtAaW5mcmFkZWFkLm9yZz4gd3JvdGU6Cj4+IE9uIEZyaSwgSnVsIDEzLCAyMDEyIGF0IDg6MTAg\n" + "UE0sIEFtaXQgRGFuaWVsIEthY2hoYXAKPj4gPGFtaXQua2FjaGhhcEBsaW5hcm8ub3JnPiB3cm90\n" + "ZToKPj4+IEFkZCBuZWNlc3NhcnkgZGVmYXVsdCBwbGF0Zm9ybSBkYXRhIHN1cHBvcnQgbmVlZGVk\n" + "IGZvciBUTVUgZHJpdmVyLiAgVGhpcwo+Pj4gZHQvbm9uLWR0IHZhbHVlcyBhcmUgdGVzdGVkIGZv\n" + "ciBvcmlnZW4gZXh5bm9zNDIxMCBhbmQgc21kayBleHlub3M1MjUwCj4+PiBwbGF0Zm9ybXMuCj4+\n" + "IExvb2tzIGdvb2QgdG8gbWUuCj4gVGhhbmtzLgo+Cj4+IGp1c3Qgbml0cGlja3MgYmVsb3cuCj4+\n" + "Cj4+IFRoYW5rIHlvdSwKPj4gS3l1bmdtaW4gUGFyawo+Pj4gU2lnbmVkLW9mZi1ieTogQW1pdCBE\n" + "YW5pZWwgS2FjaGhhcCA8YW1pdC5rYWNoaGFwQGxpbmFyby5vcmc+Cj4+PiBDYzogRG9uZ2dldW4g\n" + "S2ltIDxkZzc3LmtpbUBzYW1zdW5nLmNvbT4KPj4+IEFja2VkLWJ5OiBHdWVudGVyIFJvZWNrIDxn\n" + "dWVudGVyLnJvZWNrQGVyaWNzc29uLmNvbT4KPj4+IENjOiBTYW5nV29vayBKdSA8c3cuanVAc2Ft\n" + "c3VuZy5jb20+Cj4+PiBDYzogRHVyZ2Fkb3NzIDxkdXJnYWRvc3MuckBpbnRlbC5jb20+Cj4+PiBD\n" + "YzogTGVuIEJyb3duIDxsZW5iQGtlcm5lbC5vcmc+Cj4+PiBDYzogSmVhbiBEZWx2YXJlIDxraGFs\n" + "aUBsaW51eC1mci5vcmc+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgTW9ydG9uIDxha3BtQGxp\n" + "bnV4LWZvdW5kYXRpb24ub3JnPgo+Pj4gLS0tCj4+PiAgZHJpdmVycy90aGVybWFsL2V4eW5vc190\n" + "aGVybWFsLmMgfCAgMTExICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4+\n" + "PiAgMSBmaWxlcyBjaGFuZ2VkLCAxMTAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKPj4+\n" + "Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy90aGVybWFsL2V4eW5vc190aGVybWFsLmMgYi9kcml2\n" + "ZXJzL3RoZXJtYWwvZXh5bm9zX3RoZXJtYWwuYwo+Pj4gaW5kZXggOWVmOGMzNy4uMDc3MzZlYSAx\n" + "MDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvdGhlcm1hbC9leHlub3NfdGhlcm1hbC5jCj4+PiArKysg\n" + "Yi9kcml2ZXJzL3RoZXJtYWwvZXh5bm9zX3RoZXJtYWwuYwo+Pj4gQEAgLTY2MiwxNCArNjYyLDEy\n" + "MSBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgZXh5bm9zX3RtdV9pcnEoaW50IGlycSwgdm9pZCAqaWQp\n" + "Cj4+PiAgc3RhdGljIHN0cnVjdCB0aGVybWFsX3NlbnNvcl9jb25mIGV4eW5vc19zZW5zb3JfY29u\n" + "ZiA9IHsKPj4+ICAgICAgICAgLm5hbWUgICAgICAgICAgICAgICAgICAgPSAiZXh5bm9zLXRoZXJt\n" + "IiwKPj4+ICAgICAgICAgLnJlYWRfdGVtcGVyYXR1cmUgICAgICAgPSAoaW50ICgqKSh2b2lkICop\n" + "KWV4eW5vc190bXVfcmVhZCwKPj4+ICt9Owo+Pj4gKwo+Pj4gKyNpZiBkZWZpbmVkKENPTkZJR19D\n" + "UFVfRVhZTk9TNDIxMCkKPj4gQlRXLCBkb2Vzbid0IGl0IHNhbWUgYXMgZXh5bm9zNDQxMj8gZG9l\n" + "cyBpdCBkaWZmZXJlbnQgZnJvbSBleHlub3M0NDEyPwo+IEN1cnJlbnRseSBJIG9ubHkgdGVzdGVk\n" + "IHRoaXMgb25seSBmb3Igb3JpZ2VuIGFuZCBleHlub3M1MjUwIGJvYXJkLgo+IE1heWJlIHNvbWVi\n" + "b2R5IGNhbiBhZGQgNDQxMiBzdXBwb3J0IGFsc28uClJlY2VudGx5LCBJIGFwcGxpZWQgdGhpcyBw\n" + "YXRjaHNldCB3aXRoIGV4eW5vczQ0MTIgYW5kIGZvdW5kIGl0IHVzZXMgc2FtZQpyZWdpc3RlciBt\n" + "YXAgd2l0aCBleHlub3M1MjUwLgpTbywgSSB0aGluayBpdCBzaG91bGQgcmVuYW1lIHRoZSBhbnkg\n" + "dHlwZSBvZiBuYW1lIGNvbnRhaW5pbmcgZXh5bm9zNCBhbmQKZXh5bm9zNSAoZS5nLiBTT0NfQVJD\n" + "SF9FWFlOT1M0KQpJbiBteSBsb2NhbCwgaSByZW5hbWVkIFNPQ19BUkNIX0VYWU5PUzQgdG8gU09D\n" + "X0FSQ0hfRVhZTk9TNDIxMCBhbmQKU09DX0FSQ0hfRVhZTk9TNSB0byBTT0NfQVJDSF9FWFlOT1Mg\n" + "YW5kCm90aGVyIHJlbGF0ZWQgbmFtZSBhbHNvLiBJIHJlY29tbWVuZCB5b3UgdG8gY2hhbmdlIGFs\n" + "bCBvZiBuYW1lCj4+IElmIGl0J3Mgc2FtZSwgaXQncyBiZXR0ZXIgdG8gdXNlIENPTkZJR19TT0Nf\n" + "RVhZTk9TND8KPj4+ICtzdGF0aWMgc3RydWN0IGV4eW5vc190bXVfcGxhdGZvcm1fZGF0YSBjb25z\n" + "dCBleHlub3M0X2RlZmF1bHRfdG11X2RhdGEgPSB7Cj4+PiArICAgICAgIC50aHJlc2hvbGQgPSA4\n" + "MCwKPj4+ICsgICAgICAgLnRyaWdnZXJfbGV2ZWxzWzBdID0gNSwKPj4+ICsgICAgICAgLnRyaWdn\n" + "ZXJfbGV2ZWxzWzFdID0gMjAsCj4+PiArICAgICAgIC50cmlnZ2VyX2xldmVsc1syXSA9IDMwLAo+\n" + "Pj4gKyAgICAgICAudHJpZ2dlcl9sZXZlbDBfZW4gPSAxLAo+Pj4gKyAgICAgICAudHJpZ2dlcl9s\n" + "ZXZlbDFfZW4gPSAxLAo+Pj4gKyAgICAgICAudHJpZ2dlcl9sZXZlbDJfZW4gPSAxLAo+Pj4gKyAg\n" + "ICAgICAudHJpZ2dlcl9sZXZlbDNfZW4gPSAwLAo+Pj4gKyAgICAgICAuZ2FpbiA9IDE1LAo+Pj4g\n" + "KyAgICAgICAucmVmZXJlbmNlX3ZvbHRhZ2UgPSA3LAo+Pj4gKyAgICAgICAuY2FsX3R5cGUgPSBU\n" + "WVBFX09ORV9QT0lOVF9UUklNTUlORywKPj4+ICsgICAgICAgLmZyZXFfdGFiWzBdID0gewo+Pj4g\n" + "KyAgICAgICAgICAgICAgIC5mcmVxX2NsaXBfbWF4ID0gODAwICogMTAwMCwKPj4+ICsgICAgICAg\n" + "ICAgICAgICAudGVtcF9sZXZlbCA9IDg1LAo+Pj4gKyAgICAgICB9LAo+Pj4gKyAgICAgICAuZnJl\n" + "cV90YWJbMV0gPSB7Cj4+PiArICAgICAgICAgICAgICAgLmZyZXFfY2xpcF9tYXggPSAyMDAgKiAx\n" + "MDAwLAo+Pj4gKyAgICAgICAgICAgICAgIC50ZW1wX2xldmVsID0gMTAwLAo+Pj4gKyAgICAgICB9\n" + "LAo+Pj4gKyAgICAgICAuZnJlcV90YWJfY291bnQgPSAyLAo+Pj4gKyAgICAgICAudHlwZSA9IFNP\n" + "Q19BUkNIX0VYWU5PUzQsCj4+PiArfTsKPj4+ICsjZGVmaW5lIEVYWU5PUzRfVE1VX0RSVl9EQVRB\n" + "ICgmZXh5bm9zNF9kZWZhdWx0X3RtdV9kYXRhKQo+Pj4gKyNlbHNlCj4+PiArI2RlZmluZSBFWFlO\n" + "T1M0X1RNVV9EUlZfREFUQSAoTlVMTCkKPj4+ICsjZW5kaWYKPj4+ICsKPj4+ICsjaWYgZGVmaW5l\n" + "ZChDT05GSUdfU09DX0VYWU5PUzUyNTApCj4+IHNpbWlsYXIuCj4+PiArc3RhdGljIHN0cnVjdCBl\n" + "eHlub3NfdG11X3BsYXRmb3JtX2RhdGEgY29uc3QgZXh5bm9zNV9kZWZhdWx0X3RtdV9kYXRhID0g\n" + "ewo+Pj4gKyAgICAgICAudHJpZ2dlcl9sZXZlbHNbMF0gPSA4NSwKPj4+ICsgICAgICAgLnRyaWdn\n" + "ZXJfbGV2ZWxzWzFdID0gMTAzLAo+Pj4gKyAgICAgICAudHJpZ2dlcl9sZXZlbHNbMl0gPSAxMTAs\n" + "Cj4+PiArICAgICAgIC50cmlnZ2VyX2xldmVsMF9lbiA9IDEsCj4+PiArICAgICAgIC50cmlnZ2Vy\n" + "X2xldmVsMV9lbiA9IDEsCj4+PiArICAgICAgIC50cmlnZ2VyX2xldmVsMl9lbiA9IDEsCj4+PiAr\n" + "ICAgICAgIC50cmlnZ2VyX2xldmVsM19lbiA9IDAsCj4+PiArICAgICAgIC5nYWluID0gOCwKPj4+\n" + "ICsgICAgICAgLnJlZmVyZW5jZV92b2x0YWdlID0gMTYsCj4+PiArICAgICAgIC5ub2lzZV9jYW5j\n" + "ZWxfbW9kZSA9IDQsCj4+PiArICAgICAgIC5jYWxfdHlwZSA9IFRZUEVfT05FX1BPSU5UX1RSSU1N\n" + "SU5HLAo+Pj4gKyAgICAgICAuZWZ1c2VfdmFsdWUgPSA1NSwKPj4+ICsgICAgICAgLmZyZXFfdGFi\n" + "WzBdID0gewo+Pj4gKyAgICAgICAgICAgICAgIC5mcmVxX2NsaXBfbWF4ID0gODAwICogMTAwMCwK\n" + "Pj4+ICsgICAgICAgICAgICAgICAudGVtcF9sZXZlbCA9IDg1LAo+Pj4gKyAgICAgICB9LAo+Pj4g\n" + "KyAgICAgICAuZnJlcV90YWJbMV0gPSB7Cj4+PiArICAgICAgICAgICAgICAgLmZyZXFfY2xpcF9t\n" + "YXggPSAyMDAgKiAxMDAwLAo+Pj4gKyAgICAgICAgICAgICAgIC50ZW1wX2xldmVsID0gMTAzLAo+\n" + "Pj4gKyAgICAgICB9LAo+Pj4gKyAgICAgICAuZnJlcV90YWJfY291bnQgPSAyLAo+Pj4gKyAgICAg\n" + "ICAudHlwZSA9IFNPQ19BUkNIX0VYWU5PUzUsCj4+PiArfTsKPj4+ICsjZGVmaW5lIEVYWU5PUzVf\n" + "VE1VX0RSVl9EQVRBICgmZXh5bm9zNV9kZWZhdWx0X3RtdV9kYXRhKQo+Pj4gKyNlbHNlCj4+PiAr\n" + "I2RlZmluZSBFWFlOT1M1X1RNVV9EUlZfREFUQSAoTlVMTCkKPj4+ICsjZW5kaWYKPj4+ICsKPj4+\n" + "ICsjaWZkZWYgQ09ORklHX09GCj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQg\n" + "ZXh5bm9zX3RtdV9tYXRjaFtdID0gewo+Pj4gKyAgICAgICB7Cj4+PiArICAgICAgICAgICAgICAg\n" + "LmNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3M0LXRtdSIsCj4+PiArICAgICAgICAgICAgICAg\n" + "LmRhdGEgPSAodm9pZCAqKUVYWU5PUzRfVE1VX0RSVl9EQVRBLAo+Pj4gKyAgICAgICB9LAo+Pj4g\n" + "KyAgICAgICB7Cj4+PiArICAgICAgICAgICAgICAgLmNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlu\n" + "b3M1LXRtdSIsCj4+PiArICAgICAgICAgICAgICAgLmRhdGEgPSAodm9pZCAqKUVYWU5PUzVfVE1V\n" + "X0RSVl9EQVRBLAo+Pj4gKyAgICAgICB9LAo+Pj4gKyAgICAgICB7fSwKPj4+ICt9Owo+Pj4gK01P\n" + "RFVMRV9ERVZJQ0VfVEFCTEUob2YsIGV4eW5vc190bXVfbWF0Y2gpOwo+Pj4gKyNlbHNlCj4+PiAr\n" + "I2RlZmluZSAgZXh5bm9zX3RtdV9tYXRjaCBOVUxMCj4+PiArI2VuZGlmCj4+PiArCj4+PiArc3Rh\n" + "dGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2VfaWQgZXh5bm9zX3RtdV9kcml2ZXJfaWRzW10gPSB7\n" + "Cj4+PiArICAgICAgIHsKPj4+ICsgICAgICAgICAgICAgICAubmFtZSAgICAgICAgICAgPSAiZXh5\n" + "bm9zNC10bXUiLAo+Pj4gKyAgICAgICAgICAgICAgIC5kcml2ZXJfZGF0YSAgICA9IChrZXJuZWxf\n" + "dWxvbmdfdClFWFlOT1M0X1RNVV9EUlZfREFUQSwKPj4+ICsgICAgICAgfSwKPj4+ICsgICAgICAg\n" + "ewo+Pj4gKyAgICAgICAgICAgICAgIC5uYW1lICAgICAgICAgICA9ICJleHlub3M1LXRtdSIsCj4+\n" + "PiArICAgICAgICAgICAgICAgLmRyaXZlcl9kYXRhICAgID0gKGtlcm5lbF91bG9uZ190KUVYWU5P\n" + "UzVfVE1VX0RSVl9EQVRBLAo+Pj4gKyAgICAgICB9LAo+Pj4gKyAgICAgICB7IH0sCj4+PiArfTsK\n" + "Pj4+ICtNT0RVTEVfREVWSUNFX1RBQkxFKHBsYXRmb3JtLCBleHlub3M0X3RtdV9kcml2ZXJfaWRz\n" + "KTsKPj4+ICsKPj4+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCAgZXh5bm9zX3RtdV9wbGF0Zm9ybV9k\n" + "YXRhICpleHlub3NfZ2V0X2RyaXZlcl9kYXRhKAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAg\n" + "c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4+ICt7Cj4+PiArI2lmZGVmIENPTkZJR19P\n" + "Rgo+Pj4gKyAgICAgICBpZiAocGRldi0+ZGV2Lm9mX25vZGUpIHsKPj4+ICsgICAgICAgICAgICAg\n" + "ICBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICptYXRjaDsKPj4+ICsgICAgICAgICAgICAgICBt\n" + "YXRjaCA9IG9mX21hdGNoX25vZGUoZXh5bm9zX3RtdV9tYXRjaCwgcGRldi0+ZGV2Lm9mX25vZGUp\n" + "Owo+Pj4gKyAgICAgICAgICAgICAgIGlmICghbWF0Y2gpCj4+PiArICAgICAgICAgICAgICAgICAg\n" + "ICAgICByZXR1cm4gTlVMTDsKPj4+ICsgICAgICAgICAgICAgICByZXR1cm4gKHN0cnVjdCBleHlu\n" + "b3NfdG11X3BsYXRmb3JtX2RhdGEgKikgbWF0Y2gtPmRhdGE7Cj4+PiArICAgICAgIH0KPj4+ICsj\n" + "ZW5kaWYKPj4+ICsgICAgICAgcmV0dXJuIChzdHJ1Y3QgZXh5bm9zX3RtdV9wbGF0Zm9ybV9kYXRh\n" + "ICopCj4+PiArICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybV9nZXRfZGV2aWNlX2lkKHBk\n" + "ZXYpLT5kcml2ZXJfZGF0YTsKPj4+ICB9Cj4+PiAtOwo+Pj4gIHN0YXRpYyBpbnQgX19kZXZpbml0\n" + "IGV4eW5vc190bXVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4+ICB7Cj4+\n" + "PiAgICAgICAgIHN0cnVjdCBleHlub3NfdG11X2RhdGEgKmRhdGE7Cj4+PiAgICAgICAgIHN0cnVj\n" + "dCBleHlub3NfdG11X3BsYXRmb3JtX2RhdGEgKnBkYXRhID0gcGRldi0+ZGV2LnBsYXRmb3JtX2Rh\n" + "dGE7Cj4+PiAgICAgICAgIGludCByZXQsIGk7Cj4+Pgo+Pj4gKyAgICAgICBpZiAoIXBkYXRhKQo+\n" + "Pj4gKyAgICAgICAgICAgICAgIHBkYXRhID0gZXh5bm9zX2dldF9kcml2ZXJfZGF0YShwZGV2KTsK\n" + "Pj4+ICsKPj4+ICAgICAgICAgaWYgKCFwZGF0YSkgewo+Pj4gICAgICAgICAgICAgICAgIGRldl9l\n" + "cnIoJnBkZXYtPmRldiwgIk5vIHBsYXRmb3JtIGluaXQgZGF0YSBzdXBwbGllZC5cbiIpOwo+Pj4g\n" + "ICAgICAgICAgICAgICAgIHJldHVybiAtRU5PREVWOwo+Pj4gQEAgLTgzOCw5ICs5NDUsMTEgQEAg\n" + "c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZXh5bm9zX3RtdV9kcml2ZXIgPSB7Cj4+PiAg\n" + "ICAgICAgICAgICAgICAgLm5hbWUgICA9ICJleHlub3MtdG11IiwKPj4+ICAgICAgICAgICAgICAg\n" + "ICAub3duZXIgID0gVEhJU19NT0RVTEUsCj4+PiAgICAgICAgICAgICAgICAgLnBtICAgICA9IEVY\n" + "WU5PU19UTVVfUE0sCj4+PiArICAgICAgICAgICAgICAgLm9mX21hdGNoX3RhYmxlID0gZXh5bm9z\n" + "X3RtdV9tYXRjaCwKPj4+ICAgICAgICAgfSwKPj4+ICAgICAgICAgLnByb2JlID0gZXh5bm9zX3Rt\n" + "dV9wcm9iZSwKPj4+ICAgICAgICAgLnJlbW92ZSA9IF9fZGV2ZXhpdF9wKGV4eW5vc190bXVfcmVt\n" + "b3ZlKSwKPj4+ICsgICAgICAgLmlkX3RhYmxlID0gZXh5bm9zX3RtdV9kcml2ZXJfaWRzLAo+Pj4g\n" + "IH07Cj4+Pgo+Pj4gIG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoZXh5bm9zX3RtdV9kcml2ZXIpOwo+\n" + "Pj4gLS0KPj4+IDEuNy4xCj4+Pgo+Pj4gLS0KPj4+IFRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBs\n" + "aXN0OiBzZW5kIHRoZSBsaW5lICJ1bnN1YnNjcmliZSBsaW51eC1rZXJuZWwiIGluCj4+PiB0aGUg\n" + "Ym9keSBvZiBhIG1lc3NhZ2UgdG8gbWFqb3Jkb21vQHZnZXIua2VybmVsLm9yZwo+Pj4gTW9yZSBt\n" + "YWpvcmRvbW8gaW5mbyBhdCAgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5o\n" + "dG1sCj4+PiBQbGVhc2UgcmVhZCB0aGUgRkFRIGF0ICBodHRwOi8vd3d3LnR1eC5vcmcvbGttbC8K\n" + "Pj4gLS0KPj4gVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhlIGxpbmUgInVu\n" + "c3Vic2NyaWJlIGxpbnV4LXNhbXN1bmctc29jIiBpbgo+PiB0aGUgYm9keSBvZiBhIG1lc3NhZ2Ug\n" + "dG8gbWFqb3Jkb21vQHZnZXIua2VybmVsLm9yZwo+PiBNb3JlIG1ham9yZG9tbyBpbmZvIGF0ICBo\n" + "dHRwOi8vdmdlci5rZXJuZWwub3JnL21ham9yZG9tby1pbmZvLmh0bWwKPiAtLQo+IFRvIHVuc3Vi\n" + "c2NyaWJlIGZyb20gdGhpcyBsaXN0OiBzZW5kIHRoZSBsaW5lICJ1bnN1YnNjcmliZSBsaW51eC1r\n" + "ZXJuZWwiIGluCj4gdGhlIGJvZHkgb2YgYSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtlcm5l\n" + "bC5vcmcKPiBNb3JlIG1ham9yZG9tbyBpbmZvIGF0ICBodHRwOi8vdmdlci5rZXJuZWwub3JnL21h\n" + "am9yZG9tby1pbmZvLmh0bWwKPiBQbGVhc2UgcmVhZCB0aGUgRkFRIGF0ICBodHRwOi8vd3d3LnR1\n" + "eC5vcmcvbGttbC8KPgpUaGFua3MuCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f\n" + "X19fX19fX19fX19fX19fCmxtLXNlbnNvcnMgbWFpbGluZyBsaXN0CmxtLXNlbnNvcnNAbG0tc2Vu\n" + "c29ycy5vcmcKaHR0cDovL2xpc3RzLmxtLXNlbnNvcnMub3JnL21haWxtYW4vbGlzdGluZm8vbG0t\n" + c2Vuc29ycw= -70ec98ef20b15bf23c3ff1a0c0c09ad4312510dcb0e0269b056781b1fef88192 +5b105d265de2f50579c4aaaebf447b7151f196afd4c78fb7e9fd535fe946c908
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.