i2c: ocores: Add support for bus clock via platform data
authorAndrew Lunn <andrew@lunn.ch>
Thu, 14 Feb 2019 03:24:50 +0000 (04:24 +0100)
committerWolfram Sang <wsa@the-dreams.de>
Thu, 14 Feb 2019 16:58:23 +0000 (17:58 +0100)
Add the I2C bus clock speed to the platform data structure.
If not set, default to 100KHz as before.

Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
drivers/i2c/busses/i2c-ocores.c
include/linux/platform_data/i2c-ocores.h

index 0d90a82a2c032150da22ab418f04d6521669e078..4eea18689e99f277cc6560599892c9aba6e303f0 100644 (file)
@@ -628,7 +628,10 @@ static int ocores_i2c_probe(struct platform_device *pdev)
                i2c->reg_shift = pdata->reg_shift;
                i2c->reg_io_width = pdata->reg_io_width;
                i2c->ip_clock_khz = pdata->clock_khz;
-               i2c->bus_clock_khz = 100;
+               if (pdata->bus_khz)
+                       i2c->bus_clock_khz = pdata->bus_khz;
+               else
+                       i2c->bus_clock_khz = 100;
        } else {
                ret = ocores_i2c_of_probe(pdev, i2c);
                if (ret)
index 8c416ff8affd89e103f9af490ce0f36c163088d2..e6326cbafe593a99aba698376fd050085b2c12d9 100644 (file)
@@ -12,6 +12,7 @@ struct ocores_i2c_platform_data {
        u32 reg_shift; /* register offset shift value */
        u32 reg_io_width; /* register io read/write width */
        u32 clock_khz; /* input clock in kHz */
+       u32 bus_khz; /* bus clock in kHz */
        bool big_endian; /* registers are big endian */
        u8 num_devices; /* number of devices in the devices list */
        struct i2c_board_info const *devices; /* devices connected to the bus */