2008-10-08 19:40:56

by Richard Holden

[permalink] [raw]
Subject: [PATCH 00/10] ixj: Cleanup dead and duplicate code

Cleanup dead code and duplicate code to start simplifying the ixj
driver, currently it is around 10000 lines long. This has been built,
but I don't have the hardware to test, most changes were fairly
mechanical.

Richard A. Holden III (10):
ixj: Remove code duplication for processing codec names.
ixj: Remove dead code in preparation for consolidating duplicate
code.
ixj: Unify comments in preparation for pushing duplicate code into a
function.
ixj: Consolidate duplicate Ringer array initializers into common
functions.
ixj: Move duplicate code into well named zero_caller_id function.
ixj: Caller ID Refactoring
ixj: Refactor DTMF tone setting
ixj: update quickly readable comments to match the data initializations.
ixj: Remove unused macro.
ixj: Remove dead code from ifdef IXJ_DYN_ALLOC.

drivers/telephony/ixj.c | 752 +++++++++++------------------------------------
drivers/telephony/ixj.h | 4 -
2 files changed, 166 insertions(+), 590 deletions(-)


2008-10-08 19:41:17

by Richard Holden

[permalink] [raw]
Subject: [PATCH 01/10] ixj: Remove code duplication for processing codec names.

Signed-off-by: Richard A. Holden III <[email protected]>
---
drivers/telephony/ixj.c | 124 ++++++++++++++---------------------------------
1 files changed, 36 insertions(+), 88 deletions(-)

diff --git a/drivers/telephony/ixj.c b/drivers/telephony/ixj.c
index ec7aeb5..1b2387e 100644
--- a/drivers/telephony/ixj.c
+++ b/drivers/telephony/ixj.c
@@ -7122,6 +7122,40 @@ IXJ *ixj_pcmcia_probe(unsigned long dsp, unsigned long xilinx)

EXPORT_SYMBOL(ixj_pcmcia_probe); /* Fpr PCMCIA */

+static int sprintf_codec_name(int len, char *buf, unsigned int codec)
+{
+ switch (codec) {
+ case G723_63:
+ return sprintf(buf + len, "G.723.1 6.3");
+ case G723_53:
+ return sprintf(buf + len, "G.723.1 5.3");
+ case TS85:
+ return sprintf(buf + len, "TrueSpeech 8.5");
+ case TS48:
+ return sprintf(buf + len, "TrueSpeech 4.8");
+ case TS41:
+ return sprintf(buf + len, "TrueSpeech 4.1");
+ case G728:
+ return sprintf(buf + len, "G.728");
+ case G729:
+ return sprintf(buf + len, "G.729");
+ case G729B:
+ return sprintf(buf + len, "G.729B");
+ case ULAW:
+ return sprintf(buf + len, "uLaw");
+ case ALAW:
+ return sprintf(buf + len, "aLaw");
+ case LINEAR16:
+ return sprintf(buf + len, "16 bit Linear");
+ case LINEAR8:
+ return sprintf(buf + len, "8 bit Linear");
+ case WSS:
+ return sprintf(buf + len, "Windows Sound System");
+ default:
+ return sprintf(buf + len, "NO CODEC CHOSEN");
+ }
+}
+
static int ixj_get_status_proc(char *buf)
{
int len;
@@ -7191,95 +7225,9 @@ static int ixj_get_status_proc(char *buf)
len += sprintf(buf + len, "\nCaller ID data not sent");

len += sprintf(buf + len, "\nPlay CODEC ");
- switch (j->play_codec) {
- case G723_63:
- len += sprintf(buf + len, "G.723.1 6.3");
- break;
- case G723_53:
- len += sprintf(buf + len, "G.723.1 5.3");
- break;
- case TS85:
- len += sprintf(buf + len, "TrueSpeech 8.5");
- break;
- case TS48:
- len += sprintf(buf + len, "TrueSpeech 4.8");
- break;
- case TS41:
- len += sprintf(buf + len, "TrueSpeech 4.1");
- break;
- case G728:
- len += sprintf(buf + len, "G.728");
- break;
- case G729:
- len += sprintf(buf + len, "G.729");
- break;
- case G729B:
- len += sprintf(buf + len, "G.729B");
- break;
- case ULAW:
- len += sprintf(buf + len, "uLaw");
- break;
- case ALAW:
- len += sprintf(buf + len, "aLaw");
- break;
- case LINEAR16:
- len += sprintf(buf + len, "16 bit Linear");
- break;
- case LINEAR8:
- len += sprintf(buf + len, "8 bit Linear");
- break;
- case WSS:
- len += sprintf(buf + len, "Windows Sound System");
- break;
- default:
- len += sprintf(buf + len, "NO CODEC CHOSEN");
- break;
- }
+ len += sprintf_codec_name(len, buf, j->play_codec);
len += sprintf(buf + len, "\nRecord CODEC ");
- switch (j->rec_codec) {
- case G723_63:
- len += sprintf(buf + len, "G.723.1 6.3");
- break;
- case G723_53:
- len += sprintf(buf + len, "G.723.1 5.3");
- break;
- case TS85:
- len += sprintf(buf + len, "TrueSpeech 8.5");
- break;
- case TS48:
- len += sprintf(buf + len, "TrueSpeech 4.8");
- break;
- case TS41:
- len += sprintf(buf + len, "TrueSpeech 4.1");
- break;
- case G728:
- len += sprintf(buf + len, "G.728");
- break;
- case G729:
- len += sprintf(buf + len, "G.729");
- break;
- case G729B:
- len += sprintf(buf + len, "G.729B");
- break;
- case ULAW:
- len += sprintf(buf + len, "uLaw");
- break;
- case ALAW:
- len += sprintf(buf + len, "aLaw");
- break;
- case LINEAR16:
- len += sprintf(buf + len, "16 bit Linear");
- break;
- case LINEAR8:
- len += sprintf(buf + len, "8 bit Linear");
- break;
- case WSS:
- len += sprintf(buf + len, "Windows Sound System");
- break;
- default:
- len += sprintf(buf + len, "NO CODEC CHOSEN");
- break;
- }
+ len += sprintf_codec_name(len, buf, j->rec_codec);
len += sprintf(buf + len, "\nAEC ");
switch (j->aec_level) {
case AEC_OFF:
--
1.5.6.4

2008-10-08 19:41:50

by Richard Holden

[permalink] [raw]
Subject: [PATCH 03/10] ixj: Unify comments in preparation for pushing duplicate code into a function.

Signed-off-by: Richard A. Holden III <[email protected]>
---
drivers/telephony/ixj.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/telephony/ixj.c b/drivers/telephony/ixj.c
index e98bac8..99d6bed 100644
--- a/drivers/telephony/ixj.c
+++ b/drivers/telephony/ixj.c
@@ -8705,7 +8705,7 @@ static void DAA_Coeff_Japan(IXJ *j)
j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[2] = 0x7A;
j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[1] = 0x0A;
j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[0] = 0xD5;
-/* Levelmetering Ringing (0D):AA,35,0F,8E ; 25Hz 30V ????????? */
+/* Levelmetering Ringing (0D):AA,35,0F,8E ; 25Hz 30V less possible? */
j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[3] = 0xAA;
j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[2] = 0x35;
j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[1] = 0x0F;
--
1.5.6.4

2008-10-08 19:41:35

by Richard Holden

[permalink] [raw]
Subject: [PATCH 02/10] ixj: Remove dead code in preparation for consolidating duplicate code.

The commented code hasn't changed since the kernel switched to git.

Signed-off-by: Richard A. Holden III <[email protected]>
---
drivers/telephony/ixj.c | 59 +---------------------------------------------
1 files changed, 2 insertions(+), 57 deletions(-)

diff --git a/drivers/telephony/ixj.c b/drivers/telephony/ixj.c
index 1b2387e..e98bac8 100644
--- a/drivers/telephony/ixj.c
+++ b/drivers/telephony/ixj.c
@@ -1581,7 +1581,6 @@ static int ixj_set_port(IXJ *j, int arg)
ixj_mixer(0x0080, j); /* Mute Master Left volume */
ixj_mixer(0x0180, j); /* Mute Master Right volume */
SLIC_SetState(PLD_SLIC_STATE_STANDBY, j);
-/* SLIC_SetState(PLD_SLIC_STATE_ACTIVE, j); */
break;
case QTI_PHONEJACK:
j->gpio.bytes.high = 0x0B;
@@ -1968,7 +1967,7 @@ static int ixj_hookstate(IXJ *j)
}
if (j->r_hook != fOffHook) {
j->r_hook = fOffHook;
- if (j->port == PORT_SPEAKER || j->port == PORT_HANDSET) { // || (j->port == PORT_PSTN && j->flags.pots_pstn == 0)) {
+ if (j->port == PORT_SPEAKER || j->port == PORT_HANDSET) {
j->ex.bits.hookstate = 1;
ixj_kill_fasync(j, SIG_HOOKSTATE, POLL_IN);
} else if (!fOffHook) {
@@ -2623,7 +2622,7 @@ static int LineMonitor(IXJ *j)
j->dtmf_state = 1;
j->dtmf_current = j->dtmf.bits.digit;
}
- if (j->dtmf_state && !j->dtmf.bits.dtmf_valid) /* && j->dtmf_wp != j->dtmf_rp) */
+ if (j->dtmf_state && !j->dtmf.bits.dtmf_valid)
{
if(!j->cidcw_wait) {
j->dtmfbuffer[j->dtmf_wp] = j->dtmf_current;
@@ -4496,7 +4495,6 @@ static int ixj_play_start(IXJ *j)
printk("Write buffer allocation for ixj board %d failed!\n", j->board);
return -ENOMEM;
}
-/* j->write_buffers_empty = 2; */
j->write_buffers_empty = 1;
j->write_buffer_size = j->play_frame_size * 2;
j->write_buffer_end = j->write_buffer + j->play_frame_size * 2;
@@ -5141,7 +5139,6 @@ static int daa_set_mode(IXJ *j, int mode)
}
if (ixjdebug & 0x0008)
printk(KERN_INFO "phone DAA: SOP_PU_SLEEP at %ld\n", jiffies);
-/* if(j->daa_mode == SOP_PU_CONVERSATION) */
{
j->pld_scrw.bits.daafsyncen = 0; /* Turn off DAA Frame Sync */

@@ -6897,7 +6894,6 @@ static int ixj_selfprobe(IXJ *j)
if (ixjdebug & 0x0002)
printk(KERN_INFO "Configure GPIO pins\n");
j->gpio.bytes.high = 0x09;
-/* bytes.low = 0xEF; 0xF7 */
j->gpio.bits.gpio1 = 1;
j->gpio.bits.gpio2 = 1;
j->gpio.bits.gpio3 = 0;
@@ -6949,7 +6945,6 @@ static int ixj_selfprobe(IXJ *j)
j->pld_slicw.bits.spken = 1;
outb_p(j->pld_slicw.byte, j->XILINXbase + 0x01);
SLIC_SetState(PLD_SLIC_STATE_STANDBY, j);
-/* SLIC_SetState(PLD_SLIC_STATE_ACTIVE, j); */
j->port = PORT_POTS;
}
ixj_set_port(j, PORT_PSTN);
@@ -7016,7 +7011,6 @@ static int ixj_selfprobe(IXJ *j)
} else {
ixj_set_port(j, PORT_POTS);
SLIC_SetState(PLD_SLIC_STATE_STANDBY, j);
-/* SLIC_SetState(PLD_SLIC_STATE_ACTIVE, j); */
}
}
}
@@ -7814,31 +7808,6 @@ static void DAA_Coeff_US(IXJ *j)
j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[1] = 0x0F;
j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[0] = 0x8E;

