/* * Copyright (C) 2016 Samsung Electronics Co., Ltd. * * 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. */ #ifndef _EXYNOS_SMU_H_ #define _EXYNOS_SMU_H_ #include #define CFG_DESCTYPE_0 0x0 #define CFG_DESCTYPE_1 0x1 #define CFG_DESCTYPE_2 0x2 #define CFG_DESCTYPE_3 0x3 #if defined(CONFIG_MMC_DW_EXYNOS_FMP) #define CFG_DESCTYPE CFG_DESCTYPE_3 #else #define CFG_DESCTYPE CFG_DESCTYPE_0 #endif #define ACCESS_CONTROL_ABORT 0x14 enum smu_id { SMU_EMBEDDED = 0, SMU_UFSCARD = 1, SMU_SDCARD = 2, }; enum smu_command { SMU_INIT = 0, SMU_SET = 1, SMU_ABORT = 2, }; struct smu_data_setting { int id; int command; int desc_type; }; struct exynos_smu_variant_ops { const char *name; int (*init)(struct platform_device *, struct smu_data_setting *); int (*sec_config)(struct platform_device *, struct smu_data_setting *); int (*resume)(struct platform_device *, struct smu_data_setting *); int (*abort)(struct platform_device *, struct smu_data_setting *); }; struct exynos_smu_variant_ops *exynos_smu_get_variant_ops(struct device_node *node); struct platform_device *exynos_smu_get_pdevice(struct device_node *node); #endif /* _EXYNOS_SMU_H_ */