Lines Matching refs:fmc
90 struct fmc_device *fmc[FF_MAX_MEZZANINES]; member
96 static int ff_reprogram(struct fmc_device *fmc, struct fmc_driver *drv, in ff_reprogram() argument
104 fmc->flags &= ~FMC_DEVICE_HAS_CUSTOM; in ff_reprogram()
105 fmc->flags |= FMC_DEVICE_HAS_GOLDEN; in ff_reprogram()
109 dev_info(&fmc->dev, "reprogramming with %s\n", gw); in ff_reprogram()
110 ret = request_firmware(&fw, gw, &fmc->dev); in ff_reprogram()
112 dev_warn(&fmc->dev, "request firmware \"%s\": error %i\n", in ff_reprogram()
116 fmc->flags &= ~FMC_DEVICE_HAS_GOLDEN; in ff_reprogram()
117 fmc->flags |= FMC_DEVICE_HAS_CUSTOM; in ff_reprogram()
124 static int ff_irq_request(struct fmc_device *fmc, irq_handler_t handler, in ff_irq_request() argument
144 fmc_device_unregister_n(ff->fmc, ff_nr_dev); in ff_work_fn()
153 ret = fmc_device_register_n(ff->fmc, ff_nr_dev); in ff_work_fn()
167 static int ff_eeprom_read(struct fmc_device *fmc, uint32_t offset, in ff_eeprom_read() argument
174 memcpy(buf, fmc->eeprom + offset, size); in ff_eeprom_read()
178 static int ff_eeprom_write(struct fmc_device *fmc, uint32_t offset, in ff_eeprom_write() argument
185 dev_info(&fmc->dev, "write_eeprom: offset %i, size %zi\n", in ff_eeprom_write()
187 memcpy(fmc->eeprom + offset, buf, size); in ff_eeprom_write()
193 static int ff_read_ee(struct fmc_device *fmc, int pos, void *data, int len) in ff_read_ee() argument
195 if (!(fmc->flags & FMC_DEVICE_HAS_GOLDEN)) in ff_read_ee()
197 return ff_eeprom_read(fmc, pos, data, len); in ff_read_ee()
200 static int ff_write_ee(struct fmc_device *fmc, int pos, in ff_write_ee() argument
203 if (!(fmc->flags & FMC_DEVICE_HAS_GOLDEN)) in ff_write_ee()
205 return ff_eeprom_write(fmc, pos, data, len); in ff_write_ee()
209 static uint32_t ff_readl(struct fmc_device *fmc, int offset) in ff_readl() argument
214 static void ff_writel(struct fmc_device *fmc, uint32_t value, int offset) in ff_writel() argument
220 static int ff_validate(struct fmc_device *fmc, struct fmc_driver *drv) in ff_validate() argument
227 if (drv->busid_val[i] == fmc->device_id) in ff_validate()
266 struct fmc_device *fmc; in ff_dev_create() local
283 fmc = kmemdup(&ff_template_fmc, sizeof(ff_template_fmc), in ff_dev_create()
285 fmc->hwdev = &ff->dev; in ff_dev_create()
286 fmc->carrier_data = ff; in ff_dev_create()
287 fmc->nr_slots = ff_nr_dev; in ff_dev_create()
289 fmc->eeprom = ff_eeimg[i]; in ff_dev_create()
290 fmc->eeprom_addr = 0x50 + 2 * i; in ff_dev_create()
291 fmc->slot_id = i; in ff_dev_create()
292 ff->fmc[i] = fmc; in ff_dev_create()
334 ret = fmc_device_register_n(ff->fmc, ff_nr_dev); in ff_init()
346 fmc_device_unregister_n(ff_current_dev->fmc, ff_nr_dev); in ff_exit()