[U-Boot] [PATCH] w1: fix build without CONFIG_W1_EEPROM

Eugen.Hristev at microchip.com Eugen.Hristev at microchip.com
Tue Oct 23 07:07:34 UTC 2018



On 22.10.2018 19:51, Martin Fuzzey wrote:
> Building with CONFIG_W1 and CONFIG_CMD_W1 but without CONFIG_W1_EEPROM
> fails with
> 	drivers/w1/w1-uclass.c:104: undefined reference to `w1_eeprom_register_new_device'
> 	cmd/w1.c:93: undefined reference to `w1_eeprom_read_buf'
> 
> Fix this.

I would prefer if you let the w1 read command to be accessible 
regardless if CONFIG_W1_EEPROM is defined or not. Hence have only the w1 
eeprom reads under the ifdef...
The w1_read checks for devices anyway and for the bus, so it should 
print invalid bus/device if nothing is present there.
Any opinion on this ?

Thanks,
Eugen
> 
> Signed-off-by: Martin Fuzzey <martin.fuzzey at flowbird.group>
> ---
>   cmd/w1.c               | 9 ++++++++-
>   drivers/w1/w1-uclass.c | 2 ++
>   2 files changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/cmd/w1.c b/cmd/w1.c
> index 9c95fcf..9765bd6 100644
> --- a/cmd/w1.c
> +++ b/cmd/w1.c
> @@ -41,6 +41,7 @@ static int w1_bus(void)
>   	return CMD_RET_SUCCESS;
>   }
>   
> +#ifdef CONFIG_W1_EEPROM
>   static int w1_read(int argc, char *const argv[])
>   {
>   	int bus_n = 0, dev_n = 0, offset = 0, len = 512;
> @@ -102,6 +103,7 @@ static int w1_read(int argc, char *const argv[])
>   
>   	return CMD_RET_SUCCESS;
>   }
> +#endif
>   
>   int do_w1(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
>   {
> @@ -111,8 +113,10 @@ int do_w1(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
>   	if (!strcmp(argv[1], "bus"))
>   		return w1_bus();
>   
> +#ifdef CONFIG_W1_EEPROM
>   	if (!strcmp(argv[1], "read"))
>   		return w1_read(argc, argv);
> +#endif
>   
>   	return CMD_RET_SUCCESS;
>   }
> @@ -120,7 +124,10 @@ int do_w1(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
>   U_BOOT_CMD(w1, 6, 0, do_w1,
>   	   "onewire interface utility commands",
>   	   "bus - show onewire bus info (all)\n"
> +#ifdef CONFIG_W1_EEPROM
>   	   "w1 read [<bus> [<dev> [offset [length]]]]"
>   	   "    - read from onewire device 'dev' on onewire bus 'bus'"
>   	   " starting from offset 'offset' and length 'length'\n"
> -	   "      defaults: bus 0, dev 0, offset 0, length 512 bytes.");
> +	   "      defaults: bus 0, dev 0, offset 0, length 512 bytes."
> +#endif
> +	   );
> diff --git a/drivers/w1/w1-uclass.c b/drivers/w1/w1-uclass.c
> index cb41b68..5544b19 100644
> --- a/drivers/w1/w1-uclass.c
> +++ b/drivers/w1/w1-uclass.c
> @@ -100,8 +100,10 @@ static int w1_enumerate(struct udevice *bus)
>   			debug("%s: Detected new device 0x%llx (family 0x%x)\n",
>   			      bus->name, rn, (u8)(rn & 0xff));
>   
> +#ifdef CONFIG_W1_EEPROM
>   			/* attempt to register as w1-eeprom device */
>   			w1_eeprom_register_new_device(rn);
> +#endif
>   		}
>   	}
>   
> 


More information about the U-Boot mailing list