From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754261AbbJPTRM (ORCPT ); Fri, 16 Oct 2015 15:17:12 -0400 Received: from mail-by2on0053.outbound.protection.outlook.com ([207.46.100.53]:26784 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754148AbbJPTRD (ORCPT ); Fri, 16 Oct 2015 15:17:03 -0400 X-Greylist: delayed 16282 seconds by postgrey-1.27 at vger.kernel.org; Fri, 16 Oct 2015 15:17:02 EDT Authentication-Results: spf=fail (sender IP is 66.35.236.236) smtp.mailfrom=opensource.altera.com; cavium.com; dkim=none (message not signed) header.d=none;cavium.com; dmarc=none action=none header.from=opensource.altera.com; Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=dinguyen@opensource.altera.com; Date: Fri, 16 Oct 2015 14:10:02 -0500 From: Dinh Nguyen X-X-Sender: dinguyen@linux-builds1 To: David Daney CC: Andrew Lunn , Florian Fainelli , "David S. Miller" , , , "linux-kernel@vger.kernel.org" Subject: Re: SoCFPGA ethernet broken In-Reply-To: <56212A09.5080206@caviumnetworks.com> Message-ID: References: <562005AD.8020903@opensource.altera.com> <56200BD7.8020505@gmail.com> <56200E15.9080603@caviumnetworks.com> <56201158.8040806@opensource.altera.com> <56201AE7.2020103@gmail.com> <20151016033143.GA28207@lunn.ch> <20151016150345.GI10146@lunn.ch> <20151016155644.GJ10146@lunn.ch> <56212A09.5080206@caviumnetworks.com> User-Agent: Alpine 2.02 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" X-Originating-IP: [64.129.157.38] X-ClientProxiedBy: BY2PR05CA029.namprd05.prod.outlook.com (10.141.250.19) To BLUPR03MB1364.namprd03.prod.outlook.com (25.163.80.30) X-Microsoft-Exchange-Diagnostics-untrusted: 1;BLUPR03MB1364;2:oRk48Q6pRXQYyKtg5M25fjqW/F1FPic3c5RM88f7WRaIQIhhFuTrfZu1jmFYebWA4nLuAw5L/e+KcGmIIO29tWKba7t+51NMc9T7LlKp2Ourq9m+pr4zsRuz7WcrG9Fs4FL8CMs74y7PWF9y4v3yZDVAKUePqWpBs2FvE4Y7NXw=;3:f8X1TeBn6l4XOgGhE0aHZt1Ubugn7fxJRtxa4AFszVjN2EYcJP2EsBv1ZJ7THy1MYaoAwP9VxZkyd4/UvCKEqodtGdM0BL6oftz3gBQTifSqWF9Uj//H3E1+Gy9LQvIXG04Yg7+tWPEk/BDCYQAASw==;25:EEwUmbx/zsotDCs5/cNEiva6BF2sz6IyWcf0w/jRZNpkbnklNJSqL8n2+yWC6rrqxAWFrphekphzKT5NlkcxuQxCAOSiCwNc3P+SoxKz2tiGQQiEX47pNe4HYsCSA40Nqd7mDQGhQOQfM1V5sQdiSusEv4ccV9VONwttlOHVmCEyQ9PgzZ6dl0iVkL9ecqBuZb6hIBh6/ZsvKdDr/G4LCm3rgfpTjk4qd2TNHVZRRxZCDWulYFSOUvpkssYeGBcLlaaEFxhp6zj4YIxh0lfC1Q==;20:k50QvfjMCpAxFhqH+R66yXdGWVZ4XtfkDOwUBM0Ev7e5CElPUM0I6uBKs6AQMJauPbA3XFDY02wkhd18xnvGyspdKUzim/p9oWsG6KK91BRzlkeAnSP63e/HZuHQCR655qJkwEh1X7ZHajnGeI22cW8zjOCw2NChyl3K45gY4iI= X-Microsoft-Antispam-Untrusted: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB1364; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:;UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(8121501046)(5005006)(520078)(3002001);SRVR:BLUPR03MB1364;BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB1364;BCL:0;PCL:0;RULEID:(601004)(2401047)(520078)(5005006)(8121501046)(3002001);SRVR:BY2PR03MB315;BCL:0;PCL:0;RULEID:;SRVR:BY2PR03MB315; X-Microsoft-Exchange-Diagnostics-untrusted: 1;BLUPR03MB1364;4:1r5n5mHXV1ha078TVjjEEXFVEEQ8l6I3SXhw/KgWznCe4QpEeO/dBzTYZly5wbmR+8Pnplrw1W8JZsj7G/Az0AKLHHJbpRASNwpvX1LBbCPaqZiZJHCQo7pP0NOFs6/jPW068GEIbiFdG6ysiokf0oXg4ZTiOcDwO3doOc+fjWjf+WvwO3mnuoWLaTwNEMlDxWxl9yE+8ZTbwyMPa+0DI56ckZ8wHkQOuB3N8uIN7EGkRMPA8kn5QhSUyZHCZxKgoTaq3fQbY4fvt6zkad1bcKisOB87D8b0EbLHz9qOzr9j5kWwQGqP54gPgaYK4SoUZLduXPEROo8+PYRKAA8lGmpNA9awIak4vFxaP2tTVIM= X-Forefront-PRVS: 0731AA2DE6 X-Forefront-Antispam-Report-Untrusted: SFV:NSPM;SFS:(10009020)(6009001)(189002)(479174004)(377454003)(199003)(24454002)(76176999)(46102003)(2950100001)(5007970100001)(86362001)(105586002)(87976001)(33716001)(54356999)(64706001)(5890100001)(53416004)(40100003)(46406003)(19580405001)(5008740100001)(47776003)(50986999)(66066001)(42186005)(92566002)(23726002)(4001350100001)(19580395003)(189998001)(122386002)(77096005)(69596002)(97736004)(81156007)(5001960100002)(93886004)(83506001)(101416001)(5004730100002)(106356001)(50466002)(110136002);DIR:OUT;SFP:1101;SCL:1;SRVR:BLUPR03MB1364;H:linux-builds1.altera.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:0;LANG:en; X-Microsoft-Exchange-Diagnostics-untrusted: =?us-ascii?Q?1;BLUPR03MB1364;23:jL/lSIwG2XgzErwcym3H3ZdWVeRADetH2SBXBcuhb?= =?us-ascii?Q?KtUwg7oi1LjNamt/Vu9UISNjjx/e3zHff5hi3wHK+10zLgtLNyP81T0WWvJ9?= =?us-ascii?Q?S736hcfKrYHAh+p8muFT89oMLJIoH6nLzqEYwf27axfPFW/EniC19jA9NtC8?= =?us-ascii?Q?Zs33pUamk7msfmqzEW6de1C/zY525WMAB0drPSvlJ6gY/mSdNuZPFkvk2rcN?= =?us-ascii?Q?ndFM59e8mLA9BQT27EytmXyPrYVCdmwbEBo7+6hIHcsq9CRLOynBqCzrkEX8?= =?us-ascii?Q?nEygcj9ZuHxkvEYC+IY5eL/GqbqXgXKuc4ZKUSnB+uoVO1aUEnMj/NwUkbSz?= =?us-ascii?Q?gmIh6hZtwjRUJ8X0SXVT7wKE25jGv2ipWze2wgsTcK2CW6P9lpKpdrCywe1k?= =?us-ascii?Q?bfMqs4A5TXKOC8BKQEUbmdku1efhFNrCT9TyaqWzQRO/fqfEbx7ueybQZz/H?= =?us-ascii?Q?NqeHyV3ZO4zR6OivnxGPAwzCHUWcXy4ngSrLEod2jnmWAftun9q1gSVylJar?= =?us-ascii?Q?0l/DNzRg1XhXaVjn81+euFGEJkKPxa1N1qI6yHlf/gL7no3Hnk6mnSBs7YWv?= =?us-ascii?Q?OPGzAKs7jIzkw18gkQWLTnL7pLOOQKpUhotdNYlzBGlNx43nfDsoyEEWHhkG?= =?us-ascii?Q?eXlVdStaSFaU4bPuonY9zovOeoicE+isNSnmSiFon7X4C+vEqfqa7ExMZGTj?= =?us-ascii?Q?DcBoKcuALJuebWM9BGRjha32hTQ3pleYk4XnAauMT3jK7nSD67xFOrATgEkm?= =?us-ascii?Q?NOhZmKxgVFpPOghcK1jA0eR/VGhI+iMrAJQQJfekuZFzyi3RV3/tAU9tVFV7?= =?us-ascii?Q?ThJukJi2hlGw2F2+nKJw0mzcvTV0caY8J21A4O311yyDv/PzrsgRU9oCvtv/?= =?us-ascii?Q?AIA9AWkI0z0YMNJ60mUXleYSBXWDrIdrlzraL6yqvBaUbviO7EdPYKBWp0pQ?= =?us-ascii?Q?T71oQY9GcADn7bElgf8PK8f2Eq7zfCD+jOcmJhE6Ogx7A4qoHamdsxXBzgZo?= =?us-ascii?Q?zLEoqieAKkYM18Q81WYU8fXK41gOTqaSW7cVyj/RpdjnEk3oYeuBFL3hDYdU?= =?us-ascii?Q?t7oNmp9eGgszlaWnIV4J4ZfGOxtu5F4GdJ12GrKCmM0s1Fk06ATsHwC+kuHP?= =?us-ascii?Q?hclNA+A5oyVtbenz+NNGlKcGDTStkMalraSCSMKKd1iCqueWIz7/Bj6HXYcb?= =?us-ascii?Q?8CB/FIYsWynTwc=3D?= X-Microsoft-Exchange-Diagnostics-untrusted: 1;BLUPR03MB1364;5:A42XJhIkss9a3hpkTNtLD+4wDWzdYxrqk87/HXbrz5EIVkegEkmGKwUlRU9AJoh8B7ILs04ZTQLib5Zqe37M+2Wmibdu1OAS0YB7ETzGSsxUjPE+CgLNtVg7W8IawAgWktxoGYx1cVF3Hcwc5ifhIA==;24:FxVixu9rLuO+IBe/+c6039mXGafAMbuQtdgHHizcx+eIzFsXgaFBJEK7pzWYSYUh1WngktHdmex8tDGgaaQVajpWbaG3AvedsPfFQyjx4Bo=;20:NLsGyLY8UomkSrVc+Qn3THYvGUW0oFZB0l1dpHn4AvLA4bn/e9AnWojG6eC/Mb9AoyIhZmdUuTKKFORQFWNHKSUO1NjAppthOwPQt9PxDgZDm4+sXjN/O7XAkG1G8SLJB5vAXlTEpIYS06lblHffiEQD2fk5Q2nH8GDSMsc9vjs= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR03MB1364 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: BN1AFFO11FD030.protection.gbl X-Microsoft-Exchange-Diagnostics: 1;BN1AFFO11FD030;1:bvp8OBifAm+XcpHgjVOnB3/vAwIy9xs4Mk42zW9Gu3BeMgfrcCca1/IId2uAu2BsbGYQ07jBtmlOZvOLaVz9KvLVUwzzI5Tg2bCpKWam4FOk1BQbfDKJfqOqOv2vFgdJVRtcHkAAuwlH0SuWu3cDHdXnKG4s93sLEZRepyfqXA+2BIhyR3hZ2qw1GITXIZiFnwvSd9WQJ5WBCuX5pbsIRM0FdaeuS+pbfAgaIbQ4hHRniuFcU9SkO5pGsgCPsJD6oP5OkYEdKhkg67tg9wX1mEefRexvEC0KeFcjsKf8jliyaPiBL9Y/nGkycnt2Z9hHzJp4cJtZBdQUq5U4VNrK35uSZ4sTDSdIIMVo2AXxW0FkF27OOc+M5NMOQ081wtMd7NNTJS6BnvgilYF3Wt4nNQ== X-Forefront-Antispam-Report: CIP:66.35.236.236;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(1109001)(1110001)(339900001)(377454003)(189002)(199003)(479174004)(24454002)(5007970100001)(189998001)(81156007)(87936001)(19580405001)(5001960100002)(106466001)(16796002)(21840400001)(83506001)(76176999)(46102003)(5004730100002)(110136002)(23726002)(5890100001)(86362001)(97736004)(4001350100001)(33716001)(54356999)(6806005)(85426001)(50986999)(6070500001)(19580395003)(2950100001)(40100003)(47776003)(66066001)(93886004)(77096005)(53416004)(105606002)(50466002)(5008740100001)(46406003)(92566002)(122386002)(64706001)(7099028);DIR:OUT;SFP:1101;SCL:1;SRVR:BY2PR03MB315;H:sj-itexedge04.altera.priv.altera.com;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;MX:1;A:0;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BY2PR03MB315;2:7whjza5BLjyvTmDhzaAcXK4/uuDLQzO9JGljkYudpV3kg/D4HUZRQC10TCD/s/6e9PaACk/4INBH32/bM8N9Imenhp9+3N4E0tSv6Xh0xNZEkco9xN9cuj4RJbn9LZ0DMFrU4grFbFpB9KlAiMwkiaBN9fIIftDrfuWL7w1Gm4s=;3:WC87QVXraMJ6Vdzr+YNgb13RDbV8wxEvkLji7VlZtQkI6gL/7dGVNqZHG0MKYZ6gLO5jWMXFKajqCWAmEf/cq/vHIuVeQhcHw1BUhGAd5Eyyteo4ohxnYyGtdN719rWjeNB9kFmujy/LjTjNjApXiNMf37Samhwvx0awQ/mHFtNUisgAb+MZZnqQ2N+D04XnELBgm1sViqEBe6ihxlWNQoFK6Z0EJU+VU/JMjOz+DDE=;25:krLGqOutcZJjvxtt4nF6E5DssTszRjAL0pJ6qekGZMZkaETNywKpJz/eB+ItXqRGczdsGaN5KoeXKVUU9/QOuIW2MvnghZLIRMsKkpzAPuy/Q6d3X2uFqqEZmc8HToq+Tt5XxITpzz37SKzXNMwRMMxj3kBOmNiXyZs/7loqB6j7krYmbQrXg2eEjuSusnx1WilYEcrFvDshvEmW0Se1fLI6pyZ0554Djcx8ueIZvxOtIHGJam5FH/VnZa4dgE0Z6xkbUqBGAodRz5qL4nfOBQ==;20:TP4STSYjIkF3kwObEGkccwuB6V4N6G3tAdjk9VnL3Y8ke1SibTK0Vmc7VpHI0hSiRWjTaP9i3+4QG8gJU6hQ2YvNOnR/p7kXFBfAVQH88Nj56m+AGcrnXjss5KMmW6jm7Mx7x3C1ibVHVtm5WGcSH7u2SptxYDfm2eTRH4p7eV4= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY2PR03MB315; X-Microsoft-Exchange-Diagnostics: 1;BY2PR03MB315;4:tkjq80Fft3NwC3J43IJtaXPb1pKxoT6MkQjFQ496Z0fUkMq1Okl2d9nLLrhN0hRVSWIoLcqx69xv5ZEeCUTAhN7sTFwQ/FKIPoHLWYiovKZLwySN26J6hibL102Hq9kR2AJjtcG1Zpkh29F2wD8lSDLQmEchKyggr+KtUHTo62gH04t56nGWoYHehe/ZRCZWXJMxwOV4XJiDIjjE9W7pdpyiaNVTXjEjPyzmHDnznz9LncyJ4FFVPmOWoqK69ONaO23d0Jhajm9tKJpSNmmFEbZQ1Zd1dorQs4lOw41fRd2JmXiknqEb1Do1WaosQJtwswPmoV8xg4QQOsRrJ4fm2SQZ7HpNULV2jq6zD5mrBYs= X-Forefront-PRVS: 0731AA2DE6 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BY2PR03MB315;23:21HiTOaetUtkhtMldxanmjpPCqQWmw1pnh8sePY49F?= =?us-ascii?Q?SUoXKC1AfmvBpiGh45j4IepvovuMQZunfLEGavZbtE0RLDGASOzvreG8ZqGB?= =?us-ascii?Q?rvTovn7Z1wqPuncWtBYy7eQ1Y9izlzhslGsCks3psFqXZKJPV7AsyBq4PbXm?= =?us-ascii?Q?5B87bQojdKT+D1gqoHHkTF6Eqa/bOY/Iobeb18ufSEkm6+3YOpftB2q8KcIm?= =?us-ascii?Q?C5iaT8IwGSvLHZXjOCHdzTh1nK/hyL+mqVcIaIo1ESj1EX3E/tgybz3waE1V?= =?us-ascii?Q?8DusTfTnD2/Dyii19TZ6OjPUixaTrorXY11z9wasueR1kC513LNt1ZdmhQwZ?= =?us-ascii?Q?zYyG02sieIR/cyiHuvWPkbfQl57AqBTrWZREWoos8n7A69y3V/x9UGI0acYw?= =?us-ascii?Q?9NrEEsNOO048gv8f4UwhHEE43qPIIVJImLJ6EeG5aKkKdstGrJ+xq7NFk7is?= =?us-ascii?Q?ZXrAnNhqFqIYxw9VrQxuuNaE48Ja7t+c4Ebfjuco0hfmA6P4wilu8tSkcoxM?= =?us-ascii?Q?go9B/omU2YWT2aXBxLmIgIf844LpjNpx74Q6r4nzfd9DKgPu4Zjl9T7pmZSB?= =?us-ascii?Q?ZCyl18+GBCspiukV9fCZIww+BygikMrumA9+OtTln9s0Yn9zFBxSchsRvmjb?= =?us-ascii?Q?edwnZnxtYsa+mk5gpMpe1woUiHyMzj2zKsvANvyTPnrQ/3IzedlIBXWCqFQA?= =?us-ascii?Q?yqdVE2mHGUW2BOa/8jvrFj1n2grBNdP4WHvnJcjkOvJyy6pb+e+qqLHnsXMC?= =?us-ascii?Q?229CJekggfryRzlw5y9xJo2DReP43psrfT+DAITpY7geEKA1qtxiLJ0RrA4v?= =?us-ascii?Q?fTlOXJ5iOxpqIvjiehbw/FhJ7V9RdkVIm6ZKc0uMKnoPvhoKncJuytFRmR4Z?= =?us-ascii?Q?4qxNoJxie1KESc0njIrfUDu4bSAQjBKlnf/PnqJS9QQyxqPg0aUdH6mCvI4O?= =?us-ascii?Q?WWsXbSafrYNcDKIYl0lA0CDNBZ2T3Wt2rXLAy6TNzXVhDSQNITuy0+WZ00HG?= =?us-ascii?Q?53nobVgzK9gu0c2PG1XnZ31wXAnnVh6/Y78JrU8Zw0QUODXi2GAprTVVHSpP?= =?us-ascii?Q?+3c8sjCIDNyuiHYR7NRBmPdopyldtPiipR/pl9sCPra54MeC14wIkivi0JIY?= =?us-ascii?Q?cOZFCWpjql2lfnFBudtcZaScUHsmoepzt2YT6reViZ5Uvd5mPZBYRML43OVP?= =?us-ascii?Q?9LjXVq+LYrX1uKKCh8lzTm0K8THS4QTx46U7OnytNmt7KPz/6E14hN0Ha73T?= =?us-ascii?Q?MH+5DXoipVoiG/lXH+u8GS0jvHZcfR0Jf+KXJg3Kt+tnNf/cs9uXQAP+9jPd?= =?us-ascii?Q?fJQ4dmzi6ci4udZKCgJsPkP+WOpAPwbNF0HWUdXClo?= X-Microsoft-Exchange-Diagnostics: 1;BY2PR03MB315;5:tcUE5LRKmw+rSkrxNEM8G0GtACRexvEGBVpDBYxkg/OWlqAPUdnuCXfTw1zfZIvhVgBRdgST/W56fI2377V3tzYAdwVVwYr42QkTigixpKaSePLMuG0RoY0fJ0ErJpnT5GvjHQc0uBbnoMF8ygTJQg==;24:wejDJxJyH44l/Lx+W13hdT+qEK6cMVBSHjFyIJlXeKhDvJ+w9klRD3O2wGLnoM1YXO2JAqN1tjBGYjNF4w1xDbKdmPSvkvt5cWjPn1a9AIc=;20:W/n8BxR6cdsu0gGopDF1PIPY9/bnEZiue2IPzsnt5gFaFhKfKRLOcFC6SVcFaKsnM0cbhrvQ8OtcsGhr8mQOC5MegiFMLe+y12DnUjSs5MA6SSyVNX9UnYtQq8eqsD/cI+sg7eT5RS5CtBSFvKWedXg3kiz7KTqYq6IMhMjTT6M= X-OriginatorOrg: opensource.altera.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Oct 2015 19:16:58.6989 (UTC) X-MS-Exchange-CrossTenant-Id: fbd72e03-d4a5-4110-adce-614d51f2077a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=fbd72e03-d4a5-4110-adce-614d51f2077a;Ip=[66.35.236.236];Helo=[sj-itexedge04.altera.priv.altera.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR03MB315 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 16 Oct 2015, David Daney wrote: > On 10/16/2015 08:56 AM, Andrew Lunn wrote: > > > So I think I'll move to inspect what Florian had suggested, and that was > > > to look > > > at: > > > drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c::stmmac_mdio_register > > > > I have a suspicion. If you look at the phy driver it does: > > > > static int ksz9021_config_init(struct phy_device *phydev) > > { > > const struct device *dev = &phydev->dev; > > const struct device_node *of_node = dev->of_node; > > > > if (!of_node && dev->parent->of_node) > > of_node = dev->parent->of_node; > > > > Maybe we need to walk up the hierarchy. > > Perhaps something like: > > const struct device *dev_walker; > > dev_walker = &phydev->dev; > do { > of_node = dev_walker->of_node; > dev_walker = dev_walker->parent; > } while (!of_node && dev_walker); > The above code seems to have fixed the issue. > An alternative would be to assign the bus the same of_node as the bus parent. > > If either approach works, you can add: > Acked-by: David Daney > > to the patch that implements it. > > > > > In your case, you don't have a phy node in your device tree, so of_node > > is NULL. So it looks in the parent device. > > > > phylib: Make PHYs children of their MDIO bus, not the bus' parent. > > > > changed what the parent is. It is now the mdio device. Before, i > > suspect it was the MAC. Hence it found your properties in the MAC > > node. > > > > What i think you might want to do is change this code. Rather than > > look a dev->parent->of_node; you might want > > phydev->attached_dev->dev->of_node. > > > > This assumes the phy has been attached to the MAC. I've no idea of the > > ordering, so maybe it has not been attached yet? > > > > dp83867.c has similar code. However quick grep did not find any > > mainline users with properties in the MAC node. If that is true, i > > would suggest removing the code looking in the parent for that phy > > driver. > > > > Andrew > > > > BR, Dinh