Terid i an Semiconductor Corpor ation makes no warrant y for the use of i ts pr oducts, other than expr essly
contained in the Company’s warranty detailed in the Teridian Semiconduct or C or poration standard Terms
and C onditi ons. The company assumes no respon sibility for any errors which may appear in this
document, reserves the right to change devices or specifi cations detailed herein at any tim e without
notice and does not make any co mm i tment to update the information contained herein. Accordingly, the
reader is cautioned to veri fy that th i s document is curren t by compari ng it to th e l atest version on
http://w w w. teridian.com or by checking with your sales represen tative .
Teridian Semiconductor Corp., 6440 Oak Can yon, Suite 100, Irvine, CA 92618
TEL (714) 508-8800, FAX (714) 508-8877, http://www.teridian.com
2 Rev. 1.0
Page 3
UG_1x22_053 73M1822/73M1922 Control Module User Guide
8 Driver Source and Include Files .................................................................................................. 83
9 Related Documentation ............................................................................................................... 84
10 Contact Information ..................................................................................................................... 84
Appendix A – Country Codes.............................................................................................................. 85
Revision History .................................................................................................................................. 86
Rev. 1.0 5
Page 6
73M1822/73M1922 Control Module User Guide UG_1x22_053
Figures
Figure 1: General Dr iver Architecture ....................................................................................................... 8
Figure 2: Driver Function al B lock Diag ram ............................................................................................... 9
Tables
Table 1: Summary of Initializati on IO C TLs ............................................................................................. 21
Table 2: Modem Line Statu s Services .................................................................................................... 29
Table 3: Modem Hook Switch C ontrol Services ...................................................................................... 35
Table 4: Call ID Services ....................................................................................................................... 43
Table 5: Rin g Detection Services ........................................................................................................... 46
Table 6: Line St ate Analysi s Services .................................................................................................... 48
Table 7: Driver Source Code Fil es ......................................................................................................... 83
Table 8: Country Code Table ................................................................................................................. 85
6 Rev. 1.0
Page 7
UG_1x22_053 73M1822/73M1922 Control Module User Guide
1 Introduction
This document describes the capabilities of the 73M1822/73M1922 Contr ol Module. This driver software
is p r ovided for use and integrat ion by Teridian cust omers on their individual platforms. The intention of
this C ontrol M odule is to provide a custom izable framework that is independent of pr ocessor and
operat ing sy stem .
Thr o ughout this do cument the 73M1x22 Reference Device Driver will be simply referred t o as “driver” or
“device dri ver”. The 73M1822 and 73M1922 will be collectively refer r ed to as the 73M1x22.
1.1 Purpose and Scope
The 73M1x22 Control Module provides the necessary system interfaces for t he con trol and management
of the 73M1x22. Th e driver supp or ts API ca l ls from the app licati on and transl ates these to and from the
device. The driver c an be used as is, in whole or in par t, or cust om ized to accommodate a customer’s
unique environment.
The scope of this document includes discussion of driver’s architecture and design, interface to the user
app l ication, the driver intern al state machine, and the interface to the 73M1x22 hardware module.
The dri ver model is intended to be independent of processor and operating system. Layers above the
Control Module ad dress software int er faces whi ch may pre-exist for a given appli cation and the layer
below addresses h ar dware related inter faces between the processo r and the 73M1x22 devices.
1.2 Conventions Used in this Guide
This document uses the following conventions:
• Software code, IOCTL names, m odem events, data typ es, and Linux® com mands are presen ted in
Couri er font .
• A table with a blue header is a summary tabl e. A t able with a gray header is a detail table.
1.3 Acronyms
MAFE – Modem Analog Front End
DAA – Data A ccess Arrangement
IOCTL – I/O Control
ISR – Interrupt Service Routine
BSP – Board Support Package
GPIO – General Purpose Input/Output
POH – Phone Off Hook
NOPOH – No P hone Off Hook
APOH – Another Phone Off Hook
Rev. 1.0 7
Page 8
73M1822/73M1922 Control Module User Guide UG_1x22_053
User Application
API Translation Layer
(Application speciffic)
API
Teridian 73M1x22 Control Module
IOCTL
Teridian 73M1x22 Hardware Module
User Soft Modem
2 Overview
2.1 Driver Archite ctur e
The dri ver provides a framework by wh i ch applica tions can leverage th e featu r es of the chipset. The
main interface of th e driver ( IOCTLs) provides an abstract ion layer for monitori ng and control of the
device status. Figure 1 depicts the general driver architecture.
Device status is analyzed and processe d by an independently running process based on predefined
algori thms. When an event or an even sequ ence is r ecogn i zed, the driver posts the correspond ing event
to be r etrieved by the user appl i cation. Figure 2 depi cts the dr i ver functiona l block diagram.
Figure 1: General Driver Architecture
8 Rev. 1.0
Page 9
UG_1x22_053 73M1822/73M1922 Control Module User Guide
Teridian 73M1x22 Hardware Module
73M1x22 Control Module
User Application Software
IOCTLs
73M1x22 Chip Set
State Processor
Timers
MAFEISR
Events
OS/BSP
Figure 2: Driver Functional Block Diagram
The dri ver provides an interface to user appli cation thr ough the I OCTL and Events interface. Through this
interface, the user applicat i on communica tes with the dr iver via a standard device in terface (open, close,
select, ioctl function s). Using this in terface the applicat i on will b e able to co ntrol the operat ion of the
device and t o r etrieve the status of the modem l i ne. Section 6 descri bes t he details of thi s interface.
The 73M1x22 driver is built as a Linux loadable module (for Linux) or integrated with the operating system
kernel. It will be brought into operation by a u ser applicat ion or b y an operat ing sy stem start up script.
For Linux, the insmod command i s used to insert the driver into the kernel. The insmod command
invokes the module_init() macro, which in turn runs the one-tim e initiali zation function of the d r iver.
Befor e exiting t he initializat i on the driver enters its main operational st ate via the scheduli ng of one of
many timer s that m ake up the driver’s main processing.
2.2 Functional Overv ie w
Once instal led, the driver is a sel f-contained module running independent l y along wit h the ker nel
processes. Its main purp ose is to monitor the modem line for vari ous conditions, generates appropriated
event when they occur, and to pr ovide access to the 73M1x22 d evice for managem ent purposes, via
standard driver access meth ods such as open, close, select, ioctl, etc. Th e fol l owing secti ons
provide an overview of that functionality.
Rev. 1.0 9
Page 10
73M1822/73M1922 Control Module User Guide UG_1x22_053
2.2.1 Event Generation
During operation the driver constantly monitors the line for the following conditions:
1. APO H condition.
2. Transi tion back to no APOH condit ion (NOPOH).
3. Ring start detection.
4. End of Ring co ndition.
5. Batter y disconnected conditi on.
6. Batter y restored condit i on.
7. Polarity reve r sal conditi on.
8. Line State condition – mon itoring of voltage and current.
9. Synchronization l oss condit ion.
10. Synchroni zation recovered event.
11. Over vol t a g e, Over current, or O ver load co ndition.
12. Pul se dial complete event.
13. Pul se dial aborted event.
Section 5provides detail descripti ons of each event.
If any o f these cond i tions occu r the driver creates an event ent r y in th e event queue and not ifies the
app l ication layer via file descriptor ready mechanism (or via file descr i ptor select() function). Upon
receiving this “wakeup ” notification , th e application can then test the file descriptor “r eady” statu s with the
FD_ISSET macr o to confi r m, and th en r etrieve t he event from the driver via I OCTL event get command.
2.2.2 Modem Channel Configuration and Management
Configuration of the modem parameters and other management command such as hook swi tch operation
are done via standar d device driver IOCTLs. The 73M1x22 Reference Driver provides an extended list of
IOCTLs for this purpose. The IOCTL command descriptions in Section 6 provide details of how they
work.
2.2.3 Line State Analysis via Current and Voltage Measurements
The 73M1x22 Contr ol M odule can be programmed to provide extended line status information and line
monitoring cap ability. The driver operates autonomou sly, under the application layer control, to d etect line
condition specified in pre-set criteria and automat i cally report status change. This alleviates the burden of
constant pollin g from the applicat i on layer. The line statu s consists of the line voltage and line cu r r ent
measurem ents. Each measurement ent i ty is oper ated independen tly as described be low.
2.2.3.1 Interval and Even Table
The Interval and Event Table (IET) is a table that consists of mult iple rows of the following information:
1. Row number.
2. Lower bound threshold.
3. Upper bound threshold.
4. Appli cation defined event.
The application is r esponsible for building up the IET using the IET table update IOCTL –
M1X22_MEASURE_UPDATE. This IO CTL can be used t o create/update or to read back the curren t table
entr y (see Sect ion 6.6.3 for d etails).
10 Rev. 1.0
Page 11
UG_1x22_053 73M1822/73M1922 Control Module User Guide
2.2.3.2 Measurement Procedure
The dri ver is responsible for reading the raw value required at a given sample rate f r om the device. Th e
result is co m puted and averaged ove r a speci fied number of those previously read values, and then
compare to the interval an d event table (IET) described b el ow. Based on these comparisons dedicated
events may be sent to the application.
The dri ver com pares the calculat ed average of the reading value with the lower and upp er bound
thr eshold in each IET table entry. If the value falls in between the r anges and it is the first transition into
these new ranges the specific applica tion defined event (4) will be se nt t o the application. The lower and
upp er bound ranges ar e expressed in milliamps for curr ent intensi ty, or in volts for line voltage.
2.2.3.3 Management of the Procedure
Controllin g the operat ion of this curr ent/ voltage measur ement is exclusivel y done b y t he application layer.
The application layer uses the M1X22_MEASURE_START and M1X22_MEASURE_STOP to st ar t and stop
the m easurement , resp ectively. The sim ply stops the measurement and requires no additional
parameter, wh ile M1X22_MEASURE_START starts the measuring pr ocess and it consists of two
parameters:
1. Sample tim e i nterval.
2. Averag e sample cou nt.
The sample t ime interval is the t ime interval between tw o consecuti ve reading sam ples exp r essed in
mil l isecon ds, and the aver age sample co unt is the number of reading sa m ples to be used for aver age
calculation. An y one of these parameters can be ZERO in dicates a no ch ange. The application layer can
adjust one or both param eters an ytime using M1X22_MEASURE_START.
2.2.3.4 Even Handling
The dri ver emits the M1X22_LINE_STATE event when line state condition changes from on e inter val to
another. Th e appli cation is expected to recei ve the notification and can request for the event from the
driver using the M1X22_GET_EVENT IOCTL. Refer to Section 5 for details on how to get n otified and to
retrieve the event from the driver’s queue. The following supporting data will accompany the line state
event:
1. Th e state of th e modem chann el – on or off-hook.
2. Line current or line voltage.
3. IET row index.
4. Appli cation defined event.
2.2.4 GPIO Support
Four General Purpose I/O pins ( GPIOs) pins can be managed independentl y and used for carrying i nput
or out put signal t o and from the 73M1x22 device. If used as input, signal transition on the pin can be
detected and tri gger in terrupt to the host CP U . The dr i ver provides the ability to p r ogram each GPIO pin
as in put or output port, the abil ity to read and write dat a to th e GPIO pin as well as generating interrupt
event correspond the signal transition. Section 6.7 describes the GP IO related IOCTL.
Note: The GPIO feature exists only on cert ai n 73M1x22 device packages.
Rev. 1.0 11
Page 12
73M1822/73M1922 Control Module User Guide UG_1x22_053
2.2.5 Loopback and Testing Modes
The 1x22 devices supp or t several variations of loopback modes. R efer to th e “ Loopback and Testin g
Modes” section of th e 73M1822/ 73 M 19 22 Data Sh ee t for more det ai l. Each loopback mode is designed
to test con n ectivity at vari ous p oints in th e system. Systematically u se of the loopback featur e i n
conj uncti on with ext er nal application that contr ol data stream in and out of th e system can be an effective
tool t o i solate faul ts. While th e driver pr ovides IOCTLs to manage those loopback test poi nts, i t does not
have a way to inject or intercept d ata flow through the sy stem to perform diagnosti c. It relies on exter nal
app l ication for th ose capabilities. Th e IOCTL for managing the loopback can be found in Sectio n 6. 8.1.
2.2.6 Call Progress Monitor
The 1x22 device provides the ab ility to moni tor activity on the li ne via feature call ed the Call Progress
Monitor. The gain se tting of its audio path can be adjusted using th e M1X22_CPROG_MONITOR IOCTL
detailed in Secti o n 6.9.3. F or m or e detail on this subject, refer to the “Call P r ogress Moni tor” section of
the 73M1822/73M1922 Data Sheet.
2.2.7 Billing Tone Filter
Some countries u se a large ampl i tude out-of-band tone t o measure call duration and to allow r emote
central office s to d etermi ne the durat i on of a call for bil l ing purposes. To avoid saturation and distor tion of
the input caused by these tones, it is im portant to be able to rej ect them. These freq uencies are typically
12 kHz and 16 kHz. Refer to section “Billing Tone Rejection” i n the 73M1822/ 73 M 19 22 D ata Sheet for
more detail.
To enable or di sable the billin g tone filter, t he dri ver offers the M1X22_BTONE_FILTER IOCTL. Its
description can be found in Section 6.9.2.
12 Rev. 1.0
Page 13
UG_1x22_053 73M1822/73M1922 Control Module User Guide
3 Driver Service Interface
The Driver Ser vice p r ovides the li nk b etween the modem device and th e user application. Fir st, the driver
must be loaded and bound in to the op er ating system environment before t his se r vice can be provided .
Acce ss to the driver is done via two file descrip tors – the device and channel file descript or s. The device
file descriptor provides access to devi ce leve l management interface wh i le the chan nel descriptor is use d
to m anage at the channel level interface. The driver suppor ts multiple modem channels through
separated channel descriptor s; however, only one d evice d escrip tor is used.
The following sections describe how the driver is brought into action based on the operating system
environment.
3.1 Linux Operating System
This description is valid for Linux 2.4 and 2.6. The 73M1x22 driver takes the form of a Linux standard
character d evice d r iver. It is brought into operation by a user app lication or by Linux startup script using
the
insmod command. This command inse r ts the dri ver module in to th e kernel wh i ch in turn registers
with the kernel using the defaul t major n umber of 251. Multiple modem chann els are supported via the
use of minor number wh ich ca n varies from 0 to 16. This minor number associated with th e device an d
channel descrip tors created using m knod command. Th e driver expects the minor num ber 0 to be
associ ated with the device descriptor and t he number from 1 to 16 with the channel descriptors. Device
major and mi nor num bers are co nfigurable at build tim e as described in Section 8.2.
The device and channel descriptors ca n be creat ed in the /dev directory at the sa me tim e wh en the
driver is insmod into the kernel. The mknod command is used to create th ose descriptors as illustrated
below:
mknod -m 660 /dev/tsc_1x22_ctl_device c 251 0
mknod -m 660 /de v/tsc_1x22_ctl_ cha nne l c 251 1
In this exam ple, one device descri ptor (tsc_1x22_ctl_device) is created with major number 251,
minor number 0, and one channel descrip tor (tsc_1x22_ctl_channel) is cr eated with major number
251 , minor num ber 1. The minor number base (0 ) can b e changed ( see the compile time configurable
parameter in Section 8.2).
Once the dr iver is installed and the device/chann el descriptors are creat ed, t he dri ver service ca n be
accessed via stan dard C l ibrary
functions.
The following ill ustr ates how t he device and channel ar e opened, closed, and the IOCTL access:
devfd = open("/dev/tsc_1x22_ctl_device", O_RDONLY|O_WRONLY);
chanfd = open (“/ dev /ts c_1x22_ctl_chan nel ”, O_R DONLY|O_WRONLY) ;
ioctl (devfd, M1X22_EVENT _GET, &event_struc tur e);
ioctl (chanfd, M1X22_ATH1, NULL);
close (devfd);
close (chanfd);
Accessing the driver using IOCTL must be done via an opened descriptor. There are two types of IOCTL
commands – the device level commands, which can be accessed by an opened device descriptor, and
channel l evel command s, which can be accessed using an opened chann el descriptor. Secti on 6
describes the IOCTL commands.
3.2 Other Operating Systems
open(), and subsequently with select(),close(),and ioctl()
To be provided.
Rev. 1.0 13
Page 14
73M1822/73M1922 Control Module User Guide UG_1x22_053
4 Country Specific Settings
The 73M1x22 Control Module su pports global com pliance parameters for each DAA d evice it manag es.
When select ed for a specific co untry code using M1X22_CH_INIT, the followin g predefined parameters
will be applied:
1. AC terminati on imp edance – AC imped ance register value.
2. DC termination mask – DC mask value.
3. Ring Detection – Ring detection threshold value.
4. Automatic CID Enable – Automatically en ter CID state when on hook.
5. U se Seize Stat e – If set, the driver enter seize state for 350 ms b efore setting ENNOM (ref er to the
73M1822/73M1922 Data Sheet for a detailed explan ation of the seize state).
These p ar ameters are defin ed in the Country Code Parameter files ( tsc_1x22_ctl_cntry_tbl.c)
and can be changed as required. The list of the co untry codes support ed can b e found in Appendix A.
14 Rev. 1.0
Page 15
UG_1x22_053 73M1822/73M1922 Control Module User Guide
unsigned int
event_id
unsigned int
channel_id
unsigned int
event_cnt
unsigned int
event_data1
unsigned int
event_data2
unsigned int
event_data3
unsigned int
event_data4
5 Modem Events
The dri ver provides event service to the high level application by maintaining a FIFO queue of event
structures, M1X22_MDM_EVENT_t. Events are created by the dri ver to reflect various cond ition s as
described in Section 5.2. Once created, this new even t is added to the FIFO queue an d the driver not ifies
the application layer via file descriptor status chang e mechanism. This in tu r n trigger s the application to
request for t he even t via th e M1X22_EVENT_GET IOCTL . Upon r etrieval, each even t struct ure is removed
from t he FIFO queue after its inform ation i s conveyed to the hi gh level application.
To receive this modem even t not ification th e application must r egister for file descriptor status change
usi ng the standard UNIX select() function. When this function retu r ns the m odem event availabi lity
status will r eflect i n the file descriptor parameter. The FD_ISSET macro can be used for checking the
status, and if available, the application can request for the event using M1X22_EVENT_GET.
5.1 M1X22_MDM_EVENT_t
Description
Thi s str uct ur e is used by M1X22_EVENT_GET to retrieve an e vent from the event queue. The event
structure consists of event ID indentifying the event, the channel ID identifying the modem channel where
the event was generated, the number of remai ning events in th e queue, and up to four event data that
carries additional i nformation pertaining to that sp ecific event.
Prototype
typedef struct {
unsigned int event_id; /* Event ID */
unsigned int channel_id; /* Channel ID */
unsigned int event_cnt; /* number of remaining queued events */
unsigned int event_data1; /* additional data 1 */
unsigned int event_data2; /* additional data 2 */
unsigned int event_data3; /* additional data 3 */
unsigned int event_data4; /* additional data 4 */
}
M1X22_MDM_EVENT_t;
Parameters
Data T ype Name Description
Event ID (see Section 5.2).
Channel ID.
Number of events that remain in the queue.
Event data 1.
Event data 2.
Event data 3.
Event data 4.
Rev. 1.0 15
Page 16
73M1822/73M1922 Control Module User Guide UG_1x22_053
M1X22_BATTERY_DROPPED
unsigned int
channel_id
unsigned int
event_cnt
unsigned int
event_data1
unsigned int
event_data2
unsigned int
event_data3
unsigned int
event_data4
unsigned int
event_id
M1X22_BATTERY_FEEDED
unsigned int
channel_id
unsigned int
event_cnt
unsigned int
event_data1
unsigned int
event_data2
unsigned int
event_data3
unsigned int
event_data4
unsigned int
event_id
M1X22_APOH_DETECT
unsigned int
channel_id
unsigned int
event_cnt
unsigned int
event_data1
unsigned int
event_data2
unsigned int
event_data3
unsigned int
event_data4
5.2 Event Identification
5.2.1 M1X22_BATTERY_DROPPED
This event occurs wh en the modem line is di sconnected from the telephone n etwork.
Parameters
Data T ype Name Description
unsigned int event_id
Channel ID.
Number of events that remain in the queue.
N/A.
N/A.
N/A.
N/A.
5.2.2 M1X22_BATTERY_FEEDED
This event is generated when the lin e is conn ected to the telephone network and the voltage is restored
to nor mal op er ating level.
Parameters
.
Data T ype Name Description
Channel ID.
Number of even ts that remain in the queue.
N/A.
N/A.
N/A.
N/A.
5.2.3 M1X22_APOH_DETECT
This event is gen er ated when a parallel phone goes off hook.
Parameters
Data Type Name Description
Channel ID.
Number of events that remain in the queue.
N/A.
N/A.
N/A.
N/A.
.
.
16 Rev. 1.0
Page 17
UG_1x22_053 73M1822/73M1922 Control Module User Guide
unsigned int
event_id
M1X22_NOPOH_DETECT
unsigned int
channel_id
unsigned int
event_cnt
unsigned int
event_data1
unsigned int
event_data2
unsigned int
event_data3
unsigned int
event_data4
unsigned int
event_id
M1X22_POLARITY_CHG
unsigned int
channel_id
unsigned int
event_cnt
unsigned int
event_data1
unsigned int
event_data2
unsigned int
event_data3
unsigned int
event_data4
unsigned int
event_id
M1X22_RING_DETECT
unsigned int
channel_id
unsigned int
event_cnt
unsigned int
event_data1
unsigned int
event_data2
unsigned int
event_data3
unsigned int
event_data4
5.2.4 M1X22_NOPOH_DETECT
This event is gen er ated when a parallel phone goes on h ook.
Parameters
Data T ype Name Description
.
Channel ID.
Number of events that remain in the queue.
N/A.
N/A.
N/A.
N/A.
5.2.5 M1X22_POLARITY_CHG
This event is gen er ated when th er e is a voltag e r eversal occurs on th e line.
Parameters
Data T ype Name Description
.
Channel ID.
Number of events that remain in the queue.
N/A.
N/A.
N/A.
N/A.
5.2.6 M1X22_RING_DETECT
This event is generated at the beginning of the ring burst.
Parameters
Data T ype Name Description
Rev. 1.0 17
.
Channel ID.
Number of events that remain in the queue.
Ring burst frequency (in Hz)
N/A.
N/A.
N/A.
Page 18
73M1822/73M1922 Control Module User Guide UG_1x22_053
unsigned int
event_id
M1X22_RING_DETECT_END
unsigned int
channel_id
unsigned int
event_cnt
unsigned int
event_data1
unsigned int
event_data2
unsigned int
event_data3
unsigned int
event_data4
unsigned int
event_id
M1X22_SYNC_LOSS_DETECT
unsigned int
channel_id
unsigned int
event_cnt
unsigned int
event_data1
unsigned int
event_data2
unsigned int
event_data3
unsigned int
event_data4
unsigned int
event_id
M1X22_OV_DETECT
unsigned int
channel_id
unsigned int
event_cnt
unsigned int
event_data1
unsigned int
event_data2
unsigned int
event_data3
unsigned int
event_data4
5.2.7 M1X22_RING_DETECT_END
This event is generated when the driver detects the end of the ring burst.
Parameters
Data T ype Name Description
.
Channel ID.
Number of events that remain in the queue.
Ring burst frequency (in Hz)
Ring bur st dura ti o n (i n ms)
N/A.
N/A.
5.2.8 M1X22_SYNC_LOSS_DETECT
This event is gen er ated when th e dr i ver detects the failur e of synchronization acr oss the barrier p ath.
Parameters
Data T ype Name Description
.
Channel ID.
Number of events that remain in the queue.
N/A.
N/A.
N/A.
N/A.
5.2.9 M1X22_OV_DETECT
This event is gen er ated on detect ion of an over voltage lin e condition.
Parameters
Data T ype Name Description
18 Rev. 1.0
.
Channel ID.
Number of events that remain in the queue.
N/A.
N/A.
N/A.
N/A.
Page 19
UG_1x22_053 73M1822/73M1922 Control Module User Guide
unsigned int
event_id
M1X22_OI_DETECT
unsigned int
channel_id
unsigned int
event_cnt
unsigned int
event_data1
unsigned int
event_data2
unsigned int
event_data3
unsigned int
event_data4
unsigned int
event_id
M1X22_LINE_STATE
unsigned int
channel_id
unsigned int
event_cnt
M1X22_OFF_HOOK
M1X22_CURRENT
unsigned int
event_data3
unsigned int
event_data4
unsigned int
event_id
M1X22_DIAL_COMPLETE.
unsigned int
channel_id
unsigned int
event_cnt
unsigned int
event_data1
unsigned int
event_data2
unsigned int
event_data3
unsigned int
event_data4
5.2.10 M1X22_OI_DETECT
This event is gen er ated on detect ion of an over curr ent li ne con diti on.
Parameters
Data T ype Name Description
.
Channel ID.
Number of events that remain in the queue.
N/A.
N/A.
N/A.
N/A.
5.2.11 M1X22_LINE_STATE
This event is gen er ated when th e line state analysis process detects a chan ge in the state of t he lin e.
The lin e state analysis process will monitor (und er user con trol) the line current and/ or voltage in both On
and off hook st ates. Th i s event indicat es that either the user has requested the current li ne state or one
of the programm able threshold states has b ecome active or non active.
Parameters
Data T ype Name Description
.
Channel ID.
Number of events that remain in the queue.
unsigned int event_data1
unsigned int event_data2
M1X22_ON_HOOK,
.
M1X22_VOLTAGE,
.
IET row number.
Event identifier.
5.2.12 M1X22_DIAL_COMPLETE
This event is gen er ated when a pulse dial se ssion i s comp l eted successfully.
Parameters
Data T ype Name Description
Channel ID.
Number of events that remain in the queue.
N/A.
N/A.
N/A.
N/A.
Rev. 1.0 19
Page 20
73M1822/73M1922 Control Module User Guide UG_1x22_053
unsigned int
event_id
M1X22_DIAL_ABORTED
unsigned int
channel_id
unsigned int
event_cnt
unsigned int
event_data1
unsigned int
event_data2
unsigned int
event_data3
unsigned int
event_data4
unsigned int
event_id
M1X22_SYNC_RECOVERED
unsigned int
channel_id
unsigned int
event_cnt
unsigned int
event_data1
unsigned int
event_data2
unsigned int
event_data3
unsigned int
event_data4
M1X22_GPIO_INTERRUPT
unsigned int
channel_cid
unsigned int
event_cnt
unsigned int
event_data1
unsigned int
event_data2
unsigned int
event_data3
unsigned int
event_data4
5.2.13 M1X22_DIAL_ABORTED
This event is gen er ated when a pulse dial se ssion i s aborted or canceled by the user appl i cation.
Parameters
Data T ype Name Description
.
Channel ID.
Number of events that remain in the queue.
N/A.
N/A.
N/A.
N/A.
5.2.14 M1X22_SYNC_RECOVERED
This event is gen er ated after a successful r ecovery from th e bar r i er sync failure.
Parameters
Data T ype Name Description
.
Channel ID.
Number of events that remain in the queue.
N/A.
N/A.
N/A.
N/A.
5.2.15 M1X22_GPIO_INTERRUPT
This event occurs when an input GPIO interrupt is triggered. The “data1” field contains the source GPIO
that generates the interrupt .
Parameters
Data T ype Name Description
unsigned int event_id
20 Rev. 1.0
.
Channel CID.
Number of events that remain in the queue.
The GPIO that triggers the interrupt event.
N/A.
N/A.
N/A.
Page 21
UG_1x22_053 73M1822/73M1922 Control Module User Guide
M1X22_CH_INIT
M1X22_CNTRY_NMBR_ GET
M1X22_PHONE_VOLUME_SET
M1X22_SET_SAMPLING_FREQ
M1X22_GET_SAMPLING_FREQ
6 IOCTL Commands Description
Upon successful opening of a device or ch annel descriptor the application layer can control the operation
of the device and the mod em chann el. The app licati on in user space commu nicates with the driver via
standard Linux dr iver interfac e IOCTL calls.
Unless sp ecified, in general, the IOCTL function r eturns zero (0) for successful requ est, or a negative
value of EFAULT (-EFAULT) if an y error is detected during the processing of th e IOCTL. The more det ail
cause of error, or also known as error code, is stored internally and can be retrieved with the
M1X22_ERROR_CODE_GET IOCTL. The driver keeps only the last er r or code of the last IOCTL per device
or channel descriptor . Therefore, if requir ed, th e er r or code must be retrieved immediately a fter th e
execution of the IOCTL or before the next IOCTL is executed. The error codes are l isted in Section 7.4.
The following section s describe th e detail of each IOCTL command. The dr i ver IOCTL belongs to one of
the fol l owing categories:
• Initialization
• Event and St atus Ser vices
• mod em H ook Switch Con trol Ser vices
• Caller-ID Services
• Ring Detection Services
• Lin e State A nalysis Servic es
• GPIO Services
• Miscell aneous Ser vice
6.1 Initialization and Configuration IOCTLs
The following IOCTLs are defined to configure the 73M1x22. Table 1 provides a summar y of the IO CTLs.
Table 1: Summary of Initialization IOCTLs
IOCTL Name Description Descriptor
Initializing modem ch annel for operation. Channel
M1X22_GET_COUNTRY_CONFIG
M1X22_SET_COUNTRY_CONFIG
Convert ASCII two-character country code
into country code index used by the driver.
Read the current default setti ng for a given
country code.
Overwrites the current default setti ng for a
particular country.
Set transmit and r eceive gain. Channel
Select modem sample rate Channel
Get current mod em sample rate Channel
Channel
Channel
Channel
Rev. 1.0 21
Page 22
73M1822/73M1922 Control Module User Guide UG_1x22_053
int
chan_fd
int
M1X22_CH_INIT
unsigned long
param
M1X22_COUNTRY_CODE
6.1.1 M1X22_CH_INIT
Description
Perfo r ms 73M1x22 channel initialization. This includes init i alize all defau l t regi sters and country specific
thr eshold parameters. Th is IO C TL requires the coun try code l i sted i n M1X22_COUNTRY_CODE as input.
The modem channel will be initial ized according to the default se tting parameter of the input country
code. The default setting parameter can be fou nd in the tsc_1x22_ctl_cntry_tbl.c file. See also
M1X22_GET_COUNTRY_CONFIG and for run-tim e m odification of country default setting.
int ioctl (
int chan_fd,
int M1X22_CH_INIT,
unsigned long param );
Parameters
Data T ype Name Description
Channel descriptor.
I/O control identifier for this operation.
Country code as listed in
Return Values
.
Data T ype Description
int
-1 – Failed to initialize device.
0 – Successful.
22 Rev. 1.0
Page 23
UG_1x22_053 73M1822/73M1922 Control Module User Guide
int
chan_fd
int
M1X22_CNTRY_NMBR_GET
unsigned long
param
6.1.2 M1X22_CNTRY_NMBR_GET
Description
Conver ts a n ull ter minat ed ASCII string into a country code. Thi s country code can be used in the
M1X22_CH_INIT IOCTL.
#define M1X22_CNTRY_NMBR_GET _IOW R(0xA4,0xB5,uns ign ed int )
Prototype
int ioctl (
int chan_fd,
int M1X22_CNTRY_NMBR_GET,
unsigned long param );
Parameters
Data T ype Name Description
Channel descriptor.
I/O control identifier for this operation.
Add r ess of th e null terminated character string.
Return Values
Data T ype Description
int
Return country code – M1X22_COUNTRY_CODE.
255 – Invalid count r y code.
Rev. 1.0 23
Page 24
73M1822/73M1922 Control Module User Guide UG_1x22_053
int
chan_fd
int
M1X22_GET_COUNTRY_CONFIG
M1X22_CNTRY_STRUCT_t
6.1.3 M1X22_GET_COUNTRY_CONFIG
This IOCTL all ows an application prog r am to read the curren t default setti ng for a particular cou ntry u sing
the countr y co de as an i nput.
Description
Reads the current default sett ing for a given cou ntry. The country code is passed in via the cnum fiel d of
the M1X22_CNTRY_STRUCT_t structure. This structure is also used by the driver to return the
parameter.
#define M1X22 _GE T_C OUNTRY_CONFIG _IOWR(0xA4, 0xF 4, uns ign ed int)
Prototype
int ioctl (
int chan_fd,
int M1X22_GET_COUNTRY_CON FIG ,
unsigned long param );
Parameters
Data T ype Name Description
Channel descriptor.
I/O control identifier for this operation.
unsigned long param
Return Values
Pointer to stru cture
.
Data T ype Description
int
Example
The following example illustr ates the readi ng of t he default setting for UK.
-EFAULT – Fail ed to get countr y co nfig parameter.
24 Rev. 1.0
Page 25
UG_1x22_053 73M1822/73M1922 Control Module User Guide
int
chan_fd
int
M1X22_SET_COUNTRY_CONFIG
unsigned long
param
M1X22_CNTRY_STRUCT_t
int
6.1.4 M1X22_SET_COUNTRY_CONFIG
This IOCTL allows application program to write the current default setting for a particular country using
the countr y co de as an i nput. Once written t his beco mes th e new defaul t setting for the count r y code until
the sy stem i s rebooted. F or per sistence change of d efault co untry parameter the
tsc_1X22_ctl_cntry_tbl.c must be change and rebuilt.
Description
Write to the current defaul t setting of a given coun try code. The new count r y config parameter is passed
in via t he M1X22_CNTRY_STRUCT_t structure.
73M1822/73M1922 Control Module User Guide UG_1x22_053
int
chan_fd
int
M1X22_PHONE_VOLUME_SET
6.1.5 M1X22_PHONE_VOLUME_SET
Description
The gain of bot h transmit and receive path can be contr olled by digital and/or anal og means. This IOCTL
provid es an easy way to set the transmi t and receive gain.
#define M1X22_PHONE_VOLUME_SET _IOW R(0xA4,0x CA, uns ign ed int)
Prototype
int ioctl (
int chan_fd,
int M1X22_PHONE_VOLUME_SET,
unsigned long param );
Parameters
Data T ype Name Description
Channel descriptor.
I/O control identifier for this operation.
unsigned long param
Return Values
Pointer to stru cture txrx_gain (see Section
7.4).
Data T ype Description
int
0 – Successful.
(-1) – Failed.
26 Rev. 1.0
Page 27
UG_1x22_053 73M1822/73M1922 Control Module User Guide
int
chan_fd
int
M1X22_SET_SAMPLING_FREQ
M1X22_SAMPLE_RATE_SELECTION
6.1.6 M1X22_SET_SAMPLING_FREQ
Description
Select modem sample rate. The 73M1x22 device can operate at many differen t sam ple rates ranging
from 7.2 kHz to 16 kHz. The device default s to 7.2 kHz operation with a 24.576 MHz crystal upon startup
and can be changed using this ioctl.
Notes: Changing of the sample rate w i ll af fect the following :
1. Barrier interface operation – a m omentari ly lost of synchronizati on on the barrier inter face is
expect ed. However, t he dri ver will automatical ly att empt to recover barri er synchron ization. The
SYNC lost event is sent and shou ld be followed by SYN C r estored event when the bar r i er is s ynced
up again.
int ioctl (
int chan_fd,
int M1X22_SET_SAMPLING_FREQ,
unsigned long param );
Parameters
Data T ype Name Description
Channel descriptor.
I/O control identifier for thi s operat ion.
unsigned long param
Return Values
Data T ype Description
int
0 – Successful.
-EFAULT– Failed to set sample rate.
Sample rate selection as defined in
.
Rev. 1.0 27
Page 28
73M1822/73M1922 Control Module User Guide UG_1x22_053
int
chan_fd
int
M1X22_GET_SAMPLING_FREQ
unsigned long
param
int
M1X22_SAMPLE_RATE_SELECTION
6.1.7 M1X22_GET_SAMPLING_FREQ
Description
Return curr ent modem sample rate. The 73 M 1x22 d evice can operate at many differen t sam ple rat es
ranging from 7.2 kHz to 16 kHz. The device defaul ts to 7.2 kHz operation with a 24.576 MHz crystal upon
startup.
int ioctl (
int chan_fd,
int M1X22_GET_SAMPLING_FREQ)
unsigned long param );
Parameters
Data T ype Name Description
Channel descriptor.
I/O control identifier for this operation.
N/A.
Return Values
Data T ype Description
Sample rate selection as defined in
.
28 Rev. 1.0
Page 29
UG_1x22_053 73M1822/73M1922 Control Module User Guide
M1X22_RNG_GET
M1X22_POL_GET
M1X22_BAT_GET
M1X22_POH_GET
M1X22_EVENT_GET
M1X22_ERROR_CODE_GET
int
chan_fd
int
M1X22_RNG_GET
unsigned long
param
int
6.2 Events and Status Service
The dri ver can be queried for a variety of cu r r ent statu s of the m odem line via IOCTLs. Table 2
summarize s these services.
Table 2: Modem Li ne Sta t us Services
Events and Status Description Descriptor
6.2.1 M1X22_RNG_GET
Description
Gets the current ring status of the modem line. The current ring status is m aintai ned in the driver internal
variable. This variable is being retrieved by use application using this command.
Modem line r ing status com mands. Channel
Modem line polarity status commands. Channel
Modem line battery status comm and. Channel
Modem line POH status command. Channel
Event retrieval command. Device
Retrieve last error code command. Device/Channel
int ioctl (
int chan_fd,
int M1X22_RNG_GET,
unsigned long param );
Parameters
Data T ype Name Description
Channel descriptor.
I/O control identifier for this operation.
N/A.
Return Values
Data T ype Description
The return value can be either of the follo w ing:
0 – No ring signal occurred on the modem lin e.
1 – The modem line is ringing, signal ing of in coming call.
Rev. 1.0 29
Page 30
73M1822/73M1922 Control Module User Guide UG_1x22_053
int
chan_fd
int
M1X22_POL_GET
unsigned long
param
6.2.2 M1X22_POL_GET
Description
Gets the current polarity reversal status of the modem line. The dr i ver main tains this statu s in its loca l
variab le and i t is being retrieved by user application using this co m mand.
int ioctl (
int chan_fd,
int M1X22_POL_GET,
unsigned long param );
Parameters
Data T ype Name Description
Channel descriptor.
I/O control identifier for this operation.
N/A.
Return Values
Data T ype Description
int
The return value can be either of the follo w ing:
0 – No polarity reve r sal event.
1 – polarity reversal eve nt occurred on th e modem l ine.
30 Rev. 1.0
Page 31
UG_1x22_053 73M1822/73M1922 Control Module User Guide
int
chan_fd
int
M1X22_BAT_GET
unsigned long
param
6.2.3 M1X22_BAT_GET
Description
Gets the current battery statu s of the modem l ine. The d r iver maintain s this status in its l ocal variable and
it is being retrieved by user application using th i s command.
int ioctl (
int chan_fd,
int M1X22_BAT_GET,
unsigned long param );
Parameters
Data T ype Name Description
Channel descriptor.
I/O control identifier for this operation.
N/A.
Return Values
Data T ype Description
int
The return value can be either of the follo w ing:
0 – The modem line is not powered.
1 – The modem line is connected to the PSTN and be i ng po wered.
Rev. 1.0 31
Page 32
73M1822/73M1922 Control Module User Guide UG_1x22_053
int
chan_fd
int
M1X22_POH_GET
unsigned long
param
6.2.4 M1X22_POH_GET
Description
Gets the current “parall el phone off-hook” status of the modem line. The driver maintains this status in its
local variab le and it is being retrieved by user applicat i on using this command.
#define M1X22_PO H_G ET _IOWR(0 xA4 ,0xB9,unsigned int )
Prototype
int ioctl (
int chan_fd,
int M1X22_POH_GET,
unsigned long param );
Parameters
Data T ype Name Description
Channel descriptor.
I/O control identifier for this operation.
N/A.
Return Values
Data T ype Description
int
The return value can be either of the follo w ing:
0 – No parallel phone off-h ook on the modem line.
1 – A parallel phone off-hook on the modem line.
32 Rev. 1.0
Page 33
UG_1x22_053 73M1822/73M1922 Control Module User Guide
int
dev_fd
int
M1X22_EVENT_GET
int
6.2.5 M1X22_EVENT_GET
Description
Returns an event from the FIF O queue. The driver record s various even ts in its in ternal FI FO queue.
Acce ss to this event on thi s queu e by user application is accomplished usi ng this command, and the
event will be removed permanen tly from the queue.
int ioctl (
int dev_fd,
int M1X22_EVENT_GET,
unsigned long param );
Parameters
Data T ype Name Description
Device descriptor .
I/O control identifier for this operation.
unsigned long param
Return Values
Pointer to stru cture M1X22_MDM_EVENT_t (see
Section 5.1).
Data T ype Description
0 – Successful.
-EFA U LT Failed to retri eve event d ata.
Rev. 1.0 33
Page 34
73M1822/73M1922 Control Module User Guide UG_1x22_053
int
dev_fd/chan_fd
int
M1X22_ERROR_CODE_GET
unsigned long
param
6.2.6 M1X22_ERROR_CODE_GET
Description
This IOCTL returns the error code o f the last IO CTL command. The driver reco r ds on ly the last erro r
code and applicable to d evice and chann el descriptor .
int ioctl (
int dev_fd,
int M1X22_ERROR_CODE_GET,
unsigned long param );
Parameters
Data T ype Name Description
Device or Channel descriptor.
I/O control identifier for this operation.
Pointer to the error code of type unsigned int.
Return Values
Data T ype Description
int
0 – Successful.
-EFAULT – Fail ed to retrieve th e er ror code.
34 Rev. 1.0
Page 35
UG_1x22_053 73M1822/73M1922 Control Module User Guide
M1X22_ATH1
M1X22_ATH0
M1X22_ATDP
M1X22_ATDP_CANCEL
M1X22_ATDP_PARAM
M1X22_FLSH_SET
M1X22_SEND_WETTING_PULSE
int
chan_fd
int
M1X22_ENNOM_DELAY_TIMER
int
6.3 Modem Hook Switch Control Services
The con figuration and control of the modem Hook Switch is accomplished by using the IOCTLs
summarize d in Table 3.
Table 3: Modem Hook Swi tch Control Services
Events and Status Description Descriptor
M1X22_ENNOM_DELAY_TIMER
M1X22_FLSH_CFG
6.3.1 M1X22_ENNOM_DELAY_TIMER
Allows the d eveloper to tune the EnNom respon se
Channel
timer.
Issue off-hook in the mod em interface. Channel
Issue on-hook in the modem interface. Channel
Pulse dial. Channel
Pu l se dial abort or cancel. Channel
Pu l se dial param eters. Channel
Configure of flash-hook parameter for the m odem
Channel
interface.
Perfo r m hook flashi ng on the mod em interface. Channel
Perfo r m a wetti ng pulse on the modem interface . Channel
This IOCTL all ows an application prog r am to change the ENNOM delay timer from the default value of
350 ms to any value within the valid ranges of 10 to 350 ms, inclusive
Description
Delaying of E N NOM bit set ting is requir ed for loop stab i lization during off hook operation. However, t he
duration depends largely on the quality of the hook circuit design. The driver uses the default setting of
350 m s an optimized choice for response time and audio qualit y. This IOCTL allows develop ers t o tune
this timing value to sui t their specifi c need s.
Note: The drive r provides an option to g enerate a batter y status event upon complet ion of this off-hook
procedure. This option is controlled by the following macro defined in a h eader file. By defaul t th i s macro
is disabled:
#define SEND_BAT_STATUS_OFFHOOK
It i s envisioned that the application layer wil l use this event to determine i f the call establi shment should
be p r oceeded .
Prototype
int ioctl (
int chan_fd,
int M1X22_ATH1,
unsigned long param );
Parameters
Data T ype Name Description
Channel descriptor.
I/O control identifier for this operation.
N/A.
Return Values
Data Type Description
Always returns 0.
36 Rev. 1.0
Page 37
UG_1x22_053 73M1822/73M1922 Control Module User Guide
int ioctl (
int chan_fd,
int M1X22_ATH0,
unsigned long param );
Parameters
Data T ype Name Description
Channel descriptor.
I/O control identifier for this operation.
N/A.
Return Values
Data T ype Description
Always returns 0.
Rev. 1.0 37
Page 38
73M1822/73M1922 Control Module User Guide UG_1x22_053
int
chan_fd
int
M1X22_ATDP
unsigned long
param
M1X22_PULSE_DIAL_t
int
6.3.4 M1X22_ATDP
Description
Perfo r ms pulse dialing on the modem channel. As a pulse dial pr ocedu r e can t ake more than a seco nd
per digit, it is absolut ely essential that this se ssion be carried out transparently in the b ackground wit hout
locking up the caller du r ing the process. Therefore, this IOCTL is a non-blocking call and it returns
immediatel y after schedulin g the background process to start the pulse dialing. For that r eason, the
retu r n cod e does n ot reflect the status of the pu l se dial, but rat her the status of th e scheduling of the
pu l se dial session.
An acti ve dial session ca n be aborted using the M1X22_ATDP_CANCEL IOC TL. If done before its
completi on, th e driver stops the diali ng and sends t he M1X22_DIAL_ABORTED event. However, upon a
successful completion of the dialing, the driver sends an M1X22_DIAL_COMPLETE event to notify th e
app l ication layer of the status. It is r ecommended th at the ap plication monitor the pulse dial status event
(M1X22_DIAL_COMPLETE or M1X22_DIAL_ABORTED) to synchronize with the driver as to when the dial
sessi on is co mpl eted.
Note: The drive r rejects all I OCTLs wh ile t his pulse d i al sessi on is in progress, except
int ioctl (
int chan_fd,
int M1X22_ATDP,
unsigned long param );
Parameters
Data T ype Name Description
Channel descriptor.
I/O control identifier for this operation.
Pointer to the
Return Values
Data T ype Description
Always returns 0.
structure.
38 Rev. 1.0
Page 39
UG_1x22_053 73M1822/73M1922 Control Module User Guide
int
chan_fd
int
M1X22_ATDP_CANCEL
unsigned long
param
int
6.3.5 M1X22_ATDP_CANCEL
Description
Ab or ts or cancels an acti ve pulse session requested previously by using the M1X22_ATDP IOCTL. The
cancellation occurs in the background and, when it is don e, the d r i ver send s an M1X22_DIAL_ABORTED
event.
int ioctl (
int chan_fd,
int M1X22_ATDP_CANCEL,
unsigned long param );
Parameters
Data T ype Name Description
Channel descriptor.
I/O control identifier for this operation.
N/A.
Return Values
Data T ype Description
Always returns 0.
Rev. 1.0 39
Page 40
73M1822/73M1922 Control Module User Guide UG_1x22_053
int
chan_fd
int
M1X22_ATDP_PARAM
unsigned long
param
M1X22_PULSE_DIAL_PARAM_t
int
6.3.6 M1X22_ATDP_PARAM
Description
This IOCTL is used to modify or read t he following defaul t pulse dial parameters:
• On hook duration (default = 60 ms)
• Off hook duration (default = 40 ms)
• Inter-digit duration (default = 1 sec)
The command field in the M1X22_PULSE_DIAL_PARAM_t struct ure ind icates wh ether i t is a read or a
write operation. For reading the dri ver returns the parameters in the st r uctur e, while fo r writing th e driver
expect s the new pul se dial param eters to be writt en in the structur e.
#define M1X22_ATDP_PARAM _IOWR(0xA4 ,0xAD,uns ign ed int )
Prototype
int ioctl (
int chan_fd,
int M1X22_ATDP_PARAM,
unsigned long param );
Parameters
Data T ype Name Description
Channel descriptor.
I/O control identifier for this operation.
Pointer to the
Return Values
Data T ype Description
Always returns 0.
structure.
40 Rev. 1.0
Page 41
UG_1x22_053 73M1822/73M1922 Control Module User Guide
int
chan_fd
int
M1X22_FLSH_CFG
int
int
chan_fd
int
M1X22_FLSH_SET
unsigned long
param
int
6.3.7 M1X22_FLSH_CFG
Description
This is the config urati on of flash-hook timing pa r a meter for the modem interface.
int ioctl (
int chan_fd,
int M1X22_SEND_WETTING_PU LSE ,
unsigned long param );
Parameters
Data T ype Name Description
Channel descript or .
I/O control identifier for this operation.
unsigned long param
Return Values
Integer representin g the desired wett ing pulse
duration. Range from 1 to 1000 ms. Out of
range behavior is undefined.
Data T ype Description
int
0 – Successful.
-1 – Modem ch annel i s not off-hook.
42 Rev. 1.0
Page 43
UG_1x22_053 73M1822/73M1922 Control Module User Guide
M1X22_ENABLE_CALLER_ID
M1X22_DISABLE_CALLER_ID
M1X22_ENTER_CID_MODE
M1X22_EXIT_CID_MODE
int
chan_fd
int
M1X22_ENABLE_CALLER_ID
unsigned long
param
int
6.4 Caller-I D Services
The following service control how the modem manages Type 1 Caller-ID.
Table 4: Call ID Services
Name Description Descriptor
En able automatic Caller ID enabling mode. Channel
Disable aut omati c Caller I D enabl i ng mode. Channel
Manually ent er C aller ID mode. Channel
6.4.1 M1X22_ENABLE_CALLER_ID
Description
En ables th e automatic C aller ID processing. By default the driver will start C aller ID mode with an on
hook transition . This can be enabled by upper layer app licati on using thi s service.
int ioctl (
int chan_fd,
int M1X22_ENABLE_CALLER_ID,
unsigned long param );
Parameters
Data T ype Name Description
Channel descriptor.
I/O control identifier for this operation.
N/A.
Return Values
Data T ype Description
Always returns 0.
Rev. 1.0 43
Page 44
73M1822/73M1922 Control Module User Guide UG_1x22_053
int
chan_fd
int
M1X22_DISABLE_CALLER_ID
unsigned long
param
int
int
chan_fd
int
M1X22_ENTER_CID_MODE
unsigned long
param
6.4.2 M1X22_DISABLE_CALLER_ID
Description
Disables the automatic Caller ID processing. By default the dri ver will st ar t Caller I D mode with an on
hook transition. This can be disabled by upper layer application using this service.
int ioctl (
int chan_fd,
int M1X22_EXIT_CID_MODE,
unsigned long param );
Parameters
Data T ype Name Description
Channel descriptor.
I/O control identifier for this operation.
N/A.
Return Values
Data T ype Description
Always returns 0.
Rev. 1.0 45
Page 46
73M1822/73M1922 Control Module User Guide UG_1x22_053
M1X22_SET_MIN_INTER_RING_GAP
M1X22_SET_RING_MIN_FREQ
M1X22_SET_RING_MAX_FREQ
int
chan_fd
int
M1X22_SET_MIN_INTER_RING_GAP
unsigned long
param
int
6.5 Ring Detection Serv ic e s
The following services con trol how the modem m anages Ring Detection.
Table 5: Ring Detection Services
Name Description Descriptor
Set minimum inte r-ring timer value. Channel
6.5.1 M1X22_SET_MIN_INTER_RING_GAP
Description
Upon detection of a RGDT in terrupt the dr iver will start a tim er with a m inimum duration speci fied by this
IOCTL (default is 150 ms). If no more RGDT interrupts are detected in that time period, then the driver
will attempt to interpret the existing RGDT interrupts (polarity reversal or ring burst). Polarity reversals
and /or rin g burst s separ ated by less than this time period will be con sidered to b e one event and will be
interpret ed as such. RGDT interrupts farther apart t han this will be int er preted as separate events.
Set min frequency threshold for ring filter. Channel
Set max frequency threshold for ring fil ter. Channel
int ioctl (
int chan_fd,
int M1X22_SET_MIN_INTER_RING_GAP,
unsigned long param );
Parameters
Data T ype Name Description
Channel descriptor.
I/O control identifier for this operation.
Time in ms.
Return Values
Data T ype Description
Always returns 0.
46 Rev. 1.0
Page 47
UG_1x22_053 73M1822/73M1922 Control Module User Guide
int
chan_fd
int
M1X22_SET_ RING_MIN_FREQ
unsigned long
param
int
int
chan_fd
int
M1X22_SET_ RING_MAX_FREQ
unsigned long
param
int
6.5.2 M1X22_SET_RING_MIN_FREQ
Description
Upon detection of a ring burst the driver will attempt to determine the ring burst frequency. If the ring
burst frequency is above the minimum ring frequency and below the maximum frequency then the driver
will report an M1X22_RING_DETECT event.
int ioctl (
int chan_fd,
int M1X22_SET_RING_MIN_FREQ,
unsigned long param );
Parameters
Data T ype Name Description
Channel descriptor.
I/O control identifier for this operation.
Frequency in Hz.
Return Values
Data T ype Description
Always returns 0.
6.5.3 M1X22_SET_RING_MAX_FREQ
Description
Upon detection of a ring burst the driver will attempt to determine the ring burst frequency. If the ring
burst frequency is above the minimum ring frequency and below the maximum frequency, then the d r iver
will report an M1X22_RING_DETECT event.
int ioctl (
int chan_fd,
int M1X22_SET_RING_MIN_FREQ,
unsigned long param );
Parameters
Data T ype Name Description
Channel descriptor.
I/O control identifier for this operation.
Frequency in Hz.
Return Values
Data T ype Description
Rev. 1.0 47
Always returns 0.
Page 48
73M1822/73M1922 Control Module User Guide UG_1x22_053
M1X22_MEASURE_START
M1X22_MEASURE_STOP
M1X22_MEASURE_UPDATE
int
chan_fd
int
M1X22_MEASURE_START
M1X22_MEASURE_START_STOP_t
6.6 Line State Analysis Services
The following services con trol the modem line stat e via l ine current and line voltage measurements.
Table 6 provides the summary of each IOCTL. These IOCTLs can be u sed for both measuring entit ies –
the line current and lin e voltage.
Table 6: Line State Analysis Services
Name Description Descriptor
Start line measurement. Channel
6.6.1 M1X22_MEASURE_START
Description
Star ts the measu r ement of a measur ing entity (curren t or voltag e) as specified by its IET paramet er s. The
param parameter points to a structure th at contains the r equested measurement crit er i a.
Stop line measurement. Channel
Update line measurement parameter (IET). Channel
int ioctl (
int chan_fd,
int M1X22_MEASURE_START,
unsigned long param );
Parameters
Data T ype Name Description
Channel descriptor.
I/O control identifier for this operation.
unsigned long param
Pointer to
.
Return Values
Data T ype Description
unsigned int
0 – Successful.
-1 – Failed to start measurement.
Example
The following example code illu strat es the starting of the line current monitoring.
M1X22_M EAS URE _ST ART_t current;
int ret;
current.entity = M1X22_MEASURE_ENTITY_CURRENT; /* start current monitor */
current.sample_time = 100; /* sampling at 100ms interval */
current.average_sample_count = 10; /* averaging over 10 samples */
ret = ioctl (fd, M1X22_MEASURE_START, ¤t);
if (ret < 0)
prin tf (“F ail ed to sta rt line current monitoring” );
else
prin tf (“S ucc ess ful”);
48 Rev. 1.0
Page 49
UG_1x22_053 73M1822/73M1922 Control Module User Guide
int
chan_fd
int
M1X22_MEASURE_STOP
M1X22_MEASURE_START_STOP_t
6.6.2 M1X22_MEASURE_STOP
Description
Stops an on -going measurement ( current or voltage) . The param p ar ameter points t o a stru ct ure that
contains the requested stop measuring entity.
int ioctl (
int chan_fd,
int M1X22_MEASURE_STOP,
unsigned long param );
Parameters
Data T ype Name Description
Channel descriptor.
I/O control identifier for this operation.
unsigned long param
Return Values
Pointer to
.
Data T ype Description
unsigned long
Example
The following example code illu strat es the stoppi ng of an on-goin g voltage measurement process.
M1X22_M EAS URE _ST ART_t voltage;
int ret;
voltage.entity = M1X22_MEASURE_ENTITY_VOLTAGE; /* stop voltage monitor */
ret = ioctl (fd, M1X22_MEASURE_STOP, &voltage);
if (ret < 0)
prin tf (“F ail ed to sto p line voltage mon itoring”) ;
else
prin tf (“S ucc ess ful”);
0 – Successful.
-1 – Failed to stop measu r ement.
Rev. 1.0 49
Page 50
73M1822/73M1922 Control Module User Guide UG_1x22_053
int
chan_fd
int
M1X22_MEASURE_UPDATE
unsigned long
param
M1X22_MEASURE_UPDATE_t
6.6.3 M1X22_MEASURE_UPDATE
Description
Reads an IE T entry or updates an IET entry based on pr ovided parameters. Th e param param eter points
to a structure that cont ai ns the r equested action (G ET or SET), the m easuring ent ity (current or vol tage),
the IET table index, and its attr i butes, if use d in the SET operation. For GET operati ons the IET attributes
will be read from the driver.
#define M1X22 _ME ASU RE_UPDATE _IOWR(0xA4, 0xE 7, uns ign ed int)
Prototype
int ioctl (
int chan_fd,
int M1X22_MEASURE_UPDATE,
unsigned long param );
Parameters
Data T ype Name Description
Channel descriptor.
I/O control identifier for this operation.
Pointer to
Return Values
.
Data T ype Description
unsigned int
Example
The following example code illu strat es an u pdate t o a l ine current IET tab l e entry.
0 – Successful.
-1 – Failed to update IET entry.
M1X22_MEASURE_UPDATE_t update;
int ret;
update.row = 3; /* update row 3 of current IET table */
update.action = M1X22_MEASURE_ACTION_SET; /* req ues t for SET ope ration */
update.entity = M1X22_MEASURE_ENTITY_CURRENT; /* measuring entity= current */
update.interval_min = 15; /* lower bound current = 15ma */
update.interval_max = 21; /* upper bound current = 21ma */
update.event = 0x000E1521; /* this event to be emitted */
ret = ioctl (fd, M1X22_MEASURE_UPDATE, &update);
if (ret < 0)
prin tf (“F ail ed to upd ate current IET entry”);
else
prin tf (“S ucc ess ful”);
50 Rev. 1.0
Page 51
UG_1x22_053 73M1822/73M1922 Control Module User Guide
The following example code illu strat es a reading of a line volt age IET table entry.
M1X22_MEASURE_UPDATE_t read;
int ret;
read.row = 5; /* read row 5 of voltage IET table */
read.action = M1X22_MEASURE_ACTION_GET; /* request for GET operation */
read.entity = M1X22_MEASURE_ENTITY_VOLTAGE; /* measuring entity= voltage */
ret = ioctl (fd, M1X22_MEASURE_UPDATE, &read);
if (ret < 0)
prin tf (“F ail ed to rea d voltage IET entry”);
else {
prin tf (“\nReading vol tag e IET tab le entry row: %d”, read.row);
prin tf (“\nInterval min: %d”, read.interval_min);
prin tf (“\nInterval max: %d”, read.interval_max);
prin tf (“\nEvent : 0x%08X”, read.event);
}
Rev. 1.0 51
Page 52
73M1822/73M1922 Control Module User Guide UG_1x22_053
int
chan_fd
int
M1X22_GPIO_CONFIG
unsigned long
param
M1X22_GPIO_CONFIG_t
6.7 GPIO Services
6.7.1 M1X22_GPIO_CONFIG
Description
The ioctl is used to configure the GPIO pin.
#define M1X22 _GP IO_ CONFIG _IOWR(0xA 4, 0xC0, unsign ed int )
Prototype
int ioctl (
int chan_fd,
int M1X22_GPIO_CONFIG,
unsigned long param );
Parameters
Data T ype Name Description
Channel descriptor.
I/O control identifier for this operation.
Pointer to
Return Values
.
Data T ype Description
unsigned int
0 – Successful.
-1 – Failed to configure GPIO.
52 Rev. 1.0
Page 53
UG_1x22_053 73M1822/73M1922 Control Module User Guide
int
chan_fd
int
M1X22_GPIO_CONTROL
unsigned long
param
M1X22_GPIO_CONTROL_t
unsigned int
6.7.2 M1X22_GPIO_CONTROL
Description
The ioctl is used to control the op er ation of the GPIO pin.
int ioctl (
int chan_fd,
int M1X22_GPIO_DATA,
unsigned long param );
Parameters
Data T ype Name Description
Channel descriptor.
I/O control identifier for this operation.
unsigned long param
Return Values
Pointer to the
structure.
Data T ype Description
0 – Successful.
-1 – Failed to access GPIO data.
54 Rev. 1.0
Page 55
UG_1x22_053 73M1822/73M1922 Control Module User Guide
int
chan_fd
int
M1X22_LOOPBACK
M1X22_LOOPBACK_t
6.8 Loopback Services
6.8.1 M1X22_LOOPBACK
Description
This IOCTL is used for managing the loopback session – initi ating, clearing or retrieving the statu s of
curr ent active loopback se ssion on a given channel. Only one l oopback session can be active per
channel. For reading the status the loop back “mode” will be returned in the structur e
M1X22_LOOPBACK_t poi nted to by the “param” field.
int ioctl (
int chan_fd,
int M1X22_LOOPBACK,
unsigned long param );
Parameters
Data T ype Name Description
Channel descriptor.
I/O control identifier f or this operat i on.
unsigned long param
Return Values
Pointer to stru cture
.
Data T ype Description
unsigned int
0 – Successful.
-FAULT – Fail ed to perform loopback request.
Rev. 1.0 55
Page 56
73M1822/73M1922 Control Module User Guide UG_1x22_053
int
chan_fd
int
M1X22_THRESHOLD_OVERRIDE
unsigned long
param
6.9 Miscellaneous
6.9.1 M1X22_THRESHOLD_OVERRIDE
Description
Various m odem channel parameters are convenien tly group ed and predefined in the country par ameter
setting as specified in Section 7.2. These parameters are programmed during ch annel in itialization ioctl
(M1X22_CH_INIT). However, these parameters can be overridden at r untim e to fine t une to th e desired
threshold for the specific installation using this M1X22_THRESHOLD_OVERRIDE IOCTL.
Note: This IOCTL mu st be invoked after M1X22_CH_INIT to prevent th e parameter from over writ ten by
int ioctl (
int chan_fd,
int M1X22_THRESHOLD_OVERRIDE,
unsigned long param );
Parameters
Data T ype Name Description
Channel descriptor.
I/O control identifier for t his operation.
Pointer to the M1X22_THRESH_OVERRIDE_t
structure.
Return Values
Data T ype Description
int
-EFAULT – Fail ed to perform threshol d override.
0 – Successful.
56 Rev. 1.0
Page 57
UG_1x22_053 73M1822/73M1922 Control Module User Guide
int
chan_fd
int
M1X22_BTINE_FILTER
unsigned long
param
6.9.2 M1X22_BTONE_FILTER
Description
Large amplitude out-of-band tones can be used to measur e call duration and to allow remote central
office to deter min e the duration of the call for billing purposes. These tones can saturate or distor t th e
input signal, thus, it is importan t to be ab le to reject th em . This IOCTL provides the ability to filter out the
billing tone.
int ioctl (
int chan_fd,
int M1X22_BTONE_FILTER,
unsigned long param );
Parameters
Data T ype Name Description
Channel descriptor.
I/O control identifier for this operation.
Pointer to the M1X22_BTONE_FILTER_t
structure.
Return Values
Data T ype Description
int
-EFAULT – Fail ed to perform bil ling tone filter.
0 – Successful.
Rev. 1.0 57
Page 58
73M1822/73M1922 Control Module User Guide UG_1x22_053
int
chan_fd
int
M1X22_CPROG_MONITOR
unsigned long
param
6.9.3 M1X22_CPROG_MONITOR
Description
The Call Progress Monitor moni tors activities on the line. The audio output contains both t r ansmit and
receive data with a co nfigurable level individually can be set using this IOCTL.
73M1822/73M1922 Control Module User Guide UG_1x22_053
unsigned int
cnum
M1X22_COUNTRY_CODE
unsigned char
ccode[4]
unsigned char
country[16]
unsigned int
ac_impedance
unsigned int
dc_vi_mask
unsigned int
rgth_value
int
auto_cid_enable
int
use_seize_mode
7.2 M1X22_CNTRY_STRUCT_t
Description
This structur e defines the cou ntry default parameters.
Prototype
typedef struct m1X22_cntry_struct
{
unsigned int cnum; /* Country code */
unsigned char ccode[4]; /* Two letter internet country code */
unsigned char country[16]; /* Country Name */
unsigned int ac_impedance;
unsigned int dc_vi_mask;
unsigned int rgth_value;
int auto_cid_enable; /* automatically enable CID */
int use_seize_state; /* ring tone, silent duration */
} M1X22_CNTRY_STRUCT_t;
Parameters
Data T ype Name Transmit
Country code (see
Two let ter cou ntry code.
Country name.
AC impedance.
DC VI mask.
Ring voltage threshold.
Au tomatic CID en able.
Seize mode enable.
).
62 Rev. 1.0
Page 63
UG_1x22_053 73M1822/73M1922 Control Module User Guide
UG_1x22_053 73M1822/73M1922 Control Module User Guide
unsigned int
command
unsigned int
onhook_duration
unsigned int
offhook_duration
unsigned int
intra_digit_duration
unsigned char
acz
unsigned char
dciv
unsigned char
rgth
7.7 M1X22_PULSE_DIAL_PARAM_t
Description
This structure is used by the M1X22_ATDP_PARAM IOCTLs to read or modify th e pulse dial param eter.
The command field in dicates whether it i s a read or a write operation.
Prototype
typedef struct m1X22_pulse_dial_param_struct {
unsigned int command; /* pulse dial param command */
unsigned int onhook_duration; /* oh-hook duration */
unsigned int offhook_duration; /* off-hook duration */
unsigned int inter_digit_duration; /* inter-digit duration */
}
M1X22_PULSE_DIAL_PARAM_t;
Various m odem channel parameters are convenien tly group ed and predefined in the country parameter
setting as speci fied in section x. These param eters are programmed during chan nel initialization IOCTL
(M1X22_CH_INIT). However, these parameters can be overridden at r untim e to fine t une to th e desired
threshold for the specific installation using this IOCTL.
Prototype
typedef struct
{
unsigned char acz; /* Active Termination Loop */
unsigned char dciv; /* DC current voltage charac. control */
unsigned char rgth; /* Ring threshold
}
M1X22_THRESH_OVERRIDE_t;
Parameters
Data T ype Name Description
Active terminat i on loop.
DC current voltage characterist ic con trol.
Ring threshold.
Rev. 1.0 65
Page 66
73M1822/73M1922 Control Module User Guide UG_1x22_053
M1X22_XTAL_27000KHZ_FS_14400HZ
5
M1X22_XTAL_24576KHZ_FS_07200HZ
7
M1X22_XTAL_24576KHZ_FS_09600HZ
9
7.9 M1X22_SAMPLE_RATE_SELECTION
Description
This is the enumer ated sam ple rate selecti on. I t is used by the M1X22_SET_SAMPLING_FREQ IOCTL to
select the PCM sample rate.
Set sample rate at 27.0 MHz assum i ng a crystal
frequency of 7.2 kHz.
Set sample rate at 2 7.0 MHz assuming a crystal
frequency of 8.0 kHz.
Set sample rate at 2 7.0 MHz assuming a crystal
frequency of 9.6 kHz.
Set sample rate at 2 7.0 MHz assuming a crystal
frequency of 12.0 kHz.
Set sample rate at 2 7.0 MHz assuming a crystal
frequency of 14.4 kHz.
Set sample rate at 2 7.0 MHz assuming a crystal
frequency of 16.0 kHz.
Set sample rate at 2 4.576 MHz assuming a crystal
frequency of 7.2 kHz.
Set sample rate at 2 4.576 MHz assuming a crystal
frequency of 8.0 kHz.
Set sample r ate at 2 4.576 MHz assuming a crystal
frequency of 9.6 kHz.
Set sample rate at 2 4.576 MHz assuming a crystal
frequency of 12.0 kHz.
66 Rev. 1.0
Page 67
UG_1x22_053 73M1822/73M1922 Control Module User Guide
M1X22_XTAL_24576KHZ_FS_14400HZ
11
M1X22_XTAL_09216KHZ_FS_07200HZ
13
Name Value Description
Set sample rate at 2 4.576 MHz assuming a crystal
frequency of 14.4 kHz.
M1X22_XTAL_24576KHZ_FS_16000HZ 12
M1X22_XTAL_09216KHZ_FS_08000HZ 14
M1X22_XTAL_09216KHZ_FS_09600HZ 15
M1X22_XTAL_09216KHZ_FS_12000HZ 16
M1X22_XTAL_09216KHZ_FS_14400HZ 17
M1X22_XTAL_09216KHZ_FS_16000HZ 18
Set sample rate at 2 4.576 MHz assuming a crystal
frequency of 16.0 kHz.
Set sample rate at 9 .216 MHz assuming a crystal
frequency of 7.2 kHz.
Set sample rate at 9.216 MHz assuming a crystal
frequency of 8.0 kHz.
Set sample rate at 9.216 MHz assuming a crystal
frequency of 9.6 kHz.
Set sample rate at 9.216 MHz assuming a crystal
frequency of 12.0 kHz.
Set sample rate at 9.216 MHz assuming a crystal
frequency of 14.4 kHz.
Set sample rate at 9.216 MHz assuming a crystal
frequency of 16.0 kHz.
Rev. 1.0 67
Page 68
73M1822/73M1922 Control Module User Guide UG_1x22_053
M1X22_BTONE_FILTER_DISABLE
0
M1X22_BTONE_FILTER_ENABLE
1
M1X22_BTONE FREQ_12KHZ
0
M1X22_BTONE FREQ_16KHZ
1
7.10 Billing Tone Filter Related Data Type and Structure
7.10.1 M1X22_BTONE_FILTER_COMMAND
Description
This is the billing tone filter co mm ands. For the enable comm and the tone frequency parameter is
expect ed in the Call Prog r ess Monitor Dat a Type and Structure
.
Disable billing tone filter.
Enable billing tone filter.
7.10.2 M1X22_BTONE_FREQUENCY
Description
This is the l ist of tone frequenci es th at can be filtered out. The user m ust select the right frequency to
eff e ct ively filt er out the bi l li ng t o ne .
UG_1x22_053 73M1822/73M1922 Control Module User Guide
unsigned char
acz
unsigned char
dciv
unsigned char
rgth
7.10.3 M1X22_BTONE_FILTER_t
Description
This structure is used by the M1X22_BTONE_FILTER IOCTL to enable or to disa ble the billing tone. The
filter is by default disable upon initialization and can be enabled to rej ect a tone of specific frequency
using this IOCTL.
Prototype
typedef struct m1X22_btone_filter
{
M1X22_BTONE_FILTER_COMMAND command; /* command */
M1X22_BTONE_FREQUENCY frequency; /* billing tone frequency */
}
M1X22_BTONE_FILTER_t;
Parameters
Data T ype Name Description
Active terminat i on loop.
DC current voltage characterist ic con trol.
Ring threshold.
Rev. 1.0 69
Page 70
73M1822/73M1922 Control Module User Guide UG_1x22_053
M1X22_CPROG_MON_VOLT_REG_1_5
0
M1X22_CPROG_MON_VOLT_REF_VCC_DIV
1
M1X22_CPROG_MON_GAIN_0DB
M1X22_C PRO G_M ON_ GAIN_MINUS_6DB
1
M1X22_CPROG_MON_GAIN_MINUS_12DB
2
M1X22_CPROG_MON_GAIN_MUTE
3
7.11 Call Progress Monitor Data Type and Structure
7.11.1 M1X22_CPROG_MON_VOLT_REF
Description
This co ntains the list of supported voltage reference at the call p r ogress monitor audio output. This is
used in the M1X22_CPROG_MONITOR IOC TL to select the voltage r eference.
1.5 Vdc reference selection.
VCC/2 Vdc reference selecti on.
7.11.2 M1X22_CPROG_MON_GAIN
Description
This contains the list of supported gain settings of the au dio path. It is use d by the
M1X22_CPROG_MONITOR IOCTL to set transmit and receive gain of th e call pr ogress monitor auto path.
Prototype
typedef enum
{
M1X22_CPROG_MON_GAIN_0DB = 0, /* Gain setting of 0dB */
M1X22_CPROG_MON_GAIN_MINUS_6DB = 1, /* Gain setting of -6dB */
M1X22_CPROG_MON_GAIN_MINUS_12DB = 2, /* Gain setting of -12dB */
M1X22_CPROG_MON_GAIN_MUTE = 3 /* Mute */
}
M1X22_CPROG_MON_GAIN;
Parameters
Name Value Description
0 Gain setting of 0 dB.
Gain sett i ng of -6dB.
Gain sett i ng of -12dB.
Mute.
70 Rev. 1.0
Page 71
UG_1x22_053 73M1822/73M1922 Control Module User Guide
M1X22_CPROG_MON_VOLT_REF
voltage_ref
M1X22_CPROG_MON_GAIN
tx_gain
M1X22_CPROG_MON_GAIN
rx_gain
7.11.3 M1X22_CPROG_MONITOR_t
Description
This structure is used by the M1X22_CPROG_MONITOR IOCTL to adjust ( or m ute) the gain setting of the
call progress monitor audio path.
Prototype
typedef struct {
M1X22_CPROG_MON_VOLT_REF voltage_ref; /* Voltage reference */
M1X22_CPROG_MON_GAIN tx_gain; /* Tx path gain setting */
M1X22_CPROG_MON_GAIN rx_gain; /* Rx path gain setting */
}
M1X22_CPROG_MONITOR_t;
Parameters
Data Type Name Description
Volt age reference.
Tra nsmi t gain.
Receive gain.
Rev. 1.0 71
Page 72
73M1822/73M1922 Control Module User Guide UG_1x22_053
This is the GPIO configuration command. The GPIO can be configured using the
M1X22_GPIO_CONFIG_SET command. Its co nfiguration ca n be read using M1X22_GPIO_CONFIG_GET
command. The GPIO must be enabled using the M1X22_GPIO_CONTROL IOCTL for the n ew
configuration to take ef fect.
GPIO data access command. If the M1X22_GPIO_SIGNAL_DIRECTION is set to
M1X22_GPIO_DIR_INPUT, perform the M1X22_GPIO_DATA_GET returns the log i cal value of type
M1X22_GPIO_DATA_TYPE of the appropriate G PIO as an input. If the
M1X22_GPIO_SIGNAL_DIRECTION is set to M1X22_GPIO_DIR_OUTPUT, the corresponding GPIO por t
73M1822/73M1922 Control Module User Guide UG_1x22_053
M1X22_GPIO_DATA_LOW
0
M1X22_GPIO_DATA_HIGH
1
M1X22_GPIO_DIR_INPUT
0
M1X22_GPIO_DIR_OUTPUT
1
7.12.5 M1X22_GPIO_DATA_TYPE
Description
GPIO data types – this is the GPIO data returned from the M1X22_GPIO_DATA_GET access command,
or dat a to be writ ten t o the G PIO port using the M1X22_GPIO_DATA_SET access command.
Prototype
typedef enum
{
M1X22_GPIO_DATA_LOW = 0, /* GPIO data - low */
M1X22_GPIO_DATA_HIGH = 1 /* GPIO data - high */
}
M1X22_GPIO_DATA_TYPE;
Parameters
Name Value Description
GPIO data – low.
GPIO data – high.
7.12.6 M1X22_GPIO_SIGNAL_DIRECTION
Description
GPIO pin signal direction. Th is contr ol bit i s used to design ate th e GPIO pin as either input or out put.
Prototype
typedef enum {
M1X22_GPIO_DIR_INPUT = 0, /* GPIO pin signal direction – INPUT */
M1X22_GPIO_DIR_OUTPUT = 1 /* GPIO pin signal direction - OUTPUT */
}
M1X22_GPIO_SIGNAL_DIRECTION;
Parameters
Name Value Description
GPIO pin signal direction – INPUT.
GPIO pin signal direction – OUTPUT.
74 Rev. 1.0
Page 75
UG_1x22_053 73M1822/73M1922 Control Module User Guide
M1X22_GPIO_POL_RISING
0
M1X22_GPIO_POL_FALLING
1
M1X22_GPIO_CONFIG_COMMAND
command
M1X22_GPIO_NUMBER
gpio
M1X22_GPIO_DIRECTION
direction
M1X22_GPIO_INTR_POLARITY
polarity
7.12.7 M1X22_GPIO_INTR_POLARITY
Description
GPIO Interr upt signal t r ansit ion edg e selecti on. The defines the interrupt source as bei ng either on a
rising or a falling edge of the corresponding GPIO pin. If configured as M1X22_GPIO_POL_RISING a
rising edge will trigger an interrupt from the corresponding GPIO pin. If configured as
M1X22_GPIO_POL_FALLING a falling edge will trigger an interrupt from the corresponding GPIO pin.
This structure is used by the M1X22_GPIO_CONFIG IOCTLs to r ead or write GPIO configuration. The
first field in the con fig stru cture is the command action field – GET or SET. For the GET com mand the
“direction” and “ polarity” fields are r eturned if successful.
Prototype
typedef struct gpio_config
{
M1X22_GP IO_ CONFIG_CO MMA ND com man d; /* command */
M1X22_GPIO_NUMBER gpio; /* GPIO number */
M1X22_GPIO_SIGNAL_DIR direction; /* signal direction */
M1X22_GPIO_INTR_POLARITY polarity; /* intr edge selection */
}
M1X22_GPIO_CONFIG_t;
Parameters
Data T ype Name Description
GET or SET GPIO config command.
GPIO number.
GPIO pi n di r e ct i o n – input/output.
Interrupt on signal t r ansit ion edg e pol ar i ty.
Rev. 1.0 75
Page 76
73M1822/73M1922 Control Module User Guide UG_1x22_053
M1X22_GPIO_DATA_COMMAND
command
M1X22_GPIO_NUMBER
gpio
M1X22_GPIO_DATA_TYPE
data
M1X22_GPIO_CONTROL_TYPE
control
M1X22_GPIO_NUMBER
gpio
7.12.9 M1X22_GPIO_DATA_t
Description
This struct ur e is used by the M1X22_GPIO_DATA IOC TLs to read or write GPIO signal from or to the
GPIO pin.
Line curr ent measuring entit y.
Line voltage measuring entit y.
7.14.2 M1X22_MEASURE_ACTION
Description
This is the enumer ated list of possible requ est actions that can be performed on Interval and Even t Table
(IET). See M1X22_IET_t for a descript i on of th e IET table.
Prototype
typedef enum
{
M1X 22_ MEA SUR E_ACTION_GET = 0,
M1X 22_ MEA SUR E_ACTION_SET = 1,
M1X 22_ MEA SUR E_ACTION_SET = 2
}
M1X22_MEASURE_ACTION;
Parameters
Name Value Description
Read the IET table entry.
Update the IET table ent r y.
Disable th e IET table entry.
Rev. 1.0 79
Page 80
73M1822/73M1922 Control Module User Guide UG_1x22_053
M1X22_MEASURE_ENTITY
entity
unsigned int
sample_time
M1X22_MEASURE_STOP
unsigned int
average_sample_count
7.14.3 M1X22_MEASURE_START_STOP_t
Description
This structure is used by the M1X22_MEASURE_START and M1X22_MEASURE_STOP IOCTLs to start and
stop the current or voltag e measurement.
Prototype
typedef struct
{
M1X 22_ MEA SUR E_ENTITY entity;
unsigned int sample_time;
unsigned int average_sample_count;
}
M1X22_MEASURE_START_t;
Parameters
Data T ype Name Description
Measuring entity – curren t or voltage.
Interval between t wo samplin gs in
mil l isecon ds (not appl icable for the
IOCTL).
Sample count for aver age calculation ( not
app l icable for the M1X22_MEASURE_STOP
IOCTL.
80 Rev. 1.0
Page 81
UG_1x22_053 73M1822/73M1922 Control Module User Guide
unsigned int
row
M1X22_MEASURE_ENTITY
entity
M1X22_MEASURE_ACTION
action
unsigned int
event
7.14.4 M1X22_MEASURE_UPDATE_t
Description
This structure is used by the M1X22_MEASURE_UPDATE IOCTL to send the IET table entry par ameters
for up date, or to read its conten t. The acti on parameter i n the struct ure ind i cates the desired operation.
The GET operation performs the read fun ction while the SET operation performs wri te or modify function.
Prototype
typedef struct
{
unsigned int row;
M1X22_MEASURE_ENTITY entity;
M1X 22_ MEA SUR E_ACTION action;
uns ign ed int inver val_min;
uns ign ed int inter val_max;
uns ign ed int event ;
}
M1X22_MEASURE_UPDATE_t;
Parameters
Data T ype Name Description
IET table index (0 to 9).
Measuring entity – curren t or voltage.
Requested action – GET, SET or CLEAR.
unsigned int interval_min
unsigned int interval_max
Lower bound range (in milliamps for current, or
millivolts in voltage).
Upper bound range (in milliamps for current, or
millivolts in voltage).
Event identifier se nt t o application layer.
Rev. 1.0 81
Page 82
73M1822/73M1922 Control Module User Guide UG_1x22_053
unsigned int
row
unsigned int
event
7.14.5 M1X22_IET_t
Description
This Interval and Event Table structure (IET) is internally used by the driver to store threshold parameters
for monitoring li ne cu r r ent and voltage. Each measu r ing enti ty (curr ent and voltage) has its own separate
IET t able of up to 10 entries, or rows with the following attribut es: the IE T row number, l ower an d upper
bound thresholds, and an event identifier that will be sent in M1X22_LINE_STATE event to the application
when this IET entry is entered.
The IET table is managed by t he application layer via a group of line measurem ent IOCTLs.
Management of IET table entry consists of runtime update of IET table, and the start and stop
measurem ent proce ssin g which access these IET tables.
Prototype
typedef struct
{
unsigned int row;
uns ign ed int inver val_min;
uns ign ed int inter val_max;
uns ign ed int event ;
}
M1X22_IET_t;
Parameters
Data T ype Name Description
IET table index (0 to 9).
unsigned int interval_min
unsigned int interval_max
Lower bound range (in milliamps for current, or millivolts for
voltage).
Upper bound range (in milliamps for current, or millivolts for
voltage).
Event identifier se nt t o application layer.
82 Rev. 1.0
Page 83
UG_1x22_053 73M1822/73M1922 Control Module User Guide
drv_config.h
user
drv_version.h
include
drv_sys_os.h
include
drv_sys_os_linux.h
include
tsc_1x22_ctl_ioctls.h
include
tsc_1x22_ctl.h
include
tsc-1x22_ctl_regs.h
include
tsc_1x22_ctl_module.c
src
tsc_1x22_ctl_linux.c
src
tsc_1x22_ctl_register.c
src
tsc_1x22_ctl_iproc.c
src
tsc_1x22_ctl_kproc.c
src
tsc_1x22_ctl_functions.c
src
tsc_1x22_ctl_cntry_tbl.c
src
8 Driver Source and Include File s
The dri ver software i s written exclusively in the C program ming languag e and con sists of t he following
files.
Table 7: Driver Source Code Files
File Name Directory Description
User defined parameters.
Defines the driver version number.
Include OS specific files.
Include Linux specific macros/defines.
Type d efiniti on for external interfac e.
Type d efiniti on for internal in terface.
1x22 Hardware Register d efinitions.
Main Linux modu le source code.
Linux specific functions.
Wrapper fu nctions to access device regi sters.
Interrupt suppor t th r ead/fu nction code.
Event/IOCTL support thread/function code.
Helper functions supp or ting al l function al aspects.
Country Cod e r el ated structures.
Rev. 1.0 83
Page 84
73M1822/73M1922 Control Module User Guide UG_1x22_053
9 Related Documentation
The following 73M1x22 document s are available from Teridian Semicondu ctor Corporation:
73M182273M 1X22 Data Shee t
73M182273M 1X22 Layout Gui del ines
73M1x22 Worldwi de Desi g n Guide
73M1822/73M1922 Control Module User Guide
73M1822/73M1922 Hardware Module for SMDK412 User Guide
73M1822/73M1922 Modem API User Guide
73M1822/7 3M 1 92 2 Mo dem CTL Ap pl i cation Use r G uide
73M1822/73M1922 MicroDAA Software Architecture
10 Contact Information
For m or e i nformation about Teridian Semiconductor products or t o check t he availability of the 73M1822
and 73M1922, contact us at:
644 0 Oak Canyon Road
Suite 100
Irvin e, CA 92618-5201