All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Tharun Kumar P <tharunkumar.pasumarthi@microchip.com>
Cc: linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org,
	wsa@kernel.org, krzk@kernel.org, jarkko.nikula@linux.intel.com,
	robh@kernel.org, semen.protsenko@linaro.org, sven@svenpeter.dev,
	jsd@semihalf.com, rafal@milecki.pl, olof@lixom.net,
	arnd@arndb.de, UNGLinuxDriver@microchip.com
Subject: Re: [PATCH RFC i2c-master] i2c: microchip: pci1xxxx: Add driver for I2C host controller in multifunction endpoint of pci1xxxx switch
Date: Tue, 23 Aug 2022 18:05:00 +0300	[thread overview]
Message-ID: <YwTsnCdxM5I6BoJu@smile.fi.intel.com> (raw)
In-Reply-To: <20220823145603.2606475-1-tharunkumar.pasumarthi@microchip.com>

On Tue, Aug 23, 2022 at 08:26:03PM +0530, Tharun Kumar P wrote:
> Microchip PCI1XXXX is an unmanaged PCIe3.1a Switch for Consumer,
> Industrial and Automotive applications. This switch has multiple
> downstream ports. In one of the Switch's Downstream port, there
> is a multifunction endpoint for peripherals which includes an I2C
> host controller. The I2C function in the endpoint operates at 100KHz,
> 400KHz and 1 MHz and has buffer depth of 128 bytes.
> This patch provides the I2C controller driver for the I2C endpoint
> of the switch.

...

> @@ -1290,6 +1290,16 @@ config I2C_VIPERBOARD
>  	  River Tech's viperboard.h for detailed meaning
>  	  of the module parameters.
>  
> +config I2C_PCI1XXXX

Looks unsorted.

> +	tristate "PCI1XXXX I2C Host Adapter support"
> +	depends on PCI
> +	help
> +	  Say yes here to enable the I2C Host adapter support for the PCI1xxxx card
> +	  This is a PCI to I2C adapter
> +
> +	  This driver can be built as a module. If so, the module will be
> +	  called as i2c-mchp-pci1xxxx

English grammar and punctuation while keeping lines shorter (~76) please.

...

>  obj-$(CONFIG_I2C_VIPERBOARD)	+= i2c-viperboard.o
> +obj-$(CONFIG_I2C_PCI1XXXX)	+= i2c-mchp-pci1xxxx.o

Why unsorted?

...

> + * Author: Tharun Kumar P <tharunkumar.pasumarthi@microchip.com>
> + *         Kumaravel Thiagarajan <kumaravel.thiagarajan@microchip.com>

Single or many?

...

> +/*SMB register space*/

Style.

...

> +#define SMB_CORE_CTRL_ESO	0x40
> +#define SMB_CORE_CTRL_FW_ACK	0x10

Are they bits or numbers?

...

> +#define SMB_CORE_CMD_READM		0x10
> +#define SMB_CORE_CMD_STOP		0x04
> +#define SMB_CORE_CMD_START		0x01

Ditto.

...

> +#define SMB_CORE_CMD_M_PROCEED	0x02
> +#define SMB_CORE_CMD_M_RUN		0x01

Ditto.

...

> +#define SR_HOLD_TIME_100KHZ		0x85
> +#define SR_HOLD_TIME_400KHZ		0x14
> +#define SR_HOLD_TIME_1000KHZ	0x0B

These has to be decimal, and why the ACPI / DT does not provide them?

Also, do they have units or are they proportional coefficients?

...

> +#define COMPLETION_MDONE	0x40
> +#define COMPLETION_IDLE		0x20
> +#define COMPLETION_MNAKX	0x01

Bits? Same Q for the rest similar stuff.

...

> +#define SMB_IDLE_SCALING_100KHZ		0x03E803C9
> +#define SMB_IDLE_SCALING_400KHZ		0x01F4009D
> +#define SMB_IDLE_SCALING_1000KHZ	0x01F4009D

Shouldn't these magics be decimals?
Ditto for the rest similar stuff.

...

> +#define I2C_DIR_WRITE		0
> +#define I2C_DIR_READ		1

