/*
 * SPL/U-Boot common functions for CompuLab CL-SOM-iMX7 module
 *
 * (C) Copyright 2017 CompuLab, Ltd. http://www.compulab.com
 *
 * Author: Uri Mashiach <uri.mashiach@compulab.co.il>
 *
 * SPDX-License-Identifier:	GPL-2.0+
 */

#include <common.h>
#include <fsl_esdhc.h>
#include <asm-generic/gpio.h>
#include "common.h"

#ifdef CONFIG_SPI

#define CL_SOM_IMX7_GPIO_SPI_CS	IMX_GPIO_NR(4, 19)

int board_spi_cs_gpio(unsigned int bus, unsigned int cs)
{
	return CL_SOM_IMX7_GPIO_SPI_CS;
}

#endif /* CONFIG_SPI */

#ifdef CONFIG_FSL_ESDHC

int board_mmc_getcd(struct mmc *mmc)
{
	struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv;
	int ret = 0;

	switch (cfg->esdhc_base) {
	case USDHC1_BASE_ADDR:
		ret = !gpio_get_value(CL_SOM_IMX7_GPIO_USDHC1_CD);
		break;
	case USDHC3_BASE_ADDR:
		ret = 1; /* Assume uSDHC3 emmc is always present */
		break;
	}

	return ret;
}

#endif /* CONFIG_FSL_ESDHC */
