[Blackfin] arch: set_bfin_dma_config shouldnt set SYNC or RESTART by default - add argument or option
Signed-off-by: Michael Hennerich <michael.hennerich@analog.com> Signed-off-by: Bryan Wu <bryan.wu@analog.com>
This commit is contained in:
parent
4521ef42de
commit
2047e40d72
|
@ -339,13 +339,13 @@ EXPORT_SYMBOL(set_dma_config);
|
||||||
|
|
||||||
unsigned short
|
unsigned short
|
||||||
set_bfin_dma_config(char direction, char flow_mode,
|
set_bfin_dma_config(char direction, char flow_mode,
|
||||||
char intr_mode, char dma_mode, char width)
|
char intr_mode, char dma_mode, char width, char syncmode)
|
||||||
{
|
{
|
||||||
unsigned short config;
|
unsigned short config;
|
||||||
|
|
||||||
config =
|
config =
|
||||||
((direction << 1) | (width << 2) | (dma_mode << 4) |
|
((direction << 1) | (width << 2) | (dma_mode << 4) |
|
||||||
(intr_mode << 6) | (flow_mode << 12) | RESTART);
|
(intr_mode << 6) | (flow_mode << 12) | (syncmode << 5));
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(set_bfin_dma_config);
|
EXPORT_SYMBOL(set_bfin_dma_config);
|
||||||
|
|
|
@ -442,7 +442,8 @@ static void bfin_serial_dma_tx_chars(struct bfin_serial_port *uart)
|
||||||
set_bfin_dma_config(DIR_READ, DMA_FLOW_STOP,
|
set_bfin_dma_config(DIR_READ, DMA_FLOW_STOP,
|
||||||
INTR_ON_BUF,
|
INTR_ON_BUF,
|
||||||
DIMENSION_LINEAR,
|
DIMENSION_LINEAR,
|
||||||
DATA_SIZE_8));
|
DATA_SIZE_8,
|
||||||
|
DMA_SYNC_RESTART));
|
||||||
set_dma_start_addr(uart->tx_dma_channel, (unsigned long)(xmit->buf+xmit->tail));
|
set_dma_start_addr(uart->tx_dma_channel, (unsigned long)(xmit->buf+xmit->tail));
|
||||||
set_dma_x_count(uart->tx_dma_channel, uart->tx_count);
|
set_dma_x_count(uart->tx_dma_channel, uart->tx_count);
|
||||||
set_dma_x_modify(uart->tx_dma_channel, 1);
|
set_dma_x_modify(uart->tx_dma_channel, 1);
|
||||||
|
@ -689,7 +690,8 @@ static int bfin_serial_startup(struct uart_port *port)
|
||||||
set_dma_config(uart->rx_dma_channel,
|
set_dma_config(uart->rx_dma_channel,
|
||||||
set_bfin_dma_config(DIR_WRITE, DMA_FLOW_AUTO,
|
set_bfin_dma_config(DIR_WRITE, DMA_FLOW_AUTO,
|
||||||
INTR_ON_ROW, DIMENSION_2D,
|
INTR_ON_ROW, DIMENSION_2D,
|
||||||
DATA_SIZE_8));
|
DATA_SIZE_8,
|
||||||
|
DMA_SYNC_RESTART));
|
||||||
set_dma_x_count(uart->rx_dma_channel, DMA_RX_XCOUNT);
|
set_dma_x_count(uart->rx_dma_channel, DMA_RX_XCOUNT);
|
||||||
set_dma_x_modify(uart->rx_dma_channel, 1);
|
set_dma_x_modify(uart->rx_dma_channel, 1);
|
||||||
set_dma_y_count(uart->rx_dma_channel, DMA_RX_YCOUNT);
|
set_dma_y_count(uart->rx_dma_channel, DMA_RX_YCOUNT);
|
||||||
|
|
|
@ -224,7 +224,8 @@ static int config_dma(struct bfin_bf54xfb_info *fbi)
|
||||||
set_dma_config(CH_EPPI0,
|
set_dma_config(CH_EPPI0,
|
||||||
set_bfin_dma_config(DIR_READ, DMA_FLOW_AUTO,
|
set_bfin_dma_config(DIR_READ, DMA_FLOW_AUTO,
|
||||||
INTR_DISABLE, DIMENSION_2D,
|
INTR_DISABLE, DIMENSION_2D,
|
||||||
DATA_SIZE_32));
|
DATA_SIZE_32,
|
||||||
|
DMA_NOSYNC_KEEP_DMA_BUF));
|
||||||
set_dma_x_count(CH_EPPI0, (LCD_X_RES * LCD_BPP) / DMA_BUS_SIZE);
|
set_dma_x_count(CH_EPPI0, (LCD_X_RES * LCD_BPP) / DMA_BUS_SIZE);
|
||||||
set_dma_x_modify(CH_EPPI0, DMA_BUS_SIZE / 8);
|
set_dma_x_modify(CH_EPPI0, DMA_BUS_SIZE / 8);
|
||||||
set_dma_y_count(CH_EPPI0, LCD_Y_RES);
|
set_dma_y_count(CH_EPPI0, LCD_Y_RES);
|
||||||
|
|
|
@ -76,6 +76,9 @@ enum dma_chan_status {
|
||||||
#define INTR_ON_BUF 2
|
#define INTR_ON_BUF 2
|
||||||
#define INTR_ON_ROW 3
|
#define INTR_ON_ROW 3
|
||||||
|
|
||||||
|
#define DMA_NOSYNC_KEEP_DMA_BUF 0
|
||||||
|
#define DMA_SYNC_RESTART 1
|
||||||
|
|
||||||
struct dmasg {
|
struct dmasg {
|
||||||
unsigned long next_desc_addr;
|
unsigned long next_desc_addr;
|
||||||
unsigned long start_addr;
|
unsigned long start_addr;
|
||||||
|
@ -157,7 +160,8 @@ void set_dma_y_count(unsigned int channel, unsigned short y_count);
|
||||||
void set_dma_y_modify(unsigned int channel, short y_modify);
|
void set_dma_y_modify(unsigned int channel, short y_modify);
|
||||||
void set_dma_config(unsigned int channel, unsigned short config);
|
void set_dma_config(unsigned int channel, unsigned short config);
|
||||||
unsigned short set_bfin_dma_config(char direction, char flow_mode,
|
unsigned short set_bfin_dma_config(char direction, char flow_mode,
|
||||||
char intr_mode, char dma_mode, char width);
|
char intr_mode, char dma_mode, char width,
|
||||||
|
char syncmode);
|
||||||
void set_dma_curr_addr(unsigned int channel, unsigned long addr);
|
void set_dma_curr_addr(unsigned int channel, unsigned long addr);
|
||||||
|
|
||||||
/* get curr status for polling */
|
/* get curr status for polling */
|
||||||
|
|
Loading…
Reference in New Issue