Lines Matching refs:fmc
75 struct fmc_device *fmc = container_of(dev, struct fmc_device, dev); in fmc_release() local
77 kfree(fmc); in fmc_release()
89 struct fmc_device *fmc; in fmc_read_eeprom() local
93 fmc = container_of(dev, struct fmc_device, dev); in fmc_read_eeprom()
94 eelen = fmc->eeprom_len; in fmc_read_eeprom()
101 memcpy(buf, fmc->eeprom + off, count); in fmc_read_eeprom()
110 struct fmc_device *fmc; in fmc_write_eeprom() local
113 fmc = container_of(dev, struct fmc_device, dev); in fmc_write_eeprom()
114 return fmc->op->write_ee(fmc, off, buf, count); in fmc_write_eeprom()
124 int fmc_irq_request(struct fmc_device *fmc, irq_handler_t h, in fmc_irq_request() argument
127 if (fmc->op->irq_request) in fmc_irq_request()
128 return fmc->op->irq_request(fmc, h, name, flags); in fmc_irq_request()
133 void fmc_irq_free(struct fmc_device *fmc) in fmc_irq_free() argument
135 if (fmc->op->irq_free) in fmc_irq_free()
136 fmc->op->irq_free(fmc); in fmc_irq_free()
140 void fmc_irq_ack(struct fmc_device *fmc) in fmc_irq_ack() argument
142 if (likely(fmc->op->irq_ack)) in fmc_irq_ack()
143 fmc->op->irq_ack(fmc); in fmc_irq_ack()
147 int fmc_validate(struct fmc_device *fmc, struct fmc_driver *drv) in fmc_validate() argument
149 if (fmc->op->validate) in fmc_validate()
150 return fmc->op->validate(fmc, drv); in fmc_validate()
155 int fmc_gpio_config(struct fmc_device *fmc, struct fmc_gpio *gpio, int ngpio) in fmc_gpio_config() argument
157 if (fmc->op->gpio_config) in fmc_gpio_config()
158 return fmc->op->gpio_config(fmc, gpio, ngpio); in fmc_gpio_config()
163 int fmc_read_ee(struct fmc_device *fmc, int pos, void *d, int l) in fmc_read_ee() argument
165 if (fmc->op->read_ee) in fmc_read_ee()
166 return fmc->op->read_ee(fmc, pos, d, l); in fmc_read_ee()
171 int fmc_write_ee(struct fmc_device *fmc, int pos, const void *d, int l) in fmc_write_ee() argument
173 if (fmc->op->write_ee) in fmc_write_ee()
174 return fmc->op->write_ee(fmc, pos, d, l); in fmc_write_ee()
205 struct fmc_device *fmc, **devarray; in fmc_device_register_n_gw() local
222 fmc = devarray[i]; in fmc_device_register_n_gw()
223 if (!fmc->hwdev) { in fmc_device_register_n_gw()
229 if (fmc->flags & FMC_DEVICE_NO_MEZZANINE) { in fmc_device_register_n_gw()
230 dev_info(fmc->hwdev, "absent mezzanine in slot %d\n", in fmc_device_register_n_gw()
231 fmc->slot_id); in fmc_device_register_n_gw()
234 if (!fmc->eeprom) { in fmc_device_register_n_gw()
235 dev_err(fmc->hwdev, "no eeprom provided for slot %i\n", in fmc_device_register_n_gw()
236 fmc->slot_id); in fmc_device_register_n_gw()
239 if (!fmc->eeprom_addr) { in fmc_device_register_n_gw()
240 dev_err(fmc->hwdev, "no eeprom_addr for slot %i\n", in fmc_device_register_n_gw()
241 fmc->slot_id); in fmc_device_register_n_gw()
244 if (!fmc->carrier_name || !fmc->carrier_data || in fmc_device_register_n_gw()
245 !fmc->device_id) { in fmc_device_register_n_gw()
246 dev_err(fmc->hwdev, in fmc_device_register_n_gw()
262 fmc = devarray[i]; in fmc_device_register_n_gw()
264 fmc->nr_slots = n; /* each slot must know how many are there */ in fmc_device_register_n_gw()
265 fmc->devarray = devarray; in fmc_device_register_n_gw()
267 device_initialize(&fmc->dev); in fmc_device_register_n_gw()
268 fmc->dev.release = fmc_release; in fmc_device_register_n_gw()
269 fmc->dev.parent = fmc->hwdev; in fmc_device_register_n_gw()
272 fmc_fill_id_info(fmc); in fmc_device_register_n_gw()
274 fmc->dev.bus = &fmc_bus_type; in fmc_device_register_n_gw()
277 device_id = fmc->device_id; in fmc_device_register_n_gw()
278 if (!fmc->mezzanine_name) in fmc_device_register_n_gw()
279 dev_set_name(&fmc->dev, "fmc-%04x", device_id); in fmc_device_register_n_gw()
281 dev_set_name(&fmc->dev, "%s-%04x", fmc->mezzanine_name, in fmc_device_register_n_gw()
289 ret = fmc->op->reprogram_raw(fmc, NULL, in fmc_device_register_n_gw()
292 dev_warn(fmc->hwdev, in fmc_device_register_n_gw()
298 ret = device_add(&fmc->dev); in fmc_device_register_n_gw()
300 dev_err(fmc->hwdev, "Slot %i: Failed in registering " in fmc_device_register_n_gw()
301 "\"%s\"\n", fmc->slot_id, fmc->dev.kobj.name); in fmc_device_register_n_gw()
304 ret = sysfs_create_bin_file(&fmc->dev.kobj, &fmc_eeprom_attr); in fmc_device_register_n_gw()
306 dev_err(&fmc->dev, "Failed in registering eeprom\n"); in fmc_device_register_n_gw()
310 fmc_dump_eeprom(fmc); in fmc_device_register_n_gw()
311 fmc_debug_init(fmc); in fmc_device_register_n_gw()
316 device_del(&fmc->dev); in fmc_device_register_n_gw()
337 int fmc_device_register_gw(struct fmc_device *fmc, struct fmc_gateware *gw) in fmc_device_register_gw() argument
339 return fmc_device_register_n_gw(&fmc, 1, gw); in fmc_device_register_gw()
343 int fmc_device_register(struct fmc_device *fmc) in fmc_device_register() argument
345 return fmc_device_register_n(&fmc, 1); in fmc_device_register()
369 void fmc_device_unregister(struct fmc_device *fmc) in fmc_device_unregister() argument
371 fmc_device_unregister_n(&fmc, 1); in fmc_device_unregister()