summaryrefslogtreecommitdiff
path: root/tdm
diff options
context:
space:
mode:
Diffstat (limited to 'tdm')
-rw-r--r--tdm/xivo_tdm.c10
-rw-r--r--tdm/xivo_tdm_api.h3
2 files changed, 11 insertions, 2 deletions
diff --git a/tdm/xivo_tdm.c b/tdm/xivo_tdm.c
index edd8c3a..ef170b1 100644
--- a/tdm/xivo_tdm.c
+++ b/tdm/xivo_tdm.c
@@ -134,6 +134,8 @@ static struct xivo_tdm_callbacks_struct xivo_tdm_callbacks;
/* our local counters are coded on one byte: */
#define LOCAL_CPT_MASK (0xffu)
+static u8 __iomem *g_cs_n2;
+
struct local_cpt {
u8 tail;
u8 head;
@@ -459,11 +461,14 @@ EXPORT_SYMBOL(xivo_tdm_put_port);
int xivo_tdm_config_port(
struct xivo_tdm_port* xtp,
- unsigned int port_config)
+ unsigned int port_config,
+ u8 __iomem *cs_n2)
{
icp_status_t status;
icp_hssacc_port_config_params_t hss_port_config;
+ g_cs_n2 = cs_n2;
+
if (port_config >= ICP_HSSDRV_PORT_CONFIG_DELIMITER) {
printk(KERN_ERR "%s: invalid port config %u\n",
__func__, port_config);
@@ -949,6 +954,9 @@ void xivo_tdm_trigger_handler(void)
DBG_TRACE("-- rx -- %lu\n", delta_tsc);
}
+ if (g_cs_n2)
+ writeb(0, g_cs_n2);
+
do {
const u32 rx_entry = vrxq_info->queue.content[ // volatile
(cpt[LOCAL_VOICE_RX_Q].wordTail++)
diff --git a/tdm/xivo_tdm_api.h b/tdm/xivo_tdm_api.h
index a206f66..34e6ad1 100644
--- a/tdm/xivo_tdm_api.h
+++ b/tdm/xivo_tdm_api.h
@@ -48,7 +48,8 @@ void xivo_tdm_put_port(struct xivo_tdm_port *);
/* hardirq: no -- softirq: no -- user: yes */
int xivo_tdm_config_port(
struct xivo_tdm_port* xtp,
- unsigned int port_config);
+ unsigned int port_config,
+ u8 __iomem *cs_n2);
/* will be called back after port 0 has been configured */
void xivo_tdm_register_port0_configured(