/* * linux/include/video/pmagb-b-fb.h * * TURBOchannel PMAGB-B Smart Frame Buffer (SFB) card support, * Copyright (C) 1999, 2000, 2001 by * Michael Engel and * Karsten Merker * Copyright (c) 2005 Maciej W. Rozycki * * This file is subject to the terms and conditions of the GNU General * Public License. See the file COPYING in the main directory of this * archive for more details. */ /* IOmem resource offsets. */ #define PMAGB_B_ROM 0x000000 /* REX option ROM */ #define PMAGB_B_SFB 0x100000 /* SFB ASIC */ #define PMAGB_B_GP0 0x140000 /* general purpose output 0 */ #define PMAGB_B_GP1 0x180000 /* general purpose output 1 */ #define PMAGB_B_BT459 0x1c0000 /* Bt459 RAMDAC */ #define PMAGB_B_FBMEM 0x200000 /* frame buffer */ #define PMAGB_B_SIZE 0x400000 /* address space size */ /* IOmem register offsets. */ #define SFB_REG_VID_HOR 0x64 /* video horizontal setup */ #define SFB_REG_VID_VER 0x68 /* video vertical setup */ #define SFB_REG_VID_BASE 0x6c /* video base address */ #define SFB_REG_TCCLK_COUNT 0x78 /* TURBOchannel clock count */ #define SFB_REG_VIDCLK_COUNT 0x7c /* video clock count */ /* Video horizontal setup register constants. All bits are r/w. */ #define SFB_VID_HOR_BP_SHIFT 0x15 /* back porch */ #define SFB_VID_HOR_BP_MASK 0x7f #define SFB_VID_HOR_SYN_SHIFT 0x0e /* sync pulse */ #define SFB_VID_HOR_SYN_MASK 0x7f #define SFB_VID_HOR_FP_SHIFT 0x09 /* front porch */ #define SFB_VID_HOR_FP_MASK 0x1f #define SFB_VID_HOR_PIX_SHIFT 0x00 /* active video */ #define SFB_VID_HOR_PIX_MASK 0x1ff /* Video vertical setup register constants. All bits are r/w. */ #define SFB_VID_VER_BP_SHIFT 0x16 /* back porch */ #define SFB_VID_VER_BP_MASK 0x3f #define SFB_VID_VER_SYN_SHIFT 0x10 /* sync pulse */ #define SFB_VID_VER_SYN_MASK 0x3f #define SFB_VID_VER_FP_SHIFT 0x0b /* front porch */ #define SFB_VID_VER_FP_MASK 0x1f #define SFB_VID_VER_SL_SHIFT 0x00 /* active scan lines */ #define SFB_VID_VER_SL_MASK 0x7ff /* Video base address register constants. All bits are r/w. */ #define SFB_VID_BASE_MASK 0x1ff /* video base row address */ /* Bt459 register offsets, byte-wide registers. */ #define BT459_ADDR_LO 0x0 /* address low */ #define BT459_ADDR_HI 0x4 /* address high */ #define BT459_DATA 0x8 /* data window register */ #define BT459_CMAP 0xc /* color map window register */ lass='txt' type='search' size='10' name='q' value=''/>
diff options
context:
space:
mode:
authorRichard Genoud <richard.genoud@gmail.com>2016-12-06 13:05:33 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-01-11 08:18:45 +0100
commitb389f173aaa1204d6dc1f299082a162eb0491545 (patch)
treed702ef5021258fc6894bec24dcb2e68a06a3c0a5
parent89d8232411a85b9a6b12fd5da4d07d8a138a8e0c (diff)
tty/serial: atmel: RS485 half duplex w/DMA: enable RX after TX is done
When using RS485 in half duplex, RX should be enabled when TX is finished, and stopped when TX starts. Before commit 0058f0871efe7b01c6 ("tty/serial: atmel: fix RS485 half duplex with DMA"), RX was not disabled in atmel_start_tx() if the DMA was used. So, collisions could happened. But disabling RX in atmel_start_tx() uncovered another bug: RX was enabled again in the wrong place (in atmel_tx_dma) instead of being enabled when TX is finished (in atmel_complete_tx_dma), so the transmission simply stopped. This bug was not triggered before commit 0058f0871efe7b01c6 ("tty/serial: atmel: fix RS485 half duplex with DMA") because RX was never disabled before. Moving atmel_start_rx() in atmel_complete_tx_dma() corrects the problem. Cc: stable@vger.kernel.org Reported-by: Gil Weber <webergil@gmail.com> Fixes: 0058f0871efe7b01c6 Tested-by: Gil Weber <webergil@gmail.com> Signed-off-by: Richard Genoud <richard.genoud@gmail.com> Acked-by: Alexandre Belloni <alexandre.belloni@free-electrons.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>