Merge git://git.denx.de/u-boot-net
This commit is contained in:
		
						commit
						774da4b9aa
					
				|  | @ -482,47 +482,49 @@ int fdt_fixup_memory(void *blob, u64 start, u64 size) | ||||||
| void fdt_fixup_ethernet(void *fdt) | void fdt_fixup_ethernet(void *fdt) | ||||||
| { | { | ||||||
| 	int node, i, j; | 	int node, i, j; | ||||||
| 	char enet[16], *tmp, *end; | 	char *tmp, *end; | ||||||
| 	char mac[16]; | 	char mac[16]; | ||||||
| 	const char *path; | 	const char *path; | ||||||
| 	unsigned char mac_addr[6]; | 	unsigned char mac_addr[6]; | ||||||
|  | 	int offset; | ||||||
| 
 | 
 | ||||||
| 	node = fdt_path_offset(fdt, "/aliases"); | 	node = fdt_path_offset(fdt, "/aliases"); | ||||||
| 	if (node < 0) | 	if (node < 0) | ||||||
| 		return; | 		return; | ||||||
| 
 | 
 | ||||||
| 	if (!getenv("ethaddr")) { | 	for (offset = fdt_first_property_offset(fdt, node); | ||||||
| 		if (getenv("usbethaddr")) { | 	     offset > 0; | ||||||
| 			strcpy(mac, "usbethaddr"); | 	     offset = fdt_next_property_offset(fdt, offset)) { | ||||||
| 		} else { | 		const char *name; | ||||||
| 			debug("No ethernet MAC Address defined\n"); | 		int len = strlen("ethernet"); | ||||||
| 			return; | 
 | ||||||
|  | 		path = fdt_getprop_by_offset(fdt, offset, &name, NULL); | ||||||
|  | 		if (!strncmp(name, "ethernet", len)) { | ||||||
|  | 			i = trailing_strtol(name); | ||||||
|  | 			if (i != -1) { | ||||||
|  | 				if (i == 0) | ||||||
|  | 					strcpy(mac, "ethaddr"); | ||||||
|  | 				else | ||||||
|  | 					sprintf(mac, "eth%daddr", i); | ||||||
|  | 			} else { | ||||||
|  | 				continue; | ||||||
|  | 			} | ||||||
|  | 			tmp = getenv(mac); | ||||||
|  | 			if (!tmp) | ||||||
|  | 				continue; | ||||||
|  | 
 | ||||||
|  | 			for (j = 0; j < 6; j++) { | ||||||
|  | 				mac_addr[j] = tmp ? | ||||||
|  | 					      simple_strtoul(tmp, &end, 16) : 0; | ||||||
|  | 				if (tmp) | ||||||
|  | 					tmp = (*end) ? end + 1 : end; | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			do_fixup_by_path(fdt, path, "mac-address", | ||||||
|  | 					 &mac_addr, 6, 0); | ||||||
|  | 			do_fixup_by_path(fdt, path, "local-mac-address", | ||||||
|  | 					 &mac_addr, 6, 1); | ||||||
| 		} | 		} | ||||||
| 	} else { |  | ||||||
| 		strcpy(mac, "ethaddr"); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	i = 0; |  | ||||||
| 	while ((tmp = getenv(mac)) != NULL) { |  | ||||||
| 		sprintf(enet, "ethernet%d", i); |  | ||||||
| 		path = fdt_getprop(fdt, node, enet, NULL); |  | ||||||
| 		if (!path) { |  | ||||||
| 			debug("No alias for %s\n", enet); |  | ||||||
| 			sprintf(mac, "eth%daddr", ++i); |  | ||||||
| 			continue; |  | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 		for (j = 0; j < 6; j++) { |  | ||||||
| 			mac_addr[j] = tmp ? simple_strtoul(tmp, &end, 16) : 0; |  | ||||||
| 			if (tmp) |  | ||||||
| 				tmp = (*end) ? end+1 : end; |  | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 		do_fixup_by_path(fdt, path, "mac-address", &mac_addr, 6, 0); |  | ||||||
| 		do_fixup_by_path(fdt, path, "local-mac-address", |  | ||||||
| 				&mac_addr, 6, 1); |  | ||||||
| 
 |  | ||||||
| 		sprintf(mac, "eth%daddr", ++i); |  | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -551,43 +551,6 @@ static int32_t e1000_init_eeprom_params(struct e1000_hw *hw) | ||||||
| 		eeprom->use_eerd = true; | 		eeprom->use_eerd = true; | ||||||
| 		eeprom->use_eewr = false; | 		eeprom->use_eewr = false; | ||||||
| 		break; | 		break; | ||||||
| 
 |  | ||||||
| 	/* ich8lan does not support currently. if needed, please
 |  | ||||||
| 	 * add corresponding code and functions. |  | ||||||
| 	 */ |  | ||||||
| #if 0 |  | ||||||
| 	case e1000_ich8lan: |  | ||||||
| 		{ |  | ||||||
| 		int32_t  i = 0; |  | ||||||
| 
 |  | ||||||
| 		eeprom->type = e1000_eeprom_ich8; |  | ||||||
| 		eeprom->use_eerd = false; |  | ||||||
| 		eeprom->use_eewr = false; |  | ||||||
| 		eeprom->word_size = E1000_SHADOW_RAM_WORDS; |  | ||||||
| 		uint32_t flash_size = E1000_READ_ICH_FLASH_REG(hw, |  | ||||||
| 				ICH_FLASH_GFPREG); |  | ||||||
| 		/* Zero the shadow RAM structure. But don't load it from NVM
 |  | ||||||
| 		 * so as to save time for driver init */ |  | ||||||
| 		if (hw->eeprom_shadow_ram != NULL) { |  | ||||||
| 			for (i = 0; i < E1000_SHADOW_RAM_WORDS; i++) { |  | ||||||
| 				hw->eeprom_shadow_ram[i].modified = false; |  | ||||||
| 				hw->eeprom_shadow_ram[i].eeprom_word = 0xFFFF; |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 		hw->flash_base_addr = (flash_size & ICH_GFPREG_BASE_MASK) * |  | ||||||
| 				ICH_FLASH_SECTOR_SIZE; |  | ||||||
| 
 |  | ||||||
| 		hw->flash_bank_size = ((flash_size >> 16) |  | ||||||
| 				& ICH_GFPREG_BASE_MASK) + 1; |  | ||||||
| 		hw->flash_bank_size -= (flash_size & ICH_GFPREG_BASE_MASK); |  | ||||||
| 
 |  | ||||||
| 		hw->flash_bank_size *= ICH_FLASH_SECTOR_SIZE; |  | ||||||
| 
 |  | ||||||
| 		hw->flash_bank_size /= 2 * sizeof(uint16_t); |  | ||||||
| 		break; |  | ||||||
| 		} |  | ||||||
| #endif |  | ||||||
| 	default: | 	default: | ||||||
| 		break; | 		break; | ||||||
| 	} | 	} | ||||||
|  | @ -838,14 +801,6 @@ e1000_read_eeprom(struct e1000_hw *hw, uint16_t offset, | ||||||
| 	if (eeprom->use_eerd == true) | 	if (eeprom->use_eerd == true) | ||||||
| 		return e1000_read_eeprom_eerd(hw, offset, words, data); | 		return e1000_read_eeprom_eerd(hw, offset, words, data); | ||||||
| 
 | 
 | ||||||
| 	/* ich8lan does not support currently. if needed, please
 |  | ||||||
| 	 * add corresponding code and functions. |  | ||||||
| 	 */ |  | ||||||
| #if 0 |  | ||||||
| 	/* ICH EEPROM access is done via the ICH flash controller */ |  | ||||||
| 	if (eeprom->type == e1000_eeprom_ich8) |  | ||||||
| 		return e1000_read_eeprom_ich8(hw, offset, words, data); |  | ||||||
| #endif |  | ||||||
| 	/* Set up the SPI or Microwire EEPROM for bit-bang reading.  We have
 | 	/* Set up the SPI or Microwire EEPROM for bit-bang reading.  We have
 | ||||||
| 	 * acquired the EEPROM at this point, so any returns should relase it */ | 	 * acquired the EEPROM at this point, so any returns should relase it */ | ||||||
| 	if (eeprom->type == e1000_eeprom_spi) { | 	if (eeprom->type == e1000_eeprom_spi) { | ||||||
|  | @ -1732,17 +1687,7 @@ e1000_init_hw(struct e1000_hw *hw, unsigned char enetaddr[6]) | ||||||
| 		 * occuring when accessing our register space */ | 		 * occuring when accessing our register space */ | ||||||
| 		E1000_WRITE_FLUSH(hw); | 		E1000_WRITE_FLUSH(hw); | ||||||
| 	} | 	} | ||||||
| #if 0 | 
 | ||||||
| 	/* Set the PCI priority bit correctly in the CTRL register.  This
 |  | ||||||
| 	 * determines if the adapter gives priority to receives, or if it |  | ||||||
| 	 * gives equal priority to transmits and receives.  Valid only on |  | ||||||
| 	 * 82542 and 82543 silicon. |  | ||||||
| 	 */ |  | ||||||
| 	if (hw->dma_fairness && hw->mac_type <= e1000_82543) { |  | ||||||
| 		ctrl = E1000_READ_REG(hw, CTRL); |  | ||||||
| 		E1000_WRITE_REG(hw, CTRL, ctrl | E1000_CTRL_PRIOR); |  | ||||||
| 	} |  | ||||||
| #endif |  | ||||||
| 	switch (hw->mac_type) { | 	switch (hw->mac_type) { | ||||||
| 	case e1000_82545_rev_3: | 	case e1000_82545_rev_3: | ||||||
| 	case e1000_82546_rev_3: | 	case e1000_82546_rev_3: | ||||||
|  | @ -1842,20 +1787,6 @@ e1000_init_hw(struct e1000_hw *hw, unsigned char enetaddr[6]) | ||||||
| 		break; | 		break; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| #if 0 |  | ||||||
| 	/* Clear all of the statistics registers (clear on read).  It is
 |  | ||||||
| 	 * important that we do this after we have tried to establish link |  | ||||||
| 	 * because the symbol error count will increment wildly if there |  | ||||||
| 	 * is no link. |  | ||||||
| 	 */ |  | ||||||
| 	e1000_clear_hw_cntrs(hw); |  | ||||||
| 
 |  | ||||||
| 	/* ICH8 No-snoop bits are opposite polarity.
 |  | ||||||
| 	 * Set to snoop by default after reset. */ |  | ||||||
| 	if (hw->mac_type == e1000_ich8lan) |  | ||||||
| 		e1000_set_pci_ex_no_snoop(hw, PCI_EX_82566_SNOOP_ALL); |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| 	if (hw->device_id == E1000_DEV_ID_82546GB_QUAD_COPPER || | 	if (hw->device_id == E1000_DEV_ID_82546GB_QUAD_COPPER || | ||||||
| 		hw->device_id == E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3) { | 		hw->device_id == E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3) { | ||||||
| 		ctrl_ext = E1000_READ_REG(hw, CTRL_EXT); | 		ctrl_ext = E1000_READ_REG(hw, CTRL_EXT); | ||||||
|  | @ -5230,10 +5161,6 @@ _e1000_disable(struct e1000_hw *hw) | ||||||
| 	E1000_WRITE_REG(hw, RDH, 0); | 	E1000_WRITE_REG(hw, RDH, 0); | ||||||
| 	E1000_WRITE_REG(hw, RDT, 0); | 	E1000_WRITE_REG(hw, RDT, 0); | ||||||
| 
 | 
 | ||||||
| 	/* put the card in its initial state */ |  | ||||||
| #if 0 |  | ||||||
| 	E1000_WRITE_REG(hw, CTRL, E1000_CTRL_RST); |  | ||||||
| #endif |  | ||||||
| 	mdelay(10); | 	mdelay(10); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -5359,7 +5286,6 @@ static int e1000_init_one(struct e1000_hw *hw, int cardnum, pci_dev_t devno, | ||||||
| 
 | 
 | ||||||
| #ifndef CONFIG_E1000_NO_NVM | #ifndef CONFIG_E1000_NO_NVM | ||||||
| 	/* Validate the EEPROM and get chipset information */ | 	/* Validate the EEPROM and get chipset information */ | ||||||
| #if !defined(CONFIG_MVBC_1G) |  | ||||||
| 	if (e1000_init_eeprom_params(hw)) { | 	if (e1000_init_eeprom_params(hw)) { | ||||||
| 		E1000_ERR(hw, "EEPROM is invalid!\n"); | 		E1000_ERR(hw, "EEPROM is invalid!\n"); | ||||||
| 		return -EINVAL; | 		return -EINVAL; | ||||||
|  | @ -5367,7 +5293,6 @@ static int e1000_init_one(struct e1000_hw *hw, int cardnum, pci_dev_t devno, | ||||||
| 	if ((E1000_READ_REG(hw, I210_EECD) & E1000_EECD_FLUPD) && | 	if ((E1000_READ_REG(hw, I210_EECD) & E1000_EECD_FLUPD) && | ||||||
| 	    e1000_validate_eeprom_checksum(hw)) | 	    e1000_validate_eeprom_checksum(hw)) | ||||||
| 		return -ENXIO; | 		return -ENXIO; | ||||||
| #endif |  | ||||||
| 	e1000_read_mac_addr(hw, enetaddr); | 	e1000_read_mac_addr(hw, enetaddr); | ||||||
| #endif | #endif | ||||||
| 	e1000_get_bus_type(hw); | 	e1000_get_bus_type(hw); | ||||||
|  |  | ||||||
|  | @ -1093,11 +1093,6 @@ struct e1000_hw { | ||||||
| 	e1000_media_type media_type; | 	e1000_media_type media_type; | ||||||
| 	e1000_fc_type fc; | 	e1000_fc_type fc; | ||||||
| 	e1000_bus_type bus_type; | 	e1000_bus_type bus_type; | ||||||
| #if 0 |  | ||||||
| 	e1000_bus_speed bus_speed; |  | ||||||
| 	e1000_bus_width bus_width; |  | ||||||
| 	uint32_t io_base; |  | ||||||
| #endif |  | ||||||
| 	uint32_t		asf_firmware_present; | 	uint32_t		asf_firmware_present; | ||||||
| #ifndef CONFIG_E1000_NO_NVM | #ifndef CONFIG_E1000_NO_NVM | ||||||
| 	uint32_t		eeprom_semaphore_present; | 	uint32_t		eeprom_semaphore_present; | ||||||
|  | @ -1116,29 +1111,11 @@ struct e1000_hw { | ||||||
| 	uint32_t original_fc; | 	uint32_t original_fc; | ||||||
| 	uint32_t txcw; | 	uint32_t txcw; | ||||||
| 	uint32_t autoneg_failed; | 	uint32_t autoneg_failed; | ||||||
| #if 0 |  | ||||||
| 	uint32_t max_frame_size; |  | ||||||
| 	uint32_t min_frame_size; |  | ||||||
| 	uint32_t mc_filter_type; |  | ||||||
| 	uint32_t num_mc_addrs; |  | ||||||
| 	uint32_t collision_delta; |  | ||||||
| 	uint32_t tx_packet_delta; |  | ||||||
| 	uint32_t ledctl_default; |  | ||||||
| 	uint32_t ledctl_mode1; |  | ||||||
| 	uint32_t ledctl_mode2; |  | ||||||
| #endif |  | ||||||
| 	uint16_t autoneg_advertised; | 	uint16_t autoneg_advertised; | ||||||
| 	uint16_t pci_cmd_word; | 	uint16_t pci_cmd_word; | ||||||
| 	uint16_t fc_high_water; | 	uint16_t fc_high_water; | ||||||
| 	uint16_t fc_low_water; | 	uint16_t fc_low_water; | ||||||
| 	uint16_t fc_pause_time; | 	uint16_t fc_pause_time; | ||||||
| #if 0 |  | ||||||
| 	uint16_t current_ifs_val; |  | ||||||
| 	uint16_t ifs_min_val; |  | ||||||
| 	uint16_t ifs_max_val; |  | ||||||
| 	uint16_t ifs_step_size; |  | ||||||
| 	uint16_t ifs_ratio; |  | ||||||
| #endif |  | ||||||
| 	uint16_t device_id; | 	uint16_t device_id; | ||||||
| 	uint16_t vendor_id; | 	uint16_t vendor_id; | ||||||
| 	uint16_t subsystem_id; | 	uint16_t subsystem_id; | ||||||
|  | @ -1149,9 +1126,6 @@ struct e1000_hw { | ||||||
| 	uint8_t forced_speed_duplex; | 	uint8_t forced_speed_duplex; | ||||||
| 	uint8_t wait_autoneg_complete; | 	uint8_t wait_autoneg_complete; | ||||||
| 	uint8_t dma_fairness; | 	uint8_t dma_fairness; | ||||||
| #if 0 |  | ||||||
| 	uint8_t perm_mac_addr[NODE_ADDRESS_SIZE]; |  | ||||||
| #endif |  | ||||||
| 	bool disable_polarity_correction; | 	bool disable_polarity_correction; | ||||||
| 	bool		speed_downgraded; | 	bool		speed_downgraded; | ||||||
| 	bool get_link_status; | 	bool get_link_status; | ||||||
|  | @ -1162,11 +1136,6 @@ struct e1000_hw { | ||||||
| 	bool report_tx_early; | 	bool report_tx_early; | ||||||
| 	bool phy_reset_disable; | 	bool phy_reset_disable; | ||||||
| 	bool		initialize_hw_bits_disable; | 	bool		initialize_hw_bits_disable; | ||||||
| #if 0 |  | ||||||
| 	bool adaptive_ifs; |  | ||||||
| 	bool ifs_params_forced; |  | ||||||
| 	bool in_ifs_mode; |  | ||||||
| #endif |  | ||||||
| 	e1000_smart_speed	smart_speed; | 	e1000_smart_speed	smart_speed; | ||||||
| 	e1000_dsp_config	dsp_config_state; | 	e1000_dsp_config	dsp_config_state; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -182,22 +182,21 @@ static int e1000_spi_eeprom_enable_wr(struct e1000_hw *hw, bool intr) | ||||||
|  * These have been tested to perform correctly, but they are not used by any |  * These have been tested to perform correctly, but they are not used by any | ||||||
|  * of the EEPROM commands at this time. |  * of the EEPROM commands at this time. | ||||||
|  */ |  */ | ||||||
| #if 0 | static __maybe_unused int e1000_spi_eeprom_disable_wr(struct e1000_hw *hw, | ||||||
| static int e1000_spi_eeprom_disable_wr(struct e1000_hw *hw, bool intr) | 						      bool intr) | ||||||
| { | { | ||||||
| 	u8 op[] = { SPI_EEPROM_DISABLE_WR }; | 	u8 op[] = { SPI_EEPROM_DISABLE_WR }; | ||||||
| 	e1000_standby_eeprom(hw); | 	e1000_standby_eeprom(hw); | ||||||
| 	return e1000_spi_xfer(hw, 8*sizeof(op), op, NULL, intr); | 	return e1000_spi_xfer(hw, 8*sizeof(op), op, NULL, intr); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static int e1000_spi_eeprom_write_status(struct e1000_hw *hw, | static __maybe_unused int e1000_spi_eeprom_write_status(struct e1000_hw *hw, | ||||||
| 		u8 status, bool intr) | 							u8 status, bool intr) | ||||||
| { | { | ||||||
| 	u8 op[] = { SPI_EEPROM_WRITE_STATUS, status }; | 	u8 op[] = { SPI_EEPROM_WRITE_STATUS, status }; | ||||||
| 	e1000_standby_eeprom(hw); | 	e1000_standby_eeprom(hw); | ||||||
| 	return e1000_spi_xfer(hw, 8*sizeof(op), op, NULL, intr); | 	return e1000_spi_xfer(hw, 8*sizeof(op), op, NULL, intr); | ||||||
| } | } | ||||||
| #endif |  | ||||||
| 
 | 
 | ||||||
| static int e1000_spi_eeprom_read_status(struct e1000_hw *hw, bool intr) | static int e1000_spi_eeprom_read_status(struct e1000_hw *hw, bool intr) | ||||||
| { | { | ||||||
|  |  | ||||||
|  | @ -181,8 +181,7 @@ int eth_unregister(struct eth_device *dev);/* Remove network device */ | ||||||
| 
 | 
 | ||||||
| extern struct eth_device *eth_current; | extern struct eth_device *eth_current; | ||||||
| 
 | 
 | ||||||
| static inline __attribute__((always_inline)) | static __always_inline struct eth_device *eth_get_dev(void) | ||||||
| struct eth_device *eth_get_dev(void) |  | ||||||
| { | { | ||||||
| 	return eth_current; | 	return eth_current; | ||||||
| } | } | ||||||
|  | @ -200,14 +199,14 @@ static inline unsigned char *eth_get_ethaddr(void) | ||||||
| /* Used only when NetConsole is enabled */ | /* Used only when NetConsole is enabled */ | ||||||
| int eth_is_active(struct eth_device *dev); /* Test device for active state */ | int eth_is_active(struct eth_device *dev); /* Test device for active state */ | ||||||
| /* Set active state */ | /* Set active state */ | ||||||
| static inline __attribute__((always_inline)) int eth_init_state_only(void) | static __always_inline int eth_init_state_only(void) | ||||||
| { | { | ||||||
| 	eth_get_dev()->state = ETH_STATE_ACTIVE; | 	eth_get_dev()->state = ETH_STATE_ACTIVE; | ||||||
| 
 | 
 | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| /* Set passive state */ | /* Set passive state */ | ||||||
| static inline __attribute__((always_inline)) void eth_halt_state_only(void) | static __always_inline void eth_halt_state_only(void) | ||||||
| { | { | ||||||
| 	eth_get_dev()->state = ETH_STATE_PASSIVE; | 	eth_get_dev()->state = ETH_STATE_PASSIVE; | ||||||
| } | } | ||||||
|  | @ -657,7 +656,7 @@ int nc_input_packet(uchar *pkt, struct in_addr src_ip, unsigned dest_port, | ||||||
| 	unsigned src_port, unsigned len); | 	unsigned src_port, unsigned len); | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| static inline __attribute__((always_inline)) int eth_is_on_demand_init(void) | static __always_inline int eth_is_on_demand_init(void) | ||||||
| { | { | ||||||
| #ifdef CONFIG_NETCONSOLE | #ifdef CONFIG_NETCONSOLE | ||||||
| 	extern enum proto_t net_loop_last_protocol; | 	extern enum proto_t net_loop_last_protocol; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue