X-Git-Url: https://git.kernelconcepts.de/?a=blobdiff_plain;f=include%2Fdwmmc.h;h=7a7555a73ab2c7a5291b5b2f5ee5e263998d4eae;hb=2fb7979d462d5f1cbc3e6847b3eb016298812cb0;hp=c8b1d408e2b069072287811f6db34f487d2773f0;hpb=bdc3ff6e4f75813d01e51081799d10e4a9c7fbcb;p=karo-tx-uboot.git diff --git a/include/dwmmc.h b/include/dwmmc.h index c8b1d408e2..7a7555a73a 100644 --- a/include/dwmmc.h +++ b/include/dwmmc.h @@ -2,20 +2,7 @@ * (C) Copyright 2012 SAMSUNG Electronics * Jaehoon Chung * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * + * SPDX-License-Identifier: GPL-2.0+ */ #ifndef __DWMMC_HW_H @@ -123,6 +110,8 @@ #define MSIZE(x) ((x) << 28) #define RX_WMARK(x) ((x) << 16) #define TX_WMARK(x) (x) +#define RX_WMARK_SHIFT 16 +#define RX_WMARK_MASK (0xfff << RX_WMARK_SHIFT) #define DWMCI_IDMAC_OWN (1 << 31) #define DWMCI_IDMAC_CH (1 << 4) @@ -134,21 +123,49 @@ #define DWMCI_BMOD_IDMAC_FB (1 << 1) #define DWMCI_BMOD_IDMAC_EN (1 << 7) +/* UHS register */ +#define DWMCI_DDR_MODE (1 << 16) + +/* quirks */ +#define DWMCI_QUIRK_DISABLE_SMU (1 << 0) + +/** + * struct dwmci_host - Information about a designware MMC host + * + * @name: Device name + * @ioaddr: Base I/O address of controller + * @quirks: Quick flags - see DWMCI_QUIRK_... + * @caps: Capabilities - see MMC_MODE_... + * @bus_hz: Bus speed in Hz, if @get_mmc_clk() is NULL + * @div: Arbitrary clock divider value for use by controller + * @dev_index: Arbitrary device index for use by controller + * @dev_id: Arbitrary device ID for use by controller + * @buswidth: Bus width in bits (8 or 4) + * @fifoth_val: Value for FIFOTH register (or 0 to leave unset) + * @mmc: Pointer to generic MMC structure for this device + * @priv: Private pointer for use by controller + */ struct dwmci_host { - char *name; + const char *name; void *ioaddr; unsigned int quirks; unsigned int caps; unsigned int version; unsigned int clock; unsigned int bus_hz; + unsigned int div; int dev_index; + int dev_id; int buswidth; u32 fifoth_val; struct mmc *mmc; + void *priv; void (*clksel)(struct dwmci_host *host); - unsigned int (*mmc_clk)(int dev_index); + void (*board_init)(struct dwmci_host *host); + unsigned int (*get_mmc_clk)(struct dwmci_host *host); + + struct mmc_config cfg; }; struct dwmci_idmac { @@ -156,7 +173,7 @@ struct dwmci_idmac { u32 cnt; u32 addr; u32 next_addr; -}; +} __aligned(ARCH_DMA_MINALIGN); static inline void dwmci_writel(struct dwmci_host *host, int reg, u32 val) {