blob: a04b52ebe4add16066bc98250942f6d3ffa052cd [file] [log] [blame]
/**
* phy-exynos-debug.h - Samsung EXYNOS SoC series USB DRD PHY Debug Header
*
* Phy provider for USB 3.0 DRD controller on Exynos SoC series
*
* Copyright (C) 2016 Samsung Electronics Co., Ltd.
* Author: Kyounghye Yunm <k-hye.yun@samsung.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include "phy-exynos-usbdrd.h"
#ifdef CONFIG_DEBUG_FS
extern int exynos_usbdrd_debugfs_init(struct exynos_usbdrd_phy *phy_drd);
extern int exynos_usbdrd_dp_debugfs_init(struct exynos_usbdrd_phy *phy_drd);
extern void exynos_usbdrd_debugfs_exit(struct exynos_usbdrd_phy *phy_drd);
#else
static inline int exynos_usbdrd_debugfs_init(struct exynos_usbdrd_phy *)
{ return 0; }
static inline void exynos_usbdrd_debugfs_exit(struct exynos_usbdrd_phy *)
{ }
#endif
#define dump_register(nm) \
{ \
.name = __stringify(nm), \
.offset = EXYNOS_USBCON_##nm, \
}
#define dump_regmap_mask(nm, bit_nm, bit) \
{ \
.name = __stringify(nm), \
.offset = EXYNOS_USBCON_##nm, \
.bitname = #bit_nm, \
.bitmask = nm##_##bit_nm##_MASK, \
.bitoffset = bit, \
.mask = true, \
}
#define dump_regmap(nm, bit_nm, bit) \
{ \
.name = __stringify(nm), \
.offset = EXYNOS_USBCON_##nm, \
.bitname = #bit_nm, \
.bitmask = nm##_##bit_nm, \
.bitoffset = bit, \
.mask = false, \
}
#define dump_register_dp(rnm) \
{ \
.name = __stringify(rnm), \
.offset = EXYNOS_USBDP_COM_##rnm, \
}
#define dump_regmap_dp_mask(rnm, bit_rnm, bit_nm, bit) \
{ \
.name = __stringify(rnm), \
.offset = EXYNOS_USBDP_COM_##rnm, \
.bitname = #bit_nm, \
.bitmask = bit_rnm##_##bit_nm##_MASK, \
.bitoffset = bit, \
.mask = true, \
}
#define dump_regmap_gen2_mask(rnm, bit_rnm, bit_nm, bit) \
{ \
.name = __stringify(rnm), \
.offset = EXYNOS_USBDP_COM_##rnm, \
.bitname = #bit_nm, \
.bitmask = bit_rnm##_##bit_nm##_MSK, \
.bitoffset = bit, \
.mask = true, \
}
#define dump_regmap_dp(rnm, bit_rnm, bit_nm, bit) \
{ \
.name = __stringify(rnm), \
.offset = EXYNOS_USBDP_COM_##rnm, \
.bitname = #bit_nm, \
.bitmask = bit_rnm##_##bit_nm, \
.bitoffset = bit, \
.mask = false, \
}
struct debugfs_regmap32 {
char *name;
char *bitname;
unsigned int offset;
unsigned int bitoffset;
unsigned int bitmask;
bool mask;
};
struct debugfs_regset_map {
const struct debugfs_regmap32 *regs;
int nregs;
};
struct exynos_debugfs_prvdata {
struct exynos_usbdrd_phy *phy_drd;
struct dentry *root;
struct debugfs_regset32 *regset;
struct debugfs_regset_map *regmap;
};