diff options
Diffstat (limited to 'tdm')
-rw-r--r-- | tdm/xivo_tdm.c | 10 | ||||
-rw-r--r-- | tdm/xivo_tdm_api.h | 3 |
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( |