aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/sfc/falcon.c
diff options
context:
space:
mode:
authorBen Hutchings <bhutchings@solarflare.com>2009-11-23 11:06:02 -0500
committerDavid S. Miller <davem@davemloft.net>2009-11-24 13:58:52 -0500
commite775fb93a880d218ce0b3fd405278dd78f86c405 (patch)
tree5f5c31161f7f11a9611481396de92964e2fdaaae /drivers/net/sfc/falcon.c
parent3759433db2f7340ddec3abd55ebb1178600d014e (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.c26
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)
2799int falcon_probe_nic(struct efx_nic *efx) 2799int 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)
3066void falcon_remove_nic(struct efx_nic *efx) 3069void 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);