mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-10-04 10:30:50 +09:00
Merge tag 'for-v2019.10-v2' of https://gitlab.denx.de/u-boot/custodians/u-boot-i2c
i2c bugfixes for 2019.10 take 2 - i2c: mxc: add CONFIG_CLK support If CONFIG_CLK is enabled use clk framework for clock settings.
This commit is contained in:
commit
f65fb411ed
@ -6,6 +6,9 @@
|
||||
#define __ASM_ARCH_MXC_MXC_I2C_H__
|
||||
#include <asm-generic/gpio.h>
|
||||
#include <asm/mach-imx/iomux-v3.h>
|
||||
#if CONFIG_IS_ENABLED(CLK)
|
||||
#include <clk.h>
|
||||
#endif
|
||||
|
||||
struct i2c_pin_ctrl {
|
||||
iomux_v3_cfg_t i2c_mode;
|
||||
@ -47,6 +50,9 @@ struct mxc_i2c_bus {
|
||||
ulong driver_data;
|
||||
int speed;
|
||||
struct i2c_pads_info *pads_info;
|
||||
#if CONFIG_IS_ENABLED(CLK)
|
||||
struct clk per_clk;
|
||||
#endif
|
||||
#ifndef CONFIG_DM_I2C
|
||||
int (*idle_bus_fn)(void *p);
|
||||
void *idle_bus_data;
|
||||
|
@ -149,7 +149,12 @@ static uint8_t i2c_imx_get_clk(struct mxc_i2c_bus *i2c_bus, unsigned int rate)
|
||||
#endif
|
||||
|
||||
/* Divider value calculation */
|
||||
#if CONFIG_IS_ENABLED(CLK)
|
||||
i2c_clk_rate = clk_get_rate(&i2c_bus->per_clk);
|
||||
#else
|
||||
i2c_clk_rate = mxc_get_clock(MXC_I2C_CLK);
|
||||
#endif
|
||||
|
||||
div = (i2c_clk_rate + rate - 1) / rate;
|
||||
if (div < i2c_clk_div[0][0])
|
||||
clk_div = 0;
|
||||
@ -891,9 +896,22 @@ static int mxc_i2c_probe(struct udevice *bus)
|
||||
i2c_bus->bus = bus;
|
||||
|
||||
/* Enable clk */
|
||||
#if CONFIG_IS_ENABLED(CLK)
|
||||
ret = clk_get_by_index(bus, 0, &i2c_bus->per_clk);
|
||||
if (ret) {
|
||||
printf("Failed to get i2c clk\n");
|
||||
return ret;
|
||||
}
|
||||
ret = clk_enable(&i2c_bus->per_clk);
|
||||
if (ret) {
|
||||
printf("Failed to enable i2c clk\n");
|
||||
return ret;
|
||||
}
|
||||
#else
|
||||
ret = enable_i2c_clk(1, bus->seq);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* See Documentation/devicetree/bindings/i2c/i2c-imx.txt
|
||||
|
Loading…
Reference in New Issue
Block a user