[dahdi-commits] dahdi/linux.git branch "master" updated.

SVN commits to the DAHDI project dahdi-commits at lists.digium.com
Wed May 8 10:48:54 CDT 2013


branch "master" has been updated
       via  4641d5b396bb35599b19b6653057513e7a8d61b1 (commit)
       via  f65299e8b2e6ffb0b07089759f8c4ff33a695c09 (commit)
       via  f4d9cbbfb15839334b512156d20403b8a986a913 (commit)
       via  a8788692a1b27858e609eae5add3a74e66580dce (commit)
      from  be904538c78b16f24dff0fab2af717695926ad80 (commit)

Summary of changes:
 Makefile                        |    6 +++-
 drivers/dahdi/dahdi-base.c      |   15 ++++++---
 drivers/dahdi/oct612x/Makefile  |   66 +++++++++++++++++----------------------
 drivers/dahdi/wct4xxp/Kbuild    |    2 +-
 drivers/dahdi/wct4xxp/base.c    |   60 ++++++++++++++++++++---------------
 drivers/dahdi/wct4xxp/vpm450m.c |   62 ++++++++++++++++++++++++++++++++++--
 drivers/dahdi/wct4xxp/vpm450m.h |    2 ++
 include/dahdi/kernel.h          |    4 ---
 8 files changed, 141 insertions(+), 76 deletions(-)


- Log -----------------------------------------------------------------
commit 4641d5b396bb35599b19b6653057513e7a8d61b1
Author: Shaun Ruffell <sruffell at digium.com>
Date:   Mon May 6 12:33:52 2013 -0500

    wct4xxp: Companding on VPM needs to be changed when switching linemodes.
    
    If a user switches linemode with sysfs, the VPM would never switch the
    companding mode to alaw, and the result would be extreme static on all channels
    of the span when the VPM is enabeld.
    
    Now if the deflaw of the span has changed when an echocan is created, the
    companding mode of the VPM channel is changed.
    
    Signed-off-by: Shaun Ruffell <sruffell at digium.com>

diff --git a/drivers/dahdi/wct4xxp/base.c b/drivers/dahdi/wct4xxp/base.c
index 2b7c4a1..1ed10b1 100644
--- a/drivers/dahdi/wct4xxp/base.c
+++ b/drivers/dahdi/wct4xxp/base.c
@@ -390,7 +390,7 @@ static inline bool is_pcie(const struct t4 *wc)
 
 static inline bool has_e1_span(const struct t4 *wc)
 {
-	return (wc->t1e1) != 0;
+	return (wc->t1e1 > 0);
 }
 
 static inline bool is_octal(const struct t4 *wc)
