drivers/staging/fbtft/fb_st7735r.c
Source file repositories/reference/linux-study-clean/drivers/staging/fbtft/fb_st7735r.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/staging/fbtft/fb_st7735r.c- Extension
.c- Size
- 4061 bytes
- Lines
- 175
- Domain
- Driver Families
- Bucket
- drivers/staging
- Inferred role
- Driver Families: implementation source
- Status
- source 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.
- 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.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/module.hlinux/kernel.hlinux/init.hvideo/mipi_display.hfbtft.h
Detected Declarations
function set_varfunction set_gamma
Annotated Snippet
// SPDX-License-Identifier: GPL-2.0+
/*
* FB driver for the ST7735R LCD Controller
*
* Copyright (C) 2013 Noralf Tronnes
*/
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <video/mipi_display.h>
#include "fbtft.h"
#define DRVNAME "fb_st7735r"
#define DEFAULT_GAMMA "0F 1A 0F 18 2F 28 20 22 1F 1B 23 37 00 07 02 10\n" \
"0F 1B 0F 17 33 2C 29 2E 30 30 39 3F 00 07 03 10"
static const s16 default_init_sequence[] = {
-1, MIPI_DCS_SOFT_RESET,
-2, 150, /* delay */
-1, MIPI_DCS_EXIT_SLEEP_MODE,
-2, 500, /* delay */
/* FRMCTR1 - frame rate control: normal mode
* frame rate = fosc / (1 x 2 + 40) * (LINE + 2C + 2D)
*/
-1, 0xB1, 0x01, 0x2C, 0x2D,
/* FRMCTR2 - frame rate control: idle mode
* frame rate = fosc / (1 x 2 + 40) * (LINE + 2C + 2D)
*/
-1, 0xB2, 0x01, 0x2C, 0x2D,
/* FRMCTR3 - frame rate control - partial mode
* dot inversion mode, line inversion mode
*/
-1, 0xB3, 0x01, 0x2C, 0x2D, 0x01, 0x2C, 0x2D,
/* INVCTR - display inversion control
* no inversion
*/
-1, 0xB4, 0x07,
/* PWCTR1 - Power Control
* -4.6V, AUTO mode
*/
-1, 0xC0, 0xA2, 0x02, 0x84,
/* PWCTR2 - Power Control
* VGH25 = 2.4C VGSEL = -10 VGH = 3 * AVDD
*/
-1, 0xC1, 0xC5,
/* PWCTR3 - Power Control
* Opamp current small, Boost frequency
*/
-1, 0xC2, 0x0A, 0x00,
/* PWCTR4 - Power Control
* BCLK/2, Opamp current small & Medium low
*/
-1, 0xC3, 0x8A, 0x2A,
/* PWCTR5 - Power Control */
-1, 0xC4, 0x8A, 0xEE,
/* VMCTR1 - Power Control */
-1, 0xC5, 0x0E,
-1, MIPI_DCS_EXIT_INVERT_MODE,
-1, MIPI_DCS_SET_PIXEL_FORMAT, MIPI_DCS_PIXEL_FMT_16BIT,
-1, MIPI_DCS_SET_DISPLAY_ON,
-2, 100, /* delay */
-1, MIPI_DCS_ENTER_NORMAL_MODE,
-2, 10, /* delay */
/* end marker */
-3
};
#define MY BIT(7)
#define MX BIT(6)
#define MV BIT(5)
static int set_var(struct fbtft_par *par)
{
Annotation
- Immediate include surface: `linux/module.h`, `linux/kernel.h`, `linux/init.h`, `video/mipi_display.h`, `fbtft.h`.
- Detected declarations: `function set_var`, `function set_gamma`.
- Atlas domain: Driver Families / drivers/staging.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.