From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <53B36B4F.90505@gmail.com> Date: Wed, 02 Jul 2014 10:15:43 +0800 From: Zhou Wang MIME-Version: 1.0 To: Mark Rutland Subject: Re: [PATCH 2/3] mtd: hisilicon: add a new nand controller driver for hisilicon hip04 Soc References: <1404115409-20200-1-git-send-email-wangzhou.bry@gmail.com> <1404115409-20200-3-git-send-email-wangzhou.bry@gmail.com> <20140630100025.GA7262@leverpostej> In-Reply-To: <20140630100025.GA7262@leverpostej> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Cc: Jussi Kivilinna , "linux-doc@vger.kernel.org" , Artem Bityutskiy , "linux-mtd@lists.infradead.org" , Russell King , Alexander Shiyan , Ezequiel Garcia , "grant.likely@linaro.org" , "devicetree@vger.kernel.org" , Pawel Moll , Ian Campbell , Joern Engel , Rob Herring , Pekon Gupta , "linux-arm-kernel@lists.infradead.org" , Randy Dunlap , "linux-kernel@vger.kernel.org" , "wangzhou1@hisilicon.com" , Kumar Gala , "caizhiyong@huawei.com" , Ivan Khoronzhuk , Brian Norris , David Woodhouse List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , On 2014年06月30日 18:00, Mark Rutland wrote: > On Mon, Jun 30, 2014 at 09:03:28AM +0100, Zhou Wang wrote: >> Signed-off-by: Zhou Wang >> --- >> drivers/mtd/nand/Kconfig | 5 + >> drivers/mtd/nand/Makefile | 1 + >> drivers/mtd/nand/hisi_nand.c | 847 ++++++++++++++++++++++++++++++++++++++++++ >> 3 files changed, 853 insertions(+) >> create mode 100644 drivers/mtd/nand/hisi_nand.c > > [...] > >> +struct hinfc_host { >> + struct nand_chip *chip; >> + struct mtd_info *mtd; >> + struct device *dev; >> + void __iomem *iobase; >> + struct completion cmd_complete; >> + unsigned int offset; >> + unsigned int command; >> + int chipselect; >> + unsigned int addr_cycle; >> + unsigned int addr_value[2]; >> + unsigned int cache_addr_value[2]; >> + char *buffer; >> + dma_addr_t dma_buffer; >> + dma_addr_t dma_oob; >> + int version; >> + unsigned int ecc_bits; >> + unsigned int irq_status; /* interrupt status */ >> + >> + int (*send_cmd_pageprog)(struct hinfc_host *host); >> + int (*send_cmd_status)(struct hinfc_host *host); >> + int (*send_cmd_readstart)(struct hinfc_host *host); >> + int (*send_cmd_erase)(struct hinfc_host *host); >> + int (*send_cmd_readid)(struct hinfc_host *host); >> + int (*send_cmd_reset)(struct hinfc_host *host, int chipselect); >> +}; > > [...] > >> +static int hisi_nfc_probe(struct platform_device *pdev) >> +{ >> + int ret = 0, irq, buswidth, flag, max_chips = HINFC504_MAX_CHIP; >> + struct device *dev = &pdev->dev; >> + struct hinfc_host *host; >> + struct nand_chip *chip; >> + struct mtd_info *mtd; >> + struct resource *res; >> + struct device_node *np = dev->of_node; >> + struct mtd_part_parser_data ppdata; >> + >> + host = devm_kzalloc(dev, sizeof(*host) + sizeof(*chip) + sizeof(*mtd), >> + GFP_KERNEL); >> + if (!host) >> + return -ENOMEM; >> + host->dev = dev; >> + >> + platform_set_drvdata(pdev, host); >> + chip = (struct nand_chip *)&host[1]; >> + mtd = (struct mtd_info *)&chip[1]; > > Why not embed the whole struct rather than pointers? Then you can > allocate just the host and extract pointers to the chip and mtd sub > structures. > > Thanks, > Mark. > I will change this as your comment, thanks. > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > From mboxrd@z Thu Jan 1 00:00:00 1970 From: wangzhou.bry@gmail.com (Zhou Wang) Date: Wed, 02 Jul 2014 10:15:43 +0800 Subject: [PATCH 2/3] mtd: hisilicon: add a new nand controller driver for hisilicon hip04 Soc In-Reply-To: <20140630100025.GA7262@leverpostej> References: <1404115409-20200-1-git-send-email-wangzhou.bry@gmail.com> <1404115409-20200-3-git-send-email-wangzhou.bry@gmail.com> <20140630100025.GA7262@leverpostej> Message-ID: <53B36B4F.90505@gmail.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On 2014?06?30? 18:00, Mark Rutland wrote: > On Mon, Jun 30, 2014 at 09:03:28AM +0100, Zhou Wang wrote: >> Signed-off-by: Zhou Wang >> --- >> drivers/mtd/nand/Kconfig | 5 + >> drivers/mtd/nand/Makefile | 1 + >> drivers/mtd/nand/hisi_nand.c | 847 ++++++++++++++++++++++++++++++++++++++++++ >> 3 files changed, 853 insertions(+) >> create mode 100644 drivers/mtd/nand/hisi_nand.c > > [...] > >> +struct hinfc_host { >> + struct nand_chip *chip; >> + struct mtd_info *mtd; >> + struct device *dev; >> + void __iomem *iobase; >> + struct completion cmd_complete; >> + unsigned int offset; >> + unsigned int command; >> + int chipselect; >> + unsigned int addr_cycle; >> + unsigned int addr_value[2]; >> + unsigned int cache_addr_value[2]; >> + char *buffer; >> + dma_addr_t dma_buffer; >> + dma_addr_t dma_oob; >> + int version; >> + unsigned int ecc_bits; >> + unsigned int irq_status; /* interrupt status */ >> + >> + int (*send_cmd_pageprog)(struct hinfc_host *host); >> + int (*send_cmd_status)(struct hinfc_host *host); >> + int (*send_cmd_readstart)(struct hinfc_host *host); >> + int (*send_cmd_erase)(struct hinfc_host *host); >> + int (*send_cmd_readid)(struct hinfc_host *host); >> + int (*send_cmd_reset)(struct hinfc_host *host, int chipselect); >> +}; > > [...] > >> +static int hisi_nfc_probe(struct platform_device *pdev) >> +{ >> + int ret = 0, irq, buswidth, flag, max_chips = HINFC504_MAX_CHIP; >> + struct device *dev = &pdev->dev; >> + struct hinfc_host *host; >> + struct nand_chip *chip; >> + struct mtd_info *mtd; >> + struct resource *res; >> + struct device_node *np = dev->of_node; >> + struct mtd_part_parser_data ppdata; >> + >> + host = devm_kzalloc(dev, sizeof(*host) + sizeof(*chip) + sizeof(*mtd), >> + GFP_KERNEL); >> + if (!host) >> + return -ENOMEM; >> + host->dev = dev; >> + >> + platform_set_drvdata(pdev, host); >> + chip = (struct nand_chip *)&host[1]; >> + mtd = (struct mtd_info *)&chip[1]; > > Why not embed the whole struct rather than pointers? Then you can > allocate just the host and extract pointers to the chip and mtd sub > structures. > > Thanks, > Mark. > I will change this as your comment, thanks. > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel at lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhou Wang Subject: Re: [PATCH 2/3] mtd: hisilicon: add a new nand controller driver for hisilicon hip04 Soc Date: Wed, 02 Jul 2014 10:15:43 +0800 Message-ID: <53B36B4F.90505@gmail.com> References: <1404115409-20200-1-git-send-email-wangzhou.bry@gmail.com> <1404115409-20200-3-git-send-email-wangzhou.bry@gmail.com> <20140630100025.GA7262@leverpostej> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20140630100025.GA7262@leverpostej> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Mark Rutland Cc: Jussi Kivilinna , "linux-doc@vger.kernel.org" , Artem Bityutskiy , "linux-mtd@lists.infradead.org" , Russell King , Alexander Shiyan , Ezequiel Garcia , "grant.likely@linaro.org" , "devicetree@vger.kernel.org" , Pawel Moll , Ian Campbell , Joern Engel , Rob Herring , Pekon Gupta , "linux-arm-kernel@lists.infradead.org" , Randy Dunlap , "linux-kernel@vger.kernel.org" , "wangzhou1@hisilicon.com" , Kumar Gala List-Id: devicetree@vger.kernel.org T24gMjAxNOW5tDA25pyIMzDml6UgMTg6MDAsIE1hcmsgUnV0bGFuZCB3cm90ZToKPiBPbiBNb24s IEp1biAzMCwgMjAxNCBhdCAwOTowMzoyOEFNICswMTAwLCBaaG91IFdhbmcgd3JvdGU6Cj4+IFNp Z25lZC1vZmYtYnk6IFpob3UgV2FuZyA8d2FuZ3pob3UuYnJ5QGdtYWlsLmNvbT4KPj4gLS0tCj4+ ICAgZHJpdmVycy9tdGQvbmFuZC9LY29uZmlnICAgICB8ICAgIDUgKwo+PiAgIGRyaXZlcnMvbXRk L25hbmQvTWFrZWZpbGUgICAgfCAgICAxICsKPj4gICBkcml2ZXJzL210ZC9uYW5kL2hpc2lfbmFu ZC5jIHwgIDg0NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4g ICAzIGZpbGVzIGNoYW5nZWQsIDg1MyBpbnNlcnRpb25zKCspCj4+ICAgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvbXRkL25hbmQvaGlzaV9uYW5kLmMKPgo+IFsuLi5dCj4KPj4gK3N0cnVjdCBo aW5mY19ob3N0IHsKPj4gKyAgICAgICBzdHJ1Y3QgbmFuZF9jaGlwICAgICAgICAqY2hpcDsKPj4g KyAgICAgICBzdHJ1Y3QgbXRkX2luZm8gICAgICAgICAqbXRkOwo+PiArICAgICAgIHN0cnVjdCBk ZXZpY2UgICAgICAgICAgICpkZXY7Cj4+ICsgICAgICAgdm9pZCBfX2lvbWVtICAgICAgICAgICAg KmlvYmFzZTsKPj4gKyAgICAgICBzdHJ1Y3QgY29tcGxldGlvbiAgICAgICBjbWRfY29tcGxldGU7 Cj4+ICsgICAgICAgdW5zaWduZWQgaW50ICAgICAgICAgICAgb2Zmc2V0Owo+PiArICAgICAgIHVu c2lnbmVkIGludCAgICAgICAgICAgIGNvbW1hbmQ7Cj4+ICsgICAgICAgaW50ICAgICAgICAgICAg ICAgICAgICAgY2hpcHNlbGVjdDsKPj4gKyAgICAgICB1bnNpZ25lZCBpbnQgICAgICAgICAgICBh ZGRyX2N5Y2xlOwo+PiArICAgICAgIHVuc2lnbmVkIGludCAgICAgICAgICAgIGFkZHJfdmFsdWVb Ml07Cj4+ICsgICAgICAgdW5zaWduZWQgaW50ICAgICAgICAgICAgY2FjaGVfYWRkcl92YWx1ZVsy XTsKPj4gKyAgICAgICBjaGFyICAgICAgICAgICAgICAgICAgICAqYnVmZmVyOwo+PiArICAgICAg IGRtYV9hZGRyX3QgICAgICAgICAgICAgIGRtYV9idWZmZXI7Cj4+ICsgICAgICAgZG1hX2FkZHJf dCAgICAgICAgICAgICAgZG1hX29vYjsKPj4gKyAgICAgICBpbnQgICAgICAgICAgICAgICAgICAg ICB2ZXJzaW9uOwo+PiArICAgICAgIHVuc2lnbmVkIGludCAgICAgICAgICAgIGVjY19iaXRzOwo+ PiArICAgICAgIHVuc2lnbmVkIGludCAgICAgICAgICAgIGlycV9zdGF0dXM7IC8qIGludGVycnVw dCBzdGF0dXMgKi8KPj4gKwo+PiArICAgICAgIGludCAoKnNlbmRfY21kX3BhZ2Vwcm9nKShzdHJ1 Y3QgaGluZmNfaG9zdCAqaG9zdCk7Cj4+ICsgICAgICAgaW50ICgqc2VuZF9jbWRfc3RhdHVzKShz dHJ1Y3QgaGluZmNfaG9zdCAqaG9zdCk7Cj4+ICsgICAgICAgaW50ICgqc2VuZF9jbWRfcmVhZHN0 YXJ0KShzdHJ1Y3QgaGluZmNfaG9zdCAqaG9zdCk7Cj4+ICsgICAgICAgaW50ICgqc2VuZF9jbWRf ZXJhc2UpKHN0cnVjdCBoaW5mY19ob3N0ICpob3N0KTsKPj4gKyAgICAgICBpbnQgKCpzZW5kX2Nt ZF9yZWFkaWQpKHN0cnVjdCBoaW5mY19ob3N0ICpob3N0KTsKPj4gKyAgICAgICBpbnQgKCpzZW5k X2NtZF9yZXNldCkoc3RydWN0IGhpbmZjX2hvc3QgKmhvc3QsIGludCBjaGlwc2VsZWN0KTsKPj4g K307Cj4KPiBbLi4uXQo+Cj4+ICtzdGF0aWMgaW50IGhpc2lfbmZjX3Byb2JlKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYpCj4+ICt7Cj4+ICsgICAgICAgaW50IHJldCA9IDAsIGlycSwgYnVz d2lkdGgsIGZsYWcsIG1heF9jaGlwcyA9IEhJTkZDNTA0X01BWF9DSElQOwo+PiArICAgICAgIHN0 cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7Cj4+ICsgICAgICAgc3RydWN0IGhpbmZjX2hv c3QgKmhvc3Q7Cj4+ICsgICAgICAgc3RydWN0IG5hbmRfY2hpcCAgKmNoaXA7Cj4+ICsgICAgICAg c3RydWN0IG10ZF9pbmZvICAgKm10ZDsKPj4gKyAgICAgICBzdHJ1Y3QgcmVzb3VyY2UgICAqcmVz Owo+PiArICAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBkZXYtPm9mX25vZGU7Cj4+ICsg ICAgICAgc3RydWN0IG10ZF9wYXJ0X3BhcnNlcl9kYXRhIHBwZGF0YTsKPj4gKwo+PiArICAgICAg IGhvc3QgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmhvc3QpICsgc2l6ZW9mKCpjaGlwKSAr IHNpemVvZigqbXRkKSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgR0ZQX0tFUk5FTCk7Cj4+ ICsgICAgICAgaWYgKCFob3N0KQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4+ ICsgICAgICAgaG9zdC0+ZGV2ID0gZGV2Owo+PiArCj4+ICsgICAgICAgcGxhdGZvcm1fc2V0X2Ry dmRhdGEocGRldiwgaG9zdCk7Cj4+ICsgICAgICAgY2hpcCA9IChzdHJ1Y3QgbmFuZF9jaGlwICop Jmhvc3RbMV07Cj4+ICsgICAgICAgbXRkICA9IChzdHJ1Y3QgbXRkX2luZm8gKikmY2hpcFsxXTsK Pgo+IFdoeSBub3QgZW1iZWQgdGhlIHdob2xlIHN0cnVjdCByYXRoZXIgdGhhbiBwb2ludGVycz8g VGhlbiB5b3UgY2FuCj4gYWxsb2NhdGUganVzdCB0aGUgaG9zdCBhbmQgZXh0cmFjdCBwb2ludGVy cyB0byB0aGUgY2hpcCBhbmQgbXRkIHN1Ygo+IHN0cnVjdHVyZXMuCj4KPiBUaGFua3MsCj4gTWFy ay4KPgoKSSB3aWxsIGNoYW5nZSB0aGlzIGFzIHlvdXIgY29tbWVudCwgdGhhbmtzLgoKPiBfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGxpbnV4LWFybS1r ZXJuZWwgbWFpbGluZyBsaXN0Cj4gbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3Jn Cj4gaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0t a2VybmVsCj4KCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmlu ZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9s aW51eC1hcm0ta2VybmVsCg==