| @@ -350,10 +350,6 @@ static void setup_i2c_controller(struct nmk_i2c_dev *dev) · 349 unmodified lines |
| 350 | 350 | |
| 351 | 351 | i2c_clk = clk_get_rate(dev->clk); |
| 352 | 352 | |
| 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 | | − |
| 357 | 353 | /* |
| 358 | 354 | * The spec says, in case of std. mode the divider is |
| 359 | 355 | * 2 whereas it is 3 for fast and fastplus mode of |
| @@ -911,20 +907,32 @@ static const struct i2c_algorithm nmk_i2c_algo = { · 551 unmodified lines |
| 911 | 907 | .functionality = nmk_i2c_functionality |
| 912 | 908 | }; |
| 913 | 909 | |
| 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 | + |
| 914 | 923 | static atomic_t adapter_id = ATOMIC_INIT(0); |
| 915 | 924 | |
| 916 | 925 | static int nmk_i2c_probe(struct amba_device *adev, const struct amba_id *id) |
| 917 | 926 | { |
| 918 | 927 | int ret = 0; |
| 919 | | − struct nmk_i2c_controller *pdata = |
| 920 | | − adev->dev.platform_data; |
| 928 | + struct nmk_i2c_controller *pdata = adev->dev.platform_data; |
| 921 | 929 | struct nmk_i2c_dev *dev; |
| 922 | 930 | struct i2c_adapter *adap; |
| 923 | 931 | |
| 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 | + |
| 928 | 936 | dev = kzalloc(sizeof(struct nmk_i2c_dev), GFP_KERNEL); |
| 929 | 937 | if (!dev) { |
| 930 | 938 | dev_err(&adev->dev, "cannot allocate memory\n"); |