Messages in this thread | | | From | Andrea Greco <> | Date | Fri, 18 May 2018 14:18:41 +0200 | Subject | Re: [PATCH 1/4] arcnet: com20020: Add com20020 io mapped version |
| |
On 05/17/2018 10:31 PM, David Miller wrote: > From: Andrea Greco <andrea.greco.gapmilano@gmail.com> > Date: Thu, 17 May 2018 15:05:29 +0200 > >> + /* Will be set by userspace during if setup */ >> + dev->dev_addr[0] = 0; > > Hmmm... really? > > Also, every error path from this point forward will leak 'dev'. >
In com20020.c found this: /* FIXME: do this some other way! */ if (!dev->dev_addr[0]) dev->dev_addr[0] = arcnet_inb(ioaddr, 8);
NODE-ID, must be univoque, for all arcnet network. My previews idea was take random value but, this could create a collision over network.
A possible solution is: In case of collision com20020 set a bit in status register. Then peak a new NODE-ID and repeat this while correct NODE-ID is found.
Other ideas is pass it via DTS. But suppose have 2 same product in same network, same address same problem. For this reason i prefer left standard driver behavior.
Other ideas for solve this ?
Other question discussed with Tobin in RFC patch is:
At now a devm_ioremap is done by this driver.
Other version of this driver, PCI, PCMCIA, ISA do not remap memory. Other implementation, use:inb outb for r/w operation. I do a ugly #ifndef and redefine arcnet_inb in case is defined CONFIG_ARCNET_COM20020_IO.
My proposal was: Add relative callback arcnet_inb, arcnet_outb and friends hw struct in arcdevice.h, then every driver set callback with required function.
Regards, Andrea
| |