From 630dac083062c4301e549848d2d5b168656d968f Mon Sep 17 00:00:00 2001 From: Alessandro Rubini <rubini@gnudd.com> Date: Tue, 24 Jul 2012 23:00:40 +0200 Subject: [PATCH] spec-fmc: added eeprom methods --- kernel/spec-fmc.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/kernel/spec-fmc.c b/kernel/spec-fmc.c index 239d94b..6ed8c47 100644 --- a/kernel/spec-fmc.c +++ b/kernel/spec-fmc.c @@ -72,13 +72,25 @@ static int spec_irq_free(struct fmc_device *fmc) return 0; } +/* The engines for this live in spec-i2c.c, we only shape arguments */ +static int spec_read_ee(struct fmc_device *fmc, int pos, void *data, int len) +{ + return spec_eeprom_read(fmc, SPEC_I2C_EEPROM_ADDR, pos, data, len); +} + +static int spec_write_ee(struct fmc_device *fmc, int pos, void *data, int len) +{ + return spec_eeprom_write(fmc, SPEC_I2C_EEPROM_ADDR, pos, data, len); +} + static struct fmc_operations spec_fmc_operations = { /* no readl/writel because we have the base pointer */ /* FIXME: reprogram */ .irq_request = spec_irq_request, .irq_ack = spec_irq_ack, .irq_free = spec_irq_free, - /* FIXME: eeprom */ + .read_ee = spec_read_ee, + .write_ee = spec_write_ee, }; /* @@ -199,6 +211,7 @@ int spec_fmc_create(struct spec_dev *spec) fmc->base = spec->remap[0] + 0x80000; /* 512k window at 512k offset */ fmc->irq = spec->pdev->irq; fmc->op = &spec_fmc_operations; + fmc->hwdev = &spec->pdev->dev; /* for messages */ spec->fmc = fmc; /* Check that the golden binary is actually correct */ -- GitLab