1/* 2 * Copyright 2017, Data61 3 * Commonwealth Scientific and Industrial Research Organisation (CSIRO) 4 * ABN 41 687 119 230. 5 * 6 * This software may be distributed and modified according to the terms of 7 * the BSD 2-Clause license. Note that NO WARRANTY is provided. 8 * See "LICENSE_BSD2.txt" for details. 9 * 10 * @TAG(DATA61_BSD) 11 */ 12 13#include "../../sdhc.h" 14#include "../../services.h" 15 16static const int 17_sdhc_irq_table[] = { 18 [SDHC0] = SDHC0_IRQ, 19 [SDHC1] = SDHC1_IRQ, 20 [SDHC2] = SDHC2_IRQ, 21 [SDHC3] = SDHC3_IRQ, 22 [SDHC4] = SDHC4_IRQ 23}; 24 25enum sdio_id sdio_default_id(void) 26{ 27 return SDHC_DEFAULT; 28} 29 30int sdio_init(enum sdio_id id, ps_io_ops_t *io_ops, sdio_host_dev_t *dev) 31{ 32 void *iobase; 33 int ret; 34 switch (id) { 35 case SDHC0: 36 iobase = RESOURCE(io_ops, SDHC0); 37 break; 38 case SDHC1: 39 iobase = RESOURCE(io_ops, SDHC1); 40 break; 41 case SDHC2: 42 iobase = RESOURCE(io_ops, SDHC2); 43 break; 44 case SDHC3: 45 iobase = RESOURCE(io_ops, SDHC3); 46 break; 47 case SDHC4: 48 iobase = RESOURCE(io_ops, SDHC4); 49 break; 50 default: 51 return -1; 52 } 53 if (iobase == NULL) { 54 ZF_LOGE("Failed to map device memory for SDHC"); 55 return -1; 56 } 57 58 ret = sdhc_init(iobase, _sdhc_irq_table, NSDHC, io_ops, dev); 59 if (ret) { 60 ZF_LOGE("Failed to initialise SDHC"); 61 return -1; 62 } 63 return 0; 64} 65 66 67