- /* Bytes for Ringing part 1 (03):1B,3B,9B,BA,D4,1C,B3,23 */
-/* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[7] = 0x1C; */
-/* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[6] = 0xB3; */
-/* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[5] = 0xAB; */
-/* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[4] = 0xAB; */
-/* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[3] = 0x54; */
-/* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[2] = 0x2D; */
-/* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[1] = 0x62; */
-/* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[0] = 0x2D; */
- /* Bytes for Ringing part 2 (06):13,42,A6,BA,D4,73,CA,D5 */
-/* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[7] = 0x2D; */
-/* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[6] = 0x62; */
-/* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[5] = 0xA6; */
-/* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[4] = 0xBB; */
-/* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[3] = 0x2A; */
-/* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[2] = 0x7D; */
-/* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[1] = 0x0A; */
-/* j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[0] = 0xD4; */
-/* */
- /* Levelmetering Ringing (0D):B2,45,0F,8E */
-/* j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[3] = 0xAA; */
-/* j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[2] = 0x05; */
-/* j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[1] = 0x0F; */
-/* j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[0] = 0x8E; */
-
/* Caller ID 1st Tone (0E):CA,0E,CA,09,99,99,99,99 */
j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[7] = 0xCA;
j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[6] = 0x0E;
@@ -9192,29 +9161,6 @@ static s16 tone_table[][19] =
21, /* 21/32 in-band to broad-band ratio */
0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
},
-#if 0
- { /* f425 */
- 30881, /* A1 = -1.884827 */
- -32603, /* A2 = 0.994965 */
- -496, /* B2 = -0.015144 */
- 0, /* B1 = 0.000000 */
- 496, /* B0 = 0.015144 */
- 30880, /* A1 = -1.884766 */
- -32692, /* A2 = 0.997711 */
- 24767, /* B2 = 0.755859 */
- -23290, /* B1 = -1.421509 */
- 24767, /* B0 = 0.755859 */
- 30967, /* A1 = -1.890076 */
- -32694, /* A2 = 0.997772 */
- 728, /* B2 = 0.022232 */
- -691, /* B1 = -0.042194 */
- 728, /* B0 = 0.022232 */
- 5, /* Internal filter scaling */
- 159, /* Minimum in-band energy threshold */
- 21, /* 21/32 in-band to broad-band ratio */
- 0x0FF5 /* shift-mask 0x0FF (look at 16 half-frames) bit count = 5 */
- },
-#else
{
30850,
-32534,
@@ -9236,7 +9182,6 @@ static s16 tone_table[][19] =
17,
0xff5
},
-#endif
{ /* f425_450[] */
30646, /* A1 = 1.870544 */
-32327, /* A2 = -0.986572 */
--
1.5.6.4

2008-10-08 19:42:10

by Richard Holden

[permalink] [raw]
Subject: [PATCH 04/10] ixj: Consolidate duplicate Ringer array initializers into common functions.

Pull the RingerImpendance_1 and RingerImpendance_2 setup into a common function,
the settings are the same for all the country settings except Germany.
Also consolidate the levelmetering settings into 2 shared functions to further
reduce code duplication.

Signed-off-by: Richard A. Holden III <[email protected]>
---
drivers/telephony/ixj.c | 168 ++++++++++++++--------------------------------
1 files changed, 51 insertions(+), 117 deletions(-)

diff --git a/drivers/telephony/ixj.c b/drivers/telephony/ixj.c
index 99d6bed..1f91a59 100644
--- a/drivers/telephony/ixj.c
+++ b/drivers/telephony/ixj.c
@@ -7697,6 +7697,46 @@ static int __init ixj_init(void)
module_init(ixj_init);
module_exit(ixj_exit);

+static void set_shared_ringerimpendance(IXJ *j)
+{
+ /* Bytes for Ringing part 1 (03):1B,3C,93,3A,22,12,A3,23 */
+ j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[7] = 0x1B;
+ j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[6] = 0x3C;
+ j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[5] = 0x93;
+ j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[4] = 0x3A;
+ j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[3] = 0x22;
+ j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[2] = 0x12;
+ j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[1] = 0xA3;
+ j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[0] = 0x23;
+ /* Bytes for Ringing part 2 (06):12,A2,A6,BA,22,7A,0A,D5 */
+ j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[7] = 0x12;
+ j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[6] = 0xA2;
+ j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[5] = 0xA6;
+ j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[4] = 0xBA;
+ j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[3] = 0x22;
+ j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[2] = 0x7A;
+ j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[1] = 0x0A;
+ j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[0] = 0xD5;
+}
+
+static void set_50hz_20v_levelmetering_ringing(IXJ *j)
+{
+ /* Levelmetering Ringing (0D):32,45,B5,84 ; 50Hz 20V */
+ j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[3] = 0x32;
+ j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[2] = 0x45;
+ j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[1] = 0xB5;
+ j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[0] = 0x84;
+}
+
+static void set_25hz_30v_levemetering_ringing(IXJ *j)
+{
+ /* Levelmetering Ringing (0D):AA,35,0F,8E ; 25Hz 30V less possible? */
+ j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[3] = 0xAA;
+ j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[2] = 0x35;
+ j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[1] = 0x0F;
+ j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[0] = 0x8E;
+}
+
static void DAA_Coeff_US(IXJ *j)
{
int i;
@@ -7783,30 +7823,8 @@ static void DAA_Coeff_US(IXJ *j)
j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[0] = 0xA6;
/* ; (10K, 0.68uF) */
/* */
- /* Bytes for Ringing part 1 (03):1B,3B,9B,BA,D4,1C,B3,23 */
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[7] = 0x1B;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[6] = 0x3C;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[5] = 0x93;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[4] = 0x3A;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[3] = 0x22;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[2] = 0x12;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[1] = 0xA3;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[0] = 0x23;
- /* Bytes for Ringing part 2 (06):13,42,A6,BA,D4,73,CA,D5 */
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[7] = 0x12;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[6] = 0xA2;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[5] = 0xA6;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[4] = 0xBA;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[3] = 0x22;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[2] = 0x7A;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[1] = 0x0A;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[0] = 0xD5;
-
- /* Levelmetering Ringing (0D):B2,45,0F,8E */
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[3] = 0xAA;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[2] = 0x35;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[1] = 0x0F;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[0] = 0x8E;
+ set_shared_ringerimpendance(j);
+ set_25hz_30v_levemetering_ringing(j);

/* Caller ID 1st Tone (0E):CA,0E,CA,09,99,99,99,99 */
j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[7] = 0xCA;
@@ -7967,29 +7985,8 @@ static void DAA_Coeff_UK(IXJ *j)
j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[1] = 0xF5;
j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[0] = 0x32;
/* ; idle */
- /* Bytes for Ringing part 1 (03):1B,3C,93,3A,22,12,A3,23 */
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[7] = 0x1B;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[6] = 0x3C;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[5] = 0x93;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[4] = 0x3A;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[3] = 0x22;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[2] = 0x12;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[1] = 0xA3;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[0] = 0x23;
-/* Bytes for Ringing part 2 (06):12,A2,A6,BA,22,7A,0A,D5 */
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[7] = 0x12;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[6] = 0xA2;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[5] = 0xA6;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[4] = 0xBA;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[3] = 0x22;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[2] = 0x7A;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[1] = 0x0A;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[0] = 0xD5;
-/* Levelmetering Ringing (0D):AA,35,0F,8E ; 25Hz 30V less possible? */
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[3] = 0xAA;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[2] = 0x35;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[1] = 0x0F;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[0] = 0x8E;
+ set_shared_ringerimpendance(j);
+ set_25hz_30v_levemetering_ringing(j);
/* Caller ID 1st Tone (0E):CA,0E,CA,09,99,99,99,99 */
j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[7] = 0xCA;
j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[6] = 0x0E;
@@ -8147,29 +8144,8 @@ static void DAA_Coeff_France(IXJ *j)
j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[1] = 0x2C;
j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[0] = 0x45;
/* ; idle */
- /* Bytes for Ringing part 1 (03):1B,3C,93,3A,22,12,A3,23 */
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[7] = 0x1B;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[6] = 0x3C;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[5] = 0x93;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[4] = 0x3A;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[3] = 0x22;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[2] = 0x12;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[1] = 0xA3;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[0] = 0x23;
-/* Bytes for Ringing part 2 (06):12,A2,A6,BA,22,7A,0A,D5 */
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[7] = 0x12;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[6] = 0xA2;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[5] = 0xA6;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[4] = 0xBA;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[3] = 0x22;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[2] = 0x7A;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[1] = 0x0A;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[0] = 0xD5;
-/* Levelmetering Ringing (0D):32,45,B5,84 ; 50Hz 20V */
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[3] = 0x32;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[2] = 0x45;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[1] = 0xB5;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[0] = 0x84;
+ set_shared_ringerimpendance(j);
+ set_50hz_20v_levelmetering_ringing(j);
/* Caller ID 1st Tone (0E):CA,0E,CA,09,99,99,99,99 */
j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[7] = 0xCA;
j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[6] = 0x0E;
@@ -8507,30 +8483,9 @@ static void DAA_Coeff_Australia(IXJ *j)
j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[1] = 0x24;
j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[0] = 0x46;
/* ; idle */
- /* Bytes for Ringing part 1 (03):1B,3C,93,3A,22,12,A3,23 */
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[7] = 0x1B;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[6] = 0x3C;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[5] = 0x93;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[4] = 0x3A;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[3] = 0x22;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[2] = 0x12;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[1] = 0xA3;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[0] = 0x23;
-/* Bytes for Ringing part 2 (06):12,A2,A6,BA,22,7A,0A,D5 */
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[7] = 0x12;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[6] = 0xA2;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[5] = 0xA6;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[4] = 0xBA;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[3] = 0x22;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[2] = 0x7A;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[1] = 0x0A;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[0] = 0xD5;
-/* Levelmetering Ringing (0D):32,45,B5,84 ; 50Hz 20V */
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[3] = 0x32;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[2] = 0x45;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[1] = 0xB5;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[0] = 0x84;
-/* Caller ID 1st Tone (0E):CA,0E,CA,09,99,99,99,99 */
+ set_shared_ringerimpendance(j);
+ set_50hz_20v_levelmetering_ringing(j);
+ /* Caller ID 1st Tone (0E):CA,0E,CA,09,99,99,99,99 */
j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[7] = 0xCA;
j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[6] = 0x0E;
j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[5] = 0xCA;
@@ -8687,29 +8642,8 @@ static void DAA_Coeff_Japan(IXJ *j)
j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[1] = 0x4C;
j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[0] = 0xBA;
/* ; idle */
- /* Bytes for Ringing part 1 (03):1B,3C,93,3A,22,12,A3,23 */
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[7] = 0x1B;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[6] = 0x3C;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[5] = 0x93;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[4] = 0x3A;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[3] = 0x22;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[2] = 0x12;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[1] = 0xA3;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[0] = 0x23;
-/* Bytes for Ringing part 2 (06):12,A2,A6,BA,22,7A,0A,D5 */
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[7] = 0x12;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[6] = 0xA2;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[5] = 0xA6;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[4] = 0xBA;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[3] = 0x22;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[2] = 0x7A;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[1] = 0x0A;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[0] = 0xD5;
-/* Levelmetering Ringing (0D):AA,35,0F,8E ; 25Hz 30V less possible? */
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[3] = 0xAA;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[2] = 0x35;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[1] = 0x0F;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[0] = 0x8E;
+ set_shared_ringerimpendance(j);
+ set_25hz_30v_levemetering_ringing(j);
/* Caller ID 1st Tone (0E):CA,0E,CA,09,99,99,99,99 */
j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[7] = 0xCA;
j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[6] = 0x0E;
--
1.5.6.4

2008-10-08 19:42:46

by Richard Holden

[permalink] [raw]
Subject: [PATCH 06/10] ixj: Caller ID Refactoring

Move all caller id settings into a single function to reduce code duplication.
All the DAA_Coeff_* methods set the same caller id tone values.

Signed-off-by: Richard A. Holden III <[email protected]>
---
drivers/telephony/ixj.c | 138 ++++++++++-------------------------------------
1 files changed, 29 insertions(+), 109 deletions(-)

diff --git a/drivers/telephony/ixj.c b/drivers/telephony/ixj.c
index 80a31e4..a1bbe81 100644
--- a/drivers/telephony/ixj.c
+++ b/drivers/telephony/ixj.c
@@ -7719,6 +7719,28 @@ static void set_shared_ringerimpendance(IXJ *j)
j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[0] = 0xD5;
}

+static void set_caller_id_tones(IXJ *j)
+{
+ /* Caller ID 1st Tone (0E):CA,0E,CA,09,99,99,99,99 */
+ j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[7] = 0xCA;
+ j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[6] = 0x0E;
+ j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[5] = 0xCA;
+ j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[4] = 0x09;
+ j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[3] = 0x99;
+ j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[2] = 0x99;
+ j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[1] = 0x99;
+ j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[0] = 0x99;
+ /* Caller ID 2nd Tone (0F):FD,B5,BA,07,DA,00,00,00 */
+ j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[7] = 0xFD;
+ j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[6] = 0xB5;
+ j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[5] = 0xBA;
+ j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[4] = 0x07;
+ j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[3] = 0xDA;
+ j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[2] = 0x00;
+ j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[1] = 0x00;
+ j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[0] = 0x00;
+}
+
static void set_50hz_20v_levelmetering_ringing(IXJ *j)
{
/* Levelmetering Ringing (0D):32,45,B5,84 ; 50Hz 20V */
@@ -7829,25 +7851,7 @@ static void DAA_Coeff_US(IXJ *j)
/* */
set_shared_ringerimpendance(j);
set_25hz_30v_levemetering_ringing(j);
-
- /* Caller ID 1st Tone (0E):CA,0E,CA,09,99,99,99,99 */
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[7] = 0xCA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[6] = 0x0E;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[5] = 0xCA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[4] = 0x09;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[3] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[2] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[1] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[0] = 0x99;
-/* Caller ID 2nd Tone (0F):FD,B5,BA,07,DA,00,00,00 */
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[7] = 0xFD;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[6] = 0xB5;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[5] = 0xBA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[4] = 0x07;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[3] = 0xDA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[2] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[1] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[0] = 0x00;
+ set_caller_id_tones(j);
/* */
/* ;CR Registers */
/* Config. Reg. 0 (filters) (cr0):FE ; CLK gen. by crystal */
@@ -7985,24 +7989,7 @@ static void DAA_Coeff_UK(IXJ *j)
/* ; idle */
set_shared_ringerimpendance(j);
set_25hz_30v_levemetering_ringing(j);
-/* Caller ID 1st Tone (0E):CA,0E,CA,09,99,99,99,99 */
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[7] = 0xCA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[6] = 0x0E;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[5] = 0xCA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[4] = 0x09;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[3] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[2] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[1] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[0] = 0x99;
-/* Caller ID 2nd Tone (0F):FD,B5,BA,07,DA,00,00,00 */
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[7] = 0xFD;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[6] = 0xB5;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[5] = 0xBA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[4] = 0x07;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[3] = 0xDA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[2] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[1] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[0] = 0x00;
+ set_caller_id_tones(j);
/* ;CR Registers */
/* Config. Reg. 0 (filters) (cr0):FF */
j->m_DAAShadowRegs.SOP_REGS.SOP.cr0.reg = 0xFF;
@@ -8136,26 +8123,10 @@ static void DAA_Coeff_France(IXJ *j)
j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[1] = 0x2C;
j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[0] = 0x45;
/* ; idle */
+
set_shared_ringerimpendance(j);
set_50hz_20v_levelmetering_ringing(j);
-/* Caller ID 1st Tone (0E):CA,0E,CA,09,99,99,99,99 */
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[7] = 0xCA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[6] = 0x0E;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[5] = 0xCA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[4] = 0x09;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[3] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[2] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[1] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[0] = 0x99;
-/* Caller ID 2nd Tone (0F):FD,B5,BA,07,DA,00,00,00 */
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[7] = 0xFD;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[6] = 0xB5;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[5] = 0xBA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[4] = 0x07;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[3] = 0xDA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[2] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[1] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[0] = 0x00;
+ set_caller_id_tones(j);
/* ;CR Registers */
/* Config. Reg. 0 (filters) (cr0):FF */
j->m_DAAShadowRegs.SOP_REGS.SOP.cr0.reg = 0xFF;
@@ -8312,24 +8283,7 @@ static void DAA_Coeff_Germany(IXJ *j)
j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[2] = 0x45;
j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[1] = 0x0F;
j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[0] = 0x8E;
-/* Caller ID 1st Tone (0E):CA,0E,CA,09,99,99,99,99 */
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[7] = 0xCA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[6] = 0x0E;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[5] = 0xCA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[4] = 0x09;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[3] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[2] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[1] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[0] = 0x99;
-/* Caller ID 2nd Tone (0F):FD,B5,BA,07,DA,00,00,00 */
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[7] = 0xFD;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[6] = 0xB5;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[5] = 0xBA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[4] = 0x07;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[3] = 0xDA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[2] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[1] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[0] = 0x00;
+ set_caller_id_tones(j);
/* ;CR Registers */
/* Config. Reg. 0 (filters) (cr0):FF ; all Filters enabled, CLK from ext. source */
j->m_DAAShadowRegs.SOP_REGS.SOP.cr0.reg = 0xFF;
@@ -8465,24 +8419,7 @@ static void DAA_Coeff_Australia(IXJ *j)
/* ; idle */
set_shared_ringerimpendance(j);
set_50hz_20v_levelmetering_ringing(j);
- /* Caller ID 1st Tone (0E):CA,0E,CA,09,99,99,99,99 */
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[7] = 0xCA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[6] = 0x0E;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[5] = 0xCA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[4] = 0x09;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[3] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[2] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[1] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[0] = 0x99;
-/* Caller ID 2nd Tone (0F):FD,B5,BA,07,DA,00,00,00 */
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[7] = 0xFD;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[6] = 0xB5;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[5] = 0xBA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[4] = 0x07;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[3] = 0xDA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[2] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[1] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[0] = 0x00;
+ set_caller_id_tones(j);
/* ;CR Registers */
/* Config. Reg. 0 (filters) (cr0):FF */
j->m_DAAShadowRegs.SOP_REGS.SOP.cr0.reg = 0xFF;
@@ -8618,24 +8555,7 @@ static void DAA_Coeff_Japan(IXJ *j)
/* ; idle */
set_shared_ringerimpendance(j);
set_25hz_30v_levemetering_ringing(j);
-/* Caller ID 1st Tone (0E):CA,0E,CA,09,99,99,99,99 */
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[7] = 0xCA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[6] = 0x0E;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[5] = 0xCA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[4] = 0x09;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[3] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[2] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[1] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[0] = 0x99;
-/* Caller ID 2nd Tone (0F):FD,B5,BA,07,DA,00,00,00 */
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[7] = 0xFD;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[6] = 0xB5;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[5] = 0xBA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[4] = 0x07;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[3] = 0xDA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[2] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[1] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[0] = 0x00;
+ set_caller_id_tones(j);
/* ;CR Registers */
/* Config. Reg. 0 (filters) (cr0):FF */
j->m_DAAShadowRegs.SOP_REGS.SOP.cr0.reg = 0xFF;
--
1.5.6.4

2008-10-08 19:42:31

by Richard Holden

[permalink] [raw]
Subject: [PATCH 05/10] ixj: Move duplicate code into well named zero_caller_id function.

Signed-off-by: Richard A. Holden III <[email protected]>
---
drivers/telephony/ixj.c | 52 +++++++++++-----------------------------------
1 files changed, 13 insertions(+), 39 deletions(-)

diff --git a/drivers/telephony/ixj.c b/drivers/telephony/ixj.c
index 1f91a59..80a31e4 100644
--- a/drivers/telephony/ixj.c
+++ b/drivers/telephony/ixj.c
@@ -7737,16 +7737,20 @@ static void set_25hz_30v_levemetering_ringing(IXJ *j)
j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[0] = 0x8E;
}

-static void DAA_Coeff_US(IXJ *j)
+static void zero_caller_id(IXJ *j)
{
- int i;
-
- j->daa_country = DAA_US;
/*----------------------------------------------- */
/* CAO */
+ int i;
for (i = 0; i < ALISDAA_CALLERID_SIZE; i++) {
j->m_DAAShadowRegs.CAO_REGS.CAO.CallerID[i] = 0;
}
+}
+
+static void DAA_Coeff_US(IXJ *j)
+{
+ j->daa_country = DAA_US;
+ zero_caller_id(j);

/* Bytes for IM-filter part 1 (04): 0E,32,E2,2F,C2,5A,C0,00 */
j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[7] = 0x03;
@@ -7902,14 +7906,8 @@ static void DAA_Coeff_US(IXJ *j)

static void DAA_Coeff_UK(IXJ *j)
{
- int i;
-
j->daa_country = DAA_UK;
- /*----------------------------------------------- */
- /* CAO */
- for (i = 0; i < ALISDAA_CALLERID_SIZE; i++) {
- j->m_DAAShadowRegs.CAO_REGS.CAO.CallerID[i] = 0;
- }
+ zero_caller_id(j);

/* Bytes for IM-filter part 1 (04): 00,C2,BB,A8,CB,81,A0,00 */
j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[7] = 0x00;
@@ -8061,14 +8059,8 @@ static void DAA_Coeff_UK(IXJ *j)

static void DAA_Coeff_France(IXJ *j)
{
- int i;
-
j->daa_country = DAA_FRANCE;
- /*----------------------------------------------- */
- /* CAO */
- for (i = 0; i < ALISDAA_CALLERID_SIZE; i++) {
- j->m_DAAShadowRegs.CAO_REGS.CAO.CallerID[i] = 0;
- }
+ zero_caller_id(j);

/* Bytes for IM-filter part 1 (04): 02,A2,43,2C,22,AF,A0,00 */
j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[7] = 0x02;
@@ -8220,14 +8212,8 @@ static void DAA_Coeff_France(IXJ *j)

static void DAA_Coeff_Germany(IXJ *j)
{
- int i;
-
j->daa_country = DAA_GERMANY;
- /*----------------------------------------------- */
- /* CAO */
- for (i = 0; i < ALISDAA_CALLERID_SIZE; i++) {
- j->m_DAAShadowRegs.CAO_REGS.CAO.CallerID[i] = 0;
- }
+ zero_caller_id(j);

/* Bytes for IM-filter part 1 (04): 00,CE,BB,B8,D2,81,B0,00 */
j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[7] = 0x00;
@@ -8400,14 +8386,8 @@ static void DAA_Coeff_Germany(IXJ *j)

static void DAA_Coeff_Australia(IXJ *j)
{
- int i;
-
j->daa_country = DAA_AUSTRALIA;
- /*----------------------------------------------- */
- /* CAO */
- for (i = 0; i < ALISDAA_CALLERID_SIZE; i++) {
- j->m_DAAShadowRegs.CAO_REGS.CAO.CallerID[i] = 0;
- }
+ zero_caller_id(j);

/* Bytes for IM-filter part 1 (04): 00,A3,AA,28,B3,82,D0,00 */
j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[7] = 0x00;
@@ -8559,14 +8539,8 @@ static void DAA_Coeff_Australia(IXJ *j)

static void DAA_Coeff_Japan(IXJ *j)
{
- int i;
-
j->daa_country = DAA_JAPAN;
- /*----------------------------------------------- */
- /* CAO */
- for (i = 0; i < ALISDAA_CALLERID_SIZE; i++) {
- j->m_DAAShadowRegs.CAO_REGS.CAO.CallerID[i] = 0;
- }
+ zero_caller_id(j);

/* Bytes for IM-filter part 1 (04): 06,BD,E2,2D,BA,F9,A0,00 */
j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[7] = 0x06;
--
1.5.6.4

2008-10-08 19:43:03

by Richard Holden

[permalink] [raw]
Subject: [PATCH 07/10] ixj: Refactor DTMF tone setting

All the DAA_Ceoff_* functions use the same set of DTMF tones so they are
refactored into a common function.

Signed-off-by: Richard A. Holden III <[email protected]>
---
drivers/telephony/ixj.c | 130 +++++++++-------------------------------------
1 files changed, 26 insertions(+), 104 deletions(-)

diff --git a/drivers/telephony/ixj.c b/drivers/telephony/ixj.c
index a1bbe81..3b1315f 100644
--- a/drivers/telephony/ixj.c
+++ b/drivers/telephony/ixj.c
@@ -7769,6 +7769,26 @@ static void zero_caller_id(IXJ *j)
}
}

+static void set_dtmf_tones(IXJ *j)
+{
+ /* DTMF Tone 1 (0B): 11,B3,5A,2C ; 697 Hz */
+ /* 12,33,5A,C3 ; 770 Hz */
+ /* 13,3C,5B,32 ; 852 Hz */
+ /* 1D,1B,5C,CC ; 941 Hz */
+ j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[3] = 0x11;
+ j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[2] = 0xB3;
+ j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[1] = 0x5A;
+ j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[0] = 0x2C;
+ /* DTMF Tone 2 (0C): 32,32,52,B3 ; 1209 Hz */
+ /* EC,1D,52,22 ; 1336 Hz */
+ /* AA,AC,51,D2 ; 1477 Hz */
+ /* 9B,3B,51,25 ; 1633 Hz */
+ j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[3] = 0x32;
+ j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[2] = 0x32;
+ j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[1] = 0x52;
+ j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[0] = 0xB3;
+}
+
static void DAA_Coeff_US(IXJ *j)
{
j->daa_country = DAA_US;
@@ -7888,24 +7908,7 @@ static void DAA_Coeff_US(IXJ *j)
j->m_DAAShadowRegs.XOP_xr6_W.reg = 0x00;
/* Ext. Reg. 7 (Vdd) (xr7):40 */
j->m_DAAShadowRegs.XOP_REGS.XOP.xr7.reg = 0x40; /* 0x40 ??? Should it be 0x00? */
- /* */
- /* DTMF Tone 1 (0B): 11,B3,5A,2C ; 697 Hz */
- /* 12,33,5A,C3 ; 770 Hz */
- /* 13,3C,5B,32 ; 852 Hz */
- /* 1D,1B,5C,CC ; 941 Hz */
-
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[3] = 0x11;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[2] = 0xB3;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[1] = 0x5A;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[0] = 0x2C;
-/* DTMF Tone 2 (0C): 32,32,52,B3 ; 1209 Hz */
- /* EC,1D,52,22 ; 1336 Hz */
- /* AA,AC,51,D2 ; 1477 Hz */
- /* 9B,3B,51,25 ; 1633 Hz */
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[3] = 0x32;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[2] = 0x32;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[1] = 0x52;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[0] = 0xB3;
+ set_dtmf_tones(j);
}

static void DAA_Coeff_UK(IXJ *j)
@@ -8024,23 +8027,7 @@ static void DAA_Coeff_UK(IXJ *j)
j->m_DAAShadowRegs.XOP_xr6_W.reg = 0x00;
/* Ext. Reg. 7 (Vdd) (xr7):46 */
j->m_DAAShadowRegs.XOP_REGS.XOP.xr7.reg = 0x46; /* 0x46 ??? Should it be 0x00? */
- /* DTMF Tone 1 (0B): 11,B3,5A,2C ; 697 Hz */
- /* 12,33,5A,C3 ; 770 Hz */
- /* 13,3C,5B,32 ; 852 Hz */
- /* 1D,1B,5C,CC ; 941 Hz */
-
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[3] = 0x11;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[2] = 0xB3;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[1] = 0x5A;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[0] = 0x2C;
-/* DTMF Tone 2 (0C): 32,32,52,B3 ; 1209 Hz */
- /* EC,1D,52,22 ; 1336 Hz */
- /* AA,AC,51,D2 ; 1477 Hz */
- /* 9B,3B,51,25 ; 1633 Hz */
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[3] = 0x32;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[2] = 0x32;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[1] = 0x52;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[0] = 0xB3;
+ set_dtmf_tones(j);
}


@@ -8161,23 +8148,7 @@ static void DAA_Coeff_France(IXJ *j)
j->m_DAAShadowRegs.XOP_xr6_W.reg = 0x00;
/* Ext. Reg. 7 (Vdd) (xr7):46 */
j->m_DAAShadowRegs.XOP_REGS.XOP.xr7.reg = 0x46; /* 0x46 ??? Should it be 0x00? */
- /* DTMF Tone 1 (0B): 11,B3,5A,2C ; 697 Hz */
- /* 12,33,5A,C3 ; 770 Hz */
- /* 13,3C,5B,32 ; 852 Hz */
- /* 1D,1B,5C,CC ; 941 Hz */
-
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[3] = 0x11;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[2] = 0xB3;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[1] = 0x5A;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[0] = 0x2C;
-/* DTMF Tone 2 (0C): 32,32,52,B3 ; 1209 Hz */
- /* EC,1D,52,22 ; 1336 Hz */
- /* AA,AC,51,D2 ; 1477 Hz */
- /* 9B,3B,51,25 ; 1633 Hz */
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[3] = 0x32;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[2] = 0x32;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[1] = 0x52;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[0] = 0xB3;
+ set_dtmf_tones(j);
}


@@ -8318,23 +8289,7 @@ static void DAA_Coeff_Germany(IXJ *j)
j->m_DAAShadowRegs.XOP_xr6_W.reg = 0x00;
/* Ext. Reg. 7 (Vdd) (xr7):40 ; VDD=4.25 V */
j->m_DAAShadowRegs.XOP_REGS.XOP.xr7.reg = 0x40; /* 0x40 ??? Should it be 0x00? */
- /* DTMF Tone 1 (0B): 11,B3,5A,2C ; 697 Hz */
- /* 12,33,5A,C3 ; 770 Hz */
- /* 13,3C,5B,32 ; 852 Hz */
- /* 1D,1B,5C,CC ; 941 Hz */
-
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[3] = 0x11;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[2] = 0xB3;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[1] = 0x5A;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[0] = 0x2C;
-/* DTMF Tone 2 (0C): 32,32,52,B3 ; 1209 Hz */
- /* EC,1D,52,22 ; 1336 Hz */
- /* AA,AC,51,D2 ; 1477 Hz */
- /* 9B,3B,51,25 ; 1633 Hz */
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[3] = 0x32;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[2] = 0x32;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[1] = 0x52;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[0] = 0xB3;
+ set_dtmf_tones(j);
}


@@ -8454,24 +8409,7 @@ static void DAA_Coeff_Australia(IXJ *j)
j->m_DAAShadowRegs.XOP_xr6_W.reg = 0x00;
/* Ext. Reg. 7 (Vdd) (xr7):40 */
j->m_DAAShadowRegs.XOP_REGS.XOP.xr7.reg = 0x40; /* 0x40 ??? Should it be 0x00? */
-
- /* DTMF Tone 1 (0B): 11,B3,5A,2C ; 697 Hz */
- /* 12,33,5A,C3 ; 770 Hz */
- /* 13,3C,5B,32 ; 852 Hz */
- /* 1D,1B,5C,CC ; 941 Hz */
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[3] = 0x11;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[2] = 0xB3;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[1] = 0x5A;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[0] = 0x2C;
-
- /* DTMF Tone 2 (0C): 32,32,52,B3 ; 1209 Hz */
- /* EC,1D,52,22 ; 1336 Hz */
- /* AA,AC,51,D2 ; 1477 Hz */
- /* 9B,3B,51,25 ; 1633 Hz */
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[3] = 0x32;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[2] = 0x32;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[1] = 0x52;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[0] = 0xB3;
+ set_dtmf_tones(j);
}

static void DAA_Coeff_Japan(IXJ *j)
@@ -8590,23 +8528,7 @@ static void DAA_Coeff_Japan(IXJ *j)
j->m_DAAShadowRegs.XOP_xr6_W.reg = 0x00;
/* Ext. Reg. 7 (Vdd) (xr7):40 */
j->m_DAAShadowRegs.XOP_REGS.XOP.xr7.reg = 0x40; /* 0x40 ??? Should it be 0x00? */
- /* DTMF Tone 1 (0B): 11,B3,5A,2C ; 697 Hz */
- /* 12,33,5A,C3 ; 770 Hz */
- /* 13,3C,5B,32 ; 852 Hz */
- /* 1D,1B,5C,CC ; 941 Hz */
-
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[3] = 0x11;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[2] = 0xB3;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[1] = 0x5A;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[0] = 0x2C;
-/* DTMF Tone 2 (0C): 32,32,52,B3 ; 1209 Hz */
- /* EC,1D,52,22 ; 1336 Hz */
- /* AA,AC,51,D2 ; 1477 Hz */
- /* 9B,3B,51,25 ; 1633 Hz */
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[3] = 0x32;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[2] = 0x32;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[1] = 0x52;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[0] = 0xB3;
+ set_dtmf_tones(j);
}

