forked from luck/tmp_suning_uos_patched
Merge branch 'v4.18/nand-cs-simplification' into v4.18/soc
This commit is contained in:
commit
ccfadbb759
|
@ -189,7 +189,7 @@ int davinci_aemif_setup(struct platform_device *pdev)
|
|||
* Setup Async configuration register in case we did not boot
|
||||
* from NAND and so bootloader did not bother to set it up.
|
||||
*/
|
||||
val = davinci_aemif_readl(base, A1CR_OFFSET + pdev->id * 4);
|
||||
val = davinci_aemif_readl(base, A1CR_OFFSET + pdata->core_chipsel * 4);
|
||||
/*
|
||||
* Extended Wait is not valid and Select Strobe mode is not
|
||||
* used
|
||||
|
@ -198,13 +198,13 @@ int davinci_aemif_setup(struct platform_device *pdev)
|
|||
if (pdata->options & NAND_BUSWIDTH_16)
|
||||
val |= 0x1;
|
||||
|
||||
davinci_aemif_writel(base, A1CR_OFFSET + pdev->id * 4, val);
|
||||
davinci_aemif_writel(base, A1CR_OFFSET + pdata->core_chipsel * 4, val);
|
||||
|
||||
clkrate = clk_get_rate(clk);
|
||||
|
||||
if (pdata->timing)
|
||||
ret = davinci_aemif_setup_timing(pdata->timing, base, pdev->id,
|
||||
clkrate);
|
||||
ret = davinci_aemif_setup_timing(pdata->timing, base,
|
||||
pdata->core_chipsel, clkrate);
|
||||
|
||||
if (ret < 0)
|
||||
dev_dbg(&pdev->dev, "NAND timing values setup fail\n");
|
||||
|
|
|
@ -310,6 +310,7 @@ static struct davinci_aemif_timing da830_evm_nandflash_timing = {
|
|||
};
|
||||
|
||||
static struct davinci_nand_pdata da830_evm_nand_pdata = {
|
||||
.core_chipsel = 1,
|
||||
.parts = da830_evm_nand_partitions,
|
||||
.nr_parts = ARRAY_SIZE(da830_evm_nand_partitions),
|
||||
.ecc_mode = NAND_ECC_HW,
|
||||
|
|
|
@ -244,6 +244,7 @@ static struct davinci_aemif_timing da850_evm_nandflash_timing = {
|
|||
};
|
||||
|
||||
static struct davinci_nand_pdata da850_evm_nandflash_data = {
|
||||
.core_chipsel = 1,
|
||||
.parts = da850_evm_nandflash_partition,
|
||||
.nr_parts = ARRAY_SIZE(da850_evm_nandflash_partition),
|
||||
.ecc_mode = NAND_ECC_HW,
|
||||
|
|
|
@ -77,6 +77,7 @@ static struct mtd_partition davinci_nand_partitions[] = {
|
|||
};
|
||||
|
||||
static struct davinci_nand_pdata davinci_nand_data = {
|
||||
.core_chipsel = 0,
|
||||
.mask_chipsel = BIT(14),
|
||||
.parts = davinci_nand_partitions,
|
||||
.nr_parts = ARRAY_SIZE(davinci_nand_partitions),
|
||||
|
|
|
@ -72,6 +72,7 @@ static struct mtd_partition davinci_nand_partitions[] = {
|
|||
};
|
||||
|
||||
static struct davinci_nand_pdata davinci_nand_data = {
|
||||
.core_chipsel = 0,
|
||||
.mask_chipsel = BIT(14),
|
||||
.parts = davinci_nand_partitions,
|
||||
.nr_parts = ARRAY_SIZE(davinci_nand_partitions),
|
||||
|
|
|
@ -138,6 +138,7 @@ static struct mtd_partition davinci_nand_partitions[] = {
|
|||
};
|
||||
|
||||
static struct davinci_nand_pdata davinci_nand_data = {
|
||||
.core_chipsel = 0,
|
||||
.mask_chipsel = BIT(14),
|
||||
.parts = davinci_nand_partitions,
|
||||
.nr_parts = ARRAY_SIZE(davinci_nand_partitions),
|
||||
|
|
|
@ -152,6 +152,7 @@ static struct davinci_aemif_timing davinci_evm_nandflash_timing = {
|
|||
};
|
||||
|
||||
static struct davinci_nand_pdata davinci_evm_nandflash_data = {
|
||||
.core_chipsel = 0,
|
||||
.parts = davinci_evm_nandflash_partition,
|
||||
.nr_parts = ARRAY_SIZE(davinci_evm_nandflash_partition),
|
||||
.ecc_mode = NAND_ECC_HW,
|
||||
|
|
|
@ -84,6 +84,7 @@ static struct davinci_aemif_timing dm6467tevm_nandflash_timing = {
|
|||
};
|
||||
|
||||
static struct davinci_nand_pdata davinci_nand_data = {
|
||||
.core_chipsel = 0,
|
||||
.mask_cle = 0x80000,
|
||||
.mask_ale = 0x40000,
|
||||
.parts = davinci_nand_partitions,
|
||||
|
|
|
@ -400,6 +400,7 @@ static struct mtd_partition mityomapl138_nandflash_partition[] = {
|
|||
};
|
||||
|
||||
static struct davinci_nand_pdata mityomapl138_nandflash_data = {
|
||||
.core_chipsel = 1,
|
||||
.parts = mityomapl138_nandflash_partition,
|
||||
.nr_parts = ARRAY_SIZE(mityomapl138_nandflash_partition),
|
||||
.ecc_mode = NAND_ECC_HW,
|
||||
|
|
|
@ -87,6 +87,7 @@ static struct mtd_partition davinci_ntosd2_nandflash_partition[] = {
|
|||
};
|
||||
|
||||
static struct davinci_nand_pdata davinci_ntosd2_nandflash_data = {
|
||||
.core_chipsel = 0,
|
||||
.parts = davinci_ntosd2_nandflash_partition,
|
||||
.nr_parts = ARRAY_SIZE(davinci_ntosd2_nandflash_partition),
|
||||
.ecc_mode = NAND_ECC_HW,
|
||||
|
|
|
@ -547,7 +547,7 @@ static struct davinci_nand_pdata
|
|||
return ERR_PTR(-ENOMEM);
|
||||
if (!of_property_read_u32(pdev->dev.of_node,
|
||||
"ti,davinci-chipselect", &prop))
|
||||
pdev->id = prop;
|
||||
pdata->core_chipsel = prop;
|
||||
else
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
|
@ -629,7 +629,7 @@ static int nand_davinci_probe(struct platform_device *pdev)
|
|||
return -ENODEV;
|
||||
|
||||
/* which external chipselect will we be managing? */
|
||||
if (pdev->id < 0 || pdev->id > 3)
|
||||
if (pdata->core_chipsel < 0 || pdata->core_chipsel > 3)
|
||||
return -ENODEV;
|
||||
|
||||
info = devm_kzalloc(&pdev->dev, sizeof(*info), GFP_KERNEL);
|
||||
|
@ -685,7 +685,7 @@ static int nand_davinci_probe(struct platform_device *pdev)
|
|||
info->ioaddr = (uint32_t __force) vaddr;
|
||||
|
||||
info->current_cs = info->ioaddr;
|
||||
info->core_chipsel = pdev->id;
|
||||
info->core_chipsel = pdata->core_chipsel;
|
||||
info->mask_chipsel = pdata->mask_chipsel;
|
||||
|
||||
/* use nandboot-capable ALE/CLE masks by default */
|
||||
|
|
|
@ -56,6 +56,16 @@ struct davinci_nand_pdata { /* platform_data */
|
|||
uint32_t mask_ale;
|
||||
uint32_t mask_cle;
|
||||
|
||||
/*
|
||||
* 0-indexed chip-select number of the asynchronous
|
||||
* interface to which the NAND device has been connected.
|
||||
*
|
||||
* So, if you have NAND connected to CS3 of DA850, you
|
||||
* will pass '1' here. Since the asynchronous interface
|
||||
* on DA850 starts from CS2.
|
||||
*/
|
||||
uint32_t core_chipsel;
|
||||
|
||||
/* for packages using two chipselects */
|
||||
uint32_t mask_chipsel;
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user