1 /* 2 * Copyright (c) 2006-2024 RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 * 2024-08-16 zhujiale first version 9 */ 10 11 #ifndef _DRIVERS_MMC_RT_SDHCI_PLTFM_H 12 #define _DRIVERS_MMC_RT_SDHCI_PLTFM_H 13 #include <rtthread.h> 14 #include <drivers/core/dm.h> 15 #include <drivers/ofw.h> 16 #include <drivers/platform.h> 17 #include <drivers/clk.h> 18 #include "sdhci.h" 19 20 struct rt_sdhci_pltfm_data 21 { 22 const struct rt_sdhci_ops *ops; 23 unsigned int quirks; 24 unsigned int quirks2; 25 }; 26 27 struct rt_sdhci_pltfm_host 28 { 29 struct rt_clk *clk; 30 unsigned int clock; 31 rt_uint64_t xfer_mode_shadow; 32 33 unsigned long private[]; 34 }; 35 void rt_sdhci_get_property(struct rt_platform_device *pdev); 36 sdhci_get_of_property(struct rt_platform_device * pdev)37static inline void sdhci_get_of_property(struct rt_platform_device *pdev) 38 { 39 return rt_sdhci_get_property(pdev); 40 } 41 extern struct rt_sdhci_host *rt_sdhci_pltfm_init(struct rt_platform_device *pdev, 42 const struct rt_sdhci_pltfm_data *pdata, 43 size_t priv_size); 44 extern void rt_sdhci_pltfm_free(struct rt_platform_device *pdev); 45 46 extern int rt_sdhci_pltfm_init_and_add_host(struct rt_platform_device *pdev, 47 const struct rt_sdhci_pltfm_data *pdata, 48 size_t priv_size); 49 extern void rt_sdhci_pltfm_remove(struct rt_platform_device *pdev); 50 51 extern unsigned int rt_sdhci_pltfm_clk_get_max_clock(struct rt_sdhci_host *host); 52 sdhci_pltfm_priv(struct rt_sdhci_pltfm_host * host)53static inline void *sdhci_pltfm_priv(struct rt_sdhci_pltfm_host *host) 54 { 55 return host->private; 56 } 57 sdhci_pltfm_suspend(struct rt_device * dev)58static inline int sdhci_pltfm_suspend(struct rt_device *dev) 59 { 60 return 0; 61 } sdhci_pltfm_resume(struct rt_device * dev)62static inline int sdhci_pltfm_resume(struct rt_device *dev) 63 { 64 return 0; 65 } 66 #endif 67