FAILED: patch "[PATCH] i2c: imx: init bus recovery info before adding i2c adapter" failed to apply to 4.3-stable tree
Subsystems (4)
[email protected]
maintainerThe patch below does not apply to the 4.3-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
Quoted 1 line
From
5212f9ae519a3e108205f27eb22929266e688e3eMon Sep 17 00:00:00 2001
From: Gao Pan <[email protected]>
Date: Wed, 9 Dec 2015 11:08:22 +0800
Subject: [PATCH] i2c: imx: init bus recovery info before adding i2c adapter
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
During driver probe, i2c_imx_init_recovery_info() must come before i2c_add_numbered_adapter(), because the get/set_scl() functions are assigned in i2c_register_adapter() under the conditon that bus recover_info are initialized. Otherwise, get/set_scl() function pointers never get assigned.
In such case, when i2c_generic_gpio_recovery() is used for bus recovery, there will be kernel crash because bri->set_scl is NULL.
The solution to this bug is moving i2c_imx_init_recovery_info() before i2c_register_adapter().
drivers/i2c/busses/i2c-imx.c +2 -2
@@ -1119,6 +1119,8 @@ static int i2c_imx_probe(struct platform_device *pdev) i2c_imx, IMX_I2C_I2CR);imx_i2c_write_reg (i2c_imx->hwdata->i2sr_clr_opcode, i2c_imx,IMX_I2C_I2SR ); +i2c_imx_init_recovery_info (i2c_imx, pdev); +/* Add I2C adapter */ ret =i2c_add_numbered_adapter (&i2c_imx->adapter);if (ret <0 ) {
@@ -1126,8 +1128,6 @@ static int i2c_imx_probe(struct platform_device *pdev) goto clk_disable; } -i2c_imx_init_recovery_info (i2c_imx, pdev); -/* Set up platform driver data */ platform_set_drvdata (pdev, i2c_imx);clk_disable_unprepare (i2c_imx->clk);