From nobody Fri Dec 19 14:33:57 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3AF7C342CB6; Wed, 5 Nov 2025 19:52:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762372373; cv=none; b=BDBS5rdmYtJaRB8qwSLQ3fDySY7APXSmWEOCQRv2F2jGvw3FkjaD7X9bhW0A4L7h1FSoYPE0g6C8Wq+G6187R2hh9q/NoS4FVqDpRnw/ie+CoRcZz29tlMHKVZFgKGEix5xjFyC8bcW0BcPkhnSNa5Y90/TZIcBy9ZYnn5+mmo8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762372373; c=relaxed/simple; bh=0+mhj7rfyq0ihaynFxab7j2Zxin8YIpJjYpan11euhs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ft6K2GlulzmcBFet2MnhZtyl1X++zMYaihix1KJPuwqe9i70Of3qhSk2Ccj0UFFsue6v3VNtuXpfk4ioS4LfBdKfR0rBeL0bY7d/7euP5LqBxuXqK8uVbjTER3bu9Wc85hmrqSGYWGEswLlGzKUF6/Fta5tiaVvog5ZzRMDjknM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=i349puz6; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="i349puz6" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1B46AC116B1; Wed, 5 Nov 2025 19:52:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762372371; bh=0+mhj7rfyq0ihaynFxab7j2Zxin8YIpJjYpan11euhs=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=i349puz6NdzMj0uApX4+zA88cw6tQGEn+rj4vpudj5i6PS+v3QiyiEVwiYxRVvNMc ZGw1I3oghyJTOpfbXH9HJugfzuxjgeKwTskU+gbxUEcYzWilwoD5Dol75LETxOW8eF SJPaWbsL51/Fj2gDoww+FIPltLQCFCAjiFtWNrY+kpTY6XpPLLeF+Hr3izQIllH+4l suscSrQHOL6vyFTSt3vBIdsIIRQfEuT9woXFHU9Vc3Xl15X/owr8x6r9f5td7ux+J4 5Bnw4pxi9oj/OGM2WmGWL/jeQiuryCxnc6AXNnkMNIjRrMuofB1FENXMhMXd9c26Yo HUqT8fJHy5ZqA== From: akemnade@kernel.org Date: Wed, 05 Nov 2025 20:52:35 +0100 Subject: [PATCH v3 1/3] dt-bindings: mfd: twl: enable power button also for twl603x Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251105-twl6030-button-v3-1-9b37eb2b0989@kernel.org> References: <20251105-twl6030-button-v3-0-9b37eb2b0989@kernel.org> In-Reply-To: <20251105-twl6030-button-v3-0-9b37eb2b0989@kernel.org> To: Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andreas Kemnade , Dmitry Torokhov , Tony Lindgren , Kevin Hilman Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-input@vger.kernel.org, linux-omap@vger.kernel.org, Andreas Kemnade X-Mailer: b4 0.15-dev-a6db3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2582; i=akemnade@kernel.org; h=from:subject:message-id; bh=5e8dspO3eC9P6aN13/cWN/AxzNfhJQvtiM4MO48925g=; b=owGbwMvMwCUm/rzkS6lq2x3G02pJDJncq3lLljetb13P2viDVaws+NzkDSf/F7Zxzvs7Y5qP8 7Gsc88udpSyMIhxMciKKbL8slZw+6TyLDd4aoQ9zBxWJpAhDFycAjCRhVsZGe4cyPzrVRm6R/4J M4dA9d29mYu1LtRz90wL3nXPoiDyxUNGhr1MjIYJsSxdDVFVTXu4v3EIN+1NnXboYu1S2zq/Xwr zuQE= X-Developer-Key: i=akemnade@kernel.org; a=openpgp; fpr=EEC0DB858E66C0DA70620AC07DBD6AC74DE29324 From: Andreas Kemnade TWL603x has also a power button function, so add the corresponding subnode. As not in all cases there is a power button connected to the corresponding pad of the TWL603x, the functionality can be disabled by status =3D "disabled" or simply not adding the subnode. To keep things simple, follow the established design pattern of using const interrupts as used also by the other subdevices. Signed-off-by: Andreas Kemnade --- Documentation/devicetree/bindings/mfd/ti,twl.yaml | 40 +++++++++++++++++++= ---- 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/Documentation/devicetree/bindings/mfd/ti,twl.yaml b/Documentat= ion/devicetree/bindings/mfd/ti,twl.yaml index 776b04e182cb..045fd07f476e 100644 --- a/Documentation/devicetree/bindings/mfd/ti,twl.yaml +++ b/Documentation/devicetree/bindings/mfd/ti,twl.yaml @@ -55,6 +55,15 @@ allOf: =20 gpadc: false =20 + pwrbutton: + properties: + compatible: + const: ti,twl4030-pwrbutton + interrupts: + items: + - items: + const: 8 + usb-comparator: false =20 - if: @@ -95,7 +104,14 @@ allOf: compatible: const: ti,twl6030-gpadc =20 - pwrbutton: false + pwrbutton: + properties: + compatible: + const: ti,twl6030-pwrbutton + interrupts: + items: + - items: + const: 0 =20 madc: false =20 @@ -146,7 +162,14 @@ allOf: compatible: const: ti,twl6032-gpadc =20 - pwrbutton: false + pwrbutton: + properties: + compatible: + const: ti,twl6030-pwrbutton + interrupts: + items: + - items: + const: 0 =20 madc: false =20 @@ -226,11 +249,11 @@ properties: =20 properties: compatible: - const: ti,twl4030-pwrbutton + enum: + - ti,twl4030-pwrbutton + - ti,twl6030-pwrbutton interrupts: - items: - - items: - const: 8 + maxItems: 1 =20 watchdog: type: object @@ -459,6 +482,11 @@ examples: #io-channel-cells =3D <1>; }; =20 + pwrbutton { + compatible =3D "ti,twl6030-pwrbutton"; + interrupts =3D <0>; + }; + rtc { compatible =3D "ti,twl4030-rtc"; interrupts =3D <8>; --=20 2.47.3 From nobody Fri Dec 19 14:33:57 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 54BFA3446C6; Wed, 5 Nov 2025 19:52:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762372375; cv=none; b=kqvgX3OQ9LJETs3fMObBz5Orf7Defzk8Qz1Kuvsmqye3gccOoD1C/9fo2Ewgbs6W5z5cW0ImwAjIGw91IZHGnuGdvPRBw3FrAZMDNUYok5knVdH6uBItX0RHIUh/xvRstNhgq1bwkVYSKJgpMriTK9U9m2O3qtmaSq8wlusEPmc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762372375; c=relaxed/simple; bh=U+QvbDkpaf3iiW8wMbRoxmFLPrrGzAULeGqeGxjatsY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=XmUcKtBcd5H6D0bZIQp6XAJkM55O9/qyGMFyq3TSbSHypI9rFt50VGI99Ehsm84StlNMaK5Y6sPO0kXqqBdCiPii9HMc6oZpVInFPP/Y1qwyeiokU/CNboBMcvcyv8jJKU8KIxqgbq+G7bR3uNMrjJGdoj9wdl0zw9LF7yMd9QQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=LrghAsRB; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="LrghAsRB" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2DA61C116C6; Wed, 5 Nov 2025 19:52:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762372374; bh=U+QvbDkpaf3iiW8wMbRoxmFLPrrGzAULeGqeGxjatsY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=LrghAsRBfUX40e18MYZ4LNzb8Whxm4OkYFzUYhFKvNFaIHk8qJ522gbUozKOBZv3j 8kZReKIMeRNYvm7ueit9BOxfPFxwjOMl1QLix5G8xsI17lI8UIQ4ZMv19U4MU8KB0V CAjagFDcZHZ2w7d4SXnlXOGP7vnOGJ3NPgODHjExiDFTnXjyJKdfZ8KETgyPnmWjHR bhhfUFGvalw//mkof3tuoUHk/CI18yW9V8F2p8Ncp20/+jxsGTkptrulHYfJjc4Vf6 NysI9m0Gw8ADXUltqtGROC/orzXAnNFMyTZmDkGOGz75pNq/TFkXmjbUM3E1EwyhT1 nYP9rjhtUK+PQ== From: akemnade@kernel.org Date: Wed, 05 Nov 2025 20:52:36 +0100 Subject: [PATCH v3 2/3] Input: twl4030 - add TWL603x power button Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251105-twl6030-button-v3-2-9b37eb2b0989@kernel.org> References: <20251105-twl6030-button-v3-0-9b37eb2b0989@kernel.org> In-Reply-To: <20251105-twl6030-button-v3-0-9b37eb2b0989@kernel.org> To: Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andreas Kemnade , Dmitry Torokhov , Tony Lindgren , Kevin Hilman Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-input@vger.kernel.org, linux-omap@vger.kernel.org, Andreas Kemnade X-Mailer: b4 0.15-dev-a6db3 X-Developer-Signature: v=1; a=openpgp-sha256; l=3834; i=akemnade@kernel.org; h=from:subject:message-id; bh=cXdiSFoOQjIF/JLmwyIa+OOXmaHNkrjxPnKrQetGb+Q=; b=owGbwMvMwCUm/rzkS6lq2x3G02pJDJncq3lfSJU9cVKNu66fbprxYfpvnQMaFy4yVzLkySg/r l53/FZQRykLgxgXg6yYIssvawW3TyrPcoOnRtjDzGFlAhnCwMUpABMp2M/wv1zF5Lf+h2UJe1+w uFkc3hXf+F/v//vdUfrah7MPrp0ey8DIMGPlohvhlgrc875yBO5b/F9uxr2bzK+DpZat9i1oTZ5 QyA4A X-Developer-Key: i=akemnade@kernel.org; a=openpgp; fpr=EEC0DB858E66C0DA70620AC07DBD6AC74DE29324 From: Andreas Kemnade Like the TWL4030, these PMICs also have a power button feature, so extend the TWL4030 power button driver. As the irqchip of the TWL6030 mfd driver does not provide mask, unmask finctions, do it manually. Signed-off-by: Andreas Kemnade --- drivers/input/misc/twl4030-pwrbutton.c | 61 ++++++++++++++++++++++++++++++= +--- 1 file changed, 57 insertions(+), 4 deletions(-) diff --git a/drivers/input/misc/twl4030-pwrbutton.c b/drivers/input/misc/tw= l4030-pwrbutton.c index f85cc289c053..b72fba9a1b2c 100644 --- a/drivers/input/misc/twl4030-pwrbutton.c +++ b/drivers/input/misc/twl4030-pwrbutton.c @@ -25,22 +25,40 @@ #include #include #include +#include #include #include #include #include =20 -#define PWR_PWRON_IRQ (1 << 0) +#define PWR_PWRON_IRQ BIT(0) =20 -#define STS_HW_CONDITIONS 0xf +#define STS_HW_CONDITIONS_4030 0xf +#define STS_HW_CONDITIONS_6030 0x2 + +struct twl_pwrbutton_chipdata { + u8 status_reg; + bool need_manual_irq; +}; + +static const struct twl_pwrbutton_chipdata twl4030_chipdata =3D { + STS_HW_CONDITIONS_4030, + false, +}; + +static const struct twl_pwrbutton_chipdata twl6030_chipdata =3D { + STS_HW_CONDITIONS_6030, + true, +}; =20 static irqreturn_t powerbutton_irq(int irq, void *_pwr) { struct input_dev *pwr =3D _pwr; + const struct twl_pwrbutton_chipdata *pdata =3D dev_get_drvdata(pwr->dev.p= arent); int err; u8 value; =20 - err =3D twl_i2c_read_u8(TWL_MODULE_PM_MASTER, &value, STS_HW_CONDITIONS); + err =3D twl_i2c_read_u8(TWL_MODULE_PM_MASTER, &value, pdata->status_reg); if (!err) { pm_wakeup_event(pwr->dev.parent, 0); input_report_key(pwr, KEY_POWER, value & PWR_PWRON_IRQ); @@ -55,10 +73,17 @@ static irqreturn_t powerbutton_irq(int irq, void *_pwr) =20 static int twl4030_pwrbutton_probe(struct platform_device *pdev) { + const struct twl_pwrbutton_chipdata *pdata; struct input_dev *pwr; int irq =3D platform_get_irq(pdev, 0); int err; =20 + pdata =3D device_get_match_data(&pdev->dev); + if (!pdata) + return -EINVAL; + + platform_set_drvdata(pdev, (void *)pdata); + pwr =3D devm_input_allocate_device(&pdev->dev); if (!pwr) { dev_err(&pdev->dev, "Can't allocate power button\n"); @@ -85,14 +110,41 @@ static int twl4030_pwrbutton_probe(struct platform_dev= ice *pdev) return err; } =20 + if (pdata->need_manual_irq) { + err =3D twl6030_interrupt_unmask(0x01, REG_INT_MSK_LINE_A); + if (err < 0) + return err; + + err =3D twl6030_interrupt_unmask(0x01, REG_INT_MSK_STS_A); + if (err < 0) + return err; + } + device_init_wakeup(&pdev->dev, true); =20 return 0; } =20 +static void twl4030_pwrbutton_remove(struct platform_device *pdev) +{ + const struct twl_pwrbutton_chipdata *pdata =3D platform_get_drvdata(pdev); + + if (pdata->need_manual_irq) { + twl6030_interrupt_mask(0x01, REG_INT_MSK_LINE_A); + twl6030_interrupt_mask(0x01, REG_INT_MSK_STS_A); + } +} + #ifdef CONFIG_OF static const struct of_device_id twl4030_pwrbutton_dt_match_table[] =3D { - { .compatible =3D "ti,twl4030-pwrbutton" }, + { + .compatible =3D "ti,twl4030-pwrbutton", + .data =3D &twl4030_chipdata, + }, + { + .compatible =3D "ti,twl6030-pwrbutton", + .data =3D &twl6030_chipdata, + }, {}, }; MODULE_DEVICE_TABLE(of, twl4030_pwrbutton_dt_match_table); @@ -100,6 +152,7 @@ MODULE_DEVICE_TABLE(of, twl4030_pwrbutton_dt_match_tabl= e); =20 static struct platform_driver twl4030_pwrbutton_driver =3D { .probe =3D twl4030_pwrbutton_probe, + .remove =3D twl4030_pwrbutton_remove, .driver =3D { .name =3D "twl4030_pwrbutton", .of_match_table =3D of_match_ptr(twl4030_pwrbutton_dt_match_table), --=20 2.47.3 From nobody Fri Dec 19 14:33:57 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4D0F6345CAC; Wed, 5 Nov 2025 19:52:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762372378; cv=none; b=noNfhweS0FTwrbgeva78ARbvIMiDzu8oz65Wc+IKev/dRAp1PHYSV5czaMgyMwM0bRkZF1nDsAsVoC+HF1UI0Atw0DKoiKmUfVVS6p9CxCxoKhX/mhcdEQTsyiDp97vUvYJS4UDwqzlbJLppxGtcU9wzJ7pJqJF/AoVH5a0v7ak= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762372378; c=relaxed/simple; bh=adyXiT86E3/PnN/XVD2yWuOTXuTxM2aPkCYxiEEjduY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IojLwhlo1EAdDaBad/w4Re9L8MM4kyuh+0bQIAvmYGJkzOzaVmvWOc706cCFhybtfnebdu/QwbQsVthnrXEhNQrrxoBN7ppq5D0PRUrPA8t3C4iRwG8LREoRBP+oWZGk1W11J5yAbTGxAqoqwo0+8V3BgegTGfYqF41zwWQ9vb4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Ktkw8h6G; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Ktkw8h6G" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 42B17C4CEF5; Wed, 5 Nov 2025 19:52:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762372377; bh=adyXiT86E3/PnN/XVD2yWuOTXuTxM2aPkCYxiEEjduY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Ktkw8h6GlcysGPKIcqkTCsIRQG7DdIskEpJ1zknkBIDLKam3uFvNmAkiSbbs/gSjH sdXDYgVgajbrgkkac+U5FOY5BeUC6XYdmhOxlXC5m45gLDVt0hFB1HAGPO6Mcv6gCD A2T3TSW6aG4k8qaSEJHgpALCEcd0w9bm41oSydk4/4/EGkbvAeVYUyM+aKuGb30Kso 8IMzxr4UbhVnmNF/0QJBThVSvBStl3VSU0rwhvcGJOPVvqJjI7L2gtvRXtnIfQfopr 6MFLOSuG1g2JhrZ6IGz4teIOZLL7U4IKhE5Z0aChKnHjV4eQx3PQEdjy4Mu9XVe403 sW6WBLpi+NgvQ== From: akemnade@kernel.org Date: Wed, 05 Nov 2025 20:52:37 +0100 Subject: [PATCH v3 3/3] ARM: dts: ti/omap: omap4-epson-embt2ws: add powerbutton Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251105-twl6030-button-v3-3-9b37eb2b0989@kernel.org> References: <20251105-twl6030-button-v3-0-9b37eb2b0989@kernel.org> In-Reply-To: <20251105-twl6030-button-v3-0-9b37eb2b0989@kernel.org> To: Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andreas Kemnade , Dmitry Torokhov , Tony Lindgren , Kevin Hilman Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-input@vger.kernel.org, linux-omap@vger.kernel.org, Andreas Kemnade X-Mailer: b4 0.15-dev-a6db3 X-Developer-Signature: v=1; a=openpgp-sha256; l=828; i=akemnade@kernel.org; h=from:subject:message-id; bh=kCywPpfG6XQhiUheZwu6EG6J7hIkcu/XRNjW/00c6gg=; b=owGbwMvMwCUm/rzkS6lq2x3G02pJDJncq3nV371cePT/XUPWNHOvRpFFh19Xzp9/72YPp3ysT plmMfOOjlIWBjEuBlkxRZZf1gpun1Se5QZPjbCHmcPKBDKEgYtTACYy5xzDf1/2U17rntzZuo3R 4sanbZfmaNXN2MfmumIGk/G/dXnNd7kY/nB890nZEKVo7G7NepHdXeC4xCW9/7pbOPzZlFwuT/g 1jxEA X-Developer-Key: i=akemnade@kernel.org; a=openpgp; fpr=EEC0DB858E66C0DA70620AC07DBD6AC74DE29324 From: Andreas Kemnade There is a power button connected to the PMIC, so describe it to be able to power off the device in a convenient manner. Signed-off-by: Andreas Kemnade --- arch/arm/boot/dts/ti/omap/omap4-epson-embt2ws.dts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/arch/arm/boot/dts/ti/omap/omap4-epson-embt2ws.dts b/arch/arm/b= oot/dts/ti/omap/omap4-epson-embt2ws.dts index c90f43cc2fae..673df1b693f2 100644 --- a/arch/arm/boot/dts/ti/omap/omap4-epson-embt2ws.dts +++ b/arch/arm/boot/dts/ti/omap/omap4-epson-embt2ws.dts @@ -229,6 +229,11 @@ rtc { interrupts =3D <11>; }; =20 + pwrbutton { + compatible =3D "ti,twl6030-pwrbutton"; + interrupts =3D <0>; + }; + ldo2: regulator-ldo2 { compatible =3D "ti,twl6032-ldo2"; regulator-min-microvolt =3D <1000000>; --=20 2.47.3