static s16 tone_table[][19] =
--
1.5.6.4

2008-10-08 19:43:43

by Richard Holden

[permalink] [raw]
Subject: [PATCH 09/10] ixj: Remove unused macro.

Signed-off-by: Richard A. Holden III <[email protected]>
---
drivers/telephony/ixj.c | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)

diff --git a/drivers/telephony/ixj.c b/drivers/telephony/ixj.c
index 3e19357..e502f02 100644
--- a/drivers/telephony/ixj.c
+++ b/drivers/telephony/ixj.c
@@ -275,7 +275,6 @@

#include "ixj.h"

-#define TYPE(inode) (iminor(inode) >> 4)
#define NUM(inode) (iminor(inode) & 0xf)

static int ixjdebug;
--
1.5.6.4

2008-10-08 19:43:58

by Richard Holden

[permalink] [raw]
Subject: [PATCH 10/10] ixj: Remove dead code from ifdef IXJ_DYN_ALLOC.

There is no way to set IXJ_DYN_ALLOC from kernel config, remove dead code.

Signed-off-by: Richard A. Holden III <[email protected]>
---
drivers/telephony/ixj.c | 62 -----------------------------------------------
drivers/telephony/ixj.h | 4 ---
2 files changed, 0 insertions(+), 66 deletions(-)

