diff for duplicates of <2162385.nIBTGoCL05@avalon> diff --git a/a/1.txt b/N1/1.txt index 340f1ba..1cf977c 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -111,8 +111,8 @@ sorted in the first place :-) > sh_mobile_i2c_data *pd) { > unsigned char data; > -> - if (pd->pos == pd->msg->len) -> + if (pd->pos == pd->msg->len) { +> - if (pd->pos = pd->msg->len) +> + if (pd->pos = pd->msg->len) { > + /* Send stop if we haven't yet (DMA case) */ > + if (pd->send_stop && (iic_rd(pd, ICCR) & ICCR_BBSY)) > + i2c_op(pd, OP_TX_STOP, data); @@ -142,7 +142,7 @@ sorted in the first place :-) > > - if (sr & (ICSR_AL | ICSR_TACK)) { > + /* Kick off TxDMA after preface was done */ -> + if (pd->dma_direction == DMA_TO_DEVICE && pd->pos == 0) +> + if (pd->dma_direction = DMA_TO_DEVICE && pd->pos = 0) > + iic_set_clr(pd, ICIC, ICIC_TDMAE, 0); > + else if (sr & (ICSR_AL | ICSR_TACK)) > /* don't interrupt transaction - continue to issue stop */ @@ -155,7 +155,7 @@ sorted in the first place :-) > wakeup = sh_mobile_i2c_isr_tx(pd); > > + /* Kick off RxDMA after preface was done */ -> + if (pd->dma_direction == DMA_FROM_DEVICE && pd->pos == 1) +> + if (pd->dma_direction = DMA_FROM_DEVICE && pd->pos = 1) > + iic_set_clr(pd, ICIC, ICIC_RDMAE, 0); > + > if (sr & ICSR_WAIT) /* TODO: add delay here to support slow acks */ @@ -167,9 +167,9 @@ sorted in the first place :-) > > +static void sh_mobile_i2c_cleanup_dma(struct sh_mobile_i2c_data *pd) > +{ -> + if (pd->dma_direction == DMA_FROM_DEVICE) +> + if (pd->dma_direction = DMA_FROM_DEVICE) > + dmaengine_terminate_all(pd->dma_rx); -> + if (pd->dma_direction == DMA_TO_DEVICE) +> + if (pd->dma_direction = DMA_TO_DEVICE) else ? @@ -224,7 +224,7 @@ else ? Can't you use dma_direction != DMA_NONE to detect whether the buffer has been mapped, instead of adding a new field to struct sh_mobile_i2c_data ? You could then simplify sh_mobile_i2c_cleanup_dma() by returning immediately at the -beginning of the function if dma_direction == DMA_NONE. +beginning of the function if dma_direction = DMA_NONE. > + pd->dma_direction = dir; > + @@ -290,14 +290,14 @@ beginning of the function if dma_direction == DMA_NONE. > + dma_cap_set(DMA_SLAVE, mask); > + > + chan = dma_request_slave_channel_compat(mask, shdma_chan_filter, -> + (void *)0UL, dev, dir == DMA_MEM_TO_DEV ? "tx" : "rx"); +> + (void *)0UL, dev, dir = DMA_MEM_TO_DEV ? "tx" : "rx"); > + > + if (!chan) > + return NULL; > + > + memset(&cfg, 0, sizeof(cfg)); > + cfg.direction = dir; -> + if (dir == DMA_MEM_TO_DEV) { +> + if (dir = DMA_MEM_TO_DEV) { > + cfg.dst_addr = port_addr; > + cfg.dst_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE; > + } else { diff --git a/a/content_digest b/N1/content_digest index 1e01568..48223ed 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -2,7 +2,7 @@ "ref\01414752678-26078-2-git-send-email-wsa@the-dreams.de\0" "From\0Laurent Pinchart <laurent.pinchart@ideasonboard.com>\0" "Subject\0Re: [RFC 1/3] i2c: sh_mobile: add DMA support\0" - "Date\0Mon, 03 Nov 2014 00:04:08 +0200\0" + "Date\0Sun, 02 Nov 2014 22:04:08 +0000\0" "To\0Wolfram Sang <wsa@the-dreams.de>\0" "Cc\0linux-i2c@vger.kernel.org" linux-sh@vger.kernel.org @@ -124,8 +124,8 @@ "> sh_mobile_i2c_data *pd) {\n" "> \tunsigned char data;\n" "> \n" - "> -\tif (pd->pos == pd->msg->len)\n" - "> +\tif (pd->pos == pd->msg->len) {\n" + "> -\tif (pd->pos = pd->msg->len)\n" + "> +\tif (pd->pos = pd->msg->len) {\n" "> +\t\t/* Send stop if we haven't yet (DMA case) */\n" "> +\t\tif (pd->send_stop && (iic_rd(pd, ICCR) & ICCR_BBSY))\n" "> +\t\t\ti2c_op(pd, OP_TX_STOP, data);\n" @@ -155,7 +155,7 @@ "> \n" "> -\tif (sr & (ICSR_AL | ICSR_TACK)) {\n" "> +\t/* Kick off TxDMA after preface was done */\n" - "> +\tif (pd->dma_direction == DMA_TO_DEVICE && pd->pos == 0)\n" + "> +\tif (pd->dma_direction = DMA_TO_DEVICE && pd->pos = 0)\n" "> +\t\tiic_set_clr(pd, ICIC, ICIC_TDMAE, 0);\n" "> +\telse if (sr & (ICSR_AL | ICSR_TACK))\n" "> \t\t/* don't interrupt transaction - continue to issue stop */\n" @@ -168,7 +168,7 @@ "> \t\twakeup = sh_mobile_i2c_isr_tx(pd);\n" "> \n" "> +\t/* Kick off RxDMA after preface was done */\n" - "> +\tif (pd->dma_direction == DMA_FROM_DEVICE && pd->pos == 1)\n" + "> +\tif (pd->dma_direction = DMA_FROM_DEVICE && pd->pos = 1)\n" "> +\t\tiic_set_clr(pd, ICIC, ICIC_RDMAE, 0);\n" "> +\n" "> \tif (sr & ICSR_WAIT) /* TODO: add delay here to support slow acks */\n" @@ -180,9 +180,9 @@ "> \n" "> +static void sh_mobile_i2c_cleanup_dma(struct sh_mobile_i2c_data *pd)\n" "> +{\n" - "> +\tif (pd->dma_direction == DMA_FROM_DEVICE)\n" + "> +\tif (pd->dma_direction = DMA_FROM_DEVICE)\n" "> +\t\tdmaengine_terminate_all(pd->dma_rx);\n" - "> +\tif (pd->dma_direction == DMA_TO_DEVICE)\n" + "> +\tif (pd->dma_direction = DMA_TO_DEVICE)\n" "\n" "else ?\n" "\n" @@ -237,7 +237,7 @@ "Can't you use dma_direction != DMA_NONE to detect whether the buffer has been \n" "mapped, instead of adding a new field to struct sh_mobile_i2c_data ? You could \n" "then simplify sh_mobile_i2c_cleanup_dma() by returning immediately at the \n" - "beginning of the function if dma_direction == DMA_NONE.\n" + "beginning of the function if dma_direction = DMA_NONE.\n" "\n" "> +\tpd->dma_direction = dir;\n" "> +\n" @@ -303,14 +303,14 @@ "> +\tdma_cap_set(DMA_SLAVE, mask);\n" "> +\n" "> +\tchan = dma_request_slave_channel_compat(mask, shdma_chan_filter,\n" - "> +\t\t\t\t(void *)0UL, dev, dir == DMA_MEM_TO_DEV ? \"tx\" : \"rx\");\n" + "> +\t\t\t\t(void *)0UL, dev, dir = DMA_MEM_TO_DEV ? \"tx\" : \"rx\");\n" "> +\n" "> +\tif (!chan)\n" "> +\t\treturn NULL;\n" "> +\n" "> +\tmemset(&cfg, 0, sizeof(cfg));\n" "> +\tcfg.direction = dir;\n" - "> +\tif (dir == DMA_MEM_TO_DEV) {\n" + "> +\tif (dir = DMA_MEM_TO_DEV) {\n" "> +\t\tcfg.dst_addr = port_addr;\n" "> +\t\tcfg.dst_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE;\n" "> +\t} else {\n" @@ -414,4 +414,4 @@ "\n" Laurent Pinchart -4da7d31f8dc52805b94bf066ab153e899475379694a8a98ba2109964dcbd5fed +71cdd8d4fea6384fc62e45036ac5495c9730f175a9741efc5673622eb82bced5
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.