Commit dce08ccb authored by Luis Fernando Ruiz's avatar Luis Fernando Ruiz Committed by Juan David González Cobas

cambios a .c's

parent 711d935b
......@@ -151,14 +151,13 @@ static struct fmc_operations svec_fmc_operations = {
.validate = svec_validate,
};
int svec_fmc_prepare(struct svec_dev *svec, unsigned int carrier_slot)
int svec_fmc_prepare(struct svec_dev *svec, unsigned int fmc_slot)
{
struct fmc_device *fmc = svec->fmcs + carrier_slot;
unsigned long vme_slot = (svec->vmebase1 >> 19);
struct fmc_device *fmc = svec->fmcs + fmc_slot;
int ret = 0;
/* FIXME: For now, only two mezzanines carrier */
if (carrier_slot<0 || carrier_slot>1)
if (fmc_slot < 0 || fmc_slot > 1)
return -EINVAL;
fmc->version = FMC_VERSION;
......@@ -172,13 +171,13 @@ int svec_fmc_prepare(struct svec_dev *svec, unsigned int carrier_slot)
fmc->op = &svec_fmc_operations;
fmc->hwdev = svec->dev; /* for messages */
fmc->slot_id = carrier_slot;
fmc->device_id = (vme_slot << 6) | carrier_slot;
fmc->eeprom_addr = 0x50 + 2 * carrier_slot;
fmc->slot_id = fmc_slot;
fmc->device_id = (svec->slot << 6) | fmc_slot;
fmc->eeprom_addr = 0x50 + 2 * fmc_slot;
fmc->memlen = 0x100000;
ret = svec_i2c_init(fmc, carrier_slot);
ret = svec_i2c_init(fmc, fmc_slot);
if (ret) {
dev_err(svec->dev, "Error %d on svec i2c init", ret);
return ret;
......@@ -196,19 +195,19 @@ int svec_fmc_create(struct svec_dev *svec)
int error = 0;
/* fmc structures filling */
for (i=0; i < svec->slot_n; i++) {
for (i=0; i < svec->fmcs_n; i++) {
error = svec_fmc_prepare(svec, i);
if (error)
goto failed;
}
/* fmc device creation */
error = fmc_device_register_n(svec->fmcs, svec->slot_n);
error = fmc_device_register_n(svec->fmcs, svec->fmcs_n);
if (error) {
dev_err(svec->dev, "Error registering fmc devices\n");
goto failed;
}
dev_info(svec->dev, "%d fmc devices registered\n", svec->slot_n);
dev_info(svec->dev, "%d fmc devices registered\n", svec->fmcs_n);
failed:
return error;
......@@ -218,9 +217,9 @@ failed:
void svec_fmc_destroy(struct svec_dev *svec)
{
if (svec->fmcs) {
fmc_device_unregister_n(svec->fmcs, svec->slot_n);
fmc_device_unregister_n(svec->fmcs, svec->fmcs_n);
kfree(svec->fmcs);
dev_info(svec->dev, "%d fmc devices unregistered\n",
svec->slot_n);
svec->fmcs_n);
}
}
......@@ -23,8 +23,8 @@
char *svec_fw_name = "fmc/svec_golden.bin";
/* Module parameters */
static long vmebase1[SVEC_MAX_DEVICES];
static unsigned int vmebase1_num;
static int slot[SVEC_MAX_DEVICES];
static unsigned int slot_num;
static long vmebase2[SVEC_MAX_DEVICES];
static unsigned int vmebase2_num;
static char *fw_name[SVEC_MAX_DEVICES];
......@@ -35,10 +35,10 @@ static int lun[SVEC_MAX_DEVICES] = SVEC_DEFAULT_IDX;
static unsigned int lun_num;
module_param_array(vmebase1, ulong, &vmebase1_num, S_IRUGO);
MODULE_PARM_DESC(vmebase1, "VME Base Adress #1 of the SVEC card");
module_param_array(slot, ulong, &slot_num, S_IRUGO);
MODULE_PARM_DESC(slot, "Slot where SVEC card is installed");
module_param_array(vmebase2, ulong, &vmebase2_num, S_IRUGO);
MODULE_PARM_DESC(vmebase2, "VME Base Adress #2 of the SVEC card");
MODULE_PARM_DESC(vmebase2, "VME Base address of the SVEC card registers");
module_param_array_named(fw_name, fw_name , charp, &fw_name_num, S_IRUGO);
MODULE_PARM_DESC(fw_name, "firmware file");
module_param_array(vector, int, &vector_num, S_IRUGO);
......@@ -55,7 +55,7 @@ int svec_map_window(struct svec_dev *svec, enum svec_map_win map_type)
struct device *dev = svec->dev;
enum vme_address_modifier am = VME_CR_CSR;
enum vme_data_width dw = VME_D32;
unsigned long base = svec->vmebase1;
unsigned long base = svec->slot * 0x80000;
unsigned int size = 0x80000;
int rval;
......@@ -353,7 +353,7 @@ static int __devinit svec_probe(struct device *pdev, unsigned int ndev)
/* Initialize struct fields*/
svec->lun = lun[ndev];
svec->vmebase1 = vmebase1[ndev];
svec->slot = slot[ndev];
svec->vmebase2 = vmebase2[ndev];
svec->vector = vector[ndev];
svec->level = SVEC_IRQ_LEVEL; /* Default value */
......@@ -387,8 +387,9 @@ static int __devinit svec_probe(struct device *pdev, unsigned int ndev)
#endif
strlcpy(svec->driver, DRIVER_NAME, sizeof(svec->driver));
snprintf(svec->description, sizeof(svec->description),
"SVEC at VME-A32 0x%08lx - 0x%08lx irqv %d irql %d",
svec->vmebase1, svec->vmebase2, vector[ndev], svec->level);
"SVEC at VME-A32 slot %d 0x%08x - 0x%08lx irqv %d irql %d",
svec->slot, svec->slot << 19, svec->vmebase2,
vector[ndev], svec->level);
dev_info(pdev, "%s\n", svec->description);
......@@ -445,7 +446,7 @@ static int __init svec_init(void)
int error = 0;
/* Check that all insmod argument vectors are the same length */
if (lun_num != vmebase1_num || lun_num != vmebase2_num ||
if (lun_num != slot_num || lun_num != vmebase2_num ||
lun_num != vector_num) {
pr_err("%s: The number of parameters doesn't match\n", __func__);
return -EINVAL;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment