gigaset: remove UNDOCREQ config option
Drop the kernel config option GIGASET_UNDOCREQ, permanently activating the code it controlled, as there have been no reports of problems caused by its activation but many problems caused by it being disabled. Also fix a few bad comments while we're at it. Impact: cleanup Signed-off-by: Tilman Schmidt <tilman@imap.cc> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
5a1888ea99
commit
b88bd95655
@@ -149,10 +149,8 @@ GigaSet 307x Device Driver
|
|||||||
configuration files and chat scripts in the gigaset-VERSION/ppp directory
|
configuration files and chat scripts in the gigaset-VERSION/ppp directory
|
||||||
in the driver packages from http://sourceforge.net/projects/gigaset307x/.
|
in the driver packages from http://sourceforge.net/projects/gigaset307x/.
|
||||||
Please note that the USB drivers are not able to change the state of the
|
Please note that the USB drivers are not able to change the state of the
|
||||||
control lines (the M105 driver can be configured to use some undocumented
|
control lines. This means you must use "Stupid Mode" if you are using
|
||||||
control requests, if you really need the control lines, though). This means
|
wvdial or you should use the nocrtscts option of pppd.
|
||||||
you must use "Stupid Mode" if you are using wvdial or you should use the
|
|
||||||
nocrtscts option of pppd.
|
|
||||||
You must also assure that the ppp_async module is loaded with the parameter
|
You must also assure that the ppp_async module is loaded with the parameter
|
||||||
flag_time=0. You can do this e.g. by adding a line like
|
flag_time=0. You can do this e.g. by adding a line like
|
||||||
|
|
||||||
@@ -190,20 +188,7 @@ GigaSet 307x Device Driver
|
|||||||
You can also use /sys/class/tty/ttyGxy/cidmode for changing the CID mode
|
You can also use /sys/class/tty/ttyGxy/cidmode for changing the CID mode
|
||||||
setting (ttyGxy is ttyGU0 or ttyGB0).
|
setting (ttyGxy is ttyGU0 or ttyGB0).
|
||||||
|
|
||||||
2.6. M105 Undocumented USB Requests
|
2.6. Unregistered Wireless Devices (M101/M105)
|
||||||
------------------------------
|
|
||||||
The Gigaset M105 USB data box understands a couple of useful, but
|
|
||||||
undocumented USB commands. These requests are not used in normal
|
|
||||||
operation (for wireless access to the base), but are needed for access
|
|
||||||
to the M105's own configuration mode (registration to the base, baudrate
|
|
||||||
and line format settings, device status queries) via the gigacontr
|
|
||||||
utility. Their use is controlled by the kernel configuration option
|
|
||||||
"Support for undocumented USB requests" (CONFIG_GIGASET_UNDOCREQ). If you
|
|
||||||
encounter error code -ENOTTY when trying to use some features of the
|
|
||||||
M105, try setting that option to "y" via 'make {x,menu}config' and
|
|
||||||
recompiling the driver.
|
|
||||||
|
|
||||||
2.7. Unregistered Wireless Devices (M101/M105)
|
|
||||||
-----------------------------------------
|
-----------------------------------------
|
||||||
The main purpose of the ser_gigaset and usb_gigaset drivers is to allow
|
The main purpose of the ser_gigaset and usb_gigaset drivers is to allow
|
||||||
the M101 and M105 wireless devices to be used as ISDN devices for ISDN
|
the M101 and M105 wireless devices to be used as ISDN devices for ISDN
|
||||||
@@ -215,8 +200,7 @@ GigaSet 307x Device Driver
|
|||||||
driver. In that situation, a restricted set of functions is available
|
driver. In that situation, a restricted set of functions is available
|
||||||
which includes, in particular, those necessary for registering the device
|
which includes, in particular, those necessary for registering the device
|
||||||
to a base or for switching it between Fixed Part and Portable Part
|
to a base or for switching it between Fixed Part and Portable Part
|
||||||
modes. For the M105, these commands require the "Support for undocumented
|
modes.
|
||||||
USB requests" configuration option (see section 2.6.) to be enabled.
|
|
||||||
|
|
||||||
3. Troubleshooting
|
3. Troubleshooting
|
||||||
---------------
|
---------------
|
||||||
@@ -246,20 +230,13 @@ GigaSet 307x Device Driver
|
|||||||
Solution:
|
Solution:
|
||||||
Select Unimodem mode for all DECT data adapters. (see section 2.4.)
|
Select Unimodem mode for all DECT data adapters. (see section 2.4.)
|
||||||
|
|
||||||
Problem:
|
|
||||||
You want to configure your USB DECT data adapter (M105) but gigacontr
|
|
||||||
reports an error: "/dev/ttyGU0: Inappropriate ioctl for device".
|
|
||||||
Solution:
|
|
||||||
Recompile the usb_gigaset driver with the kernel configuration option
|
|
||||||
CONFIG_GIGASET_UNDOCREQ set to 'y'. (see section 2.6.)
|
|
||||||
|
|
||||||
Problem:
|
Problem:
|
||||||
Messages like this:
|
Messages like this:
|
||||||
usb_gigaset 3-2:1.0: Could not initialize the device.
|
usb_gigaset 3-2:1.0: Could not initialize the device.
|
||||||
appear in your syslog.
|
appear in your syslog.
|
||||||
Solution:
|
Solution:
|
||||||
Check whether your M10x wireless device is correctly registered to the
|
Check whether your M10x wireless device is correctly registered to the
|
||||||
Gigaset base. (see section 2.7.)
|
Gigaset base. (see section 2.6.)
|
||||||
|
|
||||||
3.2. Telling the driver to provide more information
|
3.2. Telling the driver to provide more information
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
|
@@ -43,11 +43,4 @@ config GIGASET_DEBUG
|
|||||||
This enables debugging code in the Gigaset drivers.
|
This enables debugging code in the Gigaset drivers.
|
||||||
If in doubt, say yes.
|
If in doubt, say yes.
|
||||||
|
|
||||||
config GIGASET_UNDOCREQ
|
|
||||||
bool "Support for undocumented USB requests"
|
|
||||||
help
|
|
||||||
This enables support for USB requests we only know from
|
|
||||||
reverse engineering (currently M105 only). If you need
|
|
||||||
features like configuration mode of M105, say yes.
|
|
||||||
|
|
||||||
endif # ISDN_DRV_GIGASET
|
endif # ISDN_DRV_GIGASET
|
||||||
|
@@ -153,8 +153,6 @@ static inline unsigned tiocm_to_gigaset(unsigned state)
|
|||||||
return ((state & TIOCM_DTR) ? 1 : 0) | ((state & TIOCM_RTS) ? 2 : 0);
|
return ((state & TIOCM_DTR) ? 1 : 0) | ((state & TIOCM_RTS) ? 2 : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_GIGASET_UNDOCREQ
|
|
||||||
/* WARNING: EXPERIMENTAL! */
|
|
||||||
static int gigaset_set_modem_ctrl(struct cardstate *cs, unsigned old_state,
|
static int gigaset_set_modem_ctrl(struct cardstate *cs, unsigned old_state,
|
||||||
unsigned new_state)
|
unsigned new_state)
|
||||||
{
|
{
|
||||||
@@ -176,6 +174,11 @@ static int gigaset_set_modem_ctrl(struct cardstate *cs, unsigned old_state,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set M105 configuration value
|
||||||
|
* using undocumented device commands reverse engineered from USB traces
|
||||||
|
* of the Siemens Windows driver
|
||||||
|
*/
|
||||||
static int set_value(struct cardstate *cs, u8 req, u16 val)
|
static int set_value(struct cardstate *cs, u8 req, u16 val)
|
||||||
{
|
{
|
||||||
struct usb_device *udev = cs->hw.usb->udev;
|
struct usb_device *udev = cs->hw.usb->udev;
|
||||||
@@ -205,8 +208,10 @@ static int set_value(struct cardstate *cs, u8 req, u16 val)
|
|||||||
return r < 0 ? r : (r2 < 0 ? r2 : 0);
|
return r < 0 ? r : (r2 < 0 ? r2 : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* WARNING: HIGHLY EXPERIMENTAL! */
|
/*
|
||||||
// don't use this in an interrupt/BH
|
* set the baud rate on the internal serial adapter
|
||||||
|
* using the undocumented parameter setting command
|
||||||
|
*/
|
||||||
static int gigaset_baud_rate(struct cardstate *cs, unsigned cflag)
|
static int gigaset_baud_rate(struct cardstate *cs, unsigned cflag)
|
||||||
{
|
{
|
||||||
u16 val;
|
u16 val;
|
||||||
@@ -237,8 +242,10 @@ static int gigaset_baud_rate(struct cardstate *cs, unsigned cflag)
|
|||||||
return set_value(cs, 1, val);
|
return set_value(cs, 1, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* WARNING: HIGHLY EXPERIMENTAL! */
|
/*
|
||||||
// don't use this in an interrupt/BH
|
* set the line format on the internal serial adapter
|
||||||
|
* using the undocumented parameter setting command
|
||||||
|
*/
|
||||||
static int gigaset_set_line_ctrl(struct cardstate *cs, unsigned cflag)
|
static int gigaset_set_line_ctrl(struct cardstate *cs, unsigned cflag)
|
||||||
{
|
{
|
||||||
u16 val = 0;
|
u16 val = 0;
|
||||||
@@ -274,24 +281,6 @@ static int gigaset_set_line_ctrl(struct cardstate *cs, unsigned cflag)
|
|||||||
return set_value(cs, 3, val);
|
return set_value(cs, 3, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
|
||||||
static int gigaset_set_modem_ctrl(struct cardstate *cs, unsigned old_state,
|
|
||||||
unsigned new_state)
|
|
||||||
{
|
|
||||||
return -ENOTTY;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int gigaset_set_line_ctrl(struct cardstate *cs, unsigned cflag)
|
|
||||||
{
|
|
||||||
return -ENOTTY;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int gigaset_baud_rate(struct cardstate *cs, unsigned cflag)
|
|
||||||
{
|
|
||||||
return -ENOTTY;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*================================================================================================================*/
|
/*================================================================================================================*/
|
||||||
static int gigaset_init_bchannel(struct bc_state *bcs)
|
static int gigaset_init_bchannel(struct bc_state *bcs)
|
||||||
@@ -362,10 +351,8 @@ static void gigaset_modem_fill(unsigned long data)
|
|||||||
} while (again);
|
} while (again);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* gigaset_read_int_callback
|
* Interrupt Input URB completion routine
|
||||||
*
|
|
||||||
* It is called if the data was received from the device.
|
|
||||||
*/
|
*/
|
||||||
static void gigaset_read_int_callback(struct urb *urb)
|
static void gigaset_read_int_callback(struct urb *urb)
|
||||||
{
|
{
|
||||||
@@ -567,18 +554,19 @@ static int gigaset_chars_in_buffer(struct cardstate *cs)
|
|||||||
return cs->cmdbytes;
|
return cs->cmdbytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* set the break characters on the internal serial adapter
|
||||||
|
* using undocumented device commands reverse engineered from USB traces
|
||||||
|
* of the Siemens Windows driver
|
||||||
|
*/
|
||||||
static int gigaset_brkchars(struct cardstate *cs, const unsigned char buf[6])
|
static int gigaset_brkchars(struct cardstate *cs, const unsigned char buf[6])
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_GIGASET_UNDOCREQ
|
|
||||||
struct usb_device *udev = cs->hw.usb->udev;
|
struct usb_device *udev = cs->hw.usb->udev;
|
||||||
|
|
||||||
gigaset_dbg_buffer(DEBUG_USBREQ, "brkchars", 6, buf);
|
gigaset_dbg_buffer(DEBUG_USBREQ, "brkchars", 6, buf);
|
||||||
memcpy(cs->hw.usb->bchars, buf, 6);
|
memcpy(cs->hw.usb->bchars, buf, 6);
|
||||||
return usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0x19, 0x41,
|
return usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0x19, 0x41,
|
||||||
0, 0, &buf, 6, 2000);
|
0, 0, &buf, 6, 2000);
|
||||||
#else
|
|
||||||
return -ENOTTY;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int gigaset_freebcshw(struct bc_state *bcs)
|
static int gigaset_freebcshw(struct bc_state *bcs)
|
||||||
@@ -625,7 +613,6 @@ static int gigaset_initcshw(struct cardstate *cs)
|
|||||||
ucs->bchars[5] = 0x13;
|
ucs->bchars[5] = 0x13;
|
||||||
ucs->bulk_out_buffer = NULL;
|
ucs->bulk_out_buffer = NULL;
|
||||||
ucs->bulk_out_urb = NULL;
|
ucs->bulk_out_urb = NULL;
|
||||||
//ucs->urb_cmd_out = NULL;
|
|
||||||
ucs->read_urb = NULL;
|
ucs->read_urb = NULL;
|
||||||
tasklet_init(&cs->write_tasklet,
|
tasklet_init(&cs->write_tasklet,
|
||||||
&gigaset_modem_fill, (unsigned long) cs);
|
&gigaset_modem_fill, (unsigned long) cs);
|
||||||
@@ -742,7 +729,7 @@ static int gigaset_probe(struct usb_interface *interface,
|
|||||||
cs->dev = &interface->dev;
|
cs->dev = &interface->dev;
|
||||||
|
|
||||||
/* save address of controller structure */
|
/* save address of controller structure */
|
||||||
usb_set_intfdata(interface, cs); // dev_set_drvdata(&interface->dev, cs);
|
usb_set_intfdata(interface, cs);
|
||||||
|
|
||||||
endpoint = &hostif->endpoint[0].desc;
|
endpoint = &hostif->endpoint[0].desc;
|
||||||
|
|
||||||
@@ -921,8 +908,7 @@ static const struct gigaset_ops ops = {
|
|||||||
gigaset_m10x_input,
|
gigaset_m10x_input,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* usb_gigaset_init
|
|
||||||
* This function is called while kernel-module is loaded
|
* This function is called while kernel-module is loaded
|
||||||
*/
|
*/
|
||||||
static int __init usb_gigaset_init(void)
|
static int __init usb_gigaset_init(void)
|
||||||
@@ -952,9 +938,7 @@ error:
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
/**
|
|
||||||
* usb_gigaset_exit
|
|
||||||
* This function is called while unloading the kernel-module
|
* This function is called while unloading the kernel-module
|
||||||
*/
|
*/
|
||||||
static void __exit usb_gigaset_exit(void)
|
static void __exit usb_gigaset_exit(void)
|
||||||
|
Reference in New Issue
Block a user