 memset(chip, 0, sizeof(struct s_i2c_chip)); 
static int __devinit prosavage_probe(struct pci_dev *dev, const struct pci_device_id *id){	int ret;	unsigned long base, len;	struct s_i2c_chip *chip;	struct s_i2c_bus  *bus;        pci_set_drvdata(dev, kmalloc(sizeof(struct s_i2c_chip), GFP_KERNEL)); 	chip = (struct s_i2c_chip *)pci_get_drvdata(dev);	if (chip == NULL) {		return -ENOMEM;	}	memset(chip, 0, sizeof(struct s_i2c_chip));	base = dev->resource[0].start & PCI_BASE_ADDRESS_MEM_MASK;	len  = dev->resource[0].end - base + 1;	chip->mmio = ioremap_nocache(base, len);	if (chip->mmio == NULL) {		dev_err(&dev->dev, "ioremap failed\n");		prosavage_remove(dev);		return -ENODEV;	}	/*	 * Chip initialisation	 */	/* Unlock Extended IO Space ??? */	/*	 * i2c bus registration	 */	bus = &chip->i2c_bus[0];	snprintf(bus->adap.name, sizeof(bus->adap.name),		"ProSavage I2C bus at %02x:%02x.%x",		dev->bus->number, PCI_SLOT(dev->devfn), PCI_FUNC(dev->devfn));	ret = i2c_register_bus(dev, bus, chip->mmio + 0x8000, CR_SERIAL1);	if (ret) {		goto err_adap;	}	/*	 * ddc bus registration	 */	bus = &chip->i2c_bus[1];	snprintf(bus->adap.name, sizeof(bus->adap.name),		"ProSavage DDC bus at %02x:%02x.%x",		dev->bus->number, PCI_SLOT(dev->devfn), PCI_FUNC(dev->devfn));	ret = i2c_register_bus(dev, bus, chip->mmio + 0x8000, CR_SERIAL2);	if (ret) {		goto err_adap;	}	return 0;err_adap:	dev_err(&dev->dev, "%s failed\n", bus->adap.name);	prosavage_remove(dev);	return ret;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/5263ebb51eb098b01caf229498c954999117e4a7/i2c-prosavage.c/buggy/drivers/i2c/busses/i2c-prosavage.c