i2c-mux: pca954x: support pca9646 i2c switch
Subsystems (3)
PATCH 1/2 i2c-mux: pca954x: support pca9646 i2c switch
Add the PCA9646 support, which is 2-wire bus switch and buffered 4-channel.
--- drivers/i2c/muxes/pca954x.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
drivers/i2c/muxes/pca954x.c +8 -1
@@ -17,7 +17,8 @@ DECLARE_GLOBAL_DATA_PTR;enum pca_type {PCA9544 ,PCA9547 , -PCA9548 +PCA9548 , +PCA9646 };struct chip_desc {
@@ -51,6 +52,11 @@ static const struct chip_desc chips[] = { .muxtype = pca954x_isswi, .width = 8, }, + [PCA9646] = { + .enable = 0x0, + .muxtype = pca954x_isswi, + .width = 4, + }, }; static int pca954x_deselect(struct udevice *mux, struct udevice *bus,
@@ -86,6 +92,7 @@ static const struct udevice_id pca954x_ids[] = { { .compatible = "nxp,pca9544", .data = PCA9544 }, { .compatible = "nxp,pca9547", .data = PCA9547 }, { .compatible = "nxp,pca9548", .data = PCA9548 }, + { .compatible = "nxp,pca9646", .data = PCA9646 }, { } };
Signature · 1 line
2.14.1
PATCH 1/2 i2c-mux: pca954x: support pca9646 i2c switch
Hi,
Ping.
Quoted 48 lines
-----Original Message-----
From: Peng Fan
Sent: 2018年7月17日 20:39
To: hs at denx.de
Cc: u-boot at lists.denx.de; Peng Fan <[email protected]>
Subject: [PATCH 1/2] i2c-mux: pca954x: support pca9646 i2c switchAdd the PCA9646 support, which is 2-wire bus switch and buffered 4-channel.
Signed-off-by Peng Fan <[email protected]>--- drivers/i2c/muxes/pca954x.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)drivers/i2c/muxes/pca954x.c index renamed from drivers/i2c/muxes/pca954x.c +0
-0
4debc03957..ab8b4000af100644drivers/i2c/muxes/pca954x.c +8
-3@@ -17,7 +17,8 @@ DECLARE_GLOBAL_DATA_PTR; enum pca_type {PCA9544 ,PCA9547 , -PCA9548 +PCA9548 , +PCA9646 }; struct chip_desc {@@ -51,6 +52,11 @@ static const struct chip_desc chips[] = { .muxtype = pca954x_isswi, .width = 8, }, + [PCA9646] = { + .enable = 0x0, + .muxtype = pca954x_isswi, + .width = 4, + }, }; static int pca954x_deselect(struct udevice *mux, struct udevice *bus, @@ -86,6 +92,7 @@ static const struct udevice_id pca954x_ids[] = { { .compatible = "nxp,pca9544", .data = PCA9544 }, { .compatible = "nxp,pca9547", .data = PCA9547 }, { .compatible = "nxp,pca9548", .data = PCA9548 }, + { .compatible = "nxp,pca9646", .data = PCA9646 }, { } }; --
Quoted 1 line
2.14.1
Thanks,
Peng
PATCH 2/2 i2c: imx_lpi2c: add uclass api support
In reply to Peng FanUse uclass clk api to get per clk when CONFIG_CLK enabled.
--- drivers/i2c/imx_lpi2c.c | 47 ++++++++++++++++++++++++++++++++++++++++------- include/imx_lpi2c.h | 3 +++ 2 files changed, 43 insertions(+), 7 deletions(-)
drivers/i2c/imx_lpi2c.c +40 -7
@@ -261,8 +261,14 @@ static int bus_i2c_write(struct udevice *bus, u32 chip, u8 *buf, int len) } +u32 __weak imx_get_i2cclk (u32 i2c_num) +{ +return 0 ; +} +static int bus_i2c_set_bus_speed (struct udevice *bus,int speed) { +struct imx_lpi2c_bus *i2c_bus =dev_get_priv (bus);struct imx_lpi2c_reg *regs;u32 val;u32 preescale =0 , best_pre =0 , clkhi =0 ;
@@ -273,9 +279,18 @@ static int bus_i2c_set_bus_speed(struct udevice *bus, int speed)int i; regs = (struct imx_lpi2c_reg *)devfdt_get_addr (bus); - clock_rate =imx_get_i2cclk (bus->seq); -if (!clock_rate) -return -EPERM ; + +if (IS_ENABLED (CONFIG_CLK )) { + clock_rate =clk_get_rate (&i2c_bus->per_clk); +if (clock_rate <=0 ) { +dev_err (bus,"Failed to get i2c clk: %d\n" , clock_rate); +return clock_rate; + } + }else { + clock_rate =imx_get_i2cclk (bus->seq); +if (!clock_rate) +return -EPERM ; + } mode = (readl (®s->mcr) &LPI2C_MCR_MEN_MASK ) >>LPI2C_MCR_MEN_SHIFT ;/* disable master mode */
@@ -417,6 +432,11 @@ static int imx_lpi2c_set_bus_speed(struct udevice *bus, unsigned int speed)return bus_i2c_set_bus_speed (bus, speed); } +__weak int enable_i2c_clk (unsigned char enable,unsigned int i2c_num) +{ +return 0 ; +} +static int imx_lpi2c_probe (struct udevice *bus) {struct imx_lpi2c_bus *i2c_bus =dev_get_priv (bus);
@@ -440,10 +460,23 @@ static int imx_lpi2c_probe(struct udevice *bus)return ret; } -/* To i.MX7ULP, only i2c4-7 can be handled by A7 core */ - ret =enable_i2c_clk (1 , bus->seq); -if (ret <0 ) -return ret; +if (IS_ENABLED (CONFIG_CLK )) { + ret =clk_get_by_name (bus,"per" , &i2c_bus->per_clk); +if (ret) { +dev_err (bus,"Failed to get per clk\n" ); +return ret; + } + ret =clk_enable (&i2c_bus->per_clk); +if (ret) { +dev_err (bus,"Failed to enable per clk\n" ); +return ret; + } + }else { +/* To i.MX7ULP, only i2c4-7 can be handled by A7 core */ + ret =enable_i2c_clk (1 , bus->seq); +if (ret <0 ) +return ret; + } ret =bus_i2c_init (bus,100000 );if (ret <0 )
include/imx_lpi2c.h +3 -0
@@ -8,6 +8,8 @@ #ifndef __IMX_LPI2C_H__ #define __IMX_LPI2C_H__ +#include <clk.h> + struct imx_lpi2c_bus { int index; ulong base;
@@ -15,6 +17,7 @@ struct imx_lpi2c_bus {int speed;struct i2c_pads_info *pads_info;struct udevice *bus; +struct clk per_clk; };struct imx_lpi2c_reg {
Signature · 1 line
2.14.1
PATCH 2/2 i2c: imx_lpi2c: add uclass api support
Quoted 7 lines · On Tue, 17 Jul 2018 20:38:33 +0800 Peng Fan peng.fan at nxp.com wrote:
Use uclass clk api to get per clk when
CONFIG_CLKenabled.Signed-off-by Peng Fan <[email protected]>--- drivers/i2c/imx_lpi2c.c | 47 ++++++++++++++++++++++++++++++++++++++++------- include/imx_lpi2c.h | 3 +++ 2 files changed, 43 insertions(+), 7 deletions(-)
--
Anatolij
PATCH 2/2 i2c: imx_lpi2c: add uclass api support
In reply to Peng FanQuoted 7 lines · On Tue, 17 Jul 2018 20:38:33 +0800 Peng Fan peng.fan at nxp.com wrote:
Use uclass clk api to get per clk when
CONFIG_CLKenabled.Signed-off-by Peng Fan <[email protected]>--- drivers/i2c/imx_lpi2c.c | 47 ++++++++++++++++++++++++++++++++++++++++------- include/imx_lpi2c.h | 3 +++ 2 files changed, 43 insertions(+), 7 deletions(-)
Applied to u-boot-staging/agust at denx.de, thanks!
--
Anatolij
PATCH 1/2 i2c-mux: pca954x: support pca9646 i2c switch
In reply to Peng FanQuoted 3 lines · On Tue, 17 Jul 2018 20:38:32 +0800 Peng Fan peng.fan at nxp.com wrote:
Add the PCA9646 support, which is 2-wire bus switch and buffered 4-channel.
Signed-off-by Peng Fan <[email protected]>
--
Anatolij
PATCH 1/2 i2c-mux: pca954x: support pca9646 i2c switch
In reply to Peng FanQuoted 6 lines · On Tue, 17 Jul 2018 20:38:32 +0800 Peng Fan peng.fan at nxp.com wrote:
Add the PCA9646 support, which is 2-wire bus switch and buffered 4-channel.
Signed-off-by Peng Fan <[email protected]>--- drivers/i2c/muxes/pca954x.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
Applied to u-boot-staging/agust at denx.de, thanks!
--
Anatolij