On Thu, 25 Jul 2019 at 20:20, Andrew Lunn <and...@lunn.ch> wrote: > > On Thu, Jul 25, 2019 at 06:41:41PM +0200, Sergej Benilov wrote: > > On Thu, 25 Jul 2019 at 18:25, Andrew Lunn <and...@lunn.ch> wrote: > > > > > > > +static int sis900_read_eeprom(struct net_device *net_dev, u8 *buf) > > > > +{ > > > > + struct sis900_private *sis_priv = netdev_priv(net_dev); > > > > + void __iomem *ioaddr = sis_priv->ioaddr; > > > > + int wait, ret = -EAGAIN; > > > > + u16 signature; > > > > + u16 *ebuf = (u16 *)buf; > > > > + int i; > > > > + > > > > + if (sis_priv->chipset_rev == SIS96x_900_REV) { > > > > + sw32(mear, EEREQ); > > > > + for (wait = 0; wait < 2000; wait++) { > > > > + if (sr32(mear) & EEGNT) { > > > > + /* read 16 bits, and index by 16 bits */ > > > > + for (i = 0; i < sis_priv->eeprom_size / > > > > 2; i++) > > > > + ebuf[i] = > > > > (u16)read_eeprom(ioaddr, i); > > > > + ret = 0; > > > > + break; > > > > + } > > > > + udelay(1); > > > > + } > > > > + sw32(mear, EEDONE); > > > > > > The indentation looks all messed up here. > > > > This has passed ./scripts/checkpatch.pl, as you had suggested for the > > previous patch. > > checkpatch just checks for things like tabs vs space. > > I would expect the indentation to be more like: > > > if (sis_priv->chipset_rev == SIS96x_900_REV) { > sw32(mear, EEREQ); > for (wait = 0; wait < 2000; wait++) { > if (sr32(mear) & EEGNT) { > /* read 16 bits, and index by 16 bits */ > for (i = 0; i < sis_priv->eeprom_size / 2; > i++) > ebuf[i] = (u16)read_eeprom(ioaddr, i); > ret = 0; > break; > } > udelay(1); > } > sw32(mear, EEDONE); > } else { > signature = (u16)read_eeprom(ioaddr, EEPROMSignature); > if (signature != 0xffff && signature != 0x0000) { > /* read 16 bits, and index by 16 bits */ > for (i = 0; i < sis_priv->eeprom_size / 2; i++) > ebuf[i] = (u16)read_eeprom(ioaddr, i); > ret = 0; > } > } > return ret; >
Ok, I see now what you mean. I fixed the alignment. This patch is superseded. > > > Why do you not put the data directly into data and avoid this memory > > > allocation, and memcpy? > > > > Because EEPROM data from 'eeprom->offset' offset and of 'eeprom->len' > > length only is expected to be returned in 'data'. > > O.K. > > Andrew