public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Joe Perches <joe@perches.com>
To: Paolo Pisati <p.pisati@gmail.com>, Alan Tull <atull@kernel.org>,
	Moritz Fischer <mdf@kernel.org>, Rob Herring <robh+dt@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>
Cc: linux-fpga@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/2] fpga: lattice machxo2: Add Lattice MachXO2 support
Date: Wed, 21 Mar 2018 11:04:52 -0700	[thread overview]
Message-ID: <1521655492.7999.13.camel@perches.com> (raw)
In-Reply-To: <1521653726-24625-3-git-send-email-p.pisati@gmail.com>

On Wed, 2018-03-21 at 18:35 +0100, Paolo Pisati wrote:
> This patch adds support to the FPGA manager for programming
> MachXO2 device’s internal flash memory, via slave SPI.

style trivia:

> diff --git a/drivers/fpga/machxo2-spi.c b/drivers/fpga/machxo2-spi.c
[]
> +static int get_status(struct spi_device *spi, unsigned long *status)
> +{
> +	struct spi_message msg;
> +	struct spi_transfer rx, tx;
> +	u8 cmd[] = LSC_READ_STATUS;

static const u8 cmd[]
here and everywhere else as all the tx_buf assignments 
of cmd are to const void *

> +	int ret;
> +
> +	memset(&rx, 0, sizeof(rx));
> +	memset(&tx, 0, sizeof(tx));
> +	tx.tx_buf = cmd;

[]

> +#ifdef DEBUG
> +static void dump_status_reg(unsigned long *status)
> +{

Instead of multiple declarations of dump_status_reg
it's frequently nicer to use a style like

static void debug_func(args...)
{
#ifdef DEBUG
	[code...]
#endif
}

so if function arguments ever need to be changed
it's only required to be changed in one spot and
not multiply compilation tested with and without
the DEBUG definition

> +	char *ferr;
> +
> +	switch (get_err(status)) {
> +	case ENOERR:
> +		ferr = "No Error";
> +		break;
> +	case EID:
> +		ferr = "ID ERR";
> +		break;
> +	case ECMD:
> +		ferr = "CMD ERR";
> +		break;
> +	case ECRC:
> +		ferr = "CRC ERR";
> +		break;
> +	case EPREAM:
> +		ferr = "Preamble ERR";
> +		break;
> +	case EABRT:
> +		ferr = "Abort ERR";
> +		break;
> +	case EOVERFL:
> +		ferr = "Overflow ERR";
> +		break;
> +	case ESDMEOF:
> +		ferr = "SDM EOF";
> +		break;
> +	default:
> +		ferr = "Default switch case";
> +	}

It's frequently nicer to use a static function
for these enum -> string conversions like:

static const char *get_err_string(unsigned long err)
{
	switch (err) {
	case ENOERR:	return "No Error";
	case EID:	return "ID ERR";
	case ECMD:	return "CMD ERR";
	[...]
	}
	return "default switch case";
}

> +	pr_debug("machxo2 status: 0x%08lX - done=%d, cfgena=%d, busy=%d, fail=%d, devver=%d, err=%s\n",
> +	       *status, test_bit(DONE, status), test_bit(ENAB, status),
> +	       test_bit(BUSY, status), test_bit(FAIL, status),
> +		   test_bit(DVER, status), ferr);

So instead of ferr, this could use
	get_err_string(*status)

And please try to keep a consistent alignment for
indentation of multiple line statements

> +}
> +#else
> +static void dump_status_reg(unsigned long *status) {}
> +#endif
> +
> +static int wait_until_not_busy(struct spi_device *spi)
> +{
> +	unsigned long status;
> +	int ret, loop = 0;
> +
> +	do {
> +		ret = get_status(spi, &status);
> +		if (ret)
> +			break;
> +		if (++loop >= MACHXO2_MAX_BUSY_LOOP) {
> +			ret = -EBUSY;
> +			break;
> +		}
> +	} while (test_bit(BUSY, &status));
> +
> +	return ret;
> +}

Direct returns are OK and would shorten the function
line count.

  reply	other threads:[~2018-03-21 18:04 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-21 17:35 [PATCH 0/2 v7] Lattice MachXO2 Slave SPI FPGA Manager support Paolo Pisati
2018-03-21 17:35 ` [PATCH 1/2] dt: bindings: fpga: add lattice machxo2 slave spi binding description Paolo Pisati
2018-03-21 17:35 ` [PATCH 2/2] fpga: lattice machxo2: Add Lattice MachXO2 support Paolo Pisati
2018-03-21 18:04   ` Joe Perches [this message]
2018-03-22 17:26     ` Paolo Pisati
2018-03-22 18:30       ` Joe Perches
2018-03-22 21:32     ` Alan Tull
2018-03-22 21:34       ` Joe Perches
  -- strict thread matches above, loose matches on Subject: below --
2018-03-23 12:27 [PATCH 0/2 v8] Lattice MachXO2 Slave SPI FPGA Manager support Paolo Pisati
2018-03-23 12:27 ` [PATCH 2/2] fpga: lattice machxo2: Add Lattice MachXO2 support Paolo Pisati
2018-03-28 16:26   ` Alan Tull
2018-03-28 20:03     ` Alan Tull
2018-03-29 14:33       ` Paolo Pisati
2018-03-16 15:54 [PATCH 0/2 v6] Lattice MachXO2 Slave SPI FPGA Manager support Paolo Pisati
2018-03-16 15:54 ` [PATCH 2/2] fpga: lattice machxo2: Add Lattice MachXO2 support Paolo Pisati
2018-03-16 16:26   ` Moritz Fischer
2018-03-19 18:09     ` Paolo Pisati
2017-07-06 10:01 [PATCH v5 0/2] Lattice MachXO2 Slave SPI FPGA Manager support Paolo Pisati
2017-07-06 10:01 ` [PATCH 2/2] fpga: lattice machxo2: Add Lattice MachXO2 support Paolo Pisati
2017-07-06 14:22   ` Moritz Fischer
2017-04-23 15:20 [PATCH 0/2] Lattice MachXO2 Passive SPI FPGA Manager support Paolo Pisati
2017-04-23 15:20 ` [PATCH 2/2] fpga: lattice machxo2: Add Lattice MachXO2 support Paolo Pisati
2017-04-25 15:59   ` Alan Tull

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=1521655492.7999.13.camel@perches.com \
    --to=joe@perches.com \
    --cc=atull@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=linux-fpga@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mdf@kernel.org \
    --cc=p.pisati@gmail.com \
    --cc=robh+dt@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox