-vis — On S3c2410x Delta Driver -
MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("vis Delta-Sigma Driver for S3C2410X"); The -vis Delta driver for the S3C2410X represents a classic embedded systems challenge: bridging a high-resolution, low-speed Delta-Sigma peripheral to a resource-constrained ARM9 processor while maintaining real-time video synchronization. While the original driver stacks are brittle and heavily tied to kernel 2.6, the principles of bitstream capture, decimation filtering, and DMA offload remain valid today.
static int __init vis_delta_probe(struct platform_device *pdev) int ret; -vis On S3c2410x Delta Driver -
Introduction The Samsung S3C2410X is a legendary 16/32-bit RISC microcontroller based on the ARM920T core. Despite its age (released in the early 2000s), it remains a cornerstone for embedded systems education (e.g., the popular QQ2440, Mini2440 boards) and legacy industrial control devices. One of the most challenging aspects of working with this SoC is interfacing non-standard peripherals, particularly those referred to under the codename -vis and its accompanying Delta signal conditioning interface. Despite its age (released in the early 2000s),
static irqreturn_t vis_delta_isr(int irq, void *dev_id) struct vis_delta_device *vis = dev_id; static int bit_count = 0; static u32 accum = 0; int data_bit = gpio_get_value(DELTA_DATA_PIN); It then uses the S3C2410_LCDCON registers to dynamically
static struct platform_driver vis_delta_driver = .probe = vis_delta_probe, .remove = vis_delta_remove, .driver = .name = DRIVER_NAME, .owner = THIS_MODULE, , ;
When the user touches the Delta touch panel (differential measurement), the driver computes the X/Y coordinates. It then uses the S3C2410_LCDCON registers to dynamically adjust the TIMEVAL (vertical sync) or the MVAL (inversion signal) to reduce flicker.
static int vis_delta_remove(struct platform_device *pdev) free_irq(delta_irq, NULL); gpio_free(delta_data_pin); return 0;