mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-16 17:36:57 +07:00
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
|
* Setup Async configuration register in case we did not boot
|
||||||
* from NAND and so bootloader did not bother to set it up.
|
* 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
|
* Extended Wait is not valid and Select Strobe mode is not
|
||||||
* used
|
* used
|
||||||
@ -198,13 +198,13 @@ int davinci_aemif_setup(struct platform_device *pdev)
|
|||||||
if (pdata->options & NAND_BUSWIDTH_16)
|
if (pdata->options & NAND_BUSWIDTH_16)
|
||||||
val |= 0x1;
|
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);
|
clkrate = clk_get_rate(clk);
|
||||||
|
|
||||||
if (pdata->timing)
|
if (pdata->timing)
|
||||||
ret = davinci_aemif_setup_timing(pdata->timing, base, pdev->id,
|
ret = davinci_aemif_setup_timing(pdata->timing, base,
|
||||||
clkrate);
|
pdata->core_chipsel, clkrate);
|
||||||
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
dev_dbg(&pdev->dev, "NAND timing values setup fail\n");
|
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 = {
|
static struct davinci_nand_pdata da830_evm_nand_pdata = {
|
||||||
|
.core_chipsel = 1,
|
||||||
.parts = da830_evm_nand_partitions,
|
.parts = da830_evm_nand_partitions,
|
||||||
.nr_parts = ARRAY_SIZE(da830_evm_nand_partitions),
|
.nr_parts = ARRAY_SIZE(da830_evm_nand_partitions),
|
||||||
.ecc_mode = NAND_ECC_HW,
|
.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 = {
|
static struct davinci_nand_pdata da850_evm_nandflash_data = {
|
||||||
|
.core_chipsel = 1,
|
||||||
.parts = da850_evm_nandflash_partition,
|
.parts = da850_evm_nandflash_partition,
|
||||||
.nr_parts = ARRAY_SIZE(da850_evm_nandflash_partition),
|
.nr_parts = ARRAY_SIZE(da850_evm_nandflash_partition),
|
||||||
.ecc_mode = NAND_ECC_HW,
|
.ecc_mode = NAND_ECC_HW,
|
||||||
|
@ -77,6 +77,7 @@ static struct mtd_partition davinci_nand_partitions[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static struct davinci_nand_pdata davinci_nand_data = {
|
static struct davinci_nand_pdata davinci_nand_data = {
|
||||||
|
.core_chipsel = 0,
|
||||||
.mask_chipsel = BIT(14),
|
.mask_chipsel = BIT(14),
|
||||||
.parts = davinci_nand_partitions,
|
.parts = davinci_nand_partitions,
|
||||||
.nr_parts = ARRAY_SIZE(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 = {
|
static struct davinci_nand_pdata davinci_nand_data = {
|
||||||
|
.core_chipsel = 0,
|
||||||
.mask_chipsel = BIT(14),
|
.mask_chipsel = BIT(14),
|
||||||
.parts = davinci_nand_partitions,
|
.parts = davinci_nand_partitions,
|
||||||
.nr_parts = ARRAY_SIZE(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 = {
|
static struct davinci_nand_pdata davinci_nand_data = {
|
||||||
|
.core_chipsel = 0,
|
||||||
.mask_chipsel = BIT(14),
|
.mask_chipsel = BIT(14),
|
||||||
.parts = davinci_nand_partitions,
|
.parts = davinci_nand_partitions,
|
||||||
.nr_parts = ARRAY_SIZE(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 = {
|
static struct davinci_nand_pdata davinci_evm_nandflash_data = {
|
||||||
|
.core_chipsel = 0,
|
||||||
.parts = davinci_evm_nandflash_partition,
|
.parts = davinci_evm_nandflash_partition,
|
||||||
.nr_parts = ARRAY_SIZE(davinci_evm_nandflash_partition),
|
.nr_parts = ARRAY_SIZE(davinci_evm_nandflash_partition),
|
||||||
.ecc_mode = NAND_ECC_HW,
|
.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 = {
|
static struct davinci_nand_pdata davinci_nand_data = {
|
||||||
|
.core_chipsel = 0,
|
||||||
.mask_cle = 0x80000,
|
.mask_cle = 0x80000,
|
||||||
.mask_ale = 0x40000,
|
.mask_ale = 0x40000,
|
||||||
.parts = davinci_nand_partitions,
|
.parts = davinci_nand_partitions,
|
||||||
|
@ -400,6 +400,7 @@ static struct mtd_partition mityomapl138_nandflash_partition[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static struct davinci_nand_pdata mityomapl138_nandflash_data = {
|
static struct davinci_nand_pdata mityomapl138_nandflash_data = {
|
||||||
|
.core_chipsel = 1,
|
||||||
.parts = mityomapl138_nandflash_partition,
|
.parts = mityomapl138_nandflash_partition,
|
||||||
.nr_parts = ARRAY_SIZE(mityomapl138_nandflash_partition),
|
.nr_parts = ARRAY_SIZE(mityomapl138_nandflash_partition),
|
||||||
.ecc_mode = NAND_ECC_HW,
|
.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 = {
|
static struct davinci_nand_pdata davinci_ntosd2_nandflash_data = {
|
||||||
|
.core_chipsel = 0,
|
||||||
.parts = davinci_ntosd2_nandflash_partition,
|
.parts = davinci_ntosd2_nandflash_partition,
|
||||||
.nr_parts = ARRAY_SIZE(davinci_ntosd2_nandflash_partition),
|
.nr_parts = ARRAY_SIZE(davinci_ntosd2_nandflash_partition),
|
||||||
.ecc_mode = NAND_ECC_HW,
|
.ecc_mode = NAND_ECC_HW,
|
||||||
|
@ -547,7 +547,7 @@ static struct davinci_nand_pdata
|
|||||||
return ERR_PTR(-ENOMEM);
|
return ERR_PTR(-ENOMEM);
|
||||||
if (!of_property_read_u32(pdev->dev.of_node,
|
if (!of_property_read_u32(pdev->dev.of_node,
|
||||||
"ti,davinci-chipselect", &prop))
|
"ti,davinci-chipselect", &prop))
|
||||||
pdev->id = prop;
|
pdata->core_chipsel = prop;
|
||||||
else
|
else
|
||||||
return ERR_PTR(-EINVAL);
|
return ERR_PTR(-EINVAL);
|
||||||
|
|
||||||
@ -629,7 +629,7 @@ static int nand_davinci_probe(struct platform_device *pdev)
|
|||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
/* which external chipselect will we be managing? */
|
/* 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;
|
return -ENODEV;
|
||||||
|
|
||||||
info = devm_kzalloc(&pdev->dev, sizeof(*info), GFP_KERNEL);
|
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->ioaddr = (uint32_t __force) vaddr;
|
||||||
|
|
||||||
info->current_cs = info->ioaddr;
|
info->current_cs = info->ioaddr;
|
||||||
info->core_chipsel = pdev->id;
|
info->core_chipsel = pdata->core_chipsel;
|
||||||
info->mask_chipsel = pdata->mask_chipsel;
|
info->mask_chipsel = pdata->mask_chipsel;
|
||||||
|
|
||||||
/* use nandboot-capable ALE/CLE masks by default */
|
/* 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_ale;
|
||||||
uint32_t mask_cle;
|
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 */
|
/* for packages using two chipselects */
|
||||||
uint32_t mask_chipsel;
|
uint32_t mask_chipsel;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user