nuttx/arch/arm/src/lc823450/lc823450_sddrv_if.h
Masayuki Ishikawa 4ea94c67b1 arch: lc823450: Fix style violations
Summary:
- Fix style violations under lc823450

Impact:
- Some APIs were changed but all files are included

Testing:
- Build check only

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2020-07-30 20:53:02 -05:00

261 lines
10 KiB
C

/****************************************************************************
* arch/arm/src/lc823450/lc823450_sddrv_if.h
*
* Copyright (C) 2014-2015 ON Semiconductor. All rights reserved.
* Copyright 2014,2015,2017 Sony Video & Sound Products Inc.
* Author: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name NuttX nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
#ifndef __ARCH_ARM_SRC_LC823450_LC823450_SDDRV_IF_H
#define __ARCH_ARM_SRC_LC823450_LC823450_SDDRV_IF_H
/****************************************************************************
* Included Files
****************************************************************************/
#include "lc823450_sddrv_type.h"
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
#define SDDR_VER (303)
#define SDDR_SUCCESS ( 0)
#define SDDR_ERR_PARAM ( -1)
#define SDDR_ERR_STATE ( -2)
#define SDDR_ERR_CARD_NOT_EXIST ( -3)
#define SDDR_ERR_WRITE_PROTECT ( -4)
#define SDDR_ERR_R1_STATUS ( -5)
#define SDDR_ERR_TIMEOUT ( -6)
#define SDDR_ERR_COMMAND ( -7)
#define SDDR_ERR_CARD_SIZE ( -8)
#define SDDR_ERR_CMD_NO_RESPONSE ( -9)
#define SDDR_ERR_SD_CARD_TYPE (-10)
#define SDDR_ERR_ERASE_AREA (-12)
#define SDDR_ERR_NOT_SUPPORT (-14)
#define SDDR_ERR_SPEEDMODE_CHANGE (-15)
#define SDDR_ERR_FUNC_IMPLEMENT (-16)
#define SDDR_ERR_CARD_INFORMATION (-17)
#define SDDR_ERR_BOOT_CONFIG (-18)
#define SDDR_ERR_CACHE_CTRL (-19)
#define SDDR_RW_NOINC_WORD (0x00)
#define SDDR_RW_NOINC_HWORD (0x10)
#define SDDR_RW_NOINC_BYTE (0x20)
#define SDDR_RW_INC_WORD (0x01)
#define SDDR_RW_INC_HWORD (0x11)
#define SDDR_RW_INC_BYTE (0x21)
#define SDDR_MEDIA_TYPE_SD (0)
#define SDDR_MEDIA_TYPE_MMC (1)
#define SDDR_CHECK_WP (1UL << 4)
#define SDDR_CHECK_CD (1UL << 5)
#define SDDR_SDXC_PC (1UL << 6)
#define SDDR_SD_SWITCH_18V (1UL << 7)
#define SDDR_GEN_CMD_WR (0)
#define SDDR_GEN_CMD_RD (1)
#define SDDR_CACHE_OFF (0)
#define SDDR_CACHE_ON (1)
#define SDDR_CACHE_FLUSH (2)
#define SDDR_PORT0 (0UL)
#define SDDR_PORT1 (1UL)
#define SDDR_PORT2 (2UL)
/****************************************************************************
* Public Types
****************************************************************************/
#ifndef __ASSEMBLY__
/* SD specific info */
struct sdinfo_s
{
UI_32 scr[2];
UI_32 sdstatus[16];
};
/* MMC specific info */
struct mmcinfo_s
{
UI_32 extcsd_cache_size; /* ExtCsd [252:249] */
UI_32 extcsd_sec_count; /* ExtCsd [215:212] */
UI_8 extcsd_sec_feature_support; /* ExtCsd [231] */
UI_8 extcsd_boot_size_mult; /* ExtCsd [226] */
UI_8 extcsd_device_type; /* ExtCsd [196] */
UI_8 extcsd_hs_timing; /* ExtCsd [185] */
UI_8 extcsd_partition_config; /* ExtCsd [179] */
UI_8 extcsd_boot_config_prot; /* ExtCsd [178] */
UI_8 extcsd_boot_bus_width; /* ExtCsd [177] */
UI_8 extcsd_cache_ctrl; /* ExtCsd [ 33] */
};
/* SdDr configuration */
struct sddrcfg_s
{
UI_32 regbase; /* SD Host I/F register base address */
UI_32 sysclk; /* System Clock */
UI_32 detecttime; /* Card detection time */
UI_32 setting; /* WP CD settings */
void *workbuf; /* Work buffer (512 byte) */
SINT_T (*dephwinit)(struct sddrcfg_s *);
SINT_T (*dephwexit)(struct sddrcfg_s *);
SINT_T (*deposinit)(struct sddrcfg_s *);
SINT_T (*deposexit)(struct sddrcfg_s *);
void (*depsetclk)(struct sddrcfg_s *);
SINT_T (*depwait)(UI_32, struct sddrcfg_s *);
SINT_T (*depwaitstatus)(UI_32 req, UI_32 *status, struct sddrcfg_s *cfg);
SINT_T (*depreaddata)(void *src, void *dst, UI_32 size, SINT_T type,
struct sddrcfg_s *cfg);
SINT_T (*depwritedata)(void *src, void *dst, UI_32 size, SINT_T type,
struct sddrcfg_s *cfg);
void (*depvoltageswitch)(struct sddrcfg_s *);
/* To here, external members to be set
* From here, internal mermbers (no need to set)
*/
UI_32 info; /* Misc info (e.g. driver state) */
UI_32 secnum; /* The number of sectors */
UI_32 limitsdclk; /* Max SD clock */
UI_32 clkdiv; /* Clock divider */
UI_32 erasetmout; /* Timeout for Erase/Trim */
UI_32 cid[4]; /* CID */
UI_32 csd[4]; /* CSD */
union
{
struct sdinfo_s sd; /* SD specific info */
struct mmcinfo_s mmc; /* MMC specific info */
} ex;
UI_32 reserved;
};
/****************************************************************************
* Public Data
****************************************************************************/
#ifdef __cplusplus
#define EXTERN extern "C"
extern "C"
{
#else
#define EXTERN extern
#endif
/****************************************************************************
* Public Function Prototypes
****************************************************************************/
SINT_T sddr_ref_version(void);
SINT_T sddr_initialize(struct sddrcfg_s *cfg);
SINT_T sddr_finalize(struct sddrcfg_s *cfg);
SINT_T sddr_identifycard(struct sddrcfg_s *cfg);
SINT_T sddr_checkcardidentify(struct sddrcfg_s *cfg);
SINT_T sddr_checkwriteenable(struct sddrcfg_s *cfg);
SINT_T sddr_checkcarddetect(struct sddrcfg_s *cfg);
SINT_T sddr_checkcardremoved(struct sddrcfg_s *cfg);
SINT_T sddr_getcardsize(UI_32 *secnum, UI_32 *secsize,
struct sddrcfg_s *cfg);
SINT_T sddr_getcid(UI_32 *cid, struct sddrcfg_s *cfg);
SINT_T sddr_getcsd(UI_32 *csd, struct sddrcfg_s *cfg);
SINT_T sddr_getscr(UI_32 *scr, struct sddrcfg_s *cfg);
SINT_T sddr_getextcsd(UI_32 *extcsd, struct sddrcfg_s *cfg);
SINT_T sddr_clearcardinfo(struct sddrcfg_s *cfg);
SINT_T sddr_readsector(UI_32 addr, UI_32 cnt, void *buf, SINT_T type,
struct sddrcfg_s *cfg);
SINT_T sddr_writesector(UI_32 addr, UI_32 cnt, void *buf, SINT_T type,
struct sddrcfg_s *cfg);
SINT_T sddr_erasesector(UI_32 addr, UI_32 cnt, struct sddrcfg_s *cfg);
SINT_T sddr_setclock(UI_32 limitclk, UI_32 sysclk, struct sddrcfg_s *cfg);
SINT_T sddr_changespeedmode(SINT_T mode, struct sddrcfg_s *cfg);
SINT_T sddr_refmediatype(struct sddrcfg_s *cfg);
SINT_T sddr_sleep(struct sddrcfg_s *cfg);
SINT_T sddr_awake(struct sddrcfg_s *cfg);
SINT_T sddr_selectaccesspartition(UI_32 partnumber, struct sddrcfg_s *cfg);
SINT_T sddr_configbootmode(SINT_T enable, SINT_T ack, UI_32 bootpartnumber,
UI_32 bootbuswidth, struct sddrcfg_s *cfg);
SINT_T sddr_getpartitionsize(UI_32 partnumber, UI_32 *secnum,
struct sddrcfg_s *cfg);
SINT_T sddr_checksdxc(struct sddrcfg_s *cfg);
SINT_T sddr_eraseseq(UI_32 type, UI_32 addr, UI_32 cnt,
struct sddrcfg_s *cfg);
#define sddr_trimsector(addr, cnt, cfg) \
sddr_eraseseq(0x00000001, addr, cnt, cfg)
#define sddr_stimsector1(addr, cnt, cfg) \
sddr_eraseseq(0x80000001, addr, cnt, cfg)
#define sddr_strimsector2(cfg) \
sddr_eraseseq(0x80008000, 0, 1, cfg)
SINT_T sddr_generalcommand(SINT_T arg, UI_32 size, void *buf, SINT_T type,
struct sddrcfg_s *cfg);
SINT_T sddr_cachectrl(SINT_T ctrl, struct sddrcfg_s *cfg);
#define SDDR_SUPPORT_TRIM(cfg) \
((sddr_refmediatype(cfg) == SDDR_MEDIA_TYPE_MMC) ? \
(((cfg)->ex.mmc.extcsd_sec_feature_support & (1UL << 4)) ? 1 : 0) : 0)
#define SDDR_SUPPORT_CACHE(cfg) \
((sddr_refmediatype(cfg) == SDDR_MEDIA_TYPE_MMC) ? \
((cfg)->ex.mmc.extcsd_cache_size ? 1:0) : 0)
SINT_T sddr_bkopsgetstatus(struct sddrcfg_s *cfg);
SINT_T sddr_bkopsenable(SINT_T ena, struct sddrcfg_s *cfg);
SINT_T sddr_bkopsstart(struct sddrcfg_s *cfg);
SINT_T sddr_hpienable(SINT_T ena, struct sddrcfg_s *cfg);
SINT_T sddr_hpiexec(SINT_T check, struct sddrcfg_s *cfg);
SINT_T fixed_sddr_readsector(UI_32 addr, UI_32 cnt, void *buf, SINT_T type,
struct sddrcfg_s *cfg);
UI_32 sdif_get_status(UI_32);
#if defined(__cplusplus)
}
#endif
#undef EXTERN
#endif /* __ASSEMBLY__ */
#endif /* __ARCH_ARM_SRC_LC823450_LC823450_SDDRV_IF_H */