[U-Boot] [PATCH] Do not mux and setup SPI if disabled in the config

Jagan Teki
2015-08-05T08:16:42Z

On 5 August 2015 at 13:35, Stefan Roese <sr@denx.de> wrote:
> Hi Clemens,
>
>
> On 05.08.2015 09:28, Clemens Gruber wrote:
>>>
>>> On 04.08.2015 19:28, Clemens Gruber wrote:
>>>>
>>>> This allows baseboards without SPI to compile.
>>>>
>>>> Signed-off-by: Clemens Gruber <clemens.gruber@pqgruber.com>
>>>> Cc: Markus Niebel <Markus.Niebel@tq-group.com>
>>>> Cc: Tom Rini <trini@konsulko.com>
>>>> ---
>>>> board/tqc/tqma6/tqma6.c | 6 ++++++
>>>> 1 file changed, 6 insertions(+)
>>>>
>>>> diff --git a/board/tqc/tqma6/tqma6.c b/board/tqc/tqma6/tqma6.c
>>>> index 29db838..5c4d104 100644
>>>> --- a/board/tqc/tqma6/tqma6.c
>>>> +++ b/board/tqc/tqma6/tqma6.c
>>>> @@ -131,6 +131,8 @@ int board_mmc_init(bd_t *bis)
>>>> return 0;
>>>> }
>>>>
>>>> +#if defined(CONFIG_MXC_SPI)
>>>> +
>>>> static iomux_v3_cfg_t const tqma6_ecspi1_pads[] = {
>>>> /* SS1 */
>>>> NEW_PAD_CTRL(MX6_PAD_EIM_D19__GPIO3_IO19, SPI_PAD_CTRL),
>>>> @@ -161,6 +163,8 @@ int board_spi_cs_gpio(unsigned bus, unsigned cs)
>>>> (cs == CONFIG_SF_DEFAULT_CS)) ? TQMA6_SF_CS_GPIO : -1;
>>>> }
>>>>
>>>> +#endif /* defined(CONFIG_MXC_SPI) */
>>>> +
>>>> static struct i2c_pads_info tqma6_i2c3_pads = {
>>>> /* I2C3: on board LM75, M24C64, */
>>>> .scl = {
>>>> @@ -201,7 +205,9 @@ int board_init(void)
>>>> /* address of boot parameters */
>>>> gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
>>>>
>>>> +#if defined(CONFIG_MXC_SPI)
>>>> tqma6_iomuxc_spi();
>>>> +#endif
>>>> tqma6_setup_i2c();
>>>
>>>
>>> Hmmm. This should not be necessary. Please take a look at the wru4
>>> baseboard addition that is already in mainline. Especially this
>>> patch:
>>
>>
>> I noticed your patch but then we would still have to define
>> CONFIG_SF_DEFAULT_BUS and CONFIG_SF_DEFAULT_CS in our board config or
>> include
>> the tqma6.h config, which defines too many things we do not need.
>
>
> I would have expected that all boards using these TQ SoM's include this
> config header.
>
>> The problem is, we have different clocks and more c files, so we use a
>> separate
>> board directory and a separate board config without SPI defines and just
>> use
>> obj-y += ../../tqc/tqma6/tqma6.o in front of our object files in the
>> Makefile.
>>
>> If we don't exclude those SPI parts, we would either have to define those
>> SPI
>> config options (which does not make sense) or move all of our board code
>> in one
>> file under tqc/tqma6 which is not an option, we also define additional
>> clocks
>> via a separate IMX_CONFIG file.
>>
>> Wouldn't it be better to always exclude this code when not using SPI
>> instead of
>> weakly defining the tqma6_iomuxc_spi function?
>> Then small baseboards could be put in tqc/tqma6 and larger projects could
>> still
>> just link to tqma6.o and put all their stuff in a separate board
>> directory.
>
>
> How about this patch:
>
> diff --git a/board/tqc/tqma6/tqma6.c b/board/tqc/tqma6/tqma6.c
> index 29db838..345930f 100644
> --- a/board/tqc/tqma6/tqma6.c
> +++ b/board/tqc/tqma6/tqma6.c
> @@ -28,6 +28,13 @@
>
> #include "tqma6_bb.h"
>
> +#ifndef CONFIG_SF_DEFAULT_BUS
> +#define CONFIG_SF_DEFAULT_BUS 0
> +#endif
> +#ifndef CONFIG_SF_DEFAULT_CS
> +#define CONFIG_SF_DEFAULT_CS 0
> +#endif

Why would need this - it's already part of spi_flash.h

>
> Does this work for you?

thanks!
--
Jagan | openedev.