drivers/staging/fbtft/fbtft.h

Source file repositories/reference/linux-study-clean/drivers/staging/fbtft/fbtft.h

File Facts

System
Linux kernel
Corpus path
drivers/staging/fbtft/fbtft.h
Extension
.h
Size
16840 bytes
Lines
446
Domain
Driver Families
Bucket
drivers/staging
Inferred role
Driver Families: exported/initcall integration point
Status
integration implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

module_init(fbtft_driver_module_init);                                     \
module_exit(fbtft_driver_module_exit);

#define FBTFT_REGISTER_SPI_DRIVER(_name, _comp_vend, _comp_dev, _display)	\
										\
FBTFT_DT_TABLE(_comp_vend "," _comp_dev)					\
										\
static const struct spi_device_id spi_ids[] = {					\
	{ .name = _comp_dev },							\
	{},									\
};										\
MODULE_DEVICE_TABLE(spi, spi_ids);						\
										\
FBTFT_SPI_DRIVER(_name, _comp_vend "," _comp_dev, _display, spi_ids)		\
										\
module_spi_driver(fbtft_driver_spi_driver);

/* Debug macros */

/* shorthand debug levels */
#define DEBUG_LEVEL_1	DEBUG_REQUEST_GPIOS
#define DEBUG_LEVEL_2	(DEBUG_LEVEL_1 | DEBUG_DRIVER_INIT_FUNCTIONS        \
				       | DEBUG_TIME_FIRST_UPDATE)
#define DEBUG_LEVEL_3	(DEBUG_LEVEL_2 | DEBUG_RESET | DEBUG_INIT_DISPLAY   \
				       | DEBUG_BLANK | DEBUG_REQUEST_GPIOS  \
				       | DEBUG_FREE_GPIOS                   \
				       | DEBUG_VERIFY_GPIOS                 \
				       | DEBUG_BACKLIGHT | DEBUG_SYSFS)
#define DEBUG_LEVEL_4	(DEBUG_LEVEL_2 | DEBUG_FB_READ | DEBUG_FB_WRITE     \
				       | DEBUG_FB_FILLRECT                  \
				       | DEBUG_FB_COPYAREA                  \
				       | DEBUG_FB_IMAGEBLIT | DEBUG_FB_BLANK)
#define DEBUG_LEVEL_5	(DEBUG_LEVEL_3 | DEBUG_UPDATE_DISPLAY)
#define DEBUG_LEVEL_6	(DEBUG_LEVEL_4 | DEBUG_LEVEL_5)
#define DEBUG_LEVEL_7	0xFFFFFFFF

#define DEBUG_DRIVER_INIT_FUNCTIONS BIT(3)
#define DEBUG_TIME_FIRST_UPDATE     BIT(4)
#define DEBUG_TIME_EACH_UPDATE      BIT(5)
#define DEBUG_DEFERRED_IO           BIT(6)
#define DEBUG_FBTFT_INIT_FUNCTIONS  BIT(7)

/* fbops */
#define DEBUG_FB_READ               BIT(8)
#define DEBUG_FB_WRITE              BIT(9)
#define DEBUG_FB_FILLRECT           BIT(10)
#define DEBUG_FB_COPYAREA           BIT(11)
#define DEBUG_FB_IMAGEBLIT          BIT(12)
#define DEBUG_FB_SETCOLREG          BIT(13)
#define DEBUG_FB_BLANK              BIT(14)

#define DEBUG_SYSFS                 BIT(16)

/* fbtftops */
#define DEBUG_BACKLIGHT             BIT(17)
#define DEBUG_READ                  BIT(18)
#define DEBUG_WRITE                 BIT(19)
#define DEBUG_WRITE_VMEM            BIT(20)
#define DEBUG_WRITE_REGISTER        BIT(21)
#define DEBUG_SET_ADDR_WIN          BIT(22)
#define DEBUG_RESET                 BIT(23)
#define DEBUG_MKDIRTY               BIT(24)
#define DEBUG_UPDATE_DISPLAY        BIT(25)
#define DEBUG_INIT_DISPLAY          BIT(26)
#define DEBUG_BLANK                 BIT(27)
#define DEBUG_REQUEST_GPIOS         BIT(28)
#define DEBUG_FREE_GPIOS            BIT(29)
#define DEBUG_REQUEST_GPIOS_MATCH   BIT(30)
#define DEBUG_VERIFY_GPIOS          BIT(31)

#define fbtft_init_dbg(dev, format, arg...)                  \
do {                                                         \
	if (unlikely((dev)->platform_data &&                 \
	    (((struct fbtft_platform_data *)(dev)->platform_data)->display.debug & DEBUG_DRIVER_INIT_FUNCTIONS))) \
		dev_info(dev, format, ##arg);                \
} while (0)

#define fbtft_par_dbg(level, par, format, arg...)            \
do {                                                         \
	if (unlikely((par)->debug & (level)))                    \
		dev_info((par)->info->device, format, ##arg);  \
} while (0)

#define fbtft_par_dbg_hex(level, par, dev, type, buf, num, format, arg...) \
do {                                                                       \
	if (unlikely((par)->debug & (level)))                                  \
		fbtft_dbg_hex(dev, sizeof(type), buf,\
			      (num) * sizeof(type), format, ##arg); \
} while (0)

Annotation

Implementation Notes