Skip to content

Commit b007a3e

Browse files
Lee JonesWolfram Sang
authored andcommitted
i2c: nomadik: Add default configuration into the Nomadik I2C driver
At this moment in time there is only one known configuration for the Nomadik I2C driver. By not holding that configuration in the driver adds some unnecessary overhead in platform code. The configuration has already been removed from platform code, this patch checks for any over-riding configurations. If there aren't any, the default is used. [LinusW says: "Right now this is causing boot regressions so we need it badly..."] Acked-by: srinidhi kasagar <[email protected]> Acked-by: Linus Walleij <[email protected]> Signed-off-by: Lee Jones <[email protected]> Signed-off-by: Wolfram Sang <[email protected]>
1 parent d987569 commit b007a3e

File tree

1 file changed

+18
-10
lines changed

1 file changed

+18
-10
lines changed

drivers/i2c/busses/i2c-nomadik.c

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -350,10 +350,6 @@ static void setup_i2c_controller(struct nmk_i2c_dev *dev)
350350

351351
i2c_clk = clk_get_rate(dev->clk);
352352

353-
/* fallback to std. mode if machine has not provided it */
354-
if (dev->cfg.clk_freq == 0)
355-
dev->cfg.clk_freq = 100000;
356-
357353
/*
358354
* The spec says, in case of std. mode the divider is
359355
* 2 whereas it is 3 for fast and fastplus mode of
@@ -911,20 +907,32 @@ static const struct i2c_algorithm nmk_i2c_algo = {
911907
.functionality = nmk_i2c_functionality
912908
};
913909

910+
static struct nmk_i2c_controller u8500_i2c = {
911+
/*
912+
* Slave data setup time; 250ns, 100ns, and 10ns, which
913+
* is 14, 6 and 2 respectively for a 48Mhz i2c clock.
914+
*/
915+
.slsu = 0xe,
916+
.tft = 1, /* Tx FIFO threshold */
917+
.rft = 8, /* Rx FIFO threshold */
918+
.clk_freq = 400000, /* fast mode operation */
919+
.timeout = 200, /* Slave response timeout(ms) */
920+
.sm = I2C_FREQ_MODE_FAST,
921+
};
922+
914923
static atomic_t adapter_id = ATOMIC_INIT(0);
915924

916925
static int nmk_i2c_probe(struct amba_device *adev, const struct amba_id *id)
917926
{
918927
int ret = 0;
919-
struct nmk_i2c_controller *pdata =
920-
adev->dev.platform_data;
928+
struct nmk_i2c_controller *pdata = adev->dev.platform_data;
921929
struct nmk_i2c_dev *dev;
922930
struct i2c_adapter *adap;
923931

924-
if (!pdata) {
925-
dev_warn(&adev->dev, "no platform data\n");
926-
return -ENODEV;
927-
}
932+
if (!pdata)
933+
/* No i2c configuration found, using the default. */
934+
pdata = &u8500_i2c;
935+
928936
dev = kzalloc(sizeof(struct nmk_i2c_dev), GFP_KERNEL);
929937
if (!dev) {
930938
dev_err(&adev->dev, "cannot allocate memory\n");

0 commit comments

Comments
 (0)