Commit 4e03185f authored by Ben Cahill's avatar Ben Cahill Committed by John W. Linville

iwlwifi: Add iwl_write8()

To support byte writes to CSR_INT_COALESCING and CSR_INT_PERIODIC registers,
add iwl_write8(), including debug/trace support.
Signed-off-by: default avatarBen Cahill <ben.m.cahill@intel.com>
Signed-off-by: default avatarReinette Chatre <reinette.chatre@intel.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 3305443c
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#define CREATE_TRACE_POINTS #define CREATE_TRACE_POINTS
#include "iwl-devtrace.h" #include "iwl-devtrace.h"
EXPORT_TRACEPOINT_SYMBOL(iwlwifi_dev_iowrite8);
EXPORT_TRACEPOINT_SYMBOL(iwlwifi_dev_ioread32); EXPORT_TRACEPOINT_SYMBOL(iwlwifi_dev_ioread32);
EXPORT_TRACEPOINT_SYMBOL(iwlwifi_dev_iowrite32); EXPORT_TRACEPOINT_SYMBOL(iwlwifi_dev_iowrite32);
EXPORT_TRACEPOINT_SYMBOL(iwlwifi_dev_rx); EXPORT_TRACEPOINT_SYMBOL(iwlwifi_dev_rx);
......
...@@ -32,6 +32,22 @@ TRACE_EVENT(iwlwifi_dev_ioread32, ...@@ -32,6 +32,22 @@ TRACE_EVENT(iwlwifi_dev_ioread32,
TP_printk("[%p] read io[%#x] = %#x", __entry->priv, __entry->offs, __entry->val) TP_printk("[%p] read io[%#x] = %#x", __entry->priv, __entry->offs, __entry->val)
); );
TRACE_EVENT(iwlwifi_dev_iowrite8,
TP_PROTO(struct iwl_priv *priv, u32 offs, u8 val),
TP_ARGS(priv, offs, val),
TP_STRUCT__entry(
PRIV_ENTRY
__field(u32, offs)
__field(u8, val)
),
TP_fast_assign(
PRIV_ASSIGN;
__entry->offs = offs;
__entry->val = val;
),
TP_printk("[%p] write io[%#x] = %#x)", __entry->priv, __entry->offs, __entry->val)
);
TRACE_EVENT(iwlwifi_dev_iowrite32, TRACE_EVENT(iwlwifi_dev_iowrite32,
TP_PROTO(struct iwl_priv *priv, u32 offs, u32 val), TP_PROTO(struct iwl_priv *priv, u32 offs, u32 val),
TP_ARGS(priv, offs, val), TP_ARGS(priv, offs, val),
......
...@@ -62,6 +62,26 @@ ...@@ -62,6 +62,26 @@
* *
*/ */
static inline void _iwl_write8(struct iwl_priv *priv, u32 ofs, u8 val)
{
trace_iwlwifi_dev_iowrite8(priv, ofs, val);
iowrite8(val, priv->hw_base + ofs);
}
#ifdef CONFIG_IWLWIFI_DEBUG
static inline void __iwl_write8(const char *f, u32 l, struct iwl_priv *priv,
u32 ofs, u8 val)
{
IWL_DEBUG_IO(priv, "write8(0x%08X, 0x%02X) - %s %d\n", ofs, val, f, l);
_iwl_write8(priv, ofs, val);
}
#define iwl_write8(priv, ofs, val) \
__iwl_write8(__FILE__, __LINE__, priv, ofs, val)
#else
#define iwl_write8(priv, ofs, val) _iwl_write8(priv, ofs, val)
#endif
static inline void _iwl_write32(struct iwl_priv *priv, u32 ofs, u32 val) static inline void _iwl_write32(struct iwl_priv *priv, u32 ofs, u32 val)
{ {
trace_iwlwifi_dev_iowrite32(priv, ofs, val); trace_iwlwifi_dev_iowrite32(priv, ofs, val);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment