All of lore.kernel.org
 help / color / mirror / Atom feed
From: Miquel Raynal <miquel.raynal@bootlin.com>
To: Frank Li <Frank.Li@nxp.com>
Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>,
	Boris Brezillon <boris.brezillon@collabora.com>,
	Parshuram Thombare <pthombar@cadence.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Boris Brezillon <bbrezillon@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Conor Culhane <conor.culhane@silvaco.com>,
	linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org,
	imx@lists.linux.dev
Subject: Re: [PATCH v3 03/11] i3c: master: Extend address status bit to 4 and add I3C_ADDR_SLOT_EXT_INIT
Date: Fri, 23 Aug 2024 18:04:26 +0200	[thread overview]
Message-ID: <20240823180426.056ac093@xps-13> (raw)
In-Reply-To: <20240819-i3c_fix-v3-3-7d69f7b0a05e@nxp.com>

Hi Frank,


>  static bool i3c_bus_dev_addr_is_avail(struct i3c_bus *bus, u8 addr)
>  {
>  	enum i3c_addr_slot_status status;
> @@ -388,6 +405,14 @@ static int i3c_bus_get_free_addr(struct i3c_bus *bus, u8 start_addr)
>  	enum i3c_addr_slot_status status;
>  	u8 addr;
>  
> +	/* try find an address, which have not pre-allocated by assigned-address */

	Try	to find			has   been

pre-allocated?

> +	for (addr = start_addr; addr < I3C_MAX_ADDR; addr++) {
> +		status = i3c_bus_get_addr_slot_status_ext(bus, addr);
> +		if (status == I3C_ADDR_SLOT_FREE)
> +			return addr;
> +	}
> +
> +	/* use pre-allocoated by assigned-address because such device was removed at bus*/

	  Use      allocated 

pre-allocated or assigned?

I guess the logic should be:
- try the assigned-address
- look for a free slot
- look for an already in use slot that must concern a disconnected
  device

But the comments are not precise enough IMHO. Can you rephrase them?

>  	for (addr = start_addr; addr < I3C_MAX_ADDR; addr++) {
>  		status = i3c_bus_get_addr_slot_status(bus, addr);
>  		if (status == I3C_ADDR_SLOT_FREE)
> @@ -1906,9 +1931,9 @@ static int i3c_master_bus_init(struct i3c_master_controller *master)
>  			goto err_rstdaa;
>  		}
>  
> -		i3c_bus_set_addr_slot_status(&master->bus,
> -					     i3cboardinfo->init_dyn_addr,
> -					     I3C_ADDR_SLOT_I3C_DEV);
> +		i3c_bus_set_addr_slot_status_ext(&master->bus,
> +						 i3cboardinfo->init_dyn_addr,
> +						 I3C_ADDR_SLOT_I3C_DEV | I3C_ADDR_SLOT_EXT_INIT);
>  
>  		/*
>  		 * Only try to create/attach devices that have a static
> diff --git a/include/linux/i3c/master.h b/include/linux/i3c/master.h
> index 4601b6957f799..c923b76bbc321 100644
> --- a/include/linux/i3c/master.h
> +++ b/include/linux/i3c/master.h
> @@ -284,6 +284,8 @@ enum i3c_bus_mode {
>   * @I3C_ADDR_SLOT_I2C_DEV: address is assigned to an I2C device
>   * @I3C_ADDR_SLOT_I3C_DEV: address is assigned to an I3C device
>   * @I3C_ADDR_SLOT_STATUS_MASK: address slot mask
> + * @I3C_ADDR_SLOT_EXT_INIT: the bit mask display of addresses is preferred by some devices,

I'm sorry, but I don't understand what "bit mask display of addresses"
means.

> + *			    such as the "assigned-address" in device tree source (dts).
>   *
>   * On an I3C bus, addresses are assigned dynamically, and we need to know which
>   * addresses are free to use and which ones are already assigned.
> @@ -297,9 +299,11 @@ enum i3c_addr_slot_status {
>  	I3C_ADDR_SLOT_I2C_DEV,
>  	I3C_ADDR_SLOT_I3C_DEV,
>  	I3C_ADDR_SLOT_STATUS_MASK = 3,
> +	I3C_ADDR_SLOT_EXT_STATUS_MASK = 7,
> +	I3C_ADDR_SLOT_EXT_INIT = BIT(2),
>  };
>  
> -#define I3C_ADDR_SLOT_BITS 2
> +#define I3C_ADDR_SLOT_BITS 4
>  
>  /**
>   * struct i3c_bus - I3C bus object
> 


Thanks,
Miquèl

WARNING: multiple messages have this Message-ID (diff)
From: Miquel Raynal <miquel.raynal@bootlin.com>
To: Frank Li <Frank.Li@nxp.com>
Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>,
	Boris Brezillon <boris.brezillon@collabora.com>,
	Parshuram Thombare <pthombar@cadence.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Boris Brezillon <bbrezillon@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Conor Culhane <conor.culhane@silvaco.com>,
	linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org,
	imx@lists.linux.dev
Subject: Re: [PATCH v3 03/11] i3c: master: Extend address status bit to 4 and add I3C_ADDR_SLOT_EXT_INIT
Date: Fri, 23 Aug 2024 18:04:26 +0200	[thread overview]
Message-ID: <20240823180426.056ac093@xps-13> (raw)
In-Reply-To: <20240819-i3c_fix-v3-3-7d69f7b0a05e@nxp.com>

Hi Frank,


>  static bool i3c_bus_dev_addr_is_avail(struct i3c_bus *bus, u8 addr)
>  {
>  	enum i3c_addr_slot_status status;
> @@ -388,6 +405,14 @@ static int i3c_bus_get_free_addr(struct i3c_bus *bus, u8 start_addr)
>  	enum i3c_addr_slot_status status;
>  	u8 addr;
>  
> +	/* try find an address, which have not pre-allocated by assigned-address */

	Try	to find			has   been

pre-allocated?

> +	for (addr = start_addr; addr < I3C_MAX_ADDR; addr++) {
> +		status = i3c_bus_get_addr_slot_status_ext(bus, addr);
> +		if (status == I3C_ADDR_SLOT_FREE)
> +			return addr;
> +	}
> +
> +	/* use pre-allocoated by assigned-address because such device was removed at bus*/

	  Use      allocated 

pre-allocated or assigned?

I guess the logic should be:
- try the assigned-address
- look for a free slot
- look for an already in use slot that must concern a disconnected
  device

But the comments are not precise enough IMHO. Can you rephrase them?

>  	for (addr = start_addr; addr < I3C_MAX_ADDR; addr++) {
>  		status = i3c_bus_get_addr_slot_status(bus, addr);
>  		if (status == I3C_ADDR_SLOT_FREE)
> @@ -1906,9 +1931,9 @@ static int i3c_master_bus_init(struct i3c_master_controller *master)
>  			goto err_rstdaa;
>  		}
>  
> -		i3c_bus_set_addr_slot_status(&master->bus,
> -					     i3cboardinfo->init_dyn_addr,
> -					     I3C_ADDR_SLOT_I3C_DEV);
> +		i3c_bus_set_addr_slot_status_ext(&master->bus,
> +						 i3cboardinfo->init_dyn_addr,
> +						 I3C_ADDR_SLOT_I3C_DEV | I3C_ADDR_SLOT_EXT_INIT);
>  
>  		/*
>  		 * Only try to create/attach devices that have a static
> diff --git a/include/linux/i3c/master.h b/include/linux/i3c/master.h
> index 4601b6957f799..c923b76bbc321 100644
> --- a/include/linux/i3c/master.h
> +++ b/include/linux/i3c/master.h
> @@ -284,6 +284,8 @@ enum i3c_bus_mode {
>   * @I3C_ADDR_SLOT_I2C_DEV: address is assigned to an I2C device
>   * @I3C_ADDR_SLOT_I3C_DEV: address is assigned to an I3C device
>   * @I3C_ADDR_SLOT_STATUS_MASK: address slot mask
> + * @I3C_ADDR_SLOT_EXT_INIT: the bit mask display of addresses is preferred by some devices,

I'm sorry, but I don't understand what "bit mask display of addresses"
means.

> + *			    such as the "assigned-address" in device tree source (dts).
>   *
>   * On an I3C bus, addresses are assigned dynamically, and we need to know which
>   * addresses are free to use and which ones are already assigned.
> @@ -297,9 +299,11 @@ enum i3c_addr_slot_status {
>  	I3C_ADDR_SLOT_I2C_DEV,
>  	I3C_ADDR_SLOT_I3C_DEV,
>  	I3C_ADDR_SLOT_STATUS_MASK = 3,
> +	I3C_ADDR_SLOT_EXT_STATUS_MASK = 7,
> +	I3C_ADDR_SLOT_EXT_INIT = BIT(2),
>  };
>  
> -#define I3C_ADDR_SLOT_BITS 2
> +#define I3C_ADDR_SLOT_BITS 4
>  
>  /**
>   * struct i3c_bus - I3C bus object
> 


Thanks,
Miquèl

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

  reply	other threads:[~2024-08-23 16:04 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-08-19 16:01 [PATCH v3 00/11] i3c: master: some fix and improvemnt for hotjoin Frank Li
2024-08-19 16:01 ` Frank Li
2024-08-19 16:01 ` [PATCH v3 01/11] i3c: master: Remove i3c_dev_disable_ibi_locked(olddev) on device hotjoin Frank Li
2024-08-19 16:01   ` Frank Li
2024-08-20  1:34   ` Stanley Chu
2024-08-20  1:34     ` Stanley Chu
2024-08-20 14:45     ` Frank Li
2024-08-20 14:45       ` Frank Li
2024-08-23 15:53       ` Miquel Raynal
2024-08-23 15:53         ` Miquel Raynal
2024-08-19 16:01 ` [PATCH v3 02/11] i3c: master: Replace hard code 2 with macro I3C_ADDR_SLOT_BITS Frank Li
2024-08-19 16:01   ` Frank Li
2024-08-23 15:55   ` Miquel Raynal
2024-08-23 15:55     ` Miquel Raynal
2024-08-23 17:57     ` Frank Li
2024-08-23 17:57       ` Frank Li
2024-08-26  8:05       ` Miquel Raynal
2024-08-26  8:05         ` Miquel Raynal
2024-08-19 16:01 ` [PATCH v3 03/11] i3c: master: Extend address status bit to 4 and add I3C_ADDR_SLOT_EXT_INIT Frank Li
2024-08-19 16:01   ` Frank Li
2024-08-23 16:04   ` Miquel Raynal [this message]
2024-08-23 16:04     ` Miquel Raynal
2024-08-23 17:55     ` Frank Li
2024-08-23 17:55       ` Frank Li
2024-08-26  8:04       ` Miquel Raynal
2024-08-26  8:04         ` Miquel Raynal
2024-08-26 15:56         ` Frank Li
2024-08-26 15:56           ` Frank Li
2024-08-26 16:49           ` Miquel Raynal
2024-08-26 16:49             ` Miquel Raynal
2024-08-26 18:55             ` Frank Li
2024-08-26 18:55               ` Frank Li
2024-09-02 14:12               ` Miquel Raynal
2024-09-02 14:12                 ` Miquel Raynal
2024-09-02 18:20                 ` Frank Li
2024-09-02 18:20                   ` Frank Li
2024-09-03 13:00                   ` Miquel Raynal
2024-09-03 13:00                     ` Miquel Raynal
2024-09-03 15:06                     ` Frank Li
2024-09-03 15:06                       ` Frank Li
2024-09-09 20:01                       ` Frank Li
2024-09-09 20:01                         ` Frank Li
2024-09-16 15:14                         ` Frank Li
2024-09-16 15:14                           ` Frank Li
2024-08-19 16:01 ` [PATCH v3 04/11] i3c: master: Fix dynamic address leak when 'assigned-address' is present Frank Li
2024-08-19 16:01   ` Frank Li
2024-08-19 16:01 ` [PATCH v3 05/11] i3c: master: Fix miss free init_dyn_addr at i3c_master_put_i3c_addrs() Frank Li
2024-08-19 16:01   ` Frank Li
2024-08-23 16:07   ` Miquel Raynal
2024-08-23 16:07     ` Miquel Raynal
2024-08-19 16:02 ` [PATCH v3 06/11] i3c: master: svc: use repeat start when IBI WIN happens Frank Li
2024-08-19 16:02   ` Frank Li
2024-08-23 16:09   ` Miquel Raynal
2024-08-23 16:09     ` Miquel Raynal
2024-08-19 16:02 ` [PATCH v3 07/11] i3c: master: svc: manually emit NACK/ACK for hotjoin Frank Li
2024-08-19 16:02   ` Frank Li
2024-08-23 16:10   ` Miquel Raynal
2024-08-23 16:10     ` Miquel Raynal
2024-08-19 16:02 ` [PATCH v3 08/11] i3c: master: svc: need check IBIWON for dynamtica address assign Frank Li
2024-08-19 16:02   ` Frank Li
2024-08-23 16:12   ` Miquel Raynal
2024-08-23 16:12     ` Miquel Raynal
2024-08-19 16:02 ` [PATCH v3 09/11] i3c: master: svc: use spinlock_saveirq at svc_i3c_master_ibi_work() Frank Li
2024-08-19 16:02   ` Frank Li
2024-08-23 16:19   ` Miquel Raynal
2024-08-23 16:19     ` Miquel Raynal
2024-08-23 16:53     ` Frank Li
2024-08-23 16:53       ` Frank Li
2024-08-19 16:02 ` [PATCH v3 10/11] i3c: master: svc: wait for Manual ACK/NACK Done before next step Frank Li
2024-08-19 16:02   ` Frank Li
2024-08-23 16:22   ` Miquel Raynal
2024-08-23 16:22     ` Miquel Raynal
2024-08-23 16:45     ` Frank Li
2024-08-23 16:45       ` Frank Li
2024-08-19 16:02 ` [PATCH v3 11/11] i3c: master: svc: fix possible assignment of the same address to two devices Frank Li
2024-08-19 16:02   ` Frank Li
2024-08-23 16:24   ` Miquel Raynal
2024-08-23 16:24     ` Miquel Raynal

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240823180426.056ac093@xps-13 \
    --to=miquel.raynal@bootlin.com \
    --cc=Frank.Li@nxp.com \
    --cc=alexandre.belloni@bootlin.com \
    --cc=arnd@arndb.de \
    --cc=bbrezillon@kernel.org \
    --cc=boris.brezillon@collabora.com \
    --cc=conor.culhane@silvaco.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=imx@lists.linux.dev \
    --cc=linux-i3c@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pthombar@cadence.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.