Index: sdio_subr.h =================================================================== --- sdio_subr.h +++ sdio_subr.h @@ -1,6 +1,5 @@ /*- - * Copyright (c) 2006 Bernd Walter. All rights reserved. - * Copyright (c) 2006 M. Warner Losh. All rights reserved. + * Copyright (c) 2017 Ilya Bakulin. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -22,51 +21,54 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * Portions of this software may have been developed with reference to - * the SD Simplified Specification. The following disclaimer may apply: - * - * The following conditions apply to the release of the simplified - * specification ("Simplified Specification") by the SD Card Association and - * the SD Group. The Simplified Specification is a subset of the complete SD - * Specification which is owned by the SD Card Association and the SD - * Group. This Simplified Specification is provided on a non-confidential - * basis subject to the disclaimers below. Any implementation of the - * Simplified Specification may require a license from the SD Card - * Association, SD Group, SD-3C LLC or other third parties. - * - * Disclaimers: - * - * The information contained in the Simplified Specification is presented only - * as a standard specification for SD Cards and SD Host/Ancillary products and - * is provided "AS-IS" without any representations or warranties of any - * kind. No responsibility is assumed by the SD Group, SD-3C LLC or the SD - * Card Association for any damages, any infringements of patents or other - * right of the SD Group, SD-3C LLC, the SD Card Association or any third - * parties, which may result from its use. No license is granted by - * implication, estoppel or otherwise under any patent or other rights of the - * SD Group, SD-3C LLC, the SD Card Association or any third party. Nothing - * herein shall be construed as an obligation by the SD Group, the SD-3C LLC - * or the SD Card Association to disclose or distribute any technical - * information, know-how or other confidential information to any third party. - * - * $FreeBSD$ */ -#ifndef CAM_MMC_SDIO_IVARS_H -#define CAM_MMC_SDIO_IVARS_H +#ifndef _SDIO_SUBR_H_ +#define _SDIO_SUBR_H_ -enum sdio_device_ivars { - SDIO_IVAR_VENDOR_ID, - SDIO_IVAR_PRODUCT_ID, -}; +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include /* - * Simplified accessors for mmc devices - */ -#define SDIO_ACCESSOR(var, ivar, type) \ - __BUS_ACCESSOR(sdio, var, SDIO, ivar, type) + * This file contains functions to work with SDIO cards. + * All non-static functions should be usable BOTH from + * the kernel and from the userland. +*/ + + +struct sdiobus_lowlevel_t { +uint8_t func; +uint32_t addr; + uint8_t *data; + uint32_t datalen; + +}; + +struct cis_info { + uint16_t man_id; + uint16_t prod_id; + uint16_t max_block_size; +}; + +struct card_info { + uint8_t num_funcs; + struct cis_info f[8]; +}; -SDIO_ACCESSOR(vendor_id, VENDOR_ID, int) -SDIO_ACCESSOR(product_id, PRODUCT_ID, int) +#ifdef _KERNEL +uint8_t sdio_read_1(union ccb *ccb, uint8_t func_number, uint32_t addr, int *ret); +int sdiobus_write_datas(union ccb *ccb, struct sdiobus_lowlevel_t *datain, uint16_t maxblk) ; +int sdiobus_read_datas(union ccb *ccb, struct sdiobus_lowlevel_t *dataout, uint16_t maxblk) ; +int sdio_rw_byte(union ccb *ccb, uint8_t rwflag, struct sdiobus_lowlevel_t *data); +uint32_t sdio_get_common_cis_addr(union ccb *ccb); +int sdio_func_read_cis(union ccb *ccb, uint8_t func_number, uint32_t cis_addr, struct cis_info *info); +int get_sdio_card_info(union ccb *ccb, struct card_info *ci); +#else /* _KERNEL */ -#endif /* CAM_MMC_SDIO_IVARS_H */ +#endif /* _KERNEL */ +#endif /* _SDIO_SUBR_H_ */