Message ID | 20231113063156.2264941-1-potin.lai.pt@gmail.com |
---|---|
State | New |
Headers | show |
Series | [1/1] hw/i2c: add pca9543 i2c-mux switch | expand |
On Sun, Nov 12, 2023 at 10:34 PM Potin Lai <potin.lai.pt@gmail.com> wrote: > Add pca9543 2-channel i2c-mux switch support. > > Signed-off-by: Potin Lai <potin.lai.pt@gmail.com> > Reviewed-by: Patrick Venture <venture@google.com> > --- > hw/i2c/i2c_mux_pca954x.c | 12 ++++++++++++ > include/hw/i2c/i2c_mux_pca954x.h | 1 + > 2 files changed, 13 insertions(+) > > diff --git a/hw/i2c/i2c_mux_pca954x.c b/hw/i2c/i2c_mux_pca954x.c > index db5db956a6..6aace0fc47 100644 > --- a/hw/i2c/i2c_mux_pca954x.c > +++ b/hw/i2c/i2c_mux_pca954x.c > @@ -30,6 +30,7 @@ > > #define PCA9548_CHANNEL_COUNT 8 > #define PCA9546_CHANNEL_COUNT 4 > +#define PCA9543_CHANNEL_COUNT 2 > > /* > * struct Pca954xState - The pca954x state object. > @@ -172,6 +173,12 @@ I2CBus *pca954x_i2c_get_bus(I2CSlave *mux, uint8_t > channel) > return pca954x->bus[channel]; > } > > +static void pca9543_class_init(ObjectClass *klass, void *data) > +{ > + Pca954xClass *s = PCA954X_CLASS(klass); > + s->nchans = PCA9543_CHANNEL_COUNT; > +} > + > static void pca9546_class_init(ObjectClass *klass, void *data) > { > Pca954xClass *s = PCA954X_CLASS(klass); > @@ -246,6 +253,11 @@ static const TypeInfo pca954x_info[] = { > .class_init = pca954x_class_init, > .abstract = true, > }, > + { > + .name = TYPE_PCA9543, > + .parent = TYPE_PCA954X, > + .class_init = pca9543_class_init, > + }, > { > .name = TYPE_PCA9546, > .parent = TYPE_PCA954X, > diff --git a/include/hw/i2c/i2c_mux_pca954x.h > b/include/hw/i2c/i2c_mux_pca954x.h > index 3dd25ec983..1da5508ed5 100644 > --- a/include/hw/i2c/i2c_mux_pca954x.h > +++ b/include/hw/i2c/i2c_mux_pca954x.h > @@ -3,6 +3,7 @@ > > #include "hw/i2c/i2c.h" > > +#define TYPE_PCA9543 "pca9543" > #define TYPE_PCA9546 "pca9546" > #define TYPE_PCA9548 "pca9548" > > -- > 2.31.1 > >
On Mon, Nov 13, 2023 at 02:31:56PM +0800, Potin Lai wrote: > Add pca9543 2-channel i2c-mux switch support. > > Signed-off-by: Potin Lai <potin.lai.pt@gmail.com> Looks good to me. Acked-by: Corey Minyard <cminyard@mvista.com> > --- > hw/i2c/i2c_mux_pca954x.c | 12 ++++++++++++ > include/hw/i2c/i2c_mux_pca954x.h | 1 + > 2 files changed, 13 insertions(+) > > diff --git a/hw/i2c/i2c_mux_pca954x.c b/hw/i2c/i2c_mux_pca954x.c > index db5db956a6..6aace0fc47 100644 > --- a/hw/i2c/i2c_mux_pca954x.c > +++ b/hw/i2c/i2c_mux_pca954x.c > @@ -30,6 +30,7 @@ > > #define PCA9548_CHANNEL_COUNT 8 > #define PCA9546_CHANNEL_COUNT 4 > +#define PCA9543_CHANNEL_COUNT 2 > > /* > * struct Pca954xState - The pca954x state object. > @@ -172,6 +173,12 @@ I2CBus *pca954x_i2c_get_bus(I2CSlave *mux, uint8_t channel) > return pca954x->bus[channel]; > } > > +static void pca9543_class_init(ObjectClass *klass, void *data) > +{ > + Pca954xClass *s = PCA954X_CLASS(klass); > + s->nchans = PCA9543_CHANNEL_COUNT; > +} > + > static void pca9546_class_init(ObjectClass *klass, void *data) > { > Pca954xClass *s = PCA954X_CLASS(klass); > @@ -246,6 +253,11 @@ static const TypeInfo pca954x_info[] = { > .class_init = pca954x_class_init, > .abstract = true, > }, > + { > + .name = TYPE_PCA9543, > + .parent = TYPE_PCA954X, > + .class_init = pca9543_class_init, > + }, > { > .name = TYPE_PCA9546, > .parent = TYPE_PCA954X, > diff --git a/include/hw/i2c/i2c_mux_pca954x.h b/include/hw/i2c/i2c_mux_pca954x.h > index 3dd25ec983..1da5508ed5 100644 > --- a/include/hw/i2c/i2c_mux_pca954x.h > +++ b/include/hw/i2c/i2c_mux_pca954x.h > @@ -3,6 +3,7 @@ > > #include "hw/i2c/i2c.h" > > +#define TYPE_PCA9543 "pca9543" > #define TYPE_PCA9546 "pca9546" > #define TYPE_PCA9548 "pca9548" > > -- > 2.31.1 > >
On Tue, Nov 14, 2023 at 3:30 PM Corey Minyard <minyard@acm.org> wrote: > On Mon, Nov 13, 2023 at 02:31:56PM +0800, Potin Lai wrote: > > Add pca9543 2-channel i2c-mux switch support. > > > > Signed-off-by: Potin Lai <potin.lai.pt@gmail.com> > > Looks good to me. > > Acked-by: Corey Minyard <cminyard@mvista.com> > > > --- > > hw/i2c/i2c_mux_pca954x.c | 12 ++++++++++++ > > include/hw/i2c/i2c_mux_pca954x.h | 1 + > > 2 files changed, 13 insertions(+) > > > > diff --git a/hw/i2c/i2c_mux_pca954x.c b/hw/i2c/i2c_mux_pca954x.c > > index db5db956a6..6aace0fc47 100644 > > --- a/hw/i2c/i2c_mux_pca954x.c > > +++ b/hw/i2c/i2c_mux_pca954x.c > > @@ -30,6 +30,7 @@ > > > > #define PCA9548_CHANNEL_COUNT 8 > > #define PCA9546_CHANNEL_COUNT 4 > > +#define PCA9543_CHANNEL_COUNT 2 > > > > /* > > * struct Pca954xState - The pca954x state object. > > @@ -172,6 +173,12 @@ I2CBus *pca954x_i2c_get_bus(I2CSlave *mux, uint8_t > channel) > > return pca954x->bus[channel]; > > } > > > > +static void pca9543_class_init(ObjectClass *klass, void *data) > > +{ > > + Pca954xClass *s = PCA954X_CLASS(klass); > > + s->nchans = PCA9543_CHANNEL_COUNT; > > +} > > + > > static void pca9546_class_init(ObjectClass *klass, void *data) > > { > > Pca954xClass *s = PCA954X_CLASS(klass); > > @@ -246,6 +253,11 @@ static const TypeInfo pca954x_info[] = { > > .class_init = pca954x_class_init, > > .abstract = true, > > }, > > + { > > + .name = TYPE_PCA9543, > > + .parent = TYPE_PCA954X, > > + .class_init = pca9543_class_init, > > + }, > > { > > .name = TYPE_PCA9546, > > .parent = TYPE_PCA954X, > > diff --git a/include/hw/i2c/i2c_mux_pca954x.h > b/include/hw/i2c/i2c_mux_pca954x.h > > index 3dd25ec983..1da5508ed5 100644 > > --- a/include/hw/i2c/i2c_mux_pca954x.h > > +++ b/include/hw/i2c/i2c_mux_pca954x.h > > @@ -3,6 +3,7 @@ > > > > #include "hw/i2c/i2c.h" > > > > +#define TYPE_PCA9543 "pca9543" > > #define TYPE_PCA9546 "pca9546" > > #define TYPE_PCA9548 "pca9548" > > > > -- > > 2.31.1 > > > > Corey, can you include this in a pull email? I don't quite have that set up at present, Titus is going to help me figure it out. Patrick
On Tue, Dec 05, 2023 at 11:05:33AM -0800, Patrick Venture wrote: > On Tue, Nov 14, 2023 at 3:30 PM Corey Minyard <minyard@acm.org> wrote: > > > On Mon, Nov 13, 2023 at 02:31:56PM +0800, Potin Lai wrote: > > > Add pca9543 2-channel i2c-mux switch support. > > > > > > Signed-off-by: Potin Lai <potin.lai.pt@gmail.com> > > > > Looks good to me. > > > > Acked-by: Corey Minyard <cminyard@mvista.com> > > > > > --- > > > hw/i2c/i2c_mux_pca954x.c | 12 ++++++++++++ > > > include/hw/i2c/i2c_mux_pca954x.h | 1 + > > > 2 files changed, 13 insertions(+) > > > > > > diff --git a/hw/i2c/i2c_mux_pca954x.c b/hw/i2c/i2c_mux_pca954x.c > > > index db5db956a6..6aace0fc47 100644 > > > --- a/hw/i2c/i2c_mux_pca954x.c > > > +++ b/hw/i2c/i2c_mux_pca954x.c > > > @@ -30,6 +30,7 @@ > > > > > > #define PCA9548_CHANNEL_COUNT 8 > > > #define PCA9546_CHANNEL_COUNT 4 > > > +#define PCA9543_CHANNEL_COUNT 2 > > > > > > /* > > > * struct Pca954xState - The pca954x state object. > > > @@ -172,6 +173,12 @@ I2CBus *pca954x_i2c_get_bus(I2CSlave *mux, uint8_t > > channel) > > > return pca954x->bus[channel]; > > > } > > > > > > +static void pca9543_class_init(ObjectClass *klass, void *data) > > > +{ > > > + Pca954xClass *s = PCA954X_CLASS(klass); > > > + s->nchans = PCA9543_CHANNEL_COUNT; > > > +} > > > + > > > static void pca9546_class_init(ObjectClass *klass, void *data) > > > { > > > Pca954xClass *s = PCA954X_CLASS(klass); > > > @@ -246,6 +253,11 @@ static const TypeInfo pca954x_info[] = { > > > .class_init = pca954x_class_init, > > > .abstract = true, > > > }, > > > + { > > > + .name = TYPE_PCA9543, > > > + .parent = TYPE_PCA954X, > > > + .class_init = pca9543_class_init, > > > + }, > > > { > > > .name = TYPE_PCA9546, > > > .parent = TYPE_PCA954X, > > > diff --git a/include/hw/i2c/i2c_mux_pca954x.h > > b/include/hw/i2c/i2c_mux_pca954x.h > > > index 3dd25ec983..1da5508ed5 100644 > > > --- a/include/hw/i2c/i2c_mux_pca954x.h > > > +++ b/include/hw/i2c/i2c_mux_pca954x.h > > > @@ -3,6 +3,7 @@ > > > > > > #include "hw/i2c/i2c.h" > > > > > > +#define TYPE_PCA9543 "pca9543" > > > #define TYPE_PCA9546 "pca9546" > > > #define TYPE_PCA9548 "pca9548" > > > > > > -- > > > 2.31.1 > > > > > > > > > Corey, can you include this in a pull email? I don't quite have that set up > at present, Titus is going to help me figure it out. Ok, I'm running tests now, I'll get a pull request in assuming everything is ok. -corey
diff --git a/hw/i2c/i2c_mux_pca954x.c b/hw/i2c/i2c_mux_pca954x.c index db5db956a6..6aace0fc47 100644 --- a/hw/i2c/i2c_mux_pca954x.c +++ b/hw/i2c/i2c_mux_pca954x.c @@ -30,6 +30,7 @@ #define PCA9548_CHANNEL_COUNT 8 #define PCA9546_CHANNEL_COUNT 4 +#define PCA9543_CHANNEL_COUNT 2 /* * struct Pca954xState - The pca954x state object. @@ -172,6 +173,12 @@ I2CBus *pca954x_i2c_get_bus(I2CSlave *mux, uint8_t channel) return pca954x->bus[channel]; } +static void pca9543_class_init(ObjectClass *klass, void *data) +{ + Pca954xClass *s = PCA954X_CLASS(klass); + s->nchans = PCA9543_CHANNEL_COUNT; +} + static void pca9546_class_init(ObjectClass *klass, void *data) { Pca954xClass *s = PCA954X_CLASS(klass); @@ -246,6 +253,11 @@ static const TypeInfo pca954x_info[] = { .class_init = pca954x_class_init, .abstract = true, }, + { + .name = TYPE_PCA9543, + .parent = TYPE_PCA954X, + .class_init = pca9543_class_init, + }, { .name = TYPE_PCA9546, .parent = TYPE_PCA954X, diff --git a/include/hw/i2c/i2c_mux_pca954x.h b/include/hw/i2c/i2c_mux_pca954x.h index 3dd25ec983..1da5508ed5 100644 --- a/include/hw/i2c/i2c_mux_pca954x.h +++ b/include/hw/i2c/i2c_mux_pca954x.h @@ -3,6 +3,7 @@ #include "hw/i2c/i2c.h" +#define TYPE_PCA9543 "pca9543" #define TYPE_PCA9546 "pca9546" #define TYPE_PCA9548 "pca9548"
Add pca9543 2-channel i2c-mux switch support. Signed-off-by: Potin Lai <potin.lai.pt@gmail.com> --- hw/i2c/i2c_mux_pca954x.c | 12 ++++++++++++ include/hw/i2c/i2c_mux_pca954x.h | 1 + 2 files changed, 13 insertions(+)