diff options
| author | Jesse Brandeburg <jesse.brandeburg@intel.com> | 2009-09-25 08:20:11 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2009-09-26 23:15:58 -0400 |
| commit | 8f601b2d565fdf24e34d90c617cd4b777faad68f (patch) | |
| tree | 80af51b1bbdf17cf8f1897f096e4e911407897be /drivers/net | |
| parent | 120a5d0d588c9a4d47574fcfdab8454817c8586c (diff) | |
e1000: drop unused functionality for eeprom write/read
eerd and eewr don't exist on pre PCIe devices
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Don Skidmore <donald.c.skidmore@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net')
| -rw-r--r-- | drivers/net/e1000/e1000_hw.c | 121 | ||||
| -rw-r--r-- | drivers/net/e1000/e1000_hw.h | 2 |
2 files changed, 3 insertions, 120 deletions
diff --git a/drivers/net/e1000/e1000_hw.c b/drivers/net/e1000/e1000_hw.c index 6aba88304407..50114cd2df96 100644 --- a/drivers/net/e1000/e1000_hw.c +++ b/drivers/net/e1000/e1000_hw.c | |||
| @@ -49,11 +49,6 @@ static s32 e1000_id_led_init(struct e1000_hw *hw); | |||
| 49 | static void e1000_init_rx_addrs(struct e1000_hw *hw); | 49 | static void e1000_init_rx_addrs(struct e1000_hw *hw); |
| 50 | static s32 e1000_phy_igp_get_info(struct e1000_hw *hw, | 50 | static s32 e1000_phy_igp_get_info(struct e1000_hw *hw, |
| 51 | struct e1000_phy_info *phy_info); | 51 | struct e1000_phy_info *phy_info); |
| 52 | static s32 e1000_read_eeprom_eerd(struct e1000_hw *hw, u16 offset, u16 words, | ||
| 53 | u16 *data); | ||
| 54 | static s32 e1000_write_eeprom_eewr(struct e1000_hw *hw, u16 offset, u16 words, | ||
| 55 | u16 *data); | ||
| 56 | static s32 e1000_poll_eerd_eewr_done(struct e1000_hw *hw, int eerd); | ||
| 57 | static s32 e1000_phy_m88_get_info(struct e1000_hw *hw, | 52 | static s32 e1000_phy_m88_get_info(struct e1000_hw *hw, |
| 58 | struct e1000_phy_info *phy_info); | 53 | struct e1000_phy_info *phy_info); |
| 59 | static s32 e1000_set_d3_lplu_state(struct e1000_hw *hw, bool active); | 54 | static s32 e1000_set_d3_lplu_state(struct e1000_hw *hw, bool active); |
| @@ -3339,8 +3334,6 @@ s32 e1000_init_eeprom_params(struct e1000_hw *hw) | |||
| 3339 | eeprom->opcode_bits = 3; | 3334 | eeprom->opcode_bits = 3; |
| 3340 | eeprom->address_bits = 6; | 3335 | eeprom->address_bits = 6; |
| 3341 | eeprom->delay_usec = 50; | 3336 | eeprom->delay_usec = 50; |
| 3342 | eeprom->use_eerd = false; | ||
| 3343 | eeprom->use_eewr = false; | ||
| 3344 | break; | 3337 | break; |
| 3345 | case e1000_82540: | 3338 | case e1000_82540: |
| 3346 | case e1000_82545: | 3339 | case e1000_82545: |
| @@ -3357,8 +3350,6 @@ s32 e1000_init_eeprom_params(struct e1000_hw *hw) | |||
| 3357 | eeprom->word_size = 64; | 3350 | eeprom->word_size = 64; |
| 3358 | eeprom->address_bits = 6; | 3351 | eeprom->address_bits = 6; |
| 3359 | } | 3352 | } |
| 3360 | eeprom->use_eerd = false; | ||
| 3361 | eeprom->use_eewr = false; | ||
| 3362 | break; | 3353 | break; |
| 3363 | case e1000_82541: | 3354 | case e1000_82541: |
| 3364 | case e1000_82541_rev_2: | 3355 | case e1000_82541_rev_2: |
| @@ -3387,8 +3378,6 @@ s32 e1000_init_eeprom_params(struct e1000_hw *hw) | |||
| 3387 | eeprom->address_bits = 6; | 3378 | eeprom->address_bits = 6; |
| 3388 | } | 3379 | } |
| 3389 | } | 3380 | } |
| 3390 | eeprom->use_eerd = false; | ||
| 3391 | eeprom->use_eewr = false; | ||
| 3392 | break; | 3381 | break; |
| 3393 | default: | 3382 | default: |
| 3394 | break; | 3383 | break; |
| @@ -3773,15 +3762,9 @@ static s32 e1000_do_read_eeprom(struct e1000_hw *hw, u16 offset, u16 words, | |||
| 3773 | * directly. In this case, we need to acquire the EEPROM so that | 3762 | * directly. In this case, we need to acquire the EEPROM so that |
| 3774 | * FW or other port software does not interrupt. | 3763 | * FW or other port software does not interrupt. |
| 3775 | */ | 3764 | */ |
| 3776 | if (!hw->eeprom.use_eerd) { | 3765 | /* Prepare the EEPROM for bit-bang reading */ |
| 3777 | /* Prepare the EEPROM for bit-bang reading */ | 3766 | if (e1000_acquire_eeprom(hw) != E1000_SUCCESS) |
| 3778 | if (e1000_acquire_eeprom(hw) != E1000_SUCCESS) | 3767 | return -E1000_ERR_EEPROM; |
| 3779 | return -E1000_ERR_EEPROM; | ||
| 3780 | } | ||
| 3781 | |||
| 3782 | /* Eerd register EEPROM access requires no eeprom aquire/release */ | ||
| 3783 | if (eeprom->use_eerd) | ||
| 3784 | return e1000_read_eeprom_eerd(hw, offset, words, data); | ||
| 3785 | 3768 | ||
| 3786 | /* Set up the SPI or Microwire EEPROM for bit-bang reading. We have | 3769 | /* Set up the SPI or Microwire EEPROM for bit-bang reading. We have |
| 3787 | * acquired the EEPROM at this point, so any returns should release it */ | 3770 | * acquired the EEPROM at this point, so any returns should release it */ |
| @@ -3837,101 +3820,6 @@ static s32 e1000_do_read_eeprom(struct e1000_hw *hw, u16 offset, u16 words, | |||
| 3837 | } | 3820 | } |
| 3838 | 3821 | ||
| 3839 | /** | 3822 | /** |
| 3840 | * Reads a 16 bit word from the EEPROM using the EERD register. | ||
| 3841 | * | ||
| 3842 | * @hw: Struct containing variables accessed by shared code | ||
| 3843 | * offset - offset of word in the EEPROM to read | ||
| 3844 | * data - word read from the EEPROM | ||
| 3845 | * words - number of words to read | ||
| 3846 | */ | ||
| 3847 | static s32 e1000_read_eeprom_eerd(struct e1000_hw *hw, u16 offset, u16 words, | ||
| 3848 | u16 *data) | ||
| 3849 | { | ||
| 3850 | u32 i, eerd = 0; | ||
| 3851 | s32 error = 0; | ||
| 3852 | |||
| 3853 | for (i = 0; i < words; i++) { | ||
| 3854 | eerd = ((offset + i) << E1000_EEPROM_RW_ADDR_SHIFT) + | ||
| 3855 | E1000_EEPROM_RW_REG_START; | ||
| 3856 | |||
| 3857 | ew32(EERD, eerd); | ||
| 3858 | error = e1000_poll_eerd_eewr_done(hw, E1000_EEPROM_POLL_READ); | ||
| 3859 | |||
| 3860 | if (error) { | ||
| 3861 | break; | ||
| 3862 | } | ||
| 3863 | data[i] = (er32(EERD) >> E1000_EEPROM_RW_REG_DATA); | ||
| 3864 | |||
| 3865 | } | ||
| 3866 | |||
| 3867 | return error; | ||
| 3868 | } | ||
| 3869 | |||
| 3870 | /** | ||
| 3871 | * Writes a 16 bit word from the EEPROM using the EEWR register. | ||
| 3872 | * | ||
| 3873 | * @hw: Struct containing variables accessed by shared code | ||
| 3874 | * offset - offset of word in the EEPROM to read | ||
| 3875 | * data - word read from the EEPROM | ||
| 3876 | * words - number of words to read | ||
| 3877 | */ | ||
| 3878 | static s32 e1000_write_eeprom_eewr(struct e1000_hw *hw, u16 offset, u16 words, | ||
| 3879 | u16 *data) | ||
| 3880 | { | ||
| 3881 | u32 register_value = 0; | ||
| 3882 | u32 i = 0; | ||
| 3883 | s32 error = 0; | ||
| 3884 | |||
| 3885 | for (i = 0; i < words; i++) { | ||
| 3886 | register_value = (data[i] << E1000_EEPROM_RW_REG_DATA) | | ||
| 3887 | ((offset + i) << E1000_EEPROM_RW_ADDR_SHIFT) | | ||
| 3888 | E1000_EEPROM_RW_REG_START; | ||
| 3889 | |||
| 3890 | error = e1000_poll_eerd_eewr_done(hw, E1000_EEPROM_POLL_WRITE); | ||
| 3891 | if (error) { | ||
| 3892 | break; | ||
| 3893 | } | ||
| 3894 | |||
| 3895 | ew32(EEWR, register_value); | ||
| 3896 | |||
| 3897 | error = e1000_poll_eerd_eewr_done(hw, E1000_EEPROM_POLL_WRITE); | ||
| 3898 | |||
| 3899 | if (error) { | ||
| 3900 | break; | ||
| 3901 | } | ||
| 3902 | } | ||
| 3903 | |||
| 3904 | return error; | ||
| 3905 | } | ||
| 3906 | |||
| 3907 | /** | ||
| 3908 | * Polls the status bit (bit 1) of the EERD to determine when the read is done. | ||
| 3909 | * | ||
| 3910 | * @hw: Struct containing variables accessed by shared code | ||
| 3911 | */ | ||
| 3912 | static s32 e1000_poll_eerd_eewr_done(struct e1000_hw *hw, int eerd) | ||
| 3913 | { | ||
| 3914 | u32 attempts = 100000; | ||
| 3915 | u32 i, reg = 0; | ||
| 3916 | s32 done = E1000_ERR_EEPROM; | ||
| 3917 | |||
| 3918 | for (i = 0; i < attempts; i++) { | ||
| 3919 | if (eerd == E1000_EEPROM_POLL_READ) | ||
| 3920 | reg = er32(EERD); | ||
| 3921 | else | ||
| 3922 | reg = er32(EEWR); | ||
| 3923 | |||
| 3924 | if (reg & E1000_EEPROM_RW_REG_DONE) { | ||
| 3925 | done = E1000_SUCCESS; | ||
| 3926 | break; | ||
| 3927 | } | ||
| 3928 | udelay(5); | ||
| 3929 | } | ||
| 3930 | |||
| 3931 | return done; | ||
| 3932 | } | ||
| 3933 | |||
| 3934 | /** | ||
| 3935 | * e1000_validate_eeprom_checksum - Verifies that the EEPROM has a valid checksum | 3823 | * e1000_validate_eeprom_checksum - Verifies that the EEPROM has a valid checksum |
| 3936 | * @hw: Struct containing variables accessed by shared code | 3824 | * @hw: Struct containing variables accessed by shared code |
| 3937 | * | 3825 | * |
| @@ -4031,9 +3919,6 @@ static s32 e1000_do_write_eeprom(struct e1000_hw *hw, u16 offset, u16 words, | |||
| 4031 | return -E1000_ERR_EEPROM; | 3919 | return -E1000_ERR_EEPROM; |
| 4032 | } | 3920 | } |
| 4033 | 3921 | ||
| 4034 | if (eeprom->use_eewr) | ||
| 4035 | return e1000_write_eeprom_eewr(hw, offset, words, data); | ||
| 4036 | |||
| 4037 | /* Prepare the EEPROM for writing */ | 3922 | /* Prepare the EEPROM for writing */ |
| 4038 | if (e1000_acquire_eeprom(hw) != E1000_SUCCESS) | 3923 | if (e1000_acquire_eeprom(hw) != E1000_SUCCESS) |
| 4039 | return -E1000_ERR_EEPROM; | 3924 | return -E1000_ERR_EEPROM; |
diff --git a/drivers/net/e1000/e1000_hw.h b/drivers/net/e1000/e1000_hw.h index 4bfdf323b589..2e42341ca1dd 100644 --- a/drivers/net/e1000/e1000_hw.h +++ b/drivers/net/e1000/e1000_hw.h | |||
| @@ -256,8 +256,6 @@ struct e1000_eeprom_info { | |||
| 256 | u16 address_bits; | 256 | u16 address_bits; |
| 257 | u16 delay_usec; | 257 | u16 delay_usec; |
| 258 | u16 page_size; | 258 | u16 page_size; |
| 259 | bool use_eerd; | ||
| 260 | bool use_eewr; | ||
| 261 | }; | 259 | }; |
| 262 | 260 | ||
| 263 | /* Flex ASF Information */ | 261 | /* Flex ASF Information */ |
