diff options
author | Ben Hutchings <bhutchings@solarflare.com> | 2009-11-23 11:06:02 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-11-24 13:58:52 -0500 |
commit | e775fb93a880d218ce0b3fd405278dd78f86c405 (patch) | |
tree | 5f5c31161f7f11a9611481396de92964e2fdaaae /drivers/net/sfc/falcon.c | |
parent | 3759433db2f7340ddec3abd55ebb1178600d014e (diff) |
sfc: Move all I2C stuff into struct falcon_board
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/sfc/falcon.c')
-rw-r--r-- | drivers/net/sfc/falcon.c | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/drivers/net/sfc/falcon.c b/drivers/net/sfc/falcon.c index 490bda0d010e..ff15b9dd3618 100644 --- a/drivers/net/sfc/falcon.c +++ b/drivers/net/sfc/falcon.c | |||
@@ -2799,6 +2799,7 @@ static void falcon_probe_spi_devices(struct efx_nic *efx) | |||
2799 | int falcon_probe_nic(struct efx_nic *efx) | 2799 | int falcon_probe_nic(struct efx_nic *efx) |
2800 | { | 2800 | { |
2801 | struct falcon_nic_data *nic_data; | 2801 | struct falcon_nic_data *nic_data; |
2802 | struct falcon_board *board; | ||
2802 | int rc; | 2803 | int rc; |
2803 | 2804 | ||
2804 | /* Allocate storage for hardware specific data */ | 2805 | /* Allocate storage for hardware specific data */ |
@@ -2856,13 +2857,15 @@ int falcon_probe_nic(struct efx_nic *efx) | |||
2856 | goto fail5; | 2857 | goto fail5; |
2857 | 2858 | ||
2858 | /* Initialise I2C adapter */ | 2859 | /* Initialise I2C adapter */ |
2859 | efx->i2c_adap.owner = THIS_MODULE; | 2860 | board = falcon_board(efx); |
2860 | nic_data->i2c_data = falcon_i2c_bit_operations; | 2861 | board->i2c_adap.owner = THIS_MODULE; |
2861 | nic_data->i2c_data.data = efx; | 2862 | board->i2c_data = falcon_i2c_bit_operations; |
2862 | efx->i2c_adap.algo_data = &nic_data->i2c_data; | 2863 | board->i2c_data.data = efx; |
2863 | efx->i2c_adap.dev.parent = &efx->pci_dev->dev; | 2864 | board->i2c_adap.algo_data = &board->i2c_data; |
2864 | strlcpy(efx->i2c_adap.name, "SFC4000 GPIO", sizeof(efx->i2c_adap.name)); | 2865 | board->i2c_adap.dev.parent = &efx->pci_dev->dev; |
2865 | rc = i2c_bit_add_bus(&efx->i2c_adap); | 2866 | strlcpy(board->i2c_adap.name, "SFC4000 GPIO", |
2867 | sizeof(board->i2c_adap.name)); | ||
2868 | rc = i2c_bit_add_bus(&board->i2c_adap); | ||
2866 | if (rc) | 2869 | if (rc) |
2867 | goto fail5; | 2870 | goto fail5; |
2868 | 2871 | ||
@@ -2875,8 +2878,8 @@ int falcon_probe_nic(struct efx_nic *efx) | |||
2875 | return 0; | 2878 | return 0; |
2876 | 2879 | ||
2877 | fail6: | 2880 | fail6: |
2878 | BUG_ON(i2c_del_adapter(&efx->i2c_adap)); | 2881 | BUG_ON(i2c_del_adapter(&board->i2c_adap)); |
2879 | memset(&efx->i2c_adap, 0, sizeof(efx->i2c_adap)); | 2882 | memset(&board->i2c_adap, 0, sizeof(board->i2c_adap)); |
2880 | fail5: | 2883 | fail5: |
2881 | falcon_remove_spi_devices(efx); | 2884 | falcon_remove_spi_devices(efx); |
2882 | falcon_free_buffer(efx, &efx->irq_status); | 2885 | falcon_free_buffer(efx, &efx->irq_status); |
@@ -3066,14 +3069,15 @@ int falcon_init_nic(struct efx_nic *efx) | |||
3066 | void falcon_remove_nic(struct efx_nic *efx) | 3069 | void falcon_remove_nic(struct efx_nic *efx) |
3067 | { | 3070 | { |
3068 | struct falcon_nic_data *nic_data = efx->nic_data; | 3071 | struct falcon_nic_data *nic_data = efx->nic_data; |
3072 | struct falcon_board *board = falcon_board(efx); | ||
3069 | int rc; | 3073 | int rc; |
3070 | 3074 | ||
3071 | falcon_board(efx)->fini(efx); | 3075 | falcon_board(efx)->fini(efx); |
3072 | 3076 | ||
3073 | /* Remove I2C adapter and clear it in preparation for a retry */ | 3077 | /* Remove I2C adapter and clear it in preparation for a retry */ |
3074 | rc = i2c_del_adapter(&efx->i2c_adap); | 3078 | rc = i2c_del_adapter(&board->i2c_adap); |
3075 | BUG_ON(rc); | 3079 | BUG_ON(rc); |
3076 | memset(&efx->i2c_adap, 0, sizeof(efx->i2c_adap)); | 3080 | memset(&board->i2c_adap, 0, sizeof(board->i2c_adap)); |
3077 | 3081 | ||
3078 | falcon_remove_spi_devices(efx); | 3082 | falcon_remove_spi_devices(efx); |
3079 | falcon_free_buffer(efx, &efx->irq_status); | 3083 | falcon_free_buffer(efx, &efx->irq_status); |