#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/err.h>
#include <linux/iopoll.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <ufs/ufshcd.h>
#include "ufshcd-pltfrm.h"
struct ufs_renesas_priv { … };
enum { … };
enum ufs_renesas_init_param_mode { … };
#define PARAM_RESTORE(_reg, _index) …
#define PARAM_SET(_index, _set) …
#define PARAM_SAVE(_reg, _mask, _index) …
#define PARAM_POLL(_reg, _expected, _mask) …
#define PARAM_WAIT(_delay_us) …
#define PARAM_WRITE(_reg, _val) …
#define PARAM_WRITE_D0_D4(_d0, _d4) …
#define PARAM_WRITE_800_80C_POLL(_addr, _data_800) …
#define PARAM_RESTORE_800_80C_POLL(_index) …
#define PARAM_WRITE_804_80C_POLL(_addr, _data_804) …
#define PARAM_WRITE_828_82C_POLL(_data_828) …
#define PARAM_WRITE_PHY(_addr16, _data16) …
#define PARAM_SET_PHY(_addr16, _data16) …
#define PARAM_INDIRECT_WRITE(_gpio, _addr, _data_800) …
#define PARAM_INDIRECT_POLL(_gpio, _addr, _expected, _mask) …
struct ufs_renesas_init_param { … };
static const struct ufs_renesas_init_param ufs_param[] = …;
static void ufs_renesas_dbg_register_dump(struct ufs_hba *hba)
{ … }
static void ufs_renesas_reg_control(struct ufs_hba *hba,
const struct ufs_renesas_init_param *p)
{ … }
static void ufs_renesas_pre_init(struct ufs_hba *hba)
{ … }
static int ufs_renesas_hce_enable_notify(struct ufs_hba *hba,
enum ufs_notify_change_status status)
{ … }
static int ufs_renesas_setup_clocks(struct ufs_hba *hba, bool on,
enum ufs_notify_change_status status)
{ … }
static int ufs_renesas_init(struct ufs_hba *hba)
{ … }
static const struct ufs_hba_variant_ops ufs_renesas_vops = …;
static const struct of_device_id __maybe_unused ufs_renesas_of_match[] = …;
MODULE_DEVICE_TABLE(of, ufs_renesas_of_match);
static int ufs_renesas_probe(struct platform_device *pdev)
{ … }
static void ufs_renesas_remove(struct platform_device *pdev)
{ … }
static struct platform_driver ufs_renesas_platform = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;