view loadtools/flash.h @ 619:f82551c77e58

libserial-newlnx: ASYNC_LOW_LATENCY patch reverted Reports from Das Signal indicate that loadtools performance on Debian is about the same as on Slackware, and that including or omitting the ASYNC_LOW_LATENCY patch from Serg makes no difference. Because the patch in question does not appear to be necessary, it is being reverted until and unless someone other than Serg reports an actual real-world system on which loadtools operation times are slowed compared to the Mother's Slackware reference and on which Slackware-like performance can be restored by setting the ASYNC_LOW_LATENCY flag.
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 27 Feb 2020 01:09:48 +0000
parents 0dd2c87c1b63
children 9c5b0629e346
line wrap: on
line source

/* this header file contains definitions for fc-loadtool flash support */

/* global configuration */
#define	FLASH_GLOBAL_CFG_NONE		0
#define	FLASH_GLOBAL_CFG_SINGLE_4M	1
#define	FLASH_GLOBAL_CFG_SINGLE_8M	2
#define	FLASH_GLOBAL_CFG_DUAL_8M	3

/*
 * The following structures represent an "abstract"
 * description of flash devices.
 *
 * A "region" is a consecutive group of erase units of the same size.
 */

struct flash_region_desc {
	uint32_t	sector_size;
	unsigned	nsectors;
};

#define	CFI_MAX_REGIONS		4

/*
 * The info in struct flash_geom can be either
 * gathered from CFI or hard-coded.
 */
struct flash_geom {
	uint32_t			total_size;
	unsigned			nregions;
	struct flash_region_desc	regions[CFI_MAX_REGIONS];
	unsigned			total_sectors;
};

struct cfi_check {
	int	offset;
	uint8_t	expect_val;
};

struct flash_device {
	char			*name;
	struct cfi_check	*cfi_table;
	int			required_global_config;
	struct flash_geom	*bank_geom[2];
	struct flash_cmdset	*cmdset;
};

/* the following structures describe flash banks as accessible to us */

struct sector_info {
	uint32_t	start;
	uint32_t	size;
};

struct flash_cmdset {
	char	*cmdset_name;
	int	(*reset_cmd)();
	int	(*status_cmd)();
	int	(*unlock_sector)();
	int	(*erase_sector)();
	int	(*prep_for_program)();
	char	*loadagent_setbase_cmd;
	char	*loadagent_program_cmd;
	int	needs_unlock;
};

struct flash_bank_info {
	uint32_t		base_addr;
	struct flash_device	*device;
	struct flash_geom	*geom;
	struct flash_cmdset	*ops;
	struct sector_info	*sectors;
	int			detect_done;
};