On Wed, Dec 22, 2004 at 01:53:28PM -0600, Patrick Gefre wrote:
> Christoph Hellwig wrote:
>
> >So both claim the same PCI ID? In this case you need to creat a small
> >shim driver that exports a pseudo-bus to the serial and ide driver using
> >the driver model. You must never return an error from ->probe if you
> >actually use that particular device.
> >
>
> Has this been done before ? Any example I can use ??
Well, just about any secondary bus (e.g. usb, iee1394, i2c) works that way,
but I guess all those examples are a little too complicated for your example.
the PPC OCP stuff might be a better example as it's an on-chip pseudo-bus,
otoh it's a top-level bus and not parented by PCI.
> >The second argumnet to writeX (and readX) is actually void __iomem *,
> >but to see the difference you need to run sparse (from sparse.bkbits.net)
> >over the driver. Please store all I/O addresses in void __iomem * pointers
> >in your structures and avoid the cast here and in all the other places.
> >
>
> So then I'd have to declare the end elements as:
> void __iomem foo;
>
> They are 32 bit values, so it's OK to assume that void __iomem is 32bits ?
Hmm? void __iomem must only ever be used as a pointer and passed to
readX/writeX. Pointer arithmetics are allowed and it's treated equally
to char * for that (GCC extension)
> >no need to cast the return value from kmalloc (dito for the other places)
> >
>
> Why is that ? Seems if kmalloc returns a void * and the left side is not, a
> casting is appropriate ?
void * is magic in C and can be assigned to any pointer and vice versa.
I've updated this patch with suggestions from the reviews. And moved it
up the latest 2.6 (since it has been awhile...). I'm also adding
Bartlomiej as a CC since there are IDE mods involved.
The code is at:
ftp://oss.sgi.com/projects/sn2/sn2-update/033-ioc4-support
Signed-off-by: Patrick Gefre <[email protected]>
On Mon, Jan 31, 2005 at 04:45:05PM -0600, Pat Gefre wrote:
>
> I've updated this patch with suggestions from the reviews. And moved it
> up the latest 2.6 (since it has been awhile...). I'm also adding
> Bartlomiej as a CC since there are IDE mods involved.
This looks much better, thanks.
Please kill ioc4_ide_init as it's completely unused and make ioc4_serial_init
a normal module_init() handler in ioc4_serial, there's no need to call
them from the generic driver.
Also yo should need to implement ioc4_remove_one (yet) as the ide driver
can't be removed yet. It might make sense to keep it and
ioc4_serial_remove_one around #if 0'ed as that might be implemented soon.
Do you need to use ide_pci_register_driver? IOC4 doesn't have the legacy
IDE problems, and it's never used together with such devices in a system,
so a plain pci_register_driver should do it.
In ioc4_ide_attach_one you can kill the if and return pci_init_sgiioc4(..)
directly.
In ioc4.c please include <asm/sn/ioc4_common.h> after <linux/ide.h>.
Also ioc4_common.h should probably move to include/linux as ioc4 is more
or less just a pci device and not that SN-specific.
The ioc4_serial driver looks more or less good to me, but you seem to
miss __iomem annotation and there's a few things that it'd have cought,
like casting the return value from ioremap (it's a void __iomem * so it
can be assigned to any pointer directly (or any __iomem pointer in sparse).
ioc4_soft.is_intr_type[].is_intr_ents_free should be an unsigned long
so test_and_clear_bit can operate on it directly. But I fail to see where
we set bits in at all (?)
ioc4_serial_attach_one has various resource leaks when parts of the
initialization fail. Try to follow the goto-based cleanup model most pci
drivers use instead of returning directly on failures.
Christoph Hellwig wrote:
> On Mon, Jan 31, 2005 at 04:45:05PM -0600, Pat Gefre wrote:
>
> Please kill ioc4_ide_init as it's completely unused and make ioc4_serial_init
> a normal module_init() handler in ioc4_serial, there's no need to call
> them from the generic driver.
>
I want ioc4_serial_init called before pci_register_driver() if I make it a
module_init() call I have no control over order ??
> Do you need to use ide_pci_register_driver? IOC4 doesn't have the legacy
> IDE problems, and it's never used together with such devices in a system,
> so a plain pci_register_driver should do it.
>
So ide_pci_register_driver is only for legacy devices with certain IDE
problems - I think that is what you are saying (just trying to make sure
I have it right) ??
Thanks for the review,
-- Pat
On Wed, 02 Feb 2005 14:36:15 -0600, Patrick Gefre <[email protected]> wrote:
> Christoph Hellwig wrote:
> > Do you need to use ide_pci_register_driver? IOC4 doesn't have the legacy
> > IDE problems, and it's never used together with such devices in a system,
> > so a plain pci_register_driver should do it.
> >
>
> So ide_pci_register_driver is only for legacy devices with certain IDE
> problems - I think that is what you are saying (just trying to make sure
> I have it right) ??
ide_pci_register() is needed because of legacy ordering assumptions
(from BIOS and/or Windows) in case of many PCI IDE devices. If there
is no possibility of other IDE PCI devices on your architecture it is safe to
call pci_register_driver() directly (see ide_scan_pcibus() in setup-pci.c).
BTW IDE part of the patch looks OK.
Thanks,
Bartlomiej
On Wed, Feb 02, 2005 at 02:36:15PM -0600, Patrick Gefre wrote:
> >Please kill ioc4_ide_init as it's completely unused and make
> >ioc4_serial_init
> >a normal module_init() handler in ioc4_serial, there's no need to call
> >them from the generic driver.
> >
>
> I want ioc4_serial_init called before pci_register_driver() if I make it a
> module_init() call I have no control over order ??
For the modular case it'd always be executed before because the module
must be loaded first, for the builtin case it'd depend on the link order.
Let's leave it as-is, it's probably safer.
> >Do you need to use ide_pci_register_driver? IOC4 doesn't have the legacy
> >IDE problems, and it's never used together with such devices in a system,
> >so a plain pci_register_driver should do it.
> >
>
> So ide_pci_register_driver is only for legacy devices with certain IDE
> problems - I think that is what you are saying (just trying to make sure
> I have it right) ??
Yes.
Christoph Hellwig wrote:
> On Wed, Feb 02, 2005 at 02:36:15PM -0600, Patrick Gefre wrote:
>
>>>Please kill ioc4_ide_init as it's completely unused and make
>>>ioc4_serial_init
>>>a normal module_init() handler in ioc4_serial, there's no need to call
>>>them from the generic driver.
>>>
>>
>>I want ioc4_serial_init called before pci_register_driver() if I make it a
>>module_init() call I have no control over order ??
>
>
> For the modular case it'd always be executed before because the module
> must be loaded first, for the builtin case it'd depend on the link order.
>
> Let's leave it as-is, it's probably safer.
>
>
Latest version with review mods:
ftp://oss.sgi.com/projects/sn2/sn2-update/033-ioc4-support
Signed-off-by: Patrick Gefre <[email protected]>
On Mon, Feb 07, 2005 at 09:58:33AM -0600, Patrick Gefre wrote:
> Latest version with review mods:
> ftp://oss.sgi.com/projects/sn2/sn2-update/033-ioc4-support
- still not __iomem annotations.
- still a ->remove method
more comments (mostly nipicks I missed last time, nothing too exciting):
+#define DEVICE_NAME_DYNAMIC "ttyIOC0" /* need full name for misc_register */
this one is completely unused.
+#define PENDING(_p) readl(&(_p)->ip_mem->sio_ir) & _p->ip_ienb
probably wants some braces around the macro body
+static struct ioc4_port *get_ioc4_port(struct uart_port *the_port)
+{
+ struct ioc4_control *control = dev_get_drvdata(the_port->dev);
+ int ii;
+
+ if (control) {
+ for ( ii = 0; ii < IOC4_NUM_SERIAL_PORTS; ii++ ) {
+ if (!control->ic_port[ii].icp_port)
+ continue;
+ if (the_port == control->ic_port[ii].icp_port->ip_port)
+ return control->ic_port[ii].icp_port;
+ }
+ }
+ return (struct ioc4_port *)0;
just return NULL here.
+static irqreturn_t ioc4_intr(int irq, void *arg, struct pt_regs *regs)
+{
+ struct ioc4_soft *soft;
+ uint32_t this_ir, this_mir;
+ int xx, num_intrs = 0;
+ int intr_type;
+ int handled = 0;
+ struct ioc4_intr_info *ii;
+
+ soft = (struct ioc4_soft *)arg;
+ if (!soft)
+ return IRQ_NONE; /* Polled but no ioc4 registered */
no need to cast. and it can't be NULL either.
+ spin_lock_irqsave(&port->ip_lock, port_flags);
+ wake_up_interruptible(&info->delta_msr_wait);
+ spin_unlock_irqrestore(&port->ip_lock, port_flags);
no need to lock around a wake_up()
+ /* Start up the serial port */
+ spin_lock_irqsave(&port->ip_lock, port_flags);
+ retval = ic4_startup_local(the_port);
+ if (retval) {
+ spin_unlock_irqrestore(&port->ip_lock, port_flags);
+ return retval;
+ }
+ spin_unlock_irqrestore(&port->ip_lock, port_flags);
+ return 0;
what about just
spin_lock_irqsave(&port->ip_lock, port_flags);
retval = ic4_startup_local(the_port);
spin_unlock_irqrestore(&port->ip_lock, port_flags);
return reval;
?
+ struct ioc4_port *port = get_ioc4_port(the_port);
+ unsigned long port_flags;
+
+ spin_lock_irqsave(&port->ip_lock, port_flags);
+ ioc4_change_speed(the_port, termios, old_termios);
+ spin_unlock_irqrestore(&port->ip_lock, port_flags);
+ return;
no need for empty returns at the end of void functions
+static struct uart_driver ioc4_uart = {
+ .owner = THIS_MODULE,
+ .driver_name = "ioc4_serial",
+ .dev_name = DEVICE_NAME,
+ .major = DEVICE_MAJOR,
+ .minor = DEVICE_MINOR,
+ .nr = IOC4_NUM_CARDS * IOC4_NUM_SERIAL_PORTS,
+ .cons = NULL,
+};
no need to initialize .cons to zero, the compiler does that for you.
+ if ( !request_region(tmp_addr, sizeof(struct ioc4_mem), "sioc4_mem")) {
superflous space before the !
+ if (!request_irq(pdev->irq, ioc4_intr, SA_SHIRQ,
+ "sgi-ioc4serial", (void *)soft)) {
+ control->ic_irq = pdev->irq;
+ } else {
+ printk(KERN_WARNING
+ "%s : request_irq fails for IRQ 0x%x\n ",
+ __FUNCTION__, pdev->irq);
+ }
Can the driver work without an irq?
I've update the patch with changes from the comments below.
ftp://oss.sgi.com/projects/sn2/sn2-update/033-ioc4-support
Christoph Hellwig wrote:
> On Mon, Feb 07, 2005 at 09:58:33AM -0600, Patrick Gefre wrote:
>
>>Latest version with review mods:
>>ftp://oss.sgi.com/projects/sn2/sn2-update/033-ioc4-support
>
>
>
> - still not __iomem annotations.
I *think* I have this right ??
> - still a ->remove method
>
> more comments (mostly nipicks I missed last time, nothing too exciting):
>
>
> +#define DEVICE_NAME_DYNAMIC "ttyIOC0" /* need full name for misc_register */
>
> this one is completely unused.
>
> +#define PENDING(_p) readl(&(_p)->ip_mem->sio_ir) & _p->ip_ienb
>
> probably wants some braces around the macro body
>
> +static struct ioc4_port *get_ioc4_port(struct uart_port *the_port)
> +{
> + struct ioc4_control *control = dev_get_drvdata(the_port->dev);
> + int ii;
> +
> + if (control) {
> + for ( ii = 0; ii < IOC4_NUM_SERIAL_PORTS; ii++ ) {
> + if (!control->ic_port[ii].icp_port)
> + continue;
> + if (the_port == control->ic_port[ii].icp_port->ip_port)
> + return control->ic_port[ii].icp_port;
> + }
> + }
> + return (struct ioc4_port *)0;
>
> just return NULL here.
>
> +static irqreturn_t ioc4_intr(int irq, void *arg, struct pt_regs *regs)
> +{
> + struct ioc4_soft *soft;
> + uint32_t this_ir, this_mir;
> + int xx, num_intrs = 0;
> + int intr_type;
> + int handled = 0;
> + struct ioc4_intr_info *ii;
> +
> + soft = (struct ioc4_soft *)arg;
> + if (!soft)
> + return IRQ_NONE; /* Polled but no ioc4 registered */
>
> no need to cast. and it can't be NULL either.
>
> + spin_lock_irqsave(&port->ip_lock, port_flags);
> + wake_up_interruptible(&info->delta_msr_wait);
> + spin_unlock_irqrestore(&port->ip_lock, port_flags);
>
> no need to lock around a wake_up()
>
> + /* Start up the serial port */
> + spin_lock_irqsave(&port->ip_lock, port_flags);
> + retval = ic4_startup_local(the_port);
> + if (retval) {
> + spin_unlock_irqrestore(&port->ip_lock, port_flags);
> + return retval;
> + }
> + spin_unlock_irqrestore(&port->ip_lock, port_flags);
> + return 0;
>
> what about just
>
> spin_lock_irqsave(&port->ip_lock, port_flags);
> retval = ic4_startup_local(the_port);
> spin_unlock_irqrestore(&port->ip_lock, port_flags);
> return reval;
>
> ?
>
> + struct ioc4_port *port = get_ioc4_port(the_port);
> + unsigned long port_flags;
> +
> + spin_lock_irqsave(&port->ip_lock, port_flags);
> + ioc4_change_speed(the_port, termios, old_termios);
> + spin_unlock_irqrestore(&port->ip_lock, port_flags);
> + return;
>
> no need for empty returns at the end of void functions
>
> +static struct uart_driver ioc4_uart = {
> + .owner = THIS_MODULE,
> + .driver_name = "ioc4_serial",
> + .dev_name = DEVICE_NAME,
> + .major = DEVICE_MAJOR,
> + .minor = DEVICE_MINOR,
> + .nr = IOC4_NUM_CARDS * IOC4_NUM_SERIAL_PORTS,
> + .cons = NULL,
> +};
>
> no need to initialize .cons to zero, the compiler does that for you.
>
> + if ( !request_region(tmp_addr, sizeof(struct ioc4_mem), "sioc4_mem")) {
>
> superflous space before the !
>
> + if (!request_irq(pdev->irq, ioc4_intr, SA_SHIRQ,
> + "sgi-ioc4serial", (void *)soft)) {
> + control->ic_irq = pdev->irq;
> + } else {
> + printk(KERN_WARNING
> + "%s : request_irq fails for IRQ 0x%x\n ",
> + __FUNCTION__, pdev->irq);
> + }
>
> Can the driver work without an irq?
Not in its current state.
I've update the patch with changes from the comments below.
ftp://oss.sgi.com/projects/sn2/sn2-update/033-ioc4-support
As usual forgot this:
Signed-off-by: Patrick Gefre <[email protected]>
Patrick Gefre wrote:
> I've update the patch with changes from the comments below.
>
> ftp://oss.sgi.com/projects/sn2/sn2-update/033-ioc4-support
>
>
>
>
> Christoph Hellwig wrote:
>
>> On Mon, Feb 07, 2005 at 09:58:33AM -0600, Patrick Gefre wrote:
>>
>>> Latest version with review mods:
>>> ftp://oss.sgi.com/projects/sn2/sn2-update/033-ioc4-support
>>
>>
>>
>>
>> - still not __iomem annotations.
>
>
> I *think* I have this right ??
>
>
>
>> - still a ->remove method
>>
>> more comments (mostly nipicks I missed last time, nothing too exciting):
>>
>>
>> +#define DEVICE_NAME_DYNAMIC "ttyIOC0" /* need full name for
>> misc_register */
>>
>> this one is completely unused.
>>
>> +#define PENDING(_p) readl(&(_p)->ip_mem->sio_ir) & _p->ip_ienb
>>
>> probably wants some braces around the macro body
>>
>> +static struct ioc4_port *get_ioc4_port(struct uart_port *the_port)
>> +{
>> + struct ioc4_control *control = dev_get_drvdata(the_port->dev);
>> + int ii;
>> +
>> + if (control) {
>> + for ( ii = 0; ii < IOC4_NUM_SERIAL_PORTS; ii++ ) {
>> + if (!control->ic_port[ii].icp_port)
>> + continue;
>> + if (the_port == control->ic_port[ii].icp_port->ip_port)
>> + return control->ic_port[ii].icp_port;
>> + }
>> + }
>> + return (struct ioc4_port *)0;
>>
>> just return NULL here.
>>
>> +static irqreturn_t ioc4_intr(int irq, void *arg, struct pt_regs *regs)
>> +{
>> + struct ioc4_soft *soft;
>> + uint32_t this_ir, this_mir;
>> + int xx, num_intrs = 0;
>> + int intr_type;
>> + int handled = 0;
>> + struct ioc4_intr_info *ii;
>> +
>> + soft = (struct ioc4_soft *)arg;
>> + if (!soft)
>> + return IRQ_NONE; /* Polled but no ioc4 registered */
>>
>> no need to cast. and it can't be NULL either.
>>
>> + spin_lock_irqsave(&port->ip_lock, port_flags);
>> + wake_up_interruptible(&info->delta_msr_wait);
>> + spin_unlock_irqrestore(&port->ip_lock, port_flags);
>>
>> no need to lock around a wake_up()
>>
>> + /* Start up the serial port */
>> + spin_lock_irqsave(&port->ip_lock, port_flags);
>> + retval = ic4_startup_local(the_port);
>> + if (retval) {
>> + spin_unlock_irqrestore(&port->ip_lock, port_flags);
>> + return retval;
>> + }
>> + spin_unlock_irqrestore(&port->ip_lock, port_flags);
>> + return 0;
>>
>> what about just
>>
>> spin_lock_irqsave(&port->ip_lock, port_flags);
>> retval = ic4_startup_local(the_port);
>> spin_unlock_irqrestore(&port->ip_lock, port_flags);
>> return reval;
>>
>> ?
>>
>> + struct ioc4_port *port = get_ioc4_port(the_port);
>> + unsigned long port_flags;
>> +
>> + spin_lock_irqsave(&port->ip_lock, port_flags);
>> + ioc4_change_speed(the_port, termios, old_termios);
>> + spin_unlock_irqrestore(&port->ip_lock, port_flags);
>> + return;
>>
>> no need for empty returns at the end of void functions
>>
>> +static struct uart_driver ioc4_uart = {
>> + .owner = THIS_MODULE,
>> + .driver_name = "ioc4_serial",
>> + .dev_name = DEVICE_NAME,
>> + .major = DEVICE_MAJOR,
>> + .minor = DEVICE_MINOR,
>> + .nr = IOC4_NUM_CARDS * IOC4_NUM_SERIAL_PORTS,
>> + .cons = NULL,
>> +};
>>
>> no need to initialize .cons to zero, the compiler does that for you.
>>
>> + if ( !request_region(tmp_addr, sizeof(struct ioc4_mem),
>> "sioc4_mem")) {
>>
>> superflous space before the !
>>
>> + if (!request_irq(pdev->irq, ioc4_intr, SA_SHIRQ,
>> + "sgi-ioc4serial", (void *)soft)) {
>> + control->ic_irq = pdev->irq;
>> + } else {
>> + printk(KERN_WARNING
>> + "%s : request_irq fails for IRQ 0x%x\n ",
>> + __FUNCTION__, pdev->irq);
>> + }
>>
>> Can the driver work without an irq?
>
>
> Not in its current state.
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
On Tuesday, February 8, 2005 8:52 am, Patrick Gefre wrote:
> I've update the patch with changes from the comments below.
>
> ftp://oss.sgi.com/projects/sn2/sn2-update/033-ioc4-support
>
> Christoph Hellwig wrote:
> > On Mon, Feb 07, 2005 at 09:58:33AM -0600, Patrick Gefre wrote:
> >>Latest version with review mods:
> >>ftp://oss.sgi.com/projects/sn2/sn2-update/033-ioc4-support
> >
> > - still not __iomem annotations.
>
> I *think* I have this right ??
Here's the output from 'make C=1' with your driver patched in (you if you want
to run it yourself, just copy tomahawk.engr:~jbarnes/bin/sparse to somewhere
in your path and run 'make C=1'). I think most of these warning would be
fixed up if the structure fields referring to registers were declared as
__iomem, but I haven't looked carefully.
Jesse
CHECK drivers/serial/ioc4_serial.c
drivers/serial/ioc4_serial.c:681:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:681:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:681:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:681:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:681:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:681:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:685:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:685:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:685:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:685:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:685:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:685:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:693:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:693:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:693:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:693:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:693:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:693:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:697:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:697:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:697:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:697:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:697:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:697:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:796:11: warning: incorrect type in argument 1 (different address spaces)
drivers/serial/ioc4_serial.c:796:11: expected void const volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:796:11: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:796:11: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:796:11: expected void const volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:796:11: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:800:11: warning: incorrect type in argument 1 (different address spaces)
drivers/serial/ioc4_serial.c:800:11: expected void const volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:800:11: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:800:11: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:800:11: expected void const volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:800:11: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:681:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:681:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:681:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:681:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:681:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:681:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:685:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:685:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:685:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:685:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:685:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:685:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:693:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:693:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:693:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:693:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:693:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:693:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:697:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:697:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:697:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:697:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:697:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:697:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:681:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:681:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:681:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:681:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:681:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:681:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:685:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:685:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:685:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:685:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:685:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:685:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:693:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:693:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:693:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:693:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:693:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:693:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:697:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:697:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:697:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:697:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:697:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:697:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:681:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:681:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:681:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:681:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:681:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:681:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:685:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:685:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:685:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:685:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:685:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:685:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:693:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:693:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:693:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:693:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:693:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:693:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:697:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:697:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:697:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:697:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:697:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:697:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:681:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:681:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:681:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:681:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:681:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:681:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:685:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:685:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:685:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:685:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:685:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:685:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:693:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:693:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:693:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:693:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:693:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:693:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:697:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:697:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:697:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:697:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:697:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:697:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:681:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:681:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:681:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:681:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:681:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:681:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:685:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:685:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:685:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:685:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:685:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:685:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:693:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:693:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:693:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:693:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:693:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:693:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:697:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:697:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:697:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:697:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:697:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:697:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:681:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:681:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:681:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:681:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:681:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:681:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:685:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:685:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:685:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:685:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:685:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:685:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:693:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:693:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:693:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:693:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:693:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:693:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:697:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:697:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:697:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:697:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:697:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:697:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:2722:6: warning: incorrect type in assignment (different address spaces)
drivers/serial/ioc4_serial.c:2722:6: expected struct ioc4_mem *mem
drivers/serial/ioc4_serial.c:2722:6: got void [noderef] *<asn:2>
drivers/serial/ioc4_serial.c:2742:9: warning: incorrect type in assignment (different address spaces)
drivers/serial/ioc4_serial.c:2742:9: expected struct ioc4_serial *serial
drivers/serial/ioc4_serial.c:2742:9: got void [noderef] *<asn:2>
drivers/serial/ioc4_serial.c:2786:2: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:2786:2: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:2786:2: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:2786:2: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:2786:2: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:2786:2: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:2789:2: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:2789:2: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:2789:2: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:2789:2: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:2789:2: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:2789:2: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:681:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:681:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:681:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:681:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:681:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:681:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:685:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:685:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:685:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:685:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:685:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:685:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:693:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:693:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:693:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:693:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:693:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:693:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:697:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:697:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:697:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:697:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:697:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:697:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:2795:2: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:2795:2: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:2795:2: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:2795:2: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:2795:2: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:2795:2: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:681:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:681:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:681:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:681:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:681:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:681:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:685:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:685:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:685:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:685:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:685:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:685:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:693:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:693:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:693:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:693:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:693:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:693:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:697:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:697:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:697:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:697:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:697:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:697:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:2798:2: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:2798:2: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:2798:2: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:2798:2: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:2798:2: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:2798:2: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:1106:16: warning: incorrect type in assignment (different address spaces)
drivers/serial/ioc4_serial.c:1106:16: expected struct ioc4_mem [noderef] *ip_mem<asn:2>
drivers/serial/ioc4_serial.c:1106:16: got struct ioc4_mem *<noident>
drivers/serial/ioc4_serial.c:1107:19: warning: incorrect type in assignment (different address spaces)
drivers/serial/ioc4_serial.c:1107:19: expected struct ioc4_serial [noderef] *ip_serial<asn:2>
drivers/serial/ioc4_serial.c:1107:19: got struct ioc4_serial *<noident>
drivers/serial/ioc4_serial.c:875:11: warning: incorrect type in assignment (different address spaces)
drivers/serial/ioc4_serial.c:875:11: expected unsigned int [usertype] *sbbr_l
drivers/serial/ioc4_serial.c:875:11: got unsigned int [unsigned] [noderef] [usertype] *<noident><asn:2>
drivers/serial/ioc4_serial.c:876:11: warning: incorrect type in assignment (different address spaces)
drivers/serial/ioc4_serial.c:876:11: expected unsigned int [usertype] *sbbr_h
drivers/serial/ioc4_serial.c:876:11: got unsigned int [unsigned] [noderef] [usertype] *<noident><asn:2>
drivers/serial/ioc4_serial.c:878:11: warning: incorrect type in assignment (different address spaces)
drivers/serial/ioc4_serial.c:878:11: expected unsigned int [usertype] *sbbr_l
drivers/serial/ioc4_serial.c:878:11: got unsigned int [unsigned] [noderef] [usertype] *<noident><asn:2>
drivers/serial/ioc4_serial.c:879:11: warning: incorrect type in assignment (different address spaces)
drivers/serial/ioc4_serial.c:879:11: expected unsigned int [usertype] *sbbr_h
drivers/serial/ioc4_serial.c:879:11: got unsigned int [unsigned] [noderef] [usertype] *<noident><asn:2>
drivers/serial/ioc4_serial.c:886:3: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:886:3: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:886:3: got unsigned int [usertype] *sbbr_h
drivers/serial/ioc4_serial.c:886:3: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:886:3: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:886:3: got unsigned int [usertype] *sbbr_h
drivers/serial/ioc4_serial.c:887:3: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:887:3: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:887:3: got unsigned int [usertype] *sbbr_l
drivers/serial/ioc4_serial.c:887:3: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:887:3: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:887:3: got unsigned int [usertype] *sbbr_l
drivers/serial/ioc4_serial.c:681:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:681:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:681:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:681:4: warning: incorrect type in initializer (different address spaces)
drivers/serial/ioc4_serial.c:681:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:681:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:685:4: warning: incorrect type in argument 2 (different address spaces)
drivers/serial/ioc4_serial.c:685:4: expected void volatile [noderef] *addr<asn:2>
drivers/serial/ioc4_serial.c:685:4: got unsigned int [unsigned] [usertype] *<noident>
drivers/serial/ioc4_serial.c:685:4: warning: too many warnings
On Thu, Feb 10, 2005 at 11:09:43AM -0800, Jesse Barnes wrote:
> On Tuesday, February 8, 2005 8:52 am, Patrick Gefre wrote:
> > I've update the patch with changes from the comments below.
> >
> > ftp://oss.sgi.com/projects/sn2/sn2-update/033-ioc4-support
> >
> > Christoph Hellwig wrote:
> > > On Mon, Feb 07, 2005 at 09:58:33AM -0600, Patrick Gefre wrote:
> > >>Latest version with review mods:
> > >>ftp://oss.sgi.com/projects/sn2/sn2-update/033-ioc4-support
> > >
> > > - still not __iomem annotations.
> >
> > I *think* I have this right ??
>
> Here's the output from 'make C=1' with your driver patched in (you if you want
> to run it yourself, just copy tomahawk.engr:~jbarnes/bin/sparse to somewhere
> in your path and run 'make C=1'). I think most of these warning would be
> fixed up if the structure fields referring to registers were declared as
> __iomem, but I haven't looked carefully.
Actually the pointers to the struct need to be declared __iomem.
I updated again with more __iomem tags.
ftp://oss.sgi.com/projects/sn2/sn2-update/033-ioc4-support
Signed-off-by: Patrick Gefre <[email protected]>
Christoph Hellwig wrote:
> On Thu, Feb 10, 2005 at 11:09:43AM -0800, Jesse Barnes wrote:
>
>>On Tuesday, February 8, 2005 8:52 am, Patrick Gefre wrote:
>>
>>>I've update the patch with changes from the comments below.
>>>
>>>ftp://oss.sgi.com/projects/sn2/sn2-update/033-ioc4-support
>>>
>>>Christoph Hellwig wrote:
>>>
>>>>On Mon, Feb 07, 2005 at 09:58:33AM -0600, Patrick Gefre wrote:
>>>>
>>>>>Latest version with review mods:
>>>>>ftp://oss.sgi.com/projects/sn2/sn2-update/033-ioc4-support
>>>>
>>>> - still not __iomem annotations.
>>>
>>>I *think* I have this right ??
>>
>>Here's the output from 'make C=1' with your driver patched in (you if you want
>>to run it yourself, just copy tomahawk.engr:~jbarnes/bin/sparse to somewhere
>>in your path and run 'make C=1'). I think most of these warning would be
>>fixed up if the structure fields referring to registers were declared as
>>__iomem, but I haven't looked carefully.
>
>
> Actually the pointers to the struct need to be declared __iomem.
Andrew,
Since there don't seem to be any more suggestions, can you take this - or at least queue it up ???
This is a resend:
I updated again with more __iomem tags.
ftp://oss.sgi.com/projects/sn2/sn2-update/033-ioc4-support
Signed-off-by: Patrick Gefre <[email protected]>
>
> Christoph Hellwig wrote:
>
>> On Thu, Feb 10, 2005 at 11:09:43AM -0800, Jesse Barnes wrote:
>>
>>> On Tuesday, February 8, 2005 8:52 am, Patrick Gefre wrote:
>>>
>>>> I've update the patch with changes from the comments below.
>>>>
>>>> ftp://oss.sgi.com/projects/sn2/sn2-update/033-ioc4-support
>>>>
>>>> Christoph Hellwig wrote:
>>>>
>>>>> On Mon, Feb 07, 2005 at 09:58:33AM -0600, Patrick Gefre wrote:
>>>>>
>>>>>> Latest version with review mods:
>>>>>> ftp://oss.sgi.com/projects/sn2/sn2-update/033-ioc4-support
>>>>>
>>>>>
>>>>> - still not __iomem annotations.
>>>>
>>>>
>>>> I *think* I have this right ??
>>>
>>>
>>> Here's the output from 'make C=1' with your driver patched in (you if
>>> you want
>>> to run it yourself, just copy tomahawk.engr:~jbarnes/bin/sparse to
>>> somewhere
>>> in your path and run 'make C=1'). I think most of these warning
>>> would be
>>> fixed up if the structure fields referring to registers were declared as
>>> __iomem, but I haven't looked carefully.
>>
>>
>>
>> Actually the pointers to the struct need to be declared __iomem.
>
>