Namespace collision. Doesn't I²C core provide these?

...

> +#define PCI1XXXX_I2C_TIMEOUT	1000

Units? Same to the rest similar cases.

...

> +#define SMBUS_PERI_LOCK		BIT(3)

BIT() out of a sudden. See above.

...

> +/*
> + * struct pci1xxxx_i2c - private structure for the I2C controller

> + *

Redundant blank line.

> + * @adap:	I2C adapter instance
> + * @dev:	pointer to device struct
> + * @i2c_base:	pci base address of the I2C ctrler
> + * @i2c_xfer_done: used for synchronisation between foreground & isr
> + * @freq:	frequency of I2C transfer
> + * @flags:	internal flags to store transfer conditions
> + * @irq:	irq number
> + */

> +

Ditt.

> +struct pci1xxxx_i2c {
> +	struct completion i2c_xfer_done;
> +	bool i2c_xfer_in_progress;
> +	struct i2c_adapter adap;
> +	void __iomem *i2c_base;
> +	u32 freq;
> +	u32 flags;
> +};

I have lack of time to finish review, but you already have enough for the next
version.

...

> +			transferlen = min((u16)(SMBUS_MAST_BUF_MAX_SIZE - 1),
> +					  remainingbytes);

min_t()

...

> +		if (remainingbytes <= transferlen && (i2c->flags &
> +							I2C_FLAGS_STOP))

Strange indentation.

...

> +		/*
> +		 * wait for the DMA_TERM interrupt and if the timer expires, it means
> +		 * the transaction has failed due to some bus lock as we dint get
> +		 * the interrupt
> +		 */

You really have to go through all comments and fix grammar, etc.

...

> +		time_left = wait_for_completion_timeout
> +				(&i2c->i2c_xfer_done, msecs_to_jiffies(PCI1XXXX_I2C_TIMEOUT));

Strange indentation.

...

> +	i2c_del_adapter(&i2c->adap);

Can't you use devm_ variant?

...

> +	pci1xxxx_i2c_shutdown(i2c);

Do you really need this in ->remove()? I would expect something in
the ->suspend() / ->shutdown().

-- 
With Best Regards,
Andy Shevchenko



  parent reply	other threads:[~2022-08-23 17:28 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-23 14:56 [PATCH RFC i2c-master] i2c: microchip: pci1xxxx: Add driver for I2C host controller in multifunction endpoint of pci1xxxx switch Tharun Kumar P
2022-08-23 10:31 ` Krzysztof Kozlowski
2022-08-24 13:48   ` Tharunkumar.Pasumarthi
2022-08-30 14:21   ` Tharunkumar.Pasumarthi
2022-08-23 11:48 ` Christophe JAILLET
2022-08-24 13:52   ` Tharunkumar.Pasumarthi
2022-08-30 14:25   ` Tharunkumar.Pasumarthi
2022-08-23 15:05 ` Andy Shevchenko [this message]
2022-08-24 14:38   ` Tharunkumar.Pasumarthi
2022-08-24 18:31     ` Andy Shevchenko
2022-08-25 13:15       ` Tharunkumar.Pasumarthi
2022-08-25 14:22         ` Andy Shevchenko
2022-08-26  4:00           ` Tharunkumar.Pasumarthi
2022-08-26 13:03             ` Tharunkumar.Pasumarthi
2022-08-26 15:37               ` Andy Shevchenko
2022-08-29  3:00                 ` Tharunkumar.Pasumarthi

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=YwTsnCdxM5I6BoJu@smile.fi.intel.com \
    --to=andriy.shevchenko@linux.intel.com \
    --cc=UNGLinuxDriver@microchip.com \
    --cc=arnd@arndb.de \
    --cc=jarkko.nikula@linux.intel.com \
    --cc=jsd@semihalf.com \
    --cc=krzk@kernel.org \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=olof@lixom.net \
    --cc=rafal@milecki.pl \
    --cc=robh@kernel.org \
    --cc=semen.protsenko@linaro.org \
    --cc=sven@svenpeter.dev \
    --cc=tharunkumar.pasumarthi@microchip.com \
    --cc=wsa@kernel.org \
    /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.