mirror of
				https://review.coreboot.org/flashrom.git
				synced 2025-10-31 13:20:42 +01:00 
			
		
		
		
	Bus Pirate support needs serial communication
Serprog already has such functionality, so it makes sense to share that. TODO: Factor out serial communication into a separate file, have that code be available even if serprog is not selected and make it portable (it is very Linux-centric right now). Corresponding to flashrom svn r768. Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> Acked-by: Stefan Reinauer <stepan@coresystems.de>
This commit is contained in:
		
							
								
								
									
										3
									
								
								flash.h
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								flash.h
									
									
									
									
									
								
							| @@ -736,5 +736,8 @@ void serprog_chip_writeb(uint8_t val, chipaddr addr); | ||||
| uint8_t serprog_chip_readb(const chipaddr addr); | ||||
| void serprog_chip_readn(uint8_t *buf, const chipaddr addr, size_t len); | ||||
| void serprog_delay(int delay); | ||||
| void sp_flush_incoming(void); | ||||
| int sp_openserport(char *dev, unsigned int baud); | ||||
| extern int sp_fd; | ||||
|  | ||||
| #endif				/* !__FLASH_H__ */ | ||||
|   | ||||
							
								
								
									
										14
									
								
								serprog.c
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								serprog.c
									
									
									
									
									
								
							| @@ -61,7 +61,7 @@ | ||||
| #define S_CMD_Q_RDNMAXLEN	0x11	/* Query read-n maximum length			*/ | ||||
| #define S_CMD_S_BUSTYPE		0x12	/* Set used bustype(s).				*/ | ||||
|  | ||||
| static int sp_fd; | ||||
| int sp_fd; | ||||
|  | ||||
| static uint16_t sp_device_serbuf_size = 16; | ||||
| static uint16_t sp_device_opbuf_size = 300; | ||||
| @@ -185,7 +185,7 @@ static const struct baudentry sp_baudtable[] = { | ||||
| 	{0, 0}			/* Terminator */ | ||||
| }; | ||||
|  | ||||
| static int sp_openserport(char *dev, unsigned int baud) | ||||
| int sp_openserport(char *dev, unsigned int baud) | ||||
| { | ||||
| 	struct termios options; | ||||
| 	int fd, i; | ||||
| @@ -208,20 +208,16 @@ static int sp_openserport(char *dev, unsigned int baud) | ||||
| 			break; | ||||
| 		} | ||||
| 	} | ||||
| 	options.c_cflag &= ~PARENB; | ||||
| 	options.c_cflag &= ~CSTOPB; | ||||
| 	options.c_cflag &= ~CSIZE; | ||||
| 	options.c_cflag |= CS8; | ||||
| 	options.c_cflag &= ~CRTSCTS; | ||||
| 	options.c_cflag &= ~(PARENB | CSTOPB | CSIZE | CRTSCTS); | ||||
| 	options.c_cflag |= (CS8 | CLOCAL | CREAD); | ||||
| 	options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); | ||||
| 	options.c_iflag &= ~(IXON | IXOFF | IXANY | ICRNL | IGNCR | INLCR); | ||||
| 	options.c_oflag &= ~OPOST; | ||||
| 	options.c_cflag |= (CLOCAL | CREAD); | ||||
| 	tcsetattr(fd, TCSANOW, &options); | ||||
| 	return fd; | ||||
| } | ||||
|  | ||||
| static void sp_flush_incoming(void) | ||||
| void sp_flush_incoming(void) | ||||
| { | ||||
| 	int i; | ||||
| 	for (i=0;i<100;i++) { /* In case the device doesnt do EAGAIN, just read 0 */ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Carl-Daniel Hailfinger
					Carl-Daniel Hailfinger