All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefan Roese <sr@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH u-boot-marvell v3 01/10] board: turris_mox: Cosmetic restructurization
Date: Thu, 29 Nov 2018 13:56:11 +0100	[thread overview]
Message-ID: <270e4cb0-ad60-6299-f21b-c6c5cc54337d@denx.de> (raw)
In-Reply-To: <20181120120409.12822-1-marek.behun@nic.cz>

On 20.11.18 13:04, Marek Behún wrote:
> Restructure the board initialization source.
> Remove the module_topology environment variable since it won't be
> needed.
> 
> Signed-off-by: Marek Behún <marek.behun@nic.cz>

Reviewed-by: Stefan Roese <sr@denx.de>

Thanks,
Stefan

> ---
>   board/CZ.NIC/turris_mox/turris_mox.c | 136 ++++++++++++++++++---------
>   1 file changed, 89 insertions(+), 47 deletions(-)
> 
> diff --git a/board/CZ.NIC/turris_mox/turris_mox.c b/board/CZ.NIC/turris_mox/turris_mox.c
> index c4622a49c2..415c462493 100644
> --- a/board/CZ.NIC/turris_mox/turris_mox.c
> +++ b/board/CZ.NIC/turris_mox/turris_mox.c
> @@ -135,17 +135,15 @@ int board_init(void)
>   	return 0;
>   }
>   
> -int last_stage_init(void)
> +static int mox_do_spi(u8 *in, u8 *out, size_t size)
>   {
>   	struct spi_slave *slave;
>   	struct udevice *dev;
> -	u8 din[10], dout[10];
> -	int ret, i;
> -	size_t len = 0;
> -	char module_topology[128];
> +	int ret;
>   
> -	ret = spi_get_bus_and_cs(0, 1, 20000000, SPI_CPHA, "spi_generic_drv",
> -				 "mox-modules at 1", &dev, &slave);
> +	ret = spi_get_bus_and_cs(0, 1, 1000000, SPI_CPHA | SPI_CPOL,
> +				 "spi_generic_drv", "moxtet at 1", &dev,
> +				 &slave);
>   	if (ret)
>   		goto fail;
>   
> @@ -153,57 +151,101 @@ int last_stage_init(void)
>   	if (ret)
>   		goto fail_free;
>   
> -	memset(din, 0, 10);
> -	memset(dout, 0, 10);
> +	ret = spi_xfer(slave, size * 8, out, in, SPI_XFER_ONCE);
> +
> +	spi_release_bus(slave);
> +fail_free:
> +	spi_free_slave(slave);
> +fail:
> +	return ret;
> +}
> +
> +static int mox_get_topology(const u8 **ptopology, int *psize, int *pis_sd)
> +{
> +	static int is_sd;
> +	static u8 topology[MAX_MOX_MODULES - 1];
> +	static int size;
> +	u8 din[MAX_MOX_MODULES], dout[MAX_MOX_MODULES];
> +	int ret, i;
>   
> -	ret = spi_xfer(slave, 80, dout, din, SPI_XFER_ONCE);
> +	if (size) {
> +		if (ptopology)
> +			*ptopology = topology;
> +		if (psize)
> +			*psize = size;
> +		if (pis_sd)
> +			*pis_sd = is_sd;
> +		return 0;
> +	}
> +
> +	memset(din, 0, MAX_MOX_MODULES);
> +	memset(dout, 0, MAX_MOX_MODULES);
> +
> +	ret = mox_do_spi(din, dout, MAX_MOX_MODULES);
>   	if (ret)
> -		goto fail_release;
> +		return ret;
> +
> +	if (din[0] == 0x10)
> +		is_sd = 1;
> +	else if (din[0] == 0x00)
> +		is_sd = 0;
> +	else
> +		return -ENODEV;
> +
> +	for (i = 1; i < MAX_MOX_MODULES && din[i] != 0xff; ++i)
> +		topology[i - 1] = din[i] & 0xf;
> +	size = i - 1;
> +
> +	if (ptopology)
> +		*ptopology = topology;
> +	if (psize)
> +		*psize = size;
> +	if (pis_sd)
> +		*pis_sd = is_sd;
> +
> +	return 0;
> +}
>   
> -	if (din[0] != 0x00 && din[0] != 0xff)
> -		goto fail_release;
> +int last_stage_init(void)
> +{
> +	int ret, i;
> +	const u8 *topology;
> +	int module_count, is_sd;
> +
> +	ret = mox_get_topology(&topology, &module_count, &is_sd);
> +	if (ret) {
> +		printf("Cannot read module topology!\n");
> +		return 0;
> +	}
>   
> +	printf("Found Turris Mox %s version\n", is_sd ? "SD" : "eMMC");
>   	printf("Module Topology:\n");
> -	for (i = 1; i < 10 && din[i] != 0xff; ++i) {
> -		u8 mid = din[i] & 0xf;
> -		size_t mlen;
> -		const char *mname = "";
> -
> -		switch (mid) {
> -		case 0x1:
> -			mname = "sfp-";
> -			printf("% 4i: SFP Module\n", i);
> +	for (i = 0; i < module_count; ++i) {
> +		switch (topology[i]) {
> +		case MOX_MODULE_SFP:
> +			printf("% 4i: SFP Module\n", i + 1);
> +			break;
> +		case MOX_MODULE_PCI:
> +			printf("% 4i: Mini-PCIe Module\n", i + 1);
> +			break;
> +		case MOX_MODULE_TOPAZ:
> +			printf("% 4i: Topaz Switch Module (4-port)\n", i + 1);
>   			break;
> -		case 0x2:
> -			mname = "pci-";
> -			printf("% 4i: Mini-PCIe Module\n", i);
> +		case MOX_MODULE_PERIDOT:
> +			printf("% 4i: Peridot Switch Module (8-port)\n", i + 1);
>   			break;
> -		case 0x3:
> -			mname = "topaz-";
> -			printf("% 4i: Topaz Switch Module\n", i);
> +		case MOX_MODULE_USB3:
> +			printf("% 4i: USB 3.0 Module (4 ports)\n", i + 1);
> +			break;
> +		case MOX_MODULE_PASSPCI:
> +			printf("% 4i: Passthrough Mini-PCIe Module\n", i + 1);
>   			break;
>   		default:
> -			printf("% 4i: unknown (ID %i)\n", i, mid);
> -		}
> -
> -		mlen = strlen(mname);
> -		if (len + mlen < sizeof(module_topology)) {
> -			strcpy(module_topology + len, mname);
> -			len += mlen;
> +			printf("% 4i: unknown (ID %i)\n", i + 1, topology[i]);
>   		}
>   	}
> -	printf("\n");
> -
> -	module_topology[len > 0 ? len - 1 : 0] = '\0';
>   
> -	env_set("module_topology", module_topology);
> +	printf("\n");
>   
> -fail_release:
> -	spi_release_bus(slave);
> -fail_free:
> -	spi_free_slave(slave);
> -fail:
> -	if (ret)
> -		printf("Cannot read module topology!\n");
> -	return ret;
> +	return 0;
>   }
> 

Viele Grüße,
Stefan

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr at denx.de

      parent reply	other threads:[~2018-11-29 12:56 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-20 12:04 [U-Boot] [PATCH u-boot-marvell v3 01/10] board: turris_mox: Cosmetic restructurization Marek Behún
2018-11-20 12:04 ` [U-Boot] [PATCH u-boot-marvell v3 02/10] board: turris_mox: Change SERDES map depending on module topology Marek Behún
2018-11-29 12:56   ` Stefan Roese
2018-11-20 12:04 ` [U-Boot] [PATCH u-boot-marvell v3 03/10] board: turris_mox: Check and configure modules Marek Behún
2018-11-29 13:00   ` Stefan Roese
2018-11-20 12:04 ` [U-Boot] [PATCH u-boot-marvell v3 04/10] arch/arm/dts: Fix Turris Mox device tree Marek Behún
2018-11-29 13:01   ` Stefan Roese
2018-11-20 12:04 ` [U-Boot] [PATCH u-boot-marvell v3 05/10] board: turris_mox: Update defconfig Marek Behún
2018-11-29 13:01   ` Stefan Roese
2018-11-20 12:04 ` [U-Boot] [PATCH u-boot-marvell v3 06/10] watchdog: armada_37xx: Fix compliance with kernel's driver Marek Behún
2018-11-29 13:03   ` Stefan Roese
2018-12-11 12:15     ` Marek Behún
2018-12-11 14:31       ` Stefan Roese
2018-11-20 12:04 ` [U-Boot] [PATCH u-boot-marvell v3 07/10] MAINTAINERS: Add entry for CZ.NIC's Turris project Marek Behún
2018-11-29 13:03   ` Stefan Roese
2018-11-20 12:04 ` [U-Boot] [PATCH u-boot-marvell v3 08/10] board: turris_mox: Read info (and ethaddrs) from OTP Marek Behún
2018-11-29 13:04   ` Stefan Roese
2018-11-20 12:04 ` [U-Boot] [PATCH u-boot-marvell v3 09/10] board: turris_mox: Support 1 GB version of Turris Mox Marek Behún
2018-11-29 13:07   ` Stefan Roese
2018-12-11 13:59     ` Marek Behún
2018-12-11 14:28       ` Stefan Roese
     [not found]         ` <20181211155338.044d02bf@dellmb.labs.office.nic.cz>
     [not found]           ` <5790e39e-07e9-94d9-829d-bc0b42aa2e03@denx.de>
2018-12-12  2:23             ` Marek Behun
2018-12-12  9:44               ` Stefan Roese
2018-12-13  3:53                 ` Marek Behun
2018-12-13  6:23                   ` Stefan Roese
2018-11-20 12:04 ` [U-Boot] [PATCH u-boot-marvell v3 10/10] configs: turris_mox: Add 64 MiB of boot memory Marek Behún
2018-11-29 13:08   ` Stefan Roese
2018-11-29 12:56 ` Stefan Roese [this message]

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=270e4cb0-ad60-6299-f21b-c6c5cc54337d@denx.de \
    --to=sr@denx.de \
    --cc=u-boot@lists.denx.de \
    /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.