diff --git a/drivers/telephony/ixj.c b/drivers/telephony/ixj.c
index e502f02..4218520 100644
--- a/drivers/telephony/ixj.c
+++ b/drivers/telephony/ixj.c
@@ -309,57 +309,6 @@ MODULE_DEVICE_TABLE(pci, ixj_pci_tbl);
*
************************************************************************/

-#ifdef IXJ_DYN_ALLOC
-
-static IXJ *ixj[IXJMAX];
-#define get_ixj(b) ixj[(b)]
-
-/*
- * Allocate a free IXJ device
- */
-
-static IXJ *ixj_alloc()
-{
- for(cnt=0; cnt<IXJMAX; cnt++)
- {
- if(ixj[cnt] == NULL || !ixj[cnt]->DSPbase)
- {
- j = kmalloc(sizeof(IXJ), GFP_KERNEL);
- if (j == NULL)
- return NULL;
- ixj[cnt] = j;
- return j;
- }
- }
- return NULL;
-}
-
-static void ixj_fsk_free(IXJ *j)
-{
- kfree(j->fskdata);
- j->fskdata = NULL;
-}
-
-static void ixj_fsk_alloc(IXJ *j)
-{
- if(!j->fskdata) {
- j->fskdata = kmalloc(8000, GFP_KERNEL);
- if (!j->fskdata) {
- if(ixjdebug & 0x0200) {
- printk("IXJ phone%d - allocate failed\n", j->board);
- }
- return;
- } else {
- j->fsksize = 8000;
- if(ixjdebug & 0x0200) {
- printk("IXJ phone%d - allocate succeded\n", j->board);
- }
- }
- }
-}
-
-#else
-
static IXJ ixj[IXJMAX];
#define get_ixj(b) (&ixj[(b)])

@@ -384,8 +333,6 @@ static inline void ixj_fsk_alloc(IXJ *j)
j->fsksize = 8000;
}

-#endif
-
#ifdef PERFMON_STATS
#define ixj_perfmon(x) ((x)++)
#else
@@ -7079,9 +7026,6 @@ static int ixj_selfprobe(IXJ *j)
j->ex_sig.bits.dtmf_ready = j->ex_sig.bits.hookstate = j->ex_sig.bits.flash = j->ex_sig.bits.pstn_ring =
j->ex_sig.bits.caller_id = j->ex_sig.bits.pstn_wink = j->ex_sig.bits.f0 = j->ex_sig.bits.f1 = j->ex_sig.bits.f2 =
j->ex_sig.bits.f3 = j->ex_sig.bits.fc0 = j->ex_sig.bits.fc1 = j->ex_sig.bits.fc2 = j->ex_sig.bits.fc3 = 1;
-#ifdef IXJ_DYN_ALLOC
- j->fskdata = NULL;
-#endif
j->fskdcnt = 0;
j->cidcw_wait = 0;

@@ -7405,12 +7349,6 @@ static void cleanup(void)
if (ixjdebug & 0x0002)
printk(KERN_INFO "IXJ: Releasing DSP address for /dev/phone%d\n", cnt);
release_region(j->DSPbase, 16);
-#ifdef IXJ_DYN_ALLOC
- if (ixjdebug & 0x0002)
- printk(KERN_INFO "IXJ: Freeing memory for /dev/phone%d\n", cnt);
- kfree(j);
- ixj[cnt] = NULL;
-#endif
}
}
if (ixjdebug & 0x0002)
diff --git a/drivers/telephony/ixj.h b/drivers/telephony/ixj.h
index 4c32a43..fe8c690 100644
--- a/drivers/telephony/ixj.h
+++ b/drivers/telephony/ixj.h
@@ -1307,11 +1307,7 @@ typedef struct {
unsigned long iscontrolready;
unsigned long iscontrolreadyfail;
unsigned long pstnstatecheck;
-#ifdef IXJ_DYN_ALLOC
- short *fskdata;
-#else
short fskdata[8000];
-#endif
int fsksize;
int fskdcnt;
} IXJ;
--
1.5.6.4

