Commit 2047e40d authored by Michael Hennerich's avatar Michael Hennerich Committed by Bryan Wu

[Blackfin] arch: set_bfin_dma_config shouldnt set SYNC or RESTART by default -...

[Blackfin] arch: set_bfin_dma_config shouldnt set SYNC or RESTART by default - add argument or option
Signed-off-by: default avatarMichael Hennerich <michael.hennerich@analog.com>
Signed-off-by: default avatarBryan Wu <bryan.wu@analog.com>
parent 4521ef42
...@@ -339,13 +339,13 @@ EXPORT_SYMBOL(set_dma_config); ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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 { ...@@ -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); ...@@ -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 */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment