diff options
Diffstat (limited to 'drivers/staging/sxg/sxg.c')
-rw-r--r-- | drivers/staging/sxg/sxg.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/drivers/staging/sxg/sxg.c b/drivers/staging/sxg/sxg.c index 59b241e8e28..884e56aa9f0 100644 --- a/drivers/staging/sxg/sxg.c +++ b/drivers/staging/sxg/sxg.c @@ -834,14 +834,15 @@ static void sxg_config_pci(struct pci_dev *pcidev) static inline int sxg_read_config(struct adapter_t *adapter) { /* struct sxg_config data; */ + struct sxg_config *config; struct sw_cfg_data *data; dma_addr_t p_addr; unsigned long status; unsigned long i; + config = pci_alloc_consistent(adapter->pcidev, + sizeof(struct sxg_config), &p_addr); - data = pci_alloc_consistent(adapter->pcidev, - sizeof(struct sw_cfg_data), &p_addr); - if(!data) { + if(!config) { /* * We cant get even this much memory. Raise a hell * Get out of here @@ -851,8 +852,12 @@ static inline int sxg_read_config(struct adapter_t *adapter) return -ENOMEM; } + data = &config->SwCfg; + + /* Initialize (reflective memory) status register */ WRITE_REG(adapter->UcodeRegs[0].ConfigStat, SXG_CFG_TIMEOUT, TRUE); + /* Send request to fetch configuration data */ WRITE_REG64(adapter, adapter->UcodeRegs[0].Config, p_addr, 0); for(i=0; i<1000; i++) { READ_REG(adapter->UcodeRegs[0].ConfigStat, status); @@ -866,12 +871,12 @@ static inline int sxg_read_config(struct adapter_t *adapter) case SXG_CFG_LOAD_EEPROM: /* Config read from Flash succeeded */ case SXG_CFG_LOAD_FLASH: - /* Copy the MAC address to adapter structure */ - /* TODO: We are not doing the remaining part : FRU, - * etc + /* + * Copy the MAC address to adapter structure + * TODO: We are not doing the remaining part : FRU, etc */ memcpy(adapter->macaddr, data->MacAddr[0].MacAddr, - sizeof(struct sxg_config_mac)); + sizeof(struct sxg_config_mac)); break; case SXG_CFG_TIMEOUT: case SXG_CFG_LOAD_INVALID: |