Index: dahdi-linux-2.4.0/drivers/dahdi/zaphfc.c =================================================================== --- dahdi-linux-2.4.0.orig/drivers/dahdi/zaphfc.c 2010-10-26 14:41:21.000000000 +0300 +++ dahdi-linux-2.4.0/drivers/dahdi/zaphfc.c 2010-10-26 14:50:14.000000000 +0300 @@ -617,7 +617,7 @@ } static int zthfc_startup(struct dahdi_span *span) { - struct dahdi_hfc *zthfc = span->pvt; + struct dahdi_hfc *zthfc = container_of(span, struct dahdi_hfc, span); struct hfc_card *hfctmp = zthfc->card; int alreadyrunning; @@ -663,6 +663,19 @@ return 0; } +static const struct dahdi_span_ops zaphfc_span_ops = { + .owner = THIS_MODULE, + .spanconfig = zthfc_spanconfig, + .chanconfig = zthfc_chanconfig, + .startup = zthfc_startup, + .shutdown = zthfc_shutdown, + .maint = zthfc_maint, + .rbsbits = zthfc_rbsbits, + .open = zthfc_open, + .close = zthfc_close, + .ioctl = zthfc_ioctl, +}; + static int zthfc_initialize(struct dahdi_hfc *zthfc) { struct hfc_card *hfctmp = zthfc->card; int i; @@ -676,15 +689,7 @@ sprintf(zthfc->span.desc, "HFC-S PCI A ISDN card %d [TE]", hfc_dev_count + 1); } - zthfc->span.spanconfig = zthfc_spanconfig; - zthfc->span.chanconfig = zthfc_chanconfig; - zthfc->span.startup = zthfc_startup; - zthfc->span.shutdown = zthfc_shutdown; - zthfc->span.maint = zthfc_maint; - zthfc->span.rbsbits = zthfc_rbsbits; - zthfc->span.open = zthfc_open; - zthfc->span.close = zthfc_close; - zthfc->span.ioctl = zthfc_ioctl; + zthfc->span.ops = &zaphfc_span_ops; zthfc->span.channels = 3; zthfc->span.chans = zthfc->_chans; @@ -695,7 +700,6 @@ zthfc->span.linecompat = DAHDI_CONFIG_AMI | DAHDI_CONFIG_CCS; // <--- this is really BS zthfc->span.offset = 0; init_waitqueue_head(&zthfc->span.maintq); - zthfc->span.pvt = zthfc; for (i = 0; i < zthfc->span.channels; i++) { memset(&(zthfc->chans[i]), 0x0, sizeof(struct dahdi_chan));