mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6: (64 commits)
debugfs: use specified mode to possibly mark files read/write only
debugfs: Fix terminology inconsistency of dir name to mount debugfs filesystem.
xen: remove driver_data direct access of struct device from more drivers
usb: gadget: at91_udc: remove driver_data direct access of struct device
uml: remove driver_data direct access of struct device
block/ps3: remove driver_data direct access of struct device
s390: remove driver_data direct access of struct device
parport: remove driver_data direct access of struct device
parisc: remove driver_data direct access of struct device
of_serial: remove driver_data direct access of struct device
mips: remove driver_data direct access of struct device
ipmi: remove driver_data direct access of struct device
infiniband: ehca: remove driver_data direct access of struct device
ibmvscsi: gadget: at91_udc: remove driver_data direct access of struct device
hvcs: remove driver_data direct access of struct device
xen block: remove driver_data direct access of struct device
thermal: remove driver_data direct access of struct device
scsi: remove driver_data direct access of struct device
pcmcia: remove driver_data direct access of struct device
PCIE: remove driver_data direct access of struct device
...
Manually fix up trivial conflicts due to different direct driver_data
direct access fixups in drivers/block/{ps3disk.c,ps3vram.c}
This commit is contained in:
commit
6fd03301d7
121 changed files with 875 additions and 812 deletions
|
|
@ -364,7 +364,7 @@ static void raw3215_irq(struct ccw_device *cdev, unsigned long intparm,
|
|||
int cstat, dstat;
|
||||
int count;
|
||||
|
||||
raw = cdev->dev.driver_data;
|
||||
raw = dev_get_drvdata(&cdev->dev);
|
||||
req = (struct raw3215_req *) intparm;
|
||||
cstat = irb->scsw.cmd.cstat;
|
||||
dstat = irb->scsw.cmd.dstat;
|
||||
|
|
@ -652,7 +652,7 @@ static int raw3215_probe (struct ccw_device *cdev)
|
|||
int line;
|
||||
|
||||
/* Console is special. */
|
||||
if (raw3215[0] && (cdev->dev.driver_data == raw3215[0]))
|
||||
if (raw3215[0] && (raw3215[0] == dev_get_drvdata(&cdev->dev)))
|
||||
return 0;
|
||||
raw = kmalloc(sizeof(struct raw3215_info) +
|
||||
RAW3215_INBUF_SIZE, GFP_KERNEL|GFP_DMA);
|
||||
|
|
@ -686,7 +686,7 @@ static int raw3215_probe (struct ccw_device *cdev)
|
|||
}
|
||||
init_waitqueue_head(&raw->empty_wait);
|
||||
|
||||
cdev->dev.driver_data = raw;
|
||||
dev_set_drvdata(&cdev->dev, raw);
|
||||
cdev->handler = raw3215_irq;
|
||||
|
||||
return 0;
|
||||
|
|
@ -697,9 +697,9 @@ static void raw3215_remove (struct ccw_device *cdev)
|
|||
struct raw3215_info *raw;
|
||||
|
||||
ccw_device_set_offline(cdev);
|
||||
raw = cdev->dev.driver_data;
|
||||
raw = dev_get_drvdata(&cdev->dev);
|
||||
if (raw) {
|
||||
cdev->dev.driver_data = NULL;
|
||||
dev_set_drvdata(&cdev->dev, NULL);
|
||||
kfree(raw->buffer);
|
||||
kfree(raw);
|
||||
}
|
||||
|
|
@ -709,7 +709,7 @@ static int raw3215_set_online (struct ccw_device *cdev)
|
|||
{
|
||||
struct raw3215_info *raw;
|
||||
|
||||
raw = cdev->dev.driver_data;
|
||||
raw = dev_get_drvdata(&cdev->dev);
|
||||
if (!raw)
|
||||
return -ENODEV;
|
||||
|
||||
|
|
@ -720,7 +720,7 @@ static int raw3215_set_offline (struct ccw_device *cdev)
|
|||
{
|
||||
struct raw3215_info *raw;
|
||||
|
||||
raw = cdev->dev.driver_data;
|
||||
raw = dev_get_drvdata(&cdev->dev);
|
||||
if (!raw)
|
||||
return -ENODEV;
|
||||
|
||||
|
|
@ -898,7 +898,7 @@ static int __init con3215_init(void)
|
|||
raw->buffer = (char *) alloc_bootmem_low(RAW3215_BUFFER_SIZE);
|
||||
raw->inbuf = (char *) alloc_bootmem_low(RAW3215_INBUF_SIZE);
|
||||
raw->cdev = cdev;
|
||||
cdev->dev.driver_data = raw;
|
||||
dev_set_drvdata(&cdev->dev, raw);
|
||||
cdev->handler = raw3215_irq;
|
||||
|
||||
raw->flags |= RAW3215_FIXED;
|
||||
|
|
|
|||
|
|
@ -357,7 +357,7 @@ raw3270_irq (struct ccw_device *cdev, unsigned long intparm, struct irb *irb)
|
|||
struct raw3270_request *rq;
|
||||
int rc;
|
||||
|
||||
rp = (struct raw3270 *) cdev->dev.driver_data;
|
||||
rp = dev_get_drvdata(&cdev->dev);
|
||||
if (!rp)
|
||||
return;
|
||||
rq = (struct raw3270_request *) intparm;
|
||||
|
|
@ -831,7 +831,7 @@ raw3270_setup_device(struct ccw_device *cdev, struct raw3270 *rp, char *ascebc)
|
|||
if (rp->minor == -1)
|
||||
return -EUSERS;
|
||||
rp->cdev = cdev;
|
||||
cdev->dev.driver_data = rp;
|
||||
dev_set_drvdata(&cdev->dev, rp);
|
||||
cdev->handler = raw3270_irq;
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1112,7 +1112,7 @@ raw3270_delete_device(struct raw3270 *rp)
|
|||
/* Disconnect from ccw_device. */
|
||||
cdev = rp->cdev;
|
||||
rp->cdev = NULL;
|
||||
cdev->dev.driver_data = NULL;
|
||||
dev_set_drvdata(&cdev->dev, NULL);
|
||||
cdev->handler = NULL;
|
||||
|
||||
/* Put ccw_device structure. */
|
||||
|
|
@ -1136,7 +1136,7 @@ static ssize_t
|
|||
raw3270_model_show(struct device *dev, struct device_attribute *attr, char *buf)
|
||||
{
|
||||
return snprintf(buf, PAGE_SIZE, "%i\n",
|
||||
((struct raw3270 *) dev->driver_data)->model);
|
||||
((struct raw3270 *) dev_get_drvdata(dev))->model);
|
||||
}
|
||||
static DEVICE_ATTR(model, 0444, raw3270_model_show, NULL);
|
||||
|
||||
|
|
@ -1144,7 +1144,7 @@ static ssize_t
|
|||
raw3270_rows_show(struct device *dev, struct device_attribute *attr, char *buf)
|
||||
{
|
||||
return snprintf(buf, PAGE_SIZE, "%i\n",
|
||||
((struct raw3270 *) dev->driver_data)->rows);
|
||||
((struct raw3270 *) dev_get_drvdata(dev))->rows);
|
||||
}
|
||||
static DEVICE_ATTR(rows, 0444, raw3270_rows_show, NULL);
|
||||
|
||||
|
|
@ -1152,7 +1152,7 @@ static ssize_t
|
|||
raw3270_columns_show(struct device *dev, struct device_attribute *attr, char *buf)
|
||||
{
|
||||
return snprintf(buf, PAGE_SIZE, "%i\n",
|
||||
((struct raw3270 *) dev->driver_data)->cols);
|
||||
((struct raw3270 *) dev_get_drvdata(dev))->cols);
|
||||
}
|
||||
static DEVICE_ATTR(columns, 0444, raw3270_columns_show, NULL);
|
||||
|
||||
|
|
@ -1289,7 +1289,7 @@ raw3270_remove (struct ccw_device *cdev)
|
|||
struct raw3270_view *v;
|
||||
struct raw3270_notifier *np;
|
||||
|
||||
rp = cdev->dev.driver_data;
|
||||
rp = dev_get_drvdata(&cdev->dev);
|
||||
/*
|
||||
* _remove is the opposite of _probe; it's probe that
|
||||
* should set up rp. raw3270_remove gets entered for
|
||||
|
|
@ -1337,7 +1337,7 @@ raw3270_set_offline (struct ccw_device *cdev)
|
|||
{
|
||||
struct raw3270 *rp;
|
||||
|
||||
rp = cdev->dev.driver_data;
|
||||
rp = dev_get_drvdata(&cdev->dev);
|
||||
if (test_bit(RAW3270_FLAGS_CONSOLE, &rp->flags))
|
||||
return -EBUSY;
|
||||
raw3270_remove(cdev);
|
||||
|
|
|
|||
|
|
@ -1289,7 +1289,7 @@ static int
|
|||
tape_34xx_online(struct ccw_device *cdev)
|
||||
{
|
||||
return tape_generic_online(
|
||||
cdev->dev.driver_data,
|
||||
dev_get_drvdata(&cdev->dev),
|
||||
&tape_discipline_34xx
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1703,7 +1703,7 @@ static struct ccw_device_id tape_3590_ids[] = {
|
|||
static int
|
||||
tape_3590_online(struct ccw_device *cdev)
|
||||
{
|
||||
return tape_generic_online(cdev->dev.driver_data,
|
||||
return tape_generic_online(dev_get_drvdata(&cdev->dev),
|
||||
&tape_discipline_3590);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ tape_medium_state_show(struct device *dev, struct device_attribute *attr, char *
|
|||
{
|
||||
struct tape_device *tdev;
|
||||
|
||||
tdev = (struct tape_device *) dev->driver_data;
|
||||
tdev = dev_get_drvdata(dev);
|
||||
return scnprintf(buf, PAGE_SIZE, "%i\n", tdev->medium_state);
|
||||
}
|
||||
|
||||
|
|
@ -104,7 +104,7 @@ tape_first_minor_show(struct device *dev, struct device_attribute *attr, char *b
|
|||
{
|
||||
struct tape_device *tdev;
|
||||
|
||||
tdev = (struct tape_device *) dev->driver_data;
|
||||
tdev = dev_get_drvdata(dev);
|
||||
return scnprintf(buf, PAGE_SIZE, "%i\n", tdev->first_minor);
|
||||
}
|
||||
|
||||
|
|
@ -116,7 +116,7 @@ tape_state_show(struct device *dev, struct device_attribute *attr, char *buf)
|
|||
{
|
||||
struct tape_device *tdev;
|
||||
|
||||
tdev = (struct tape_device *) dev->driver_data;
|
||||
tdev = dev_get_drvdata(dev);
|
||||
return scnprintf(buf, PAGE_SIZE, "%s\n", (tdev->first_minor < 0) ?
|
||||
"OFFLINE" : tape_state_verbose[tdev->tape_state]);
|
||||
}
|
||||
|
|
@ -130,7 +130,7 @@ tape_operation_show(struct device *dev, struct device_attribute *attr, char *buf
|
|||
struct tape_device *tdev;
|
||||
ssize_t rc;
|
||||
|
||||
tdev = (struct tape_device *) dev->driver_data;
|
||||
tdev = dev_get_drvdata(dev);
|
||||
if (tdev->first_minor < 0)
|
||||
return scnprintf(buf, PAGE_SIZE, "N/A\n");
|
||||
|
||||
|
|
@ -156,7 +156,7 @@ tape_blocksize_show(struct device *dev, struct device_attribute *attr, char *buf
|
|||
{
|
||||
struct tape_device *tdev;
|
||||
|
||||
tdev = (struct tape_device *) dev->driver_data;
|
||||
tdev = dev_get_drvdata(dev);
|
||||
|
||||
return scnprintf(buf, PAGE_SIZE, "%i\n", tdev->char_data.block_size);
|
||||
}
|
||||
|
|
@ -440,7 +440,7 @@ tape_generic_offline(struct ccw_device *cdev)
|
|||
{
|
||||
struct tape_device *device;
|
||||
|
||||
device = cdev->dev.driver_data;
|
||||
device = dev_get_drvdata(&cdev->dev);
|
||||
if (!device) {
|
||||
return -ENODEV;
|
||||
}
|
||||
|
|
@ -583,7 +583,7 @@ tape_generic_probe(struct ccw_device *cdev)
|
|||
tape_put_device(device);
|
||||
return ret;
|
||||
}
|
||||
cdev->dev.driver_data = device;
|
||||
dev_set_drvdata(&cdev->dev, device);
|
||||
cdev->handler = __tape_do_irq;
|
||||
device->cdev = cdev;
|
||||
ccw_device_get_id(cdev, &dev_id);
|
||||
|
|
@ -622,7 +622,7 @@ tape_generic_remove(struct ccw_device *cdev)
|
|||
{
|
||||
struct tape_device * device;
|
||||
|
||||
device = cdev->dev.driver_data;
|
||||
device = dev_get_drvdata(&cdev->dev);
|
||||
if (!device) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -662,9 +662,9 @@ tape_generic_remove(struct ccw_device *cdev)
|
|||
tape_cleanup_device(device);
|
||||
}
|
||||
|
||||
if (cdev->dev.driver_data != NULL) {
|
||||
if (!dev_get_drvdata(&cdev->dev)) {
|
||||
sysfs_remove_group(&cdev->dev.kobj, &tape_attr_group);
|
||||
cdev->dev.driver_data = tape_put_device(cdev->dev.driver_data);
|
||||
dev_set_drvdata(&cdev->dev, tape_put_device(dev_get_drvdata(&cdev->dev)));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1060,7 +1060,7 @@ __tape_do_irq (struct ccw_device *cdev, unsigned long intparm, struct irb *irb)
|
|||
struct tape_request *request;
|
||||
int rc;
|
||||
|
||||
device = (struct tape_device *) cdev->dev.driver_data;
|
||||
device = dev_get_drvdata(&cdev->dev);
|
||||
if (device == NULL) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -504,7 +504,7 @@ static ssize_t vmlogrdr_autopurge_store(struct device * dev,
|
|||
struct device_attribute *attr,
|
||||
const char * buf, size_t count)
|
||||
{
|
||||
struct vmlogrdr_priv_t *priv = dev->driver_data;
|
||||
struct vmlogrdr_priv_t *priv = dev_get_drvdata(dev);
|
||||
ssize_t ret = count;
|
||||
|
||||
switch (buf[0]) {
|
||||
|
|
@ -525,7 +525,7 @@ static ssize_t vmlogrdr_autopurge_show(struct device *dev,
|
|||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct vmlogrdr_priv_t *priv = dev->driver_data;
|
||||
struct vmlogrdr_priv_t *priv = dev_get_drvdata(dev);
|
||||
return sprintf(buf, "%u\n", priv->autopurge);
|
||||
}
|
||||
|
||||
|
|
@ -541,7 +541,7 @@ static ssize_t vmlogrdr_purge_store(struct device * dev,
|
|||
|
||||
char cp_command[80];
|
||||
char cp_response[80];
|
||||
struct vmlogrdr_priv_t *priv = dev->driver_data;
|
||||
struct vmlogrdr_priv_t *priv = dev_get_drvdata(dev);
|
||||
|
||||
if (buf[0] != '1')
|
||||
return -EINVAL;
|
||||
|
|
@ -578,7 +578,7 @@ static ssize_t vmlogrdr_autorecording_store(struct device *dev,
|
|||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct vmlogrdr_priv_t *priv = dev->driver_data;
|
||||
struct vmlogrdr_priv_t *priv = dev_get_drvdata(dev);
|
||||
ssize_t ret = count;
|
||||
|
||||
switch (buf[0]) {
|
||||
|
|
@ -599,7 +599,7 @@ static ssize_t vmlogrdr_autorecording_show(struct device *dev,
|
|||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct vmlogrdr_priv_t *priv = dev->driver_data;
|
||||
struct vmlogrdr_priv_t *priv = dev_get_drvdata(dev);
|
||||
return sprintf(buf, "%u\n", priv->autorecording);
|
||||
}
|
||||
|
||||
|
|
@ -612,7 +612,7 @@ static ssize_t vmlogrdr_recording_store(struct device * dev,
|
|||
struct device_attribute *attr,
|
||||
const char * buf, size_t count)
|
||||
{
|
||||
struct vmlogrdr_priv_t *priv = dev->driver_data;
|
||||
struct vmlogrdr_priv_t *priv = dev_get_drvdata(dev);
|
||||
ssize_t ret;
|
||||
|
||||
switch (buf[0]) {
|
||||
|
|
|
|||
|
|
@ -80,11 +80,11 @@ static DEFINE_MUTEX(vmur_mutex);
|
|||
*
|
||||
* Each ur device (urd) contains a reference to its corresponding ccw device
|
||||
* (cdev) using the urd->cdev pointer. Each ccw device has a reference to the
|
||||
* ur device using the cdev->dev.driver_data pointer.
|
||||
* ur device using dev_get_drvdata(&cdev->dev) pointer.
|
||||
*
|
||||
* urd references:
|
||||
* - ur_probe gets a urd reference, ur_remove drops the reference
|
||||
* (cdev->dev.driver_data)
|
||||
* dev_get_drvdata(&cdev->dev)
|
||||
* - ur_open gets a urd reference, ur_relase drops the reference
|
||||
* (urf->urd)
|
||||
*
|
||||
|
|
@ -92,7 +92,7 @@ static DEFINE_MUTEX(vmur_mutex);
|
|||
* - urdev_alloc get a cdev reference (urd->cdev)
|
||||
* - urdev_free drops the cdev reference (urd->cdev)
|
||||
*
|
||||
* Setting and clearing of cdev->dev.driver_data is protected by the ccwdev lock
|
||||
* Setting and clearing of dev_get_drvdata(&cdev->dev) is protected by the ccwdev lock
|
||||
*/
|
||||
static struct urdev *urdev_alloc(struct ccw_device *cdev)
|
||||
{
|
||||
|
|
@ -131,7 +131,7 @@ static struct urdev *urdev_get_from_cdev(struct ccw_device *cdev)
|
|||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(get_ccwdev_lock(cdev), flags);
|
||||
urd = cdev->dev.driver_data;
|
||||
urd = dev_get_drvdata(&cdev->dev);
|
||||
if (urd)
|
||||
urdev_get(urd);
|
||||
spin_unlock_irqrestore(get_ccwdev_lock(cdev), flags);
|
||||
|
|
@ -310,7 +310,7 @@ static void ur_int_handler(struct ccw_device *cdev, unsigned long intparm,
|
|||
TRACE("ur_int_handler: unsolicited interrupt\n");
|
||||
return;
|
||||
}
|
||||
urd = cdev->dev.driver_data;
|
||||
urd = dev_get_drvdata(&cdev->dev);
|
||||
BUG_ON(!urd);
|
||||
/* On special conditions irb is an error pointer */
|
||||
if (IS_ERR(irb))
|
||||
|
|
@ -856,7 +856,7 @@ static int ur_probe(struct ccw_device *cdev)
|
|||
goto fail_remove_attr;
|
||||
}
|
||||
spin_lock_irq(get_ccwdev_lock(cdev));
|
||||
cdev->dev.driver_data = urd;
|
||||
dev_set_drvdata(&cdev->dev, urd);
|
||||
spin_unlock_irq(get_ccwdev_lock(cdev));
|
||||
|
||||
mutex_unlock(&vmur_mutex);
|
||||
|
|
@ -996,8 +996,8 @@ static void ur_remove(struct ccw_device *cdev)
|
|||
ur_remove_attributes(&cdev->dev);
|
||||
|
||||
spin_lock_irqsave(get_ccwdev_lock(cdev), flags);
|
||||
urdev_put(cdev->dev.driver_data);
|
||||
cdev->dev.driver_data = NULL;
|
||||
urdev_put(dev_get_drvdata(&cdev->dev));
|
||||
dev_set_drvdata(&cdev->dev, NULL);
|
||||
spin_unlock_irqrestore(get_ccwdev_lock(cdev), flags);
|
||||
|
||||
mutex_unlock(&vmur_mutex);
|
||||
|
|
|
|||
|
|
@ -290,7 +290,7 @@ claw_probe(struct ccwgroup_device *cgdev)
|
|||
if (!get_device(&cgdev->dev))
|
||||
return -ENODEV;
|
||||
privptr = kzalloc(sizeof(struct claw_privbk), GFP_KERNEL);
|
||||
cgdev->dev.driver_data = privptr;
|
||||
dev_set_drvdata(&cgdev->dev, privptr);
|
||||
if (privptr == NULL) {
|
||||
probe_error(cgdev);
|
||||
put_device(&cgdev->dev);
|
||||
|
|
@ -597,14 +597,14 @@ claw_irq_handler(struct ccw_device *cdev,
|
|||
|
||||
CLAW_DBF_TEXT(4, trace, "clawirq");
|
||||
/* Bypass all 'unsolicited interrupts' */
|
||||
if (!cdev->dev.driver_data) {
|
||||
privptr = dev_get_drvdata(&cdev->dev);
|
||||
if (!privptr) {
|
||||
dev_warn(&cdev->dev, "An uninitialized CLAW device received an"
|
||||
" IRQ, c-%02x d-%02x\n",
|
||||
irb->scsw.cmd.cstat, irb->scsw.cmd.dstat);
|
||||
CLAW_DBF_TEXT(2, trace, "badirq");
|
||||
return;
|
||||
}
|
||||
privptr = (struct claw_privbk *)cdev->dev.driver_data;
|
||||
|
||||
/* Try to extract channel from driver data. */
|
||||
if (privptr->channel[READ].cdev == cdev)
|
||||
|
|
@ -1986,9 +1986,9 @@ probe_error( struct ccwgroup_device *cgdev)
|
|||
struct claw_privbk *privptr;
|
||||
|
||||
CLAW_DBF_TEXT(4, trace, "proberr");
|
||||
privptr = (struct claw_privbk *) cgdev->dev.driver_data;
|
||||
privptr = dev_get_drvdata(&cgdev->dev);
|
||||
if (privptr != NULL) {
|
||||
cgdev->dev.driver_data = NULL;
|
||||
dev_set_drvdata(&cgdev->dev, NULL);
|
||||
kfree(privptr->p_env);
|
||||
kfree(privptr->p_mtc_envelope);
|
||||
kfree(privptr);
|
||||
|
|
@ -2917,9 +2917,9 @@ claw_new_device(struct ccwgroup_device *cgdev)
|
|||
dev_info(&cgdev->dev, "add for %s\n",
|
||||
dev_name(&cgdev->cdev[READ]->dev));
|
||||
CLAW_DBF_TEXT(2, setup, "new_dev");
|
||||
privptr = cgdev->dev.driver_data;
|
||||
cgdev->cdev[READ]->dev.driver_data = privptr;
|
||||
cgdev->cdev[WRITE]->dev.driver_data = privptr;
|
||||
privptr = dev_get_drvdata(&cgdev->dev);
|
||||
dev_set_drvdata(&cgdev->cdev[READ]->dev, privptr);
|
||||
dev_set_drvdata(&cgdev->cdev[WRITE]->dev, privptr);
|
||||
if (!privptr)
|
||||
return -ENODEV;
|
||||
p_env = privptr->p_env;
|
||||
|
|
@ -2956,9 +2956,9 @@ claw_new_device(struct ccwgroup_device *cgdev)
|
|||
goto out;
|
||||
}
|
||||
dev->ml_priv = privptr;
|
||||
cgdev->dev.driver_data = privptr;
|
||||
cgdev->cdev[READ]->dev.driver_data = privptr;
|
||||
cgdev->cdev[WRITE]->dev.driver_data = privptr;
|
||||
dev_set_drvdata(&cgdev->dev, privptr);
|
||||
dev_set_drvdata(&cgdev->cdev[READ]->dev, privptr);
|
||||
dev_set_drvdata(&cgdev->cdev[WRITE]->dev, privptr);
|
||||
/* sysfs magic */
|
||||
SET_NETDEV_DEV(dev, &cgdev->dev);
|
||||
if (register_netdev(dev) != 0) {
|
||||
|
|
@ -3024,7 +3024,7 @@ claw_shutdown_device(struct ccwgroup_device *cgdev)
|
|||
int ret;
|
||||
|
||||
CLAW_DBF_TEXT_(2, setup, "%s", dev_name(&cgdev->dev));
|
||||
priv = cgdev->dev.driver_data;
|
||||
priv = dev_get_drvdata(&cgdev->dev);
|
||||
if (!priv)
|
||||
return -ENODEV;
|
||||
ndev = priv->channel[READ].ndev;
|
||||
|
|
@ -3054,7 +3054,7 @@ claw_remove_device(struct ccwgroup_device *cgdev)
|
|||
|
||||
BUG_ON(!cgdev);
|
||||
CLAW_DBF_TEXT_(2, setup, "%s", dev_name(&cgdev->dev));
|
||||
priv = cgdev->dev.driver_data;
|
||||
priv = dev_get_drvdata(&cgdev->dev);
|
||||
BUG_ON(!priv);
|
||||
dev_info(&cgdev->dev, " will be removed.\n");
|
||||
if (cgdev->state == CCWGROUP_ONLINE)
|
||||
|
|
@ -3069,9 +3069,9 @@ claw_remove_device(struct ccwgroup_device *cgdev)
|
|||
kfree(priv->channel[1].irb);
|
||||
priv->channel[1].irb=NULL;
|
||||
kfree(priv);
|
||||
cgdev->dev.driver_data=NULL;
|
||||
cgdev->cdev[READ]->dev.driver_data = NULL;
|
||||
cgdev->cdev[WRITE]->dev.driver_data = NULL;
|
||||
dev_set_drvdata(&cgdev->dev, NULL);
|
||||
dev_set_drvdata(&cgdev->cdev[READ]->dev, NULL);
|
||||
dev_set_drvdata(&cgdev->cdev[WRITE]->dev, NULL);
|
||||
put_device(&cgdev->dev);
|
||||
|
||||
return;
|
||||
|
|
@ -3087,7 +3087,7 @@ claw_hname_show(struct device *dev, struct device_attribute *attr, char *buf)
|
|||
struct claw_privbk *priv;
|
||||
struct claw_env * p_env;
|
||||
|
||||
priv = dev->driver_data;
|
||||
priv = dev_get_drvdata(dev);
|
||||
if (!priv)
|
||||
return -ENODEV;
|
||||
p_env = priv->p_env;
|
||||
|
|
@ -3101,7 +3101,7 @@ claw_hname_write(struct device *dev, struct device_attribute *attr,
|
|||
struct claw_privbk *priv;
|
||||
struct claw_env * p_env;
|
||||
|
||||
priv = dev->driver_data;
|
||||
priv = dev_get_drvdata(dev);
|
||||
if (!priv)
|
||||
return -ENODEV;
|
||||
p_env = priv->p_env;
|
||||
|
|
@ -3125,7 +3125,7 @@ claw_adname_show(struct device *dev, struct device_attribute *attr, char *buf)
|
|||
struct claw_privbk *priv;
|
||||
struct claw_env * p_env;
|
||||
|
||||
priv = dev->driver_data;
|
||||
priv = dev_get_drvdata(dev);
|
||||
if (!priv)
|
||||
return -ENODEV;
|
||||
p_env = priv->p_env;
|
||||
|
|
@ -3139,7 +3139,7 @@ claw_adname_write(struct device *dev, struct device_attribute *attr,
|
|||
struct claw_privbk *priv;
|
||||
struct claw_env * p_env;
|
||||
|
||||
priv = dev->driver_data;
|
||||
priv = dev_get_drvdata(dev);
|
||||
if (!priv)
|
||||
return -ENODEV;
|
||||
p_env = priv->p_env;
|
||||
|
|
@ -3163,7 +3163,7 @@ claw_apname_show(struct device *dev, struct device_attribute *attr, char *buf)
|
|||
struct claw_privbk *priv;
|
||||
struct claw_env * p_env;
|
||||
|
||||
priv = dev->driver_data;
|
||||
priv = dev_get_drvdata(dev);
|
||||
if (!priv)
|
||||
return -ENODEV;
|
||||
p_env = priv->p_env;
|
||||
|
|
@ -3178,7 +3178,7 @@ claw_apname_write(struct device *dev, struct device_attribute *attr,
|
|||
struct claw_privbk *priv;
|
||||
struct claw_env * p_env;
|
||||
|
||||
priv = dev->driver_data;
|
||||
priv = dev_get_drvdata(dev);
|
||||
if (!priv)
|
||||
return -ENODEV;
|
||||
p_env = priv->p_env;
|
||||
|
|
@ -3212,7 +3212,7 @@ claw_wbuff_show(struct device *dev, struct device_attribute *attr, char *buf)
|
|||
struct claw_privbk *priv;
|
||||
struct claw_env * p_env;
|
||||
|
||||
priv = dev->driver_data;
|
||||
priv = dev_get_drvdata(dev);
|
||||
if (!priv)
|
||||
return -ENODEV;
|
||||
p_env = priv->p_env;
|
||||
|
|
@ -3227,7 +3227,7 @@ claw_wbuff_write(struct device *dev, struct device_attribute *attr,
|
|||
struct claw_env * p_env;
|
||||
int nnn,max;
|
||||
|
||||
priv = dev->driver_data;
|
||||
priv = dev_get_drvdata(dev);
|
||||
if (!priv)
|
||||
return -ENODEV;
|
||||
p_env = priv->p_env;
|
||||
|
|
@ -3254,7 +3254,7 @@ claw_rbuff_show(struct device *dev, struct device_attribute *attr, char *buf)
|
|||
struct claw_privbk *priv;
|
||||
struct claw_env * p_env;
|
||||
|
||||
priv = dev->driver_data;
|
||||
priv = dev_get_drvdata(dev);
|
||||
if (!priv)
|
||||
return -ENODEV;
|
||||
p_env = priv->p_env;
|
||||
|
|
@ -3269,7 +3269,7 @@ claw_rbuff_write(struct device *dev, struct device_attribute *attr,
|
|||
struct claw_env *p_env;
|
||||
int nnn,max;
|
||||
|
||||
priv = dev->driver_data;
|
||||
priv = dev_get_drvdata(dev);
|
||||
if (!priv)
|
||||
return -ENODEV;
|
||||
p_env = priv->p_env;
|
||||
|
|
|
|||
|
|
@ -1936,7 +1936,7 @@ lcs_portno_show (struct device *dev, struct device_attribute *attr, char *buf)
|
|||
{
|
||||
struct lcs_card *card;
|
||||
|
||||
card = (struct lcs_card *)dev->driver_data;
|
||||
card = dev_get_drvdata(dev);
|
||||
|
||||
if (!card)
|
||||
return 0;
|
||||
|
|
@ -1953,7 +1953,7 @@ lcs_portno_store (struct device *dev, struct device_attribute *attr, const char
|
|||
struct lcs_card *card;
|
||||
int value;
|
||||
|
||||
card = (struct lcs_card *)dev->driver_data;
|
||||
card = dev_get_drvdata(dev);
|
||||
|
||||
if (!card)
|
||||
return 0;
|
||||
|
|
@ -1987,7 +1987,7 @@ lcs_timeout_show(struct device *dev, struct device_attribute *attr, char *buf)
|
|||
{
|
||||
struct lcs_card *card;
|
||||
|
||||
card = (struct lcs_card *)dev->driver_data;
|
||||
card = dev_get_drvdata(dev);
|
||||
|
||||
return card ? sprintf(buf, "%u\n", card->lancmd_timeout) : 0;
|
||||
}
|
||||
|
|
@ -1998,7 +1998,7 @@ lcs_timeout_store (struct device *dev, struct device_attribute *attr, const char
|
|||
struct lcs_card *card;
|
||||
int value;
|
||||
|
||||
card = (struct lcs_card *)dev->driver_data;
|
||||
card = dev_get_drvdata(dev);
|
||||
|
||||
if (!card)
|
||||
return 0;
|
||||
|
|
@ -2017,7 +2017,7 @@ static ssize_t
|
|||
lcs_dev_recover_store(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct lcs_card *card = dev->driver_data;
|
||||
struct lcs_card *card = dev_get_drvdata(dev);
|
||||
char *tmp;
|
||||
int i;
|
||||
|
||||
|
|
@ -2070,7 +2070,7 @@ lcs_probe_device(struct ccwgroup_device *ccwgdev)
|
|||
put_device(&ccwgdev->dev);
|
||||
return ret;
|
||||
}
|
||||
ccwgdev->dev.driver_data = card;
|
||||
dev_set_drvdata(&ccwgdev->dev, card);
|
||||
ccwgdev->cdev[0]->handler = lcs_irq;
|
||||
ccwgdev->cdev[1]->handler = lcs_irq;
|
||||
card->gdev = ccwgdev;
|
||||
|
|
@ -2087,7 +2087,7 @@ lcs_register_netdev(struct ccwgroup_device *ccwgdev)
|
|||
struct lcs_card *card;
|
||||
|
||||
LCS_DBF_TEXT(2, setup, "regnetdv");
|
||||
card = (struct lcs_card *)ccwgdev->dev.driver_data;
|
||||
card = dev_get_drvdata(&ccwgdev->dev);
|
||||
if (card->dev->reg_state != NETREG_UNINITIALIZED)
|
||||
return 0;
|
||||
SET_NETDEV_DEV(card->dev, &ccwgdev->dev);
|
||||
|
|
@ -2120,7 +2120,7 @@ lcs_new_device(struct ccwgroup_device *ccwgdev)
|
|||
enum lcs_dev_states recover_state;
|
||||
int rc;
|
||||
|
||||
card = (struct lcs_card *)ccwgdev->dev.driver_data;
|
||||
card = dev_get_drvdata(&ccwgdev->dev);
|
||||
if (!card)
|
||||
return -ENODEV;
|
||||
|
||||
|
|
@ -2226,7 +2226,7 @@ __lcs_shutdown_device(struct ccwgroup_device *ccwgdev, int recovery_mode)
|
|||
int ret;
|
||||
|
||||
LCS_DBF_TEXT(3, setup, "shtdndev");
|
||||
card = (struct lcs_card *)ccwgdev->dev.driver_data;
|
||||
card = dev_get_drvdata(&ccwgdev->dev);
|
||||
if (!card)
|
||||
return -ENODEV;
|
||||
if (recovery_mode == 0) {
|
||||
|
|
@ -2293,7 +2293,7 @@ lcs_remove_device(struct ccwgroup_device *ccwgdev)
|
|||
{
|
||||
struct lcs_card *card;
|
||||
|
||||
card = (struct lcs_card *)ccwgdev->dev.driver_data;
|
||||
card = dev_get_drvdata(&ccwgdev->dev);
|
||||
if (!card)
|
||||
return;
|
||||
|
||||
|
|
|
|||
|
|
@ -34,8 +34,8 @@ static inline int lcs_dbf_passes(debug_info_t *dbf_grp, int level)
|
|||
* sysfs related stuff
|
||||
*/
|
||||
#define CARD_FROM_DEV(cdev) \
|
||||
(struct lcs_card *) \
|
||||
((struct ccwgroup_device *)cdev->dev.driver_data)->dev.driver_data;
|
||||
(struct lcs_card *) dev_get_drvdata( \
|
||||
&((struct ccwgroup_device *)dev_get_drvdata(&cdev->dev))->dev);
|
||||
/**
|
||||
* CCW commands used in this driver
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1452,7 +1452,7 @@ static int netiucv_change_mtu(struct net_device * dev, int new_mtu)
|
|||
static ssize_t user_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct netiucv_priv *priv = dev->driver_data;
|
||||
struct netiucv_priv *priv = dev_get_drvdata(dev);
|
||||
|
||||
IUCV_DBF_TEXT(trace, 5, __func__);
|
||||
return sprintf(buf, "%s\n", netiucv_printname(priv->conn->userid));
|
||||
|
|
@ -1461,7 +1461,7 @@ static ssize_t user_show(struct device *dev, struct device_attribute *attr,
|
|||
static ssize_t user_write(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct netiucv_priv *priv = dev->driver_data;
|
||||
struct netiucv_priv *priv = dev_get_drvdata(dev);
|
||||
struct net_device *ndev = priv->conn->netdev;
|
||||
char *p;
|
||||
char *tmp;
|
||||
|
|
@ -1518,7 +1518,8 @@ static DEVICE_ATTR(user, 0644, user_show, user_write);
|
|||
|
||||
static ssize_t buffer_show (struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{ struct netiucv_priv *priv = dev->driver_data;
|
||||
{
|
||||
struct netiucv_priv *priv = dev_get_drvdata(dev);
|
||||
|
||||
IUCV_DBF_TEXT(trace, 5, __func__);
|
||||
return sprintf(buf, "%d\n", priv->conn->max_buffsize);
|
||||
|
|
@ -1527,7 +1528,7 @@ static ssize_t buffer_show (struct device *dev, struct device_attribute *attr,
|
|||
static ssize_t buffer_write (struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct netiucv_priv *priv = dev->driver_data;
|
||||
struct netiucv_priv *priv = dev_get_drvdata(dev);
|
||||
struct net_device *ndev = priv->conn->netdev;
|
||||
char *e;
|
||||
int bs1;
|
||||
|
|
@ -1575,7 +1576,7 @@ static DEVICE_ATTR(buffer, 0644, buffer_show, buffer_write);
|
|||
static ssize_t dev_fsm_show (struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct netiucv_priv *priv = dev->driver_data;
|
||||
struct netiucv_priv *priv = dev_get_drvdata(dev);
|
||||
|
||||
IUCV_DBF_TEXT(trace, 5, __func__);
|
||||
return sprintf(buf, "%s\n", fsm_getstate_str(priv->fsm));
|
||||
|
|
@ -1586,7 +1587,7 @@ static DEVICE_ATTR(device_fsm_state, 0444, dev_fsm_show, NULL);
|
|||
static ssize_t conn_fsm_show (struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct netiucv_priv *priv = dev->driver_data;
|
||||
struct netiucv_priv *priv = dev_get_drvdata(dev);
|
||||
|
||||
IUCV_DBF_TEXT(trace, 5, __func__);
|
||||
return sprintf(buf, "%s\n", fsm_getstate_str(priv->conn->fsm));
|
||||
|
|
@ -1597,7 +1598,7 @@ static DEVICE_ATTR(connection_fsm_state, 0444, conn_fsm_show, NULL);
|
|||
static ssize_t maxmulti_show (struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct netiucv_priv *priv = dev->driver_data;
|
||||
struct netiucv_priv *priv = dev_get_drvdata(dev);
|
||||
|
||||
IUCV_DBF_TEXT(trace, 5, __func__);
|
||||
return sprintf(buf, "%ld\n", priv->conn->prof.maxmulti);
|
||||
|
|
@ -1607,7 +1608,7 @@ static ssize_t maxmulti_write (struct device *dev,
|
|||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct netiucv_priv *priv = dev->driver_data;
|
||||
struct netiucv_priv *priv = dev_get_drvdata(dev);
|
||||
|
||||
IUCV_DBF_TEXT(trace, 4, __func__);
|
||||
priv->conn->prof.maxmulti = 0;
|
||||
|
|
@ -1619,7 +1620,7 @@ static DEVICE_ATTR(max_tx_buffer_used, 0644, maxmulti_show, maxmulti_write);
|
|||
static ssize_t maxcq_show (struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct netiucv_priv *priv = dev->driver_data;
|
||||
struct netiucv_priv *priv = dev_get_drvdata(dev);
|
||||
|
||||
IUCV_DBF_TEXT(trace, 5, __func__);
|
||||
return sprintf(buf, "%ld\n", priv->conn->prof.maxcqueue);
|
||||
|
|
@ -1628,7 +1629,7 @@ static ssize_t maxcq_show (struct device *dev, struct device_attribute *attr,
|
|||
static ssize_t maxcq_write (struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct netiucv_priv *priv = dev->driver_data;
|
||||
struct netiucv_priv *priv = dev_get_drvdata(dev);
|
||||
|
||||
IUCV_DBF_TEXT(trace, 4, __func__);
|
||||
priv->conn->prof.maxcqueue = 0;
|
||||
|
|
@ -1640,7 +1641,7 @@ static DEVICE_ATTR(max_chained_skbs, 0644, maxcq_show, maxcq_write);
|
|||
static ssize_t sdoio_show (struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct netiucv_priv *priv = dev->driver_data;
|
||||
struct netiucv_priv *priv = dev_get_drvdata(dev);
|
||||
|
||||
IUCV_DBF_TEXT(trace, 5, __func__);
|
||||
return sprintf(buf, "%ld\n", priv->conn->prof.doios_single);
|
||||
|
|
@ -1649,7 +1650,7 @@ static ssize_t sdoio_show (struct device *dev, struct device_attribute *attr,
|
|||
static ssize_t sdoio_write (struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct netiucv_priv *priv = dev->driver_data;
|
||||
struct netiucv_priv *priv = dev_get_drvdata(dev);
|
||||
|
||||
IUCV_DBF_TEXT(trace, 4, __func__);
|
||||
priv->conn->prof.doios_single = 0;
|
||||
|
|
@ -1661,7 +1662,7 @@ static DEVICE_ATTR(tx_single_write_ops, 0644, sdoio_show, sdoio_write);
|
|||
static ssize_t mdoio_show (struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct netiucv_priv *priv = dev->driver_data;
|
||||
struct netiucv_priv *priv = dev_get_drvdata(dev);
|
||||
|
||||
IUCV_DBF_TEXT(trace, 5, __func__);
|
||||
return sprintf(buf, "%ld\n", priv->conn->prof.doios_multi);
|
||||
|
|
@ -1670,7 +1671,7 @@ static ssize_t mdoio_show (struct device *dev, struct device_attribute *attr,
|
|||
static ssize_t mdoio_write (struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct netiucv_priv *priv = dev->driver_data;
|
||||
struct netiucv_priv *priv = dev_get_drvdata(dev);
|
||||
|
||||
IUCV_DBF_TEXT(trace, 5, __func__);
|
||||
priv->conn->prof.doios_multi = 0;
|
||||
|
|
@ -1682,7 +1683,7 @@ static DEVICE_ATTR(tx_multi_write_ops, 0644, mdoio_show, mdoio_write);
|
|||
static ssize_t txlen_show (struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct netiucv_priv *priv = dev->driver_data;
|
||||
struct netiucv_priv *priv = dev_get_drvdata(dev);
|
||||
|
||||
IUCV_DBF_TEXT(trace, 5, __func__);
|
||||
return sprintf(buf, "%ld\n", priv->conn->prof.txlen);
|
||||
|
|
@ -1691,7 +1692,7 @@ static ssize_t txlen_show (struct device *dev, struct device_attribute *attr,
|
|||
static ssize_t txlen_write (struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct netiucv_priv *priv = dev->driver_data;
|
||||
struct netiucv_priv *priv = dev_get_drvdata(dev);
|
||||
|
||||
IUCV_DBF_TEXT(trace, 4, __func__);
|
||||
priv->conn->prof.txlen = 0;
|
||||
|
|
@ -1703,7 +1704,7 @@ static DEVICE_ATTR(netto_bytes, 0644, txlen_show, txlen_write);
|
|||
static ssize_t txtime_show (struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct netiucv_priv *priv = dev->driver_data;
|
||||
struct netiucv_priv *priv = dev_get_drvdata(dev);
|
||||
|
||||
IUCV_DBF_TEXT(trace, 5, __func__);
|
||||
return sprintf(buf, "%ld\n", priv->conn->prof.tx_time);
|
||||
|
|
@ -1712,7 +1713,7 @@ static ssize_t txtime_show (struct device *dev, struct device_attribute *attr,
|
|||
static ssize_t txtime_write (struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct netiucv_priv *priv = dev->driver_data;
|
||||
struct netiucv_priv *priv = dev_get_drvdata(dev);
|
||||
|
||||
IUCV_DBF_TEXT(trace, 4, __func__);
|
||||
priv->conn->prof.tx_time = 0;
|
||||
|
|
@ -1724,7 +1725,7 @@ static DEVICE_ATTR(max_tx_io_time, 0644, txtime_show, txtime_write);
|
|||
static ssize_t txpend_show (struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct netiucv_priv *priv = dev->driver_data;
|
||||
struct netiucv_priv *priv = dev_get_drvdata(dev);
|
||||
|
||||
IUCV_DBF_TEXT(trace, 5, __func__);
|
||||
return sprintf(buf, "%ld\n", priv->conn->prof.tx_pending);
|
||||
|
|
@ -1733,7 +1734,7 @@ static ssize_t txpend_show (struct device *dev, struct device_attribute *attr,
|
|||
static ssize_t txpend_write (struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct netiucv_priv *priv = dev->driver_data;
|
||||
struct netiucv_priv *priv = dev_get_drvdata(dev);
|
||||
|
||||
IUCV_DBF_TEXT(trace, 4, __func__);
|
||||
priv->conn->prof.tx_pending = 0;
|
||||
|
|
@ -1745,7 +1746,7 @@ static DEVICE_ATTR(tx_pending, 0644, txpend_show, txpend_write);
|
|||
static ssize_t txmpnd_show (struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct netiucv_priv *priv = dev->driver_data;
|
||||
struct netiucv_priv *priv = dev_get_drvdata(dev);
|
||||
|
||||
IUCV_DBF_TEXT(trace, 5, __func__);
|
||||
return sprintf(buf, "%ld\n", priv->conn->prof.tx_max_pending);
|
||||
|
|
@ -1754,7 +1755,7 @@ static ssize_t txmpnd_show (struct device *dev, struct device_attribute *attr,
|
|||
static ssize_t txmpnd_write (struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct netiucv_priv *priv = dev->driver_data;
|
||||
struct netiucv_priv *priv = dev_get_drvdata(dev);
|
||||
|
||||
IUCV_DBF_TEXT(trace, 4, __func__);
|
||||
priv->conn->prof.tx_max_pending = 0;
|
||||
|
|
@ -1845,7 +1846,7 @@ static int netiucv_register_device(struct net_device *ndev)
|
|||
if (ret)
|
||||
goto out_unreg;
|
||||
priv->dev = dev;
|
||||
dev->driver_data = priv;
|
||||
dev_set_drvdata(dev, priv);
|
||||
return 0;
|
||||
|
||||
out_unreg:
|
||||
|
|
|
|||
Loading…
Reference in a new issue