|
@@ -32,7 +32,7 @@
|
|
|
#include <linux/slab.h>
|
|
|
#include <linux/platform_data/dma-atmel.h>
|
|
|
|
|
|
-#define TWI_CLK_HZ 100000 /* max 400 Kbits/s */
|
|
|
+#define DEFAULT_TWI_CLK_HZ 100000 /* max 400 Kbits/s */
|
|
|
#define AT91_I2C_TIMEOUT msecs_to_jiffies(100) /* transfer timeout */
|
|
|
#define AT91_I2C_DMA_THRESHOLD 8 /* enable DMA if transfer size is bigger than this threshold */
|
|
|
|
|
@@ -711,6 +711,7 @@ static int at91_twi_probe(struct platform_device *pdev)
|
|
|
struct resource *mem;
|
|
|
int rc;
|
|
|
u32 phy_addr;
|
|
|
+ u32 bus_clk_rate;
|
|
|
|
|
|
dev = devm_kzalloc(&pdev->dev, sizeof(*dev), GFP_KERNEL);
|
|
|
if (!dev)
|
|
@@ -756,7 +757,12 @@ static int at91_twi_probe(struct platform_device *pdev)
|
|
|
dev->use_dma = true;
|
|
|
}
|
|
|
|
|
|
- at91_calc_twi_clock(dev, TWI_CLK_HZ);
|
|
|
+ rc = of_property_read_u32(dev->dev->of_node, "clock-frequency",
|
|
|
+ &bus_clk_rate);
|
|
|
+ if (rc)
|
|
|
+ bus_clk_rate = DEFAULT_TWI_CLK_HZ;
|
|
|
+
|
|
|
+ at91_calc_twi_clock(dev, bus_clk_rate);
|
|
|
at91_init_twi_bus(dev);
|
|
|
|
|
|
snprintf(dev->adapter.name, sizeof(dev->adapter.name), "AT91");
|