Linux-i3c Archive on lore.kernel.org
 help / Atom feed
* [PATCH 0/4] Drop support for I2C 10 bit devices from I3C subsystem
@ 2019-03-07  9:58 Przemyslaw Gaj
  2019-03-07  9:58 ` [PATCH 1/4] i3c: Drop support for I2C 10 bit addresing Przemyslaw Gaj
                   ` (4 more replies)
  0 siblings, 5 replies; 8+ messages in thread
From: Przemyslaw Gaj @ 2019-03-07  9:58 UTC (permalink / raw)
  To: bbrezillon; +Cc: linux-i3c, Przemyslaw Gaj, rafalc, vitor.soares

I3C MIPI spec does not clearly say that I2C 10bit devices are supported.
Additionally, it isn't possible to pass 10 bit device properly through DEFSLVS
command and reserve address for such device on secondary master side.

Przemyslaw Gaj (4):
  i3c: Drop support for I2C 10 bit addresing
  i3c: master: cdns: Drop support for I2C 10 bit addresing in Cadence
    I3C master
  i3c: master: dw-i3c-master: Remove i2c_funcs hook implementation
  dt-bindings: i3c: Document dropped support for I2C 10 bit devices

 Documentation/devicetree/bindings/i3c/i3c.txt |  4 +++-
 drivers/i3c/master.c                          | 19 +++++++++++--------
 drivers/i3c/master/dw-i3c-master.c            |  6 ------
 drivers/i3c/master/i3c-master-cdns.c          | 10 +---------
 include/linux/i3c/master.h                    |  5 +----
 5 files changed, 16 insertions(+), 28 deletions(-)

-- 
2.8.3


_______________________________________________
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 1/4] i3c: Drop support for I2C 10 bit addresing
  2019-03-07  9:58 [PATCH 0/4] Drop support for I2C 10 bit devices from I3C subsystem Przemyslaw Gaj