@@ -1121,6 +1121,7 @@ static int t4_echocan_create(struct dahdi_chan *chan,
 	int channel;
 	const struct dahdi_echocan_ops *ops;
 	const struct dahdi_echocan_features *features;
+	const bool alaw = (chan->span->deflaw == 2);
 
 	if (!vpmsupport || !wc->vpm)
 		return -ENODEV;
@@ -1141,19 +1142,19 @@ static int t4_echocan_create(struct dahdi_chan *chan,
 
 	channel = has_e1_span(wc) ? chan->chanpos : chan->chanpos + 4;
 
-	if (wc->vpm) {
-		if (is_octal(wc))
-			channel = channel << 3;
-		else
-			channel = channel << 2;
-		channel |= chan->span->offset;
-		if (debug & DEBUG_ECHOCAN)
-			dev_notice(&wc->dev->dev, "echocan: Card is %d, "
-				"Channel is %d, Span is %d, offset is %d "
-				"length %d\n", wc->num, chan->chanpos,
-				chan->span->offset, channel, ecp->tap_length);
-		vpm450m_setec(wc->vpm, channel, ecp->tap_length);
+	if (is_octal(wc))
+		channel = channel << 3;
+	else
+		channel = channel << 2;
+	channel |= chan->span->offset;
+	if (debug & DEBUG_ECHOCAN) {
+		dev_notice(&wc->dev->dev,
+			   "echocan: Card is %d, Channel is %d, Span is %d, offset is %d length %d\n",
+			   wc->num, chan->chanpos, chan->span->offset,
+			   channel, ecp->tap_length);
 	}
+	vpm450m_set_alaw_companding(wc->vpm, channel, alaw);
+	vpm450m_setec(wc->vpm, channel, ecp->tap_length);
 	return 0;
 }
 
@@ -1162,23 +1163,23 @@ static void echocan_free(struct dahdi_chan *chan, struct dahdi_echocan_state *ec
 	struct t4 *wc = chan->pvt;
 	int channel;
 
-	memset(ec, 0, sizeof(*ec));
+	if (!wc->vpm)
+		return;
 
+	memset(ec, 0, sizeof(*ec));
 	channel = has_e1_span(wc) ? chan->chanpos : chan->chanpos + 4;
 
-	if (wc->vpm) {
-		if (is_octal(wc))
-			channel = channel << 3;
-		else
-			channel = channel << 2;
-		channel |= chan->span->offset;
-		if (debug & DEBUG_ECHOCAN)
-			dev_notice(&wc->dev->dev, "echocan: Card is %d, "
-				"Channel is %d, Span is %d, offset is %d "
-				"length 0\n", wc->num, chan->chanpos,
-				chan->span->offset, channel);
-		vpm450m_setec(wc->vpm, channel, 0);
+	if (is_octal(wc))
+		channel = channel << 3;
+	else
+		channel = channel << 2;
+	channel |= chan->span->offset;
+	if (debug & DEBUG_ECHOCAN) {
+		dev_notice(&wc->dev->dev,
+			   "echocan: Card is %d, Channel is %d, Span is %d, offset is %d length 0\n",
+			   wc->num, chan->chanpos, chan->span->offset, channel);
 	}
+	vpm450m_setec(wc->vpm, channel, 0);
 }
 #endif
 
@@ -2225,6 +2226,7 @@ static int t4_set_linemode(struct dahdi_span *span, enum spantypes linemode)
 	int res = 0;
 	enum linemode mode;
 	const char *old_name;
+	static DEFINE_MUTEX(linemode_lock);
 
 	dev_dbg(&wc->dev->dev, "Setting '%s' to '%s'\n", span->name,
 		dahdi_spantype2str(linemode));
@@ -2232,22 +2234,27 @@ static int t4_set_linemode(struct dahdi_span *span, enum spantypes linemode)
 	if (span->spantype == linemode)
 		return 0;
 
+	/* Do not allow the t1e1 member to be changed by multiple threads. */
+	mutex_lock(&linemode_lock);
 	old_name = dahdi_spantype2str(span->spantype);
 	switch (linemode) {
 	case SPANTYPE_DIGITAL_T1:
 		dev_info(&wc->dev->dev,
 			 "Changing from %s to T1 line mode.\n", old_name);
 		mode = T1;
+		wc->t1e1 &= ~(1 << span->offset);
 		break;
 	case SPANTYPE_DIGITAL_E1:
 		dev_info(&wc->dev->dev,
 			 "Changing from %s to E1 line mode.\n", old_name);
 		mode = E1;
+		wc->t1e1 |= (1 << span->offset);
 		break;
 	case SPANTYPE_DIGITAL_J1:
 		dev_info(&wc->dev->dev,
 			 "Changing from %s to J1 line mode.\n", old_name);
 		mode = J1;
+		wc->t1e1 &= ~(1 << span->offset);
 		break;
 	default:
 		dev_err(&wc->dev->dev,
@@ -2261,6 +2268,7 @@ static int t4_set_linemode(struct dahdi_span *span, enum spantypes linemode)
 		dahdi_init_span(span);
 	}
 
+	mutex_unlock(&linemode_lock);
 	return res;
 }
 
diff --git a/drivers/dahdi/wct4xxp/vpm450m.c b/drivers/dahdi/wct4xxp/vpm450m.c
index f332f01..45d84fb 100644
--- a/drivers/dahdi/wct4xxp/vpm450m.c
+++ b/drivers/dahdi/wct4xxp/vpm450m.c
@@ -177,6 +177,7 @@ struct vpm450m {
 #define FLAG_DTMF	 (1 << 0)
 #define FLAG_MUTE	 (1 << 1)
 #define FLAG_ECHO	 (1 << 2)
+#define FLAG_ALAW	 (1 << 3)
 
 static unsigned int tones[] = {
 	SOUT_DTMF_1,
@@ -216,6 +217,50 @@ static unsigned int tones[] = {
 	ROUT_G168_1100GB_ON,
 };
 
+void vpm450m_set_alaw_companding(struct vpm450m *vpm450m, int channel,
+					bool alaw)
+{
+	tOCT6100_CHANNEL_MODIFY *modify;
+	UINT32 ulResult;
+	UINT32		law_to_use = (alaw) ? cOCT6100_PCM_A_LAW :
+					      cOCT6100_PCM_U_LAW;
+
+	if (channel >= ARRAY_SIZE(vpm450m->chanflags)) {
+		pr_err("Channel out of bounds in %s\n", __func__);
+		return;
+	}
+	/* If we're already in this companding mode, no need to do anything. */
+	if (alaw == ((vpm450m->chanflags[channel] & FLAG_ALAW) > 0))
+		return;
+
+	modify = kzalloc(sizeof(tOCT6100_CHANNEL_MODIFY), GFP_ATOMIC);
+	if (!modify) {
+		pr_notice("Unable to allocate memory for setec!\n");
+		return;
+	}
+
+	Oct6100ChannelModifyDef(modify);
+	modify->ulChannelHndl =		      vpm450m->aulEchoChanHndl[channel];
+	modify->fTdmConfigModified =		TRUE;
+	modify->TdmConfig.ulSinPcmLaw =		law_to_use;
+	modify->TdmConfig.ulRinPcmLaw =		law_to_use;
+	modify->TdmConfig.ulSoutPcmLaw =	law_to_use;
+	modify->TdmConfig.ulRoutPcmLaw =	law_to_use;
+	ulResult = Oct6100ChannelModify(vpm450m->pApiInstance, modify);
+	if (ulResult != GENERIC_OK) {
+		pr_notice("Failed to apply echo can changes on channel %d %d %08x!\n",
+			  vpm450m->aulEchoChanHndl[channel], channel, ulResult);
+	} else {
+		pr_info("Changed companding on channel %d to %s.\n", channel,
+			(alaw) ? "alaw" : "ulaw");
+		if (alaw)
+			vpm450m->chanflags[channel] |= FLAG_ALAW;
+		else
+			vpm450m->chanflags[channel] &= ~(FLAG_ALAW);
+	}
+	kfree(modify);
+}
+
 static void vpm450m_setecmode(struct vpm450m *vpm450m, int channel, int mode)
 {
 	tOCT6100_CHANNEL_MODIFY *modify;
@@ -248,6 +293,11 @@ void vpm450m_setdtmf(struct vpm450m *vpm450m, int channel, int detect, int mute)
 	tOCT6100_CHANNEL_MODIFY *modify;
 	UINT32 ulResult;
 
+	if (channel >= ARRAY_SIZE(vpm450m->chanflags)) {
+		pr_err("Channel out of bounds in %s\n", __func__);
+		return;
+	}
+
 	modify = kmalloc(sizeof(tOCT6100_CHANNEL_MODIFY), GFP_KERNEL);
 	if (!modify) {
 		printk(KERN_NOTICE "wct4xxp: Unable to allocate memory for setdtmf!\n");
@@ -286,6 +336,11 @@ void vpm450m_setdtmf(struct vpm450m *vpm450m, int channel, int detect, int mute)
 
 void vpm450m_setec(struct vpm450m *vpm450m, int channel, int eclen)
 {
+	if (channel >= ARRAY_SIZE(vpm450m->chanflags)) {
+		pr_err("Channel out of bounds in %s\n", __func__);
+		return;
+	}
+
 	if (eclen) {
 		vpm450m->chanflags[channel] |= FLAG_ECHO;
 		vpm450m_setecmode(vpm450m, channel, cOCT6100_ECHO_OP_MODE_HT_RESET);
@@ -524,10 +579,13 @@ struct vpm450m *init_vpm450m(void *wc, int *isalaw, int numspans, const struct f
 		 	*  therefore, the lower 2 bits tell us which span this 
 			*  timeslot/channel
 		 	*/
-			if (isalaw[x & mask])
+			if (isalaw[x & mask]) {
 				law = cOCT6100_PCM_A_LAW;
-			else
+				vpm450m->chanflags[x] |= FLAG_ALAW;
+			} else {
 				law = cOCT6100_PCM_U_LAW;
+				vpm450m->chanflags[x] &= ~(FLAG_ALAW);
+			}
 			Oct6100ChannelOpenDef(ChannelOpen);
 			ChannelOpen->pulChannelHndl = &vpm450m->aulEchoChanHndl[x];
 			ChannelOpen->ulUserChanId = x;
diff --git a/drivers/dahdi/wct4xxp/vpm450m.h b/drivers/dahdi/wct4xxp/vpm450m.h
index 735a2cc..adf4150 100644
--- a/drivers/dahdi/wct4xxp/vpm450m.h
+++ b/drivers/dahdi/wct4xxp/vpm450m.h
@@ -39,5 +39,7 @@ void vpm450m_setdtmf(struct vpm450m *instance, int channel, int dtmfdetect, int
 int vpm450m_checkirq(struct vpm450m *vpm450m);
 int vpm450m_getdtmf(struct vpm450m *vpm450m, int *channel, int *tone, int *start);
 void release_vpm450m(struct vpm450m *instance);
+void vpm450m_set_alaw_companding(struct vpm450m *vpm450m,
+				 int channel, bool alaw);
 
 #endif

commit f65299e8b2e6ffb0b07089759f8c4ff33a695c09
Author: Shaun Ruffell <sruffell at digium.com>
Date:   Thu Apr 4 14:39:15 2013 -0500

    oct612x: Break the oct612x out into a separate library.
    
    Soon there will be more than one driver in the source tree that will want to use
    these files. Compiling it as a library speeds the build since it won't have to
    be built for each driver that wants to link it in.
    
    Signed-off-by: Shaun Ruffell <sruffell at digium.com>
    Signed-off-by: Russ Meyerriecks <rmeyerriecks at digium.com>

diff --git a/Makefile b/Makefile
index 73a30b5..0b90ea9 100644
--- a/Makefile
+++ b/Makefile
@@ -86,7 +86,7 @@ include/dahdi/version.h: FORCE
 	fi
 	@rm -f $@.tmp
 
-prereq: include/dahdi/version.h firmware-loaders
+prereq: include/dahdi/version.h firmware-loaders oct612x-lib
 
 stackcheck: $(CHECKSTACK) modules
 	objdump -d drivers/dahdi/*.ko drivers/dahdi/*/*.ko | $(CHECKSTACK)
@@ -122,6 +122,9 @@ uninstall-firmware:
 firmware-loaders:
 	$(MAKE) -C drivers/dahdi/firmware firmware-loaders
 
+oct612x-lib:
+	$(MAKE) -C $(KSRC) M='$(PWD)/drivers/dahdi/oct612x'
+
 install-include:
 	for hdr in $(INST_HEADERS); do \
 		install -D -m 644 include/dahdi/$$hdr $(DESTDIR)/usr/include/dahdi/$$hdr; \
@@ -189,6 +192,7 @@ ifneq (no,$(HAS_KSRC))
 endif
 	@rm -f $(GENERATED_DOCS)
 	$(MAKE) -C drivers/dahdi/firmware clean
+	$(MAKE) -C $(KSRC) M='$(PWD)/drivers/dahdi/oct612x' clean
 
 distclean: dist-clean
 
diff --git a/drivers/dahdi/oct612x/Makefile b/drivers/dahdi/oct612x/Makefile
index e3e32e5..5d29143 100644
--- a/drivers/dahdi/oct612x/Makefile
+++ b/drivers/dahdi/oct612x/Makefile
@@ -1,38 +1,30 @@
-CFLAGS=-V3.4 -ffunction-sections -I/lib/modules/$(shell uname -r)/build/include -Iinclude -Ioctdeviceapi -Ioctdeviceapi/oct6100api -DGFP_ATOMIC=0 -Dkmalloc=calloc -Dkfree=free
-LDFLAGS=-V3.4 -Wl,-Map -Wl,test.map -Wl,--gc-sections
+#
+# Produces the oct612x library
+#
+octapi_files = octdeviceapi/oct6100api/oct6100_api/oct6100_adpcm_chan.o \
+		octdeviceapi/oct6100api/oct6100_api/oct6100_channel.o \
+		octdeviceapi/oct6100api/oct6100_api/oct6100_chip_open.o \
+		octdeviceapi/oct6100api/oct6100_api/oct6100_chip_stats.o \
+		octdeviceapi/oct6100api/oct6100_api/oct6100_conf_bridge.o \
+		octdeviceapi/oct6100api/oct6100_api/oct6100_debug.o \
+		octdeviceapi/oct6100api/oct6100_api/oct6100_events.o \
+		octdeviceapi/oct6100api/oct6100_api/oct6100_interrupts.o \
+		octdeviceapi/oct6100api/oct6100_api/oct6100_memory.o \
+		octdeviceapi/oct6100api/oct6100_api/oct6100_miscellaneous.o \
+		octdeviceapi/oct6100api/oct6100_api/oct6100_mixer.o \
+		octdeviceapi/oct6100api/oct6100_api/oct6100_phasing_tsst.o \
+		octdeviceapi/oct6100api/oct6100_api/oct6100_playout_buf.o \
+		octdeviceapi/oct6100api/oct6100_api/oct6100_remote_debug.o \
+		octdeviceapi/oct6100api/oct6100_api/oct6100_tlv.o \
+		octdeviceapi/oct6100api/oct6100_api/oct6100_tone_detection.o \
+		octdeviceapi/oct6100api/oct6100_api/oct6100_tsi_cnct.o \
+		octdeviceapi/oct6100api/oct6100_api/oct6100_tsst.o \
+		apilib/bt/octapi_bt0.o \
+		apilib/largmath/octapi_largmath.o \
+		apilib/llman/octapi_llman.o
 
-APIDIR=octdeviceapi/oct6100api/oct6100_api
-
-OCTASIC_OBJS=$(APIDIR)/oct6100_adpcm_chan.o \
-	    $(APIDIR)/oct6100_channel.o \
-	    $(APIDIR)/oct6100_chip_open.o \
-	    $(APIDIR)/oct6100_chip_stats.o \
-	    $(APIDIR)/oct6100_conf_bridge.o \
-	    $(APIDIR)/oct6100_debug.o \
-	    $(APIDIR)/oct6100_events.o \
-	    $(APIDIR)/oct6100_interrupts.o \
-	    $(APIDIR)/oct6100_memory.o \
-	    $(APIDIR)/oct6100_miscellaneous.o \
-	    $(APIDIR)/oct6100_mixer.o \
-	    $(APIDIR)/oct6100_phasing_tsst.o \
-	    $(APIDIR)/oct6100_playout_buf.o \
-	    $(APIDIR)/oct6100_remote_debug.o \
-	    $(APIDIR)/oct6100_tlv.o \
-	    $(APIDIR)/oct6100_tone_detection.o \
-	    $(APIDIR)/oct6100_tsi_cnct.o \
-	    $(APIDIR)/oct6100_tsst.o \
-	    $(APIDIR)/oct6100_user.o \
-	    apilib/bt/octapi_bt0.o \
-	    apilib/largmath/octapi_largmath.o \
-	    apilib/llman/octapi_llman.o
-
-
-all: test
-
-test.o: test.c
-
-test: test.o $(OCTASIC_OBJS)
-
-clean:
-	rm -rf test test.o
-	rm -rf $(OCTASIC_OBJS)
+# TODO: ccflags was added in 2.6.24 in commit f77bf01425b11947eeb3b5b54. This
+# should be changed to a conditional compilation based on the Kernel Version.
+# ccflags-y := -I$(src)/.. -Wno-undef -I$(src)/include -I$(src)/octdeviceapi -I$(src)/octdeviceapi/oct6100api
+EXTRA_CFLAGS = -I$(src)/.. -Wno-undef -I$(src)/include -I$(src)/octdeviceapi -I$(src)/octdeviceapi/oct6100api
+lib-y := $(octapi_files)
diff --git a/drivers/dahdi/wct4xxp/Kbuild b/drivers/dahdi/wct4xxp/Kbuild
index 23e1fa9..4c65d91 100644
--- a/drivers/dahdi/wct4xxp/Kbuild
+++ b/drivers/dahdi/wct4xxp/Kbuild
@@ -14,7 +14,7 @@ ifeq ($(HOTPLUG_FIRMWARE),yes)
   EXTRA_CFLAGS+=-DHOTPLUG_FIRMWARE
 endif
 
-wct4xxp-objs := base.o vpm450m.o $(shell $(src)/../oct612x/octasic-helper objects ../oct612x)
+wct4xxp-objs := base.o vpm450m.o ../oct612x/lib.a
 
 ifneq ($(HOTPLUG_FIRMWARE),yes)
 wct4xxp-objs += $(FIRM_DIR)/dahdi-fw-oct6114-064.o $(FIRM_DIR)/dahdi-fw-oct6114-128.o $(FIRM_DIR)/dahdi-fw-oct6114-256.o

commit f4d9cbbfb15839334b512156d20403b8a986a913
Author: Shaun Ruffell <sruffell at digium.com>
Date:   Thu Apr 4 14:42:52 2013 -0500

    dahdi: Save the current maintstat in the span before calling into the drivers.
    
    Some of the card callbacks needed maintstat set when processing loopup codes
    from the remote side. This change is a modification of commit: (6c02c3c
    "dahdi-base: Minor maint mode error")
    
    Without this change cetain cards would not properly process the loopup /
    loopdown codes (I know I should have more specific information here but the
    details escape me at the moment).
    
    Signed-off-by: Shaun Ruffell <sruffell at digium.com>

diff --git a/drivers/dahdi/dahdi-base.c b/drivers/dahdi/dahdi-base.c
index f73fd01..a3540d1 100644
--- a/drivers/dahdi/dahdi-base.c
+++ b/drivers/dahdi/dahdi-base.c
@@ -5366,7 +5366,8 @@ static int dahdi_ioctl_maint(unsigned long data)
 	spin_lock_irqsave(&s->lock, flags);
 	  /* save current maint state */
 	i = s->maintstat;
-
+	  /* set maint mode */
+	s->maintstat = maint.command;
 	switch (maint.command) {
 	case DAHDI_MAINT_NONE:
 	case DAHDI_MAINT_LOCALLOOP:
@@ -5379,6 +5380,8 @@ static int dahdi_ioctl_maint(unsigned long data)
 		spin_unlock_irqrestore(&s->lock, flags);
 		if (rv) {
 			put_span(s);
+			/* Restore the state on error */
+			s->maintstat = i;
 			return rv;
 		}
 		spin_lock_irqsave(&s->lock, flags);
@@ -5390,6 +5393,8 @@ static int dahdi_ioctl_maint(unsigned long data)
 		spin_unlock_irqrestore(&s->lock, flags);
 		if (rv) {
 			put_span(s);
+			/* Restore the state on error */
+			s->maintstat = i;
 			return rv;
 		}
 		spin_lock_irqsave(&s->lock, flags);
@@ -5413,6 +5418,8 @@ static int dahdi_ioctl_maint(unsigned long data)
 		spin_unlock_irqrestore(&s->lock, flags);
 		if (rv) {
 			put_span(s);
+			/* Restore the state on error */
+			s->maintstat = i;
 			return rv;
 		}
 		spin_lock_irqsave(&s->lock, flags);
@@ -5423,12 +5430,10 @@ static int dahdi_ioctl_maint(unsigned long data)
 			      "Unknown maintenance event: %d\n",
 			      maint.command);
 		put_span(s);
+		/* Restore the state on error */
+		s->maintstat = i;
 		return -ENOSYS;
 	}
-
-	/* set maint mode */
-	s->maintstat = maint.command;
-
 	dahdi_alarm_notify(s);  /* process alarm-related events */
 	spin_unlock_irqrestore(&s->lock, flags);
 	put_span(s);

commit a8788692a1b27858e609eae5add3a74e66580dce
Author: Russ Meyerriecks <rmeyerriecks at digium.com>
Date:   Thu Apr 4 14:33:17 2013 -0500

    dahdi: Do not define trace_printk if CONFIG_TRACING is not defined.
    
    This was an accidental commit that slipped in as part of (a682401 "dahdi: Expose
    dahdi devices in sysfs.")
    
    Signed-off-by: Russ Meyerriecks <rmeyerriecks at digium.com>
    Signed-off-by: Shaun Ruffell <sruffell at digium.com>

diff --git a/include/dahdi/kernel.h b/include/dahdi/kernel.h
index b3e6ce8..fca8ec1 100644
--- a/include/dahdi/kernel.h
+++ b/include/dahdi/kernel.h
@@ -1457,10 +1457,6 @@ static inline int strcasecmp(const char *s1, const char *s2)
 #endif /* 2.6.26 */
 #endif /* 2.6.31 */
 
-#ifndef CONFIG_TRACING
-#define trace_printk printk
-#endif
-
 #ifndef DEFINE_SPINLOCK
 #define DEFINE_SPINLOCK(x)      spinlock_t x = SPIN_LOCK_UNLOCKED
 #endif

-----------------------------------------------------------------------


-- 
dahdi/linux.git



More information about the dahdi-commits mailing list