Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 28285
b: refs/heads/master
c: 3dda4e3
h: refs/heads/master
i:
  28283: b278aff
v: v3
  • Loading branch information
Hansjoerg Lipp authored and Greg Kroah-Hartman committed Jun 21, 2006
1 parent 37cbf5f commit 8b5ad73
Show file tree
Hide file tree
Showing 6 changed files with 35 additions and 19 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 1cdcb6b43fda7424b7435dac8f80b2b5d8a48899
refs/heads/master: 3dda4e373c7474cfe280f4270b70c1563f92a2a7
7 changes: 4 additions & 3 deletions trunk/Documentation/isdn/README.gigaset
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,8 @@ GigaSet 307x Device Driver

You can use some configuration tool of your distribution to configure this
"modem" or configure pppd/wvdial manually. There are some example ppp
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/.
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 requests, if you really need the control lines, though). This means
Expand Down Expand Up @@ -164,8 +165,8 @@ GigaSet 307x Device Driver

If you want both of these at once, you are out of luck.

You can also use /sys/module/<name>/parameters/cidmode for changing
the CID mode setting (<name> is usb_gigaset or bas_gigaset).
You can also use /sys/class/tty/ttyGxy/cidmode for changing the CID mode
setting (ttyGxy is ttyGU0 or ttyGB0).


3. Troubleshooting
Expand Down
13 changes: 7 additions & 6 deletions trunk/drivers/isdn/gigaset/common.c
Original file line number Diff line number Diff line change
Expand Up @@ -460,6 +460,9 @@ void gigaset_freecs(struct cardstate *cs)

switch (cs->cs_init) {
default:
/* clear device sysfs */
gigaset_free_dev_sysfs(cs);

gigaset_if_free(cs);

gig_dbg(DEBUG_INIT, "clearing hw");
Expand Down Expand Up @@ -699,6 +702,7 @@ struct cardstate *gigaset_initcs(struct gigaset_driver *drv, int channels,
cs->open_count = 0;
cs->dev = NULL;
cs->tty = NULL;
cs->class = NULL;
cs->cidmode = cidmode != 0;

//if(onechannel) { //FIXME
Expand Down Expand Up @@ -760,6 +764,9 @@ struct cardstate *gigaset_initcs(struct gigaset_driver *drv, int channels,

gigaset_if_init(cs);

/* set up device sysfs */
gigaset_init_dev_sysfs(cs);

spin_lock_irqsave(&cs->lock, flags);
cs->running = 1;
spin_unlock_irqrestore(&cs->lock, flags);
Expand Down Expand Up @@ -902,9 +909,6 @@ int gigaset_start(struct cardstate *cs)

wait_event(cs->waitqueue, !cs->waiting);

/* set up device sysfs */
gigaset_init_dev_sysfs(cs);

mutex_unlock(&cs->mutex);
return 1;

Expand Down Expand Up @@ -969,9 +973,6 @@ void gigaset_stop(struct cardstate *cs)
//FIXME
}

/* clear device sysfs */
gigaset_free_dev_sysfs(cs);

cleanup_cs(cs);

exit:
Expand Down
1 change: 1 addition & 0 deletions trunk/drivers/isdn/gigaset/gigaset.h
Original file line number Diff line number Diff line change
Expand Up @@ -445,6 +445,7 @@ struct cardstate {
struct gigaset_driver *driver;
unsigned minor_index;
struct device *dev;
struct class_device *class;

const struct gigaset_ops *ops;

Expand Down
10 changes: 9 additions & 1 deletion trunk/drivers/isdn/gigaset/interface.c
Original file line number Diff line number Diff line change
Expand Up @@ -625,7 +625,14 @@ void gigaset_if_init(struct cardstate *cs)
return;

tasklet_init(&cs->if_wake_tasklet, &if_wake, (unsigned long) cs);
tty_register_device(drv->tty, cs->minor_index, NULL);
cs->class = tty_register_device(drv->tty, cs->minor_index, NULL);

if (!IS_ERR(cs->class))
class_set_devdata(cs->class, cs);
else {
warn("could not register device to the tty subsystem");
cs->class = NULL;
}
}

void gigaset_if_free(struct cardstate *cs)
Expand All @@ -638,6 +645,7 @@ void gigaset_if_free(struct cardstate *cs)

tasklet_disable(&cs->if_wake_tasklet);
tasklet_kill(&cs->if_wake_tasklet);
cs->class = NULL;
tty_unregister_device(drv->tty, cs->minor_index);
}

Expand Down
21 changes: 13 additions & 8 deletions trunk/drivers/isdn/gigaset/proc.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,11 @@
#include "gigaset.h"
#include <linux/ctype.h>

static ssize_t show_cidmode(struct device *dev, struct device_attribute *attr,
char *buf)
static ssize_t show_cidmode(struct class_device *class, char *buf)
{
int ret;
unsigned long flags;
struct cardstate *cs = dev_get_drvdata(dev);
struct cardstate *cs = class_get_devdata(class);

spin_lock_irqsave(&cs->lock, flags);
ret = sprintf(buf, "%u\n", cs->cidmode);
Expand All @@ -30,10 +29,10 @@ static ssize_t show_cidmode(struct device *dev, struct device_attribute *attr,
return ret;
}

static ssize_t set_cidmode(struct device *dev, struct device_attribute *attr,
static ssize_t set_cidmode(struct class_device *class,
const char *buf, size_t count)
{
struct cardstate *cs = dev_get_drvdata(dev);
struct cardstate *cs = class_get_devdata(class);
long int value;
char *end;

Expand Down Expand Up @@ -65,18 +64,24 @@ static ssize_t set_cidmode(struct device *dev, struct device_attribute *attr,
return count;
}

static DEVICE_ATTR(cidmode, S_IRUGO|S_IWUSR, show_cidmode, set_cidmode);
static CLASS_DEVICE_ATTR(cidmode, S_IRUGO|S_IWUSR, show_cidmode, set_cidmode);

/* free sysfs for device */
void gigaset_free_dev_sysfs(struct cardstate *cs)
{
if (!cs->class)
return;

gig_dbg(DEBUG_INIT, "removing sysfs entries");
device_remove_file(cs->dev, &dev_attr_cidmode);
class_device_remove_file(cs->class, &class_device_attr_cidmode);
}

/* initialize sysfs for device */
void gigaset_init_dev_sysfs(struct cardstate *cs)
{
if (!cs->class)
return;

gig_dbg(DEBUG_INIT, "setting up sysfs");
device_create_file(cs->dev, &dev_attr_cidmode);
class_device_create_file(cs->class, &class_device_attr_cidmode);
}

0 comments on commit 8b5ad73

Please sign in to comment.