2008-10-08 19:43:27

by Richard Holden

[permalink] [raw]
Subject: [PATCH 08/10] ixj: update quickly readable comments to match the data initializations.

Signed-off-by: Richard A. Holden III <[email protected]>
---
drivers/telephony/ixj.c | 22 +++++++++++-----------
1 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/drivers/telephony/ixj.c b/drivers/telephony/ixj.c
index 3b1315f..3e19357 100644
--- a/drivers/telephony/ixj.c
+++ b/drivers/telephony/ixj.c
@@ -7794,7 +7794,7 @@ static void DAA_Coeff_US(IXJ *j)
j->daa_country = DAA_US;
zero_caller_id(j);

-/* Bytes for IM-filter part 1 (04): 0E,32,E2,2F,C2,5A,C0,00 */
+/* Bytes for IM-filter part 1 (04): 03,4B,5D,CD,24,C5,A0,00 */
j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[7] = 0x03;
j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[6] = 0x4B;
j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[5] = 0x5D;
@@ -7803,7 +7803,7 @@ static void DAA_Coeff_US(IXJ *j)
j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[2] = 0xC5;
j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[1] = 0xA0;
j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[0] = 0x00;
-/* Bytes for IM-filter part 2 (05): 72,85,00,0E,2B,3A,D0,08 */
+/* Bytes for IM-filter part 2 (05): 71,1A,00,0A,B5,33,E0,08 */
j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[7] = 0x71;
j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[6] = 0x1A;
j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[5] = 0x00;
@@ -7812,7 +7812,7 @@ static void DAA_Coeff_US(IXJ *j)
j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[2] = 0x33;
j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[1] = 0xE0;
j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[0] = 0x08;
-/* Bytes for FRX-filter (08): 03,8F,48,F2,8F,48,70,08 */
+/* Bytes for FRX-filter (08): 05,A3,72,34,3F,3B,30,08 */
j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[7] = 0x05;
j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[6] = 0xA3;
j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[5] = 0x72;
@@ -7821,7 +7821,7 @@ static void DAA_Coeff_US(IXJ *j)
j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[2] = 0x3B;
j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[1] = 0x30;
j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[0] = 0x08;
-/* Bytes for FRR-filter (07): 04,8F,38,7F,9B,EA,B0,08 */
+/* Bytes for FRR-filter (07): 05,87,F9,3E,32,DA,B0,08 */
j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[7] = 0x05;
j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[6] = 0x87;
j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[5] = 0xF9;
@@ -7830,17 +7830,17 @@ static void DAA_Coeff_US(IXJ *j)
j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[2] = 0xDA;
j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[1] = 0xB0;
j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[0] = 0x08;
-/* Bytes for AX-filter (0A): 16,55,DD,CA */
+/* Bytes for AX-filter (0A): 41,B5,DD,CA */
j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[3] = 0x41;
j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[2] = 0xB5;
j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[1] = 0xDD;
j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[0] = 0xCA;
-/* Bytes for AR-filter (09): 52,D3,11,42 */
+/* Bytes for AR-filter (09): 25,C7,10,D6 */
j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[3] = 0x25;
j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[2] = 0xC7;
j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[1] = 0x10;
j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[0] = 0xD6;
-/* Bytes for TH-filter part 1 (00): 00,42,48,81,B3,80,00,98 */
+/* Bytes for TH-filter part 1 (00): 00,42,48,81,A5,80,00,98 */
j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[7] = 0x00;
j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[6] = 0x42;
j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[5] = 0x48;
@@ -7849,7 +7849,7 @@ static void DAA_Coeff_US(IXJ *j)
j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[2] = 0x80;
j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[1] = 0x00;
j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[0] = 0x98;
-/* Bytes for TH-filter part 2 (01): 02,F2,33,A0,68,AB,8A,AD */
+/* Bytes for TH-filter part 2 (01): 02,A2,2B,B0,E8,AB,81,CC */
j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[7] = 0x02;
j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[6] = 0xA2;
j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[5] = 0x2B;
@@ -7858,7 +7858,7 @@ static void DAA_Coeff_US(IXJ *j)
j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[2] = 0xAB;
j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[1] = 0x81;
j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[0] = 0xCC;
-/* Bytes for TH-filter part 3 (02): 00,88,DA,54,A4,BA,2D,BB */
+/* Bytes for TH-filter part 3 (02): 00,88,D2,24,BA,A9,3B,A6 */
j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[7] = 0x00;
j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[6] = 0x88;
j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[5] = 0xD2;
@@ -8045,7 +8045,7 @@ static void DAA_Coeff_France(IXJ *j)
j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[2] = 0xAF;
j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[1] = 0xA0;
j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[0] = 0x00;
-/* Bytes for IM-filter part 2 (05): 67,CE,00,0C,22,33,E0,08 */
+/* Bytes for IM-filter part 2 (05): 67,CE,00,2C,22,33,E0,08 */
j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[7] = 0x67;
j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[6] = 0xCE;
j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[5] = 0x00;
@@ -8077,7 +8077,7 @@ static void DAA_Coeff_France(IXJ *j)
j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[2] = 0xB5;
j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[1] = 0xDD;
j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[0] = 0xCA;
-/* Bytes for AR-filter (09): 52,C7,10,D6 */
+/* Bytes for AR-filter (09): E2,C7,10,D6 */
j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[3] = 0xE2;
j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[2] = 0xC7;
j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[1] = 0x10;
--
1.5.6.4

2008-10-08 20:12:43

by Alan

[permalink] [raw]
Subject: Re: [PATCH 00/10] ixj: Cleanup dead and duplicate code

On Wed, 8 Oct 2008 14:41:35 -0600
"Richard A. Holden III" <[email protected]> wrote:

> Cleanup dead code and duplicate code to start simplifying the ixj
> driver, currently it is around 10000 lines long. This has been built,
> but I don't have the hardware to test, most changes were fairly
> mechanical.

It needs doing but you need to be very very careful and I don't think
this is a good idea to merge untested because if you misprogram the SLIC
you can blow the card up, permanently,magic smoke gone, dead, defunct.

It's one card where we really really don't want to make untested changes.

That said if you've got an old box with an ISA slot somewhere, and a
postal address you can have the old ISA card that Quicknet provided for
testing - contact me off list if you want it.

Alan