diff for duplicates of <4EE09526.5040705@freescale.com> diff --git a/a/1.txt b/N1/1.txt index 85cda97..578c8f5 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,13 +1,17 @@ -于 2011年12月08日 03:11, Scott Wood 写道: +=E4=BA=8E 2011=E5=B9=B412=E6=9C=8808=E6=97=A5 03:11, Scott Wood =E5=86=99= +=E9=81=93: > On 12/06/2011 09:55 PM, LiuShuo wrote: ->> 于 2011年12月07日 08:09, Scott Wood 写道: +>> =E4=BA=8E 2011=E5=B9=B412=E6=9C=8807=E6=97=A5 08:09, Scott Wood =E5=86= +=99=E9=81=93: >>> On 12/03/2011 10:31 PM, shuo.liu@freescale.com wrote: >>>> From: Liu Shuo<shuo.liu@freescale.com> >>>> >>>> Freescale FCM controller has a 2K size limitation of buffer RAM. In >>>> order ->>>> to support the Nand flash chip whose page size is larger than 2K bytes, ->>>> we read/write 2k data repeatedly by issuing FIR_OP_RB/FIR_OP_WB and save +>>>> to support the Nand flash chip whose page size is larger than 2K byt= +es, +>>>> we read/write 2k data repeatedly by issuing FIR_OP_RB/FIR_OP_WB and = +save >>>> them to a large buffer. >>>> >>>> Signed-off-by: Liu Shuo<shuo.liu@freescale.com> @@ -24,20 +28,24 @@ >> uboot image for bad >> block marker migration when first use the chip. > It should not be a special image, and there should be some way to mark -> that the migration has happened. Even if we do the migration in U-Boot, -> Linux could check for the marker and if absent, disallow access and tell +> that the migration has happened. Even if we do the migration in U-Boot= +, +> Linux could check for the marker and if absent, disallow access and tel= +l > the user to run the migration tool. > >>>> @@ -473,13 +568,72 @@ static void fsl_elbc_cmdfunc(struct mtd_info >>>> *mtd, unsigned int command, >>>> * write so the HW generates the ECC. >>>> */ ->>>> if (elbc_fcm_ctrl->oob || elbc_fcm_ctrl->column != 0 || ->>>> - elbc_fcm_ctrl->index != mtd->writesize + mtd->oobsize) +>>>> if (elbc_fcm_ctrl->oob || elbc_fcm_ctrl->column !=3D 0 || +>>>> - elbc_fcm_ctrl->index !=3D mtd->writesize + mtd->oobsize= +) >>>> - out_be32(&lbc->fbcr, >>>> - elbc_fcm_ctrl->index - elbc_fcm_ctrl->column); >>>> - else ->>>> + elbc_fcm_ctrl->index != mtd->writesize + mtd->oobsize) { +>>>> + elbc_fcm_ctrl->index !=3D mtd->writesize + mtd->oobsize= +) { >>>> + if (elbc_fcm_ctrl->oob&& mtd->writesize> 2048) { >>>> + out_be32(&lbc->fbcr, 64); >>>> + } else { @@ -45,12 +53,15 @@ >>>> + - elbc_fcm_ctrl->column); >>>> + } >>> We need to limit ourselves to the regions that have actually been ->>> written to in the buffer. fbcr needs to be set separately for first and +>>> written to in the buffer. fbcr needs to be set separately for first = +and >>> last subpages, with intermediate subpages having 0, 64, or 2112 as ->>> appropriate. Subpages that are entirely before column or entirely after +>>> appropriate. Subpages that are entirely before column or entirely af= +ter >>> column + index should be skipped. >> I have considered this case, but I don't think it is useful. ->> 1.There isn't a 'length' parameter in driver interface, although we +>> 1.There isn't a 'length' parameter in driver interface, although = +we >> can get it from 'index - column'. > Right. column is start, and index is end + 1. We have the bounds of > what has been written. @@ -62,16 +73,17 @@ > > And if we do want to make such assumptions, we could rip out all usage > of index/column here, and just handle "oob" and "full page" cases. -The function nand_do_write_ops() in nandbase.c is a Nand internal interface. +The function nand_do_write_ops() in nandbase.c is a Nand internal interfa= +ce. It always is called when application write to nand flash. (e.g. dd) -In this function, partial page write is dealt with by filling '0xff' to +In this function, partial page write is dealt with by filling '0xff' to=20 buffer before data copy. (nand_do_write_oob() is similar) -So I don't think we need to do it in our controller driver again, it +So I don't think we need to do it in our controller driver again, it=20 should be a job of upper layer. -I found that 'column' for NAND_CMD_SEQIN is always 0 or writesize except +I found that 'column' for NAND_CMD_SEQIN is always 0 or writesize except=20 for oob write with NAND_ECC_HW_SYNDROME, but it's not useful case for our controller. diff --git a/a/content_digest b/N1/content_digest index 135d582..fa890b7 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -13,20 +13,23 @@ shuo.liu@freescale.com linux-mtd@lists.infradead.org akpm@linux-foundation.org - leoli@freescale.com " dwmw2@infradead.org\0" "\00:1\0" "b\0" - "\344\272\216 2011\345\271\26412\346\234\21008\346\227\245 03:11, Scott Wood \345\206\231\351\201\223:\n" + "=E4=BA=8E 2011=E5=B9=B412=E6=9C=8808=E6=97=A5 03:11, Scott Wood =E5=86=99=\n" + "=E9=81=93:\n" "> On 12/06/2011 09:55 PM, LiuShuo wrote:\n" - ">> \344\272\216 2011\345\271\26412\346\234\21007\346\227\245 08:09, Scott Wood \345\206\231\351\201\223:\n" + ">> =E4=BA=8E 2011=E5=B9=B412=E6=9C=8807=E6=97=A5 08:09, Scott Wood =E5=86=\n" + "=99=E9=81=93:\n" ">>> On 12/03/2011 10:31 PM, shuo.liu@freescale.com wrote:\n" ">>>> From: Liu Shuo<shuo.liu@freescale.com>\n" ">>>>\n" ">>>> Freescale FCM controller has a 2K size limitation of buffer RAM. In\n" ">>>> order\n" - ">>>> to support the Nand flash chip whose page size is larger than 2K bytes,\n" - ">>>> we read/write 2k data repeatedly by issuing FIR_OP_RB/FIR_OP_WB and save\n" + ">>>> to support the Nand flash chip whose page size is larger than 2K byt=\n" + "es,\n" + ">>>> we read/write 2k data repeatedly by issuing FIR_OP_RB/FIR_OP_WB and =\n" + "save\n" ">>>> them to a large buffer.\n" ">>>>\n" ">>>> Signed-off-by: Liu Shuo<shuo.liu@freescale.com>\n" @@ -43,20 +46,24 @@ ">> uboot image for bad\n" ">> block marker migration when first use the chip.\n" "> It should not be a special image, and there should be some way to mark\n" - "> that the migration has happened. Even if we do the migration in U-Boot,\n" - "> Linux could check for the marker and if absent, disallow access and tell\n" + "> that the migration has happened. Even if we do the migration in U-Boot=\n" + ",\n" + "> Linux could check for the marker and if absent, disallow access and tel=\n" + "l\n" "> the user to run the migration tool.\n" ">\n" ">>>> @@ -473,13 +568,72 @@ static void fsl_elbc_cmdfunc(struct mtd_info\n" ">>>> *mtd, unsigned int command,\n" ">>>> * write so the HW generates the ECC.\n" ">>>> */\n" - ">>>> if (elbc_fcm_ctrl->oob || elbc_fcm_ctrl->column != 0 ||\n" - ">>>> - elbc_fcm_ctrl->index != mtd->writesize + mtd->oobsize)\n" + ">>>> if (elbc_fcm_ctrl->oob || elbc_fcm_ctrl->column !=3D 0 ||\n" + ">>>> - elbc_fcm_ctrl->index !=3D mtd->writesize + mtd->oobsize=\n" + ")\n" ">>>> - out_be32(&lbc->fbcr,\n" ">>>> - elbc_fcm_ctrl->index - elbc_fcm_ctrl->column);\n" ">>>> - else\n" - ">>>> + elbc_fcm_ctrl->index != mtd->writesize + mtd->oobsize) {\n" + ">>>> + elbc_fcm_ctrl->index !=3D mtd->writesize + mtd->oobsize=\n" + ") {\n" ">>>> + if (elbc_fcm_ctrl->oob&& mtd->writesize> 2048) {\n" ">>>> + out_be32(&lbc->fbcr, 64);\n" ">>>> + } else {\n" @@ -64,12 +71,15 @@ ">>>> + - elbc_fcm_ctrl->column);\n" ">>>> + }\n" ">>> We need to limit ourselves to the regions that have actually been\n" - ">>> written to in the buffer. fbcr needs to be set separately for first and\n" + ">>> written to in the buffer. fbcr needs to be set separately for first =\n" + "and\n" ">>> last subpages, with intermediate subpages having 0, 64, or 2112 as\n" - ">>> appropriate. Subpages that are entirely before column or entirely after\n" + ">>> appropriate. Subpages that are entirely before column or entirely af=\n" + "ter\n" ">>> column + index should be skipped.\n" ">> I have considered this case, but I don't think it is useful.\n" - ">> 1.There isn't a 'length' parameter in driver interface, although we\n" + ">> 1.There isn't a 'length' parameter in driver interface, although =\n" + "we\n" ">> can get it from 'index - column'.\n" "> Right. column is start, and index is end + 1. We have the bounds of\n" "> what has been written.\n" @@ -81,20 +91,21 @@ ">\n" "> And if we do want to make such assumptions, we could rip out all usage\n" "> of index/column here, and just handle \"oob\" and \"full page\" cases.\n" - "The function nand_do_write_ops() in nandbase.c is a Nand internal interface.\n" + "The function nand_do_write_ops() in nandbase.c is a Nand internal interfa=\n" + "ce.\n" "It always is called when application write to nand flash. (e.g. dd)\n" - "In this function, partial page write is dealt with by filling '0xff' to \n" + "In this function, partial page write is dealt with by filling '0xff' to=20\n" "buffer before data copy.\n" "(nand_do_write_oob() is similar)\n" - "So I don't think we need to do it in our controller driver again, it \n" + "So I don't think we need to do it in our controller driver again, it=20\n" "should be a job of upper layer.\n" "\n" "\n" - "I found that 'column' for NAND_CMD_SEQIN is always 0 or writesize except \n" + "I found that 'column' for NAND_CMD_SEQIN is always 0 or writesize except=20\n" "for oob write with\n" " NAND_ECC_HW_SYNDROME, but it's not useful case for our controller.\n" "\n" "-LiuShuo\n" > -Scott -e9569cd3deb4e681921d513b9d4e283417c0c46217f2d395a56e63430da91f1c +133a3ea6ab19832e2861e5294f41b13d68985c53c19104ab1457c363204c4e62
diff --git a/a/content_digest b/N2/content_digest index 135d582..e6455f1 100644 --- a/a/content_digest +++ b/N2/content_digest @@ -7,14 +7,14 @@ "Subject\0Re: [PATCH 3/3] mtd/nand : workaround for Freescale FCM to support large-page Nand chip\0" "Date\0Thu, 8 Dec 2011 18:44:54 +0800\0" "To\0Scott Wood <scottwood@freescale.com>\0" - "Cc\0Artem.Bityutskiy@nokia.com" - linuxppc-dev@lists.ozlabs.org - linux-kernel@vger.kernel.org - shuo.liu@freescale.com - linux-mtd@lists.infradead.org - akpm@linux-foundation.org - leoli@freescale.com - " dwmw2@infradead.org\0" + "Cc\0<shuo.liu@freescale.com>" + <dwmw2@infradead.org> + <Artem.Bityutskiy@nokia.com> + <linux-mtd@lists.infradead.org> + <linuxppc-dev@lists.ozlabs.org> + <akpm@linux-foundation.org> + <linux-kernel@vger.kernel.org> + " <leoli@freescale.com>\0" "\00:1\0" "b\0" "\344\272\216 2011\345\271\26412\346\234\21008\346\227\245 03:11, Scott Wood \345\206\231\351\201\223:\n" @@ -97,4 +97,4 @@ "-LiuShuo\n" > -Scott -e9569cd3deb4e681921d513b9d4e283417c0c46217f2d395a56e63430da91f1c +4f47eb833f4415904a81bda08a405f77d4d1d11c99ed25e578d6f63c43be0079
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.