@ 2019-03-07  9:58 ` Przemyslaw Gaj
  2019-03-13 19:30   ` vitor
  2019-03-07  9:58 ` [PATCH 2/4] i3c: master: cdns: Drop support for I2C 10 bit addresing in Cadence I3C master Przemyslaw Gaj
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 8+ messages in thread
From: Przemyslaw Gaj @ 2019-03-07  9:58 UTC (permalink / raw)
  To: bbrezillon; +Cc: linux-i3c, Przemyslaw Gaj, rafalc, vitor.soares

This patch dropps support for I2C devices with 10 bit addressing. When I2C
device with 10 bit address is defined in DT, I3C master registration fails.

Address space for I2C devices has been reduced and ->i2c_funcs() hook has been
removed.

Signed-off-by: Przemyslaw Gaj <pgaj@cadence.com>
---
 drivers/i3c/master.c       | 19 +++++++++++--------
 include/linux/i3c/master.h |  5 +----
 2 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c
index 2dc628d..5b3adb3 100644
--- a/drivers/i3c/master.c
+++ b/drivers/i3c/master.c
@@ -1962,6 +1962,16 @@ of_i3c_master_add_i2c_boardinfo(struct i3c_master_controller *master,
 	if (ret)
 		return ret;
 
+	/*
+	 * The I3C Specification does not clearly say I2C devices with 10-bit
+	 * address are supported. These devices can't be passed properly through
+	 * DEFSLVS command.
+	 */
+	if (boardinfo->base.flags & I2C_CLIENT_TEN) {
+		dev_err(&master->dev, "I2C device with 10 bit address not supported.");
+		return -ENOTSUPP;
+	}
+
 	/* LVR is encoded in reg[2]. */
 	boardinfo->lvr = reg[2];
 
@@ -2111,16 +2121,9 @@ static int i3c_master_i2c_adapter_xfer(struct i2c_adapter *adap,
 	return ret ? ret : nxfers;
 }
 
-static u32 i3c_master_i2c_functionalities(struct i2c_adapter *adap)
-{
-	struct i3c_master_controller *master = i2c_adapter_to_i3c_master(adap);
-
-	return master->ops->i2c_funcs(master);
-}
-
 static const struct i2c_algorithm i3c_master_i2c_algo = {
 	.master_xfer = i3c_master_i2c_adapter_xfer,
-	.functionality = i3c_master_i2c_functionalities,
+	.functionality = I2C_FUNC_SMBUS_EMUL | I2C_FUNC_I2C,
 };
 
 static int i3c_master_i2c_adapter_init(struct i3c_master_controller *master)
diff --git a/include/linux/i3c/master.h b/include/linux/i3c/master.h
index f13fd8b..eca8337 100644
--- a/include/linux/i3c/master.h
+++ b/include/linux/i3c/master.h
@@ -48,7 +48,7 @@ struct i3c_i2c_dev_desc {
 #define I3C_LVR_I2C_INDEX(x)		((x) << 5)
 #define I3C_LVR_I2C_FM_MODE		BIT(4)
 
-#define I2C_MAX_ADDR			GENMASK(9, 0)
+#define I2C_MAX_ADDR			GENMASK(6, 0)
 
 /**
  * struct i2c_dev_boardinfo - I2C device board information
@@ -390,8 +390,6 @@ struct i3c_bus {
  *	       and i2c_put_dma_safe_msg_buf() helpers provided by the I2C
  *	       framework.
  *	       This method is mandatory.
- * @i2c_funcs: expose the supported I2C functionalities.
- *	       This method is mandatory.
  * @request_ibi: attach an IBI handler to an I3C device. This implies defining
  *		 an IBI handler and the constraints of the IBI (maximum payload
  *		 length and number of pre-allocated slots).
@@ -437,7 +435,6 @@ struct i3c_master_controller_ops {
 	void (*detach_i2c_dev)(struct i2c_dev_desc *dev);
 	int (*i2c_xfers)(struct i2c_dev_desc *dev,
 			 const struct i2c_msg *xfers, int nxfers);
-	u32 (*i2c_funcs)(struct i3c_master_controller *master);
 	int (*request_ibi)(struct i3c_dev_desc *dev,
 			   const struct i3c_ibi_setup *req);
 	void (*free_ibi)(struct i3c_dev_desc *dev);
-- 
2.8.3


_______________________________________________
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 2/4] i3c: master: cdns: Drop support for I2C 10 bit addresing in Cadence I3C master
  2019-03-07  9:58 [PATCH 0/4] Drop support for I2C 10 bit devices from I3C subsystem Przemyslaw Gaj
  2019-03-07  9:58 ` [PATCH 1/4] i3c: Drop support for I2C 10 bit addresing Przemyslaw Gaj
@ 2019-03-07  9:58 ` Przemyslaw Gaj
  2019-03-07  9:58 ` [PATCH 3/4] i3c: master: dw-i3c-master: Remove i2c_funcs hook implementation Przemyslaw Gaj
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 8+ messages in thread
From: Przemyslaw Gaj @ 2019-03-07  9:58 UTC (permalink / raw)
  To: bbrezillon; +Cc: linux-i3c, Przemyslaw Gaj, rafalc, vitor.soares

Because this patch series dropped support for 10 bit I2C devices, support is
also dropped in Cadence I3C master driver.

Signed-off-by: Przemyslaw Gaj <pgaj@cadence.com>
---
 drivers/i3c/master/i3c-master-cdns.c | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/drivers/i3c/master/i3c-master-cdns.c b/drivers/i3c/master/i3c-master-cdns.c
index 8889a4f..237f24a 100644
--- a/drivers/i3c/master/i3c-master-cdns.c
+++ b/drivers/i3c/master/i3c-master-cdns.c
@@ -864,11 +864,6 @@ static int cdns_i3c_master_i2c_xfers(struct i2c_dev_desc *dev,
 	return ret;
 }
 
-static u32 cdns_i3c_master_i2c_funcs(struct i3c_master_controller *m)
-{
-	return I2C_FUNC_SMBUS_EMUL | I2C_FUNC_I2C | I2C_FUNC_10BIT_ADDR;
-}
-
 struct cdns_i3c_i2c_dev_data {
 	u16 id;
 	s16 ibi;
@@ -1010,9 +1005,7 @@ static int cdns_i3c_master_attach_i2c_dev(struct i2c_dev_desc *dev)
 	master->free_rr_slots &= ~BIT(slot);
 	i2c_dev_set_master_data(dev, data);
 
-	writel(prepare_rr0_dev_address(dev->boardinfo->base.addr) |
-	       (dev->boardinfo->base.flags & I2C_CLIENT_TEN ?
-		DEV_ID_RR0_LVR_EXT_ADDR : 0),
+	writel(prepare_rr0_dev_address(dev->boardinfo->base.addr),
 	       master->regs + DEV_ID_RR0(data->id));
 	writel(dev->boardinfo->lvr, master->regs + DEV_ID_RR2(data->id));
 	writel(readl(master->regs + DEVS_CTRL) |
@@ -1518,7 +1511,6 @@ static const struct i3c_master_controller_ops cdns_i3c_master_ops = {
 	.send_ccc_cmd = cdns_i3c_master_send_ccc_cmd,
 	.priv_xfers = cdns_i3c_master_priv_xfers,
 	.i2c_xfers = cdns_i3c_master_i2c_xfers,
-	.i2c_funcs = cdns_i3c_master_i2c_funcs,
 	.enable_ibi = cdns_i3c_master_enable_ibi,
 	.disable_ibi = cdns_i3c_master_disable_ibi,
 	.request_ibi = cdns_i3c_master_request_ibi,
-- 
2.8.3


_______________________________________________
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 3/4] i3c: master: dw-i3c-master: Remove i2c_funcs hook implementation
  2019-03-07  9:58 [PATCH 0/4] Drop support for I2C 10 bit devices from I3C subsystem Przemyslaw Gaj
  2019-03-07  9:58 ` [PATCH 1/4] i3c: Drop support for I2C 10 bit addresing Przemyslaw Gaj
  2019-03-07  9:58 ` [PATCH 2/4] i3c: master: cdns: Drop support for I2C 10 bit addresing in Cadence I3C master Przemyslaw Gaj
@ 2019-03-07  9:58 ` Przemyslaw Gaj
  2019-03-07  9:58 ` [PATCH 4/4] dt-bindings: i3c: Document dropped support for I2C 10 bit devices Przemyslaw Gaj
  2019-03-11  7:09 ` [PATCH 0/4] Drop support for I2C 10 bit devices from I3C subsystem Boris Brezillon
  4 siblings, 0 replies; 8+ messages in thread
From: Przemyslaw Gaj @ 2019-03-07  9:58 UTC (permalink / raw)
  To: bbrezillon; +Cc: linux-i3c, Przemyslaw Gaj, rafalc, vitor.soares

Because this patch series dropped support for 10 bit I2C devices, i2c_funcs()
hook has been removed. I removed hook implementation from Synopsys DesignWare
I3C master driver.

Signed-off-by: Przemyslaw Gaj <pgaj@cadence.com>
---
 drivers/i3c/master/dw-i3c-master.c | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/drivers/i3c/master/dw-i3c-master.c b/drivers/i3c/master/dw-i3c-master.c
index bb03079..9934a12 100644
--- a/drivers/i3c/master/dw-i3c-master.c
+++ b/drivers/i3c/master/dw-i3c-master.c
@@ -1069,11 +1069,6 @@ static void dw_i3c_master_detach_i2c_dev(struct i2c_dev_desc *dev)
 	kfree(data);
 }
 
-static u32 dw_i3c_master_i2c_funcs(struct i3c_master_controller *m)
-{
-	return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL;
-}
-
 static irqreturn_t dw_i3c_master_irq_handler(int irq, void *dev_id)
 {
 	struct dw_i3c_master *master = dev_id;
@@ -1108,7 +1103,6 @@ static const struct i3c_master_controller_ops dw_mipi_i3c_ops = {
 	.attach_i2c_dev = dw_i3c_master_attach_i2c_dev,
 	.detach_i2c_dev = dw_i3c_master_detach_i2c_dev,
 	.i2c_xfers = dw_i3c_master_i2c_xfers,
-	.i2c_funcs = dw_i3c_master_i2c_funcs,
 };
 
 static int dw_i3c_probe(struct platform_device *pdev)
-- 
2.8.3


_______________________________________________
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 4/4] dt-bindings: i3c: Document dropped support for I2C 10 bit devices
  2019-03-07  9:58 [PATCH 0/4] Drop support for I2C 10 bit devices from I3C subsystem Przemyslaw Gaj
                   ` (2 preceding siblings ...)
  2019-03-07  9:58 ` [PATCH 3/4] i3c: master: dw-i3c-master: Remove i2c_funcs hook implementation Przemyslaw Gaj
@ 2019-03-07  9:58 ` Przemyslaw Gaj
  2019-03-11  7:09 ` [PATCH 0/4] Drop support for I2C 10 bit devices from I3C subsystem Boris Brezillon
  4 siblings, 0 replies; 8+ messages in thread
From: Przemyslaw Gaj @ 2019-03-07  9:58 UTC (permalink / raw)
  To: bbrezillon; +Cc: linux-i3c, Przemyslaw Gaj, rafalc, vitor.soares

Because this patch series dropped support for 10 bit I2C devices, I'm
documenting this.

Signed-off-by: Przemyslaw Gaj <pgaj@cadence.com>
---
 Documentation/devicetree/bindings/i3c/i3c.txt | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/i3c/i3c.txt b/Documentation/devicetree/bindings/i3c/i3c.txt
index ab729a0..4ffe059 100644
--- a/Documentation/devicetree/bindings/i3c/i3c.txt
+++ b/Documentation/devicetree/bindings/i3c/i3c.txt
@@ -39,7 +39,9 @@ valid here, but several new properties have been added.
 New constraint on existing properties:
 --------------------------------------
 - reg: contains 3 cells
-  + first cell : still encoding the I2C address
+  + first cell : still encoding the I2C address. 10 bit addressing is not
+    supported. Devices with 10 bit address can't be properly passed through
+    DEFSLVS command.
 
   + second cell: shall be 0
 
-- 
2.8.3


_______________________________________________
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 0/4] Drop support for I2C 10 bit devices from I3C subsystem
  2019-03-07  9:58 [PATCH 0/4] Drop support for I2C 10 bit devices from I3C subsystem Przemyslaw Gaj
                   ` (3 preceding siblings ...)
  2019-03-07  9:58 ` [PATCH 4/4] dt-bindings: i3c: Document dropped support for I2C 10 bit devices Przemyslaw Gaj
@ 2019-03-11  7:09 ` Boris Brezillon
  4 siblings, 0 replies; 8+ messages in thread
From: Boris Brezillon @ 2019-03-11  7:09 UTC (permalink / raw)
  To: Przemyslaw Gaj; +Cc: linux-i3c, vitor.soares, rafalc, bbrezillon

Hi Przemek,

Missing v2 in the subject prefix, and there's no changelog in the cover
letter/patches.

On Thu, 7 Mar 2019 09:58:04 +0000
Przemyslaw Gaj <pgaj@cadence.com> wrote:

> I3C MIPI spec does not clearly say that I2C 10bit devices are supported.
> Additionally, it isn't possible to pass 10 bit device properly through DEFSLVS
> command and reserve address for such device on secondary master side.
> 
> Przemyslaw Gaj (4):
>   i3c: Drop support for I2C 10 bit addresing
>   i3c: master: cdns: Drop support for I2C 10 bit addresing in Cadence
>     I3C master
>   i3c: master: dw-i3c-master: Remove i2c_funcs hook implementation
>   dt-bindings: i3c: Document dropped support for I2C 10 bit devices

Looks like this series is still not bisectable. Please make sure things
compile/work correctly after each of your change.

Regards,

Boris

> 
>  Documentation/devicetree/bindings/i3c/i3c.txt |  4 +++-
>  drivers/i3c/master.c                          | 19 +++++++++++--------
>  drivers/i3c/master/dw-i3c-master.c            |  6 ------
>  drivers/i3c/master/i3c-master-cdns.c          | 10 +---------
>  include/linux/i3c/master.h                    |  5 +----
>  5 files changed, 16 insertions(+), 28 deletions(-)
> 


_______________________________________________
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/4] i3c: Drop support for I2C 10 bit addresing
  2019-03-07  9:58 ` [PATCH 1/4] i3c: Drop support for I2C 10 bit addresing Przemyslaw Gaj
@ 2019-03-13 19:30   ` vitor
  2019-03-14  7:47     ` Przemyslaw Gaj
  0 siblings, 1 reply; 8+ messages in thread
From: vitor @ 2019-03-13 19:30 UTC (permalink / raw)
  To: Przemyslaw Gaj, bbrezillon; +Cc: linux-i3c, rafalc, vitor.soares

Hi Przemek,


On 07/03/19 09:58, Przemyslaw Gaj wrote:
> This patch dropps support for I2C devices with 10 bit addressing. When I2C
> device with 10 bit address is defined in DT, I3C master registration fails.
>
> Address space for I2C devices has been reduced and ->i2c_funcs() hook has been
> removed.
>
> Signed-off-by: Przemyslaw Gaj <pgaj@cadence.com>
> ---
>  drivers/i3c/master.c       | 19 +++++++++++--------
>  include/linux/i3c/master.h |  5 +----
>  2 files changed, 12 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c
> index 2dc628d..5b3adb3 100644
> --- a/drivers/i3c/master.c
> +++ b/drivers/i3c/master.c
> @@ -1962,6 +1962,16 @@ of_i3c_master_add_i2c_boardinfo(struct i3c_master_controller *master,
>  	if (ret)
>  		return ret;
>  
> +	/*
> +	 * The I3C Specification does not clearly say I2C devices with 10-bit
> +	 * address are supported. These devices can't be passed properly through
> +	 * DEFSLVS command.
> +	 */
> +	if (boardinfo->base.flags & I2C_CLIENT_TEN) {
> +		dev_err(&master->dev, "I2C device with 10 bit address not supported.");
> +		return -ENOTSUPP;
> +	}
> +
>  	/* LVR is encoded in reg[2]. */
>  	boardinfo->lvr = reg[2];
>  
> @@ -2111,16 +2121,9 @@ static int i3c_master_i2c_adapter_xfer(struct i2c_adapter *adap,
>  	return ret ? ret : nxfers;
>  }
>  
> -static u32 i3c_master_i2c_functionalities(struct i2c_adapter *adap)
> -{
> -	struct i3c_master_controller *master = i2c_adapter_to_i3c_master(adap);
> -
> -	return master->ops->i2c_funcs(master);
> -}
> -
>  static const struct i2c_algorithm i3c_master_i2c_algo = {
>  	.master_xfer = i3c_master_i2c_adapter_xfer,
> -	.functionality = i3c_master_i2c_functionalities,
> +	.functionality = I2C_FUNC_SMBUS_EMUL | I2C_FUNC_I2C,
>  };
>  
>  static int i3c_master_i2c_adapter_init(struct i3c_master_controller *master)
> diff --git a/include/linux/i3c/master.h b/include/linux/i3c/master.h
> index f13fd8b..eca8337 100644
> --- a/include/linux/i3c/master.h
> +++ b/include/linux/i3c/master.h
> @@ -48,7 +48,7 @@ struct i3c_i2c_dev_desc {
>  #define I3C_LVR_I2C_INDEX(x)		((x) << 5)
>  #define I3C_LVR_I2C_FM_MODE		BIT(4)
>  
> -#define I2C_MAX_ADDR			GENMASK(9, 0)
> +#define I2C_MAX_ADDR			GENMASK(6, 0)
>  
>  /**
>   * struct i2c_dev_boardinfo - I2C device board information
> @@ -390,8 +390,6 @@ struct i3c_bus {
>   *	       and i2c_put_dma_safe_msg_buf() helpers provided by the I2C
>   *	       framework.
>   *	       This method is mandatory.
> - * @i2c_funcs: expose the supported I2C functionalities.
> - *	       This method is mandatory.
>   * @request_ibi: attach an IBI handler to an I3C device. This implies defining
>   *		 an IBI handler and the constraints of the IBI (maximum payload
>   *		 length and number of pre-allocated slots).
> @@ -437,7 +435,6 @@ struct i3c_master_controller_ops {
>  	void (*detach_i2c_dev)(struct i2c_dev_desc *dev);
>  	int (*i2c_xfers)(struct i2c_dev_desc *dev,
>  			 const struct i2c_msg *xfers, int nxfers);
> -	u32 (*i2c_funcs)(struct i3c_master_controller *master);
>  	int (*request_ibi)(struct i3c_dev_desc *dev,
>  			   const struct i3c_ibi_setup *req);
>  	void (*free_ibi)(struct i3c_dev_desc *dev);

Still need to remove ops->i2c_funcs from i3c_master_check_ops.

Best regards,
Vitor Soares

_______________________________________________
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/4] i3c: Drop support for I2C 10 bit addresing
  2019-03-13 19:30   ` vitor
@ 2019-03-14  7:47     ` Przemyslaw Gaj
  0 siblings, 0 replies; 8+ messages in thread
From: Przemyslaw Gaj @ 2019-03-14  7:47 UTC (permalink / raw)
  To: vitor; +Cc: linux-i3c, rafalc, bbrezillon

Hi Vitor,

The 03/13/2019 19:30, vitor wrote:
> 
> 
> Hi Przemek,
> 
> 
> On 07/03/19 09:58, Przemyslaw Gaj wrote:
> > This patch dropps support for I2C devices with 10 bit addressing. When I2C
> > device with 10 bit address is defined in DT, I3C master registration fails.
> >
> > Address space for I2C devices has been reduced and ->i2c_funcs() hook has been
> > removed.
> >
> > Signed-off-by: Przemyslaw Gaj <pgaj@cadence.com>
> > ---
> >  drivers/i3c/master.c       | 19 +++++++++++--------
> >  include/linux/i3c/master.h |  5 +----
> >  2 files changed, 12 insertions(+), 12 deletions(-)
> >
> > diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c
> > index 2dc628d..5b3adb3 100644
> > --- a/drivers/i3c/master.c
> > +++ b/drivers/i3c/master.c
> > @@ -1962,6 +1962,16 @@ of_i3c_master_add_i2c_boardinfo(struct i3c_master_controller *master,
> >  	if (ret)
> >  		return ret;
> >  
> > +	/*
> > +	 * The I3C Specification does not clearly say I2C devices with 10-bit
> > +	 * address are supported. These devices can't be passed properly through
> > +	 * DEFSLVS command.
> > +	 */
> > +	if (boardinfo->base.flags & I2C_CLIENT_TEN) {
> > +		dev_err(&master->dev, "I2C device with 10 bit address not supported.");
> > +		return -ENOTSUPP;
> > +	}
> > +
> >  	/* LVR is encoded in reg[2]. */
> >  	boardinfo->lvr = reg[2];
> >  
> > @@ -2111,16 +2121,9 @@ static int i3c_master_i2c_adapter_xfer(struct i2c_adapter *adap,
> >  	return ret ? ret : nxfers;
> >  }
> >  
> > -static u32 i3c_master_i2c_functionalities(struct i2c_adapter *adap)
> > -{
> > -	struct i3c_master_controller *master = i2c_adapter_to_i3c_master(adap);
> > -
> > -	return master->ops->i2c_funcs(master);
> > -}
> > -
> >  static const struct i2c_algorithm i3c_master_i2c_algo = {
> >  	.master_xfer = i3c_master_i2c_adapter_xfer,
> > -	.functionality = i3c_master_i2c_functionalities,
> > +	.functionality = I2C_FUNC_SMBUS_EMUL | I2C_FUNC_I2C,
> >  };
> >  
> >  static int i3c_master_i2c_adapter_init(struct i3c_master_controller *master)
> > diff --git a/include/linux/i3c/master.h b/include/linux/i3c/master.h
> > index f13fd8b..eca8337 100644
> > --- a/include/linux/i3c/master.h
> > +++ b/include/linux/i3c/master.h
> > @@ -48,7 +48,7 @@ struct i3c_i2c_dev_desc {
> >  #define I3C_LVR_I2C_INDEX(x)		((x) << 5)
> >  #define I3C_LVR_I2C_FM_MODE		BIT(4)
> >  
> > -#define I2C_MAX_ADDR			GENMASK(9, 0)
> > +#define I2C_MAX_ADDR			GENMASK(6, 0)
> >  
> >  /**
> >   * struct i2c_dev_boardinfo - I2C device board information
> > @@ -390,8 +390,6 @@ struct i3c_bus {
> >   *	       and i2c_put_dma_safe_msg_buf() helpers provided by the I2C
> >   *	       framework.
> >   *	       This method is mandatory.
> > - * @i2c_funcs: expose the supported I2C functionalities.
> > - *	       This method is mandatory.
> >   * @request_ibi: attach an IBI handler to an I3C device. This implies defining
> >   *		 an IBI handler and the constraints of the IBI (maximum payload
> >   *		 length and number of pre-allocated slots).
> > @@ -437,7 +435,6 @@ struct i3c_master_controller_ops {
> >  	void (*detach_i2c_dev)(struct i2c_dev_desc *dev);
> >  	int (*i2c_xfers)(struct i2c_dev_desc *dev,
> >  			 const struct i2c_msg *xfers, int nxfers);
> > -	u32 (*i2c_funcs)(struct i3c_master_controller *master);
> >  	int (*request_ibi)(struct i3c_dev_desc *dev,
> >  			   const struct i3c_ibi_setup *req);
> >  	void (*free_ibi)(struct i3c_dev_desc *dev);
> 
> Still need to remove ops->i2c_funcs from i3c_master_check_ops.

I thought I did that. I need to check that patch carefully. I'm sure I compiled
that, now I'm wondering why it worked. Thank you!

> 
> Best regards, 
> Vitor Soares

-- 
-- 
Przemyslaw Gaj

_______________________________________________
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, back to index

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-03-07  9:58 [PATCH 0/4] Drop support for I2C 10 bit devices from I3C subsystem Przemyslaw Gaj
2019-03-07  9:58 ` [PATCH 1/4] i3c: Drop support for I2C 10 bit addresing Przemyslaw Gaj
2019-03-13 19:30   ` vitor
2019-03-14  7:47     ` Przemyslaw Gaj
2019-03-07  9:58 ` [PATCH 2/4] i3c: master: cdns: Drop support for I2C 10 bit addresing in Cadence I3C master Przemyslaw Gaj
2019-03-07  9:58 ` [PATCH 3/4] i3c: master: dw-i3c-master: Remove i2c_funcs hook implementation Przemyslaw Gaj
2019-03-07  9:58 ` [PATCH 4/4] dt-bindings: i3c: Document dropped support for I2C 10 bit devices Przemyslaw Gaj
2019-03-11  7:09 ` [PATCH 0/4] Drop support for I2C 10 bit devices from I3C subsystem Boris Brezillon

Linux-i3c Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-i3c/0 linux-i3c/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-i3c linux-i3c/ https://lore.kernel.org/linux-i3c \
		linux-i3c@lists.infradead.org linux-i3c@archiver.kernel.org
	public-inbox-index linux-i3c


Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.infradead.lists.linux-i3c


AGPL code for this site: git clone https://public-inbox.org/ public-inbox