Experimental NAND support for A20 micro and CT
This commit is contained in:
parent
3b73007979
commit
264cffe466
File diff suppressed because it is too large
Load Diff
@ -1,12 +0,0 @@
|
||||
diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi
|
||||
index e02eb72..470edde 100644
|
||||
--- a/arch/arm/boot/dts/sun7i-a20.dtsi
|
||||
+++ b/arch/arm/boot/dts/sun7i-a20.dtsi
|
||||
@@ -1385,6 +1385,7 @@
|
||||
clock-names = "stmmaceth", "allwinner_gmac_tx";
|
||||
snps,pbl = <2>;
|
||||
snps,fixed-burst;
|
||||
+ tx-fifo-depth = <16384>;
|
||||
snps,force_sf_dma_mode;
|
||||
status = "disabled";
|
||||
#address-cells = <1>;
|
||||
15
patch/kernel/sunxi-dev/add-H27UBG8T2BTR-nand.patch
Normal file
15
patch/kernel/sunxi-dev/add-H27UBG8T2BTR-nand.patch
Normal file
@ -0,0 +1,15 @@
|
||||
diff --git a/drivers/mtd/nand/nand_ids.c b/drivers/mtd/nand/nand_ids.c
|
||||
index 2af9869..f561b36 100644
|
||||
--- a/drivers/mtd/nand/nand_ids.c
|
||||
+++ b/drivers/mtd/nand/nand_ids.c
|
||||
@@ -48,6 +48,10 @@ struct nand_flash_dev nand_flash_ids[] = {
|
||||
{"SDTNRGAMA 64G 3.3V 8-bit",
|
||||
{ .id = {0x45, 0xde, 0x94, 0x93, 0x76, 0x50} },
|
||||
SZ_16K, SZ_8K, SZ_4M, 0, 6, 1280, NAND_ECC_INFO(40, SZ_1K) },
|
||||
+ {"H27UBG8T2BTR-BC 32G 3.3V 8-bit",
|
||||
+ { .id = {0xad, 0xd7, 0x94, 0xda, 0x74, 0xc3} },
|
||||
+ SZ_8K, SZ_4K, SZ_2M, NAND_NEED_SCRAMBLING, 6, 640,
|
||||
+ NAND_ECC_INFO(40, SZ_1K), 0 },
|
||||
{"H27UCG8T2ATR-BC 64G 3.3V 8-bit",
|
||||
{ .id = {0xad, 0xde, 0x94, 0xda, 0x74, 0xc4} },
|
||||
SZ_8K, SZ_8K, SZ_2M, NAND_NEED_SCRAMBLING, 6, 640,
|
||||
63
patch/kernel/sunxi-dev/add-nand-pins-to-a20-dtsi.patch
Normal file
63
patch/kernel/sunxi-dev/add-nand-pins-to-a20-dtsi.patch
Normal file
@ -0,0 +1,63 @@
|
||||
diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi
|
||||
index bd0c476..5791e43 100644
|
||||
--- a/arch/arm/boot/dts/sun7i-a20.dtsi
|
||||
+++ b/arch/arm/boot/dts/sun7i-a20.dtsi
|
||||
@@ -1389,6 +1389,58 @@
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
+
|
||||
+ nand_pins_a: nand_base0@0 {
|
||||
+ allwinner,pins = "PC0", "PC1", "PC2",
|
||||
+ "PC5", "PC8", "PC9", "PC10",
|
||||
+ "PC11", "PC12", "PC13", "PC14",
|
||||
+ "PC15", "PC16";
|
||||
+ allwinner,function = "nand0";
|
||||
+ allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
+ allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
+ };
|
||||
+
|
||||
+ nand_cs0_pins_a: nand_cs@0 {
|
||||
+ allwinner,pins = "PC4";
|
||||
+ allwinner,function = "nand0";
|
||||
+ allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
+ allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
+ };
|
||||
+
|
||||
+ nand_cs1_pins_a: nand_cs@1 {
|
||||
+ allwinner,pins = "PC3";
|
||||
+ allwinner,function = "nand0";
|
||||
+ allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
+ allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
+ };
|
||||
+
|
||||
+ nand_cs2_pins_a: nand_cs@2 {
|
||||
+ allwinner,pins = "PC17";
|
||||
+ allwinner,function = "nand0";
|
||||
+ allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
+ allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
+ };
|
||||
+
|
||||
+ nand_cs3_pins_a: nand_cs@3 {
|
||||
+ allwinner,pins = "PC18";
|
||||
+ allwinner,function = "nand0";
|
||||
+ allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
+ allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
+ };
|
||||
+
|
||||
+ nand_rb0_pins_a: nand_rb@0 {
|
||||
+ allwinner,pins = "PC6";
|
||||
+ allwinner,function = "nand0";
|
||||
+ allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
+ allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
+ };
|
||||
+
|
||||
+ nand_rb1_pins_a: nand_rb@1 {
|
||||
+ allwinner,pins = "PC7";
|
||||
+ allwinner,function = "nand0";
|
||||
+ allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
+ allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
+ };
|
||||
};
|
||||
|
||||
timer@01c20c00 {
|
||||
@ -0,0 +1,23 @@
|
||||
diff --git a/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts b/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts
|
||||
index 7e3006f..de809ec 100644
|
||||
--- a/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts
|
||||
+++ b/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts
|
||||
@@ -213,6 +213,18 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&nfc {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&nand_pins_a>, <&nand_cs0_pins_a>, <&nand_rb0_pins_a>;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ nand@0 {
|
||||
+ reg = <0>;
|
||||
+ allwinner,rb = <0>;
|
||||
+ nand-ecc-mode = "hw";
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
&ohci0 {
|
||||
status = "okay";
|
||||
};
|
||||
60
patch/kernel/sunxi-dev/add-nand-to-a20-micro.patch
Normal file
60
patch/kernel/sunxi-dev/add-nand-to-a20-micro.patch
Normal file
@ -0,0 +1,60 @@
|
||||
diff --git a/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts b/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts
|
||||
index 7e3006f..7e44d19 100644
|
||||
--- a/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts
|
||||
+++ b/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts
|
||||
@@ -213,6 +213,55 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&nfc {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&nand_pins_a>, <&nand_cs0_pins_a>, <&nand_rb0_pins_a>;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ nand@0 {
|
||||
+ reg = <0>;
|
||||
+ allwinner,rb = <0>;
|
||||
+ nand-ecc-mode = "hw";
|
||||
+ nand-on-flash-bbt;
|
||||
+
|
||||
+ partitions {
|
||||
+ compatible = "fixed-partitions";
|
||||
+ #address-cells = <2>;
|
||||
+ #size-cells = <2>;
|
||||
+
|
||||
+ partition@0 {
|
||||
+ label = "SPL";
|
||||
+ reg = <0x0 0x0 0x0 0x400000>;
|
||||
+ };
|
||||
+
|
||||
+ partition@400000 {
|
||||
+ label = "SPL.backup";
|
||||
+ reg = <0x0 0x400000 0x0 0x400000>;
|
||||
+ };
|
||||
+
|
||||
+ partition@800000 {
|
||||
+ label = "U-Boot";
|
||||
+ reg = <0x0 0x800000 0x0 0x400000>;
|
||||
+ };
|
||||
+
|
||||
+ partition@c00000 {
|
||||
+ label = "U-Boot.backup";
|
||||
+ reg = <0x0 0xc00000 0x0 0x400000>;
|
||||
+ };
|
||||
+
|
||||
+ partition@1000000 {
|
||||
+ label = "env";
|
||||
+ reg = <0x0 0x1000000 0x0 0x400000>;
|
||||
+ };
|
||||
+
|
||||
+ partition@1400000 {
|
||||
+ label = "rootfs";
|
||||
+ reg = <0x0 0x1400000 0x0 0xff000000>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
&ohci0 {
|
||||
status = "okay";
|
||||
};
|
||||
@ -0,0 +1,23 @@
|
||||
diff --git a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts
|
||||
index 83f39b0..283a446 100644
|
||||
--- a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts
|
||||
+++ b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts
|
||||
@@ -210,6 +210,18 @@
|
||||
allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
|
||||
};
|
||||
|
||||
+&nfc {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&nand_pins_a>, <&nand_cs0_pins_a>, <&nand_rb0_pins_a>;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ nand@0 {
|
||||
+ reg = <0>;
|
||||
+ allwinner,rb = <0>;
|
||||
+ nand-ecc-mode = "hw";
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
&ohci0 {
|
||||
status = "okay";
|
||||
};
|
||||
61
patch/kernel/sunxi-dev/add-nand-to-cubietruck.patch
Normal file
61
patch/kernel/sunxi-dev/add-nand-to-cubietruck.patch
Normal file
@ -0,0 +1,61 @@
|
||||
diff --git a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts
|
||||
index 83f39b0..dc1d42b 100644
|
||||
--- a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts
|
||||
+++ b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts
|
||||
@@ -210,6 +210,56 @@
|
||||
allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
|
||||
};
|
||||
|
||||
+&nfc {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&nand_pins_a>, <&nand_cs0_pins_a>, <&nand_rb0_pins_a>;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ nand@0 {
|
||||
+ reg = <0>;
|
||||
+ allwinner,rb = <0>;
|
||||
+ nand-ecc-mode = "hw";
|
||||
+ nand-on-flash-bbt;
|
||||
+
|
||||
+ partitions {
|
||||
+ compatible = "fixed-partitions";
|
||||
+ #address-cells = <2>;
|
||||
+ #size-cells = <2>;
|
||||
+
|
||||
+ partition@0 {
|
||||
+ label = "SPL";
|
||||
+ reg = <0x0 0x0 0x0 0x400000>;
|
||||
+ };
|
||||
+
|
||||
+ partition@400000 {
|
||||
+ label = "SPL.backup";
|
||||
+ reg = <0x0 0x400000 0x0 0x400000>;
|
||||
+ };
|
||||
+
|
||||
+ partition@800000 {
|
||||
+ label = "U-Boot";
|
||||
+ reg = <0x0 0x800000 0x0 0x400000>;
|
||||
+ };
|
||||
+
|
||||
+ partition@c00000 {
|
||||
+ label = "U-Boot.backup";
|
||||
+ reg = <0x0 0xc00000 0x0 0x400000>;
|
||||
+ };
|
||||
+
|
||||
+ partition@1000000 {
|
||||
+ label = "env";
|
||||
+ reg = <0x0 0x1000000 0x0 0x400000>;
|
||||
+ read-only;
|
||||
+ };
|
||||
+
|
||||
+ partition@1400000 {
|
||||
+ label = "rootfs";
|
||||
+ reg = <0x0 0x1400000 0x01 0xff000000>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
&ohci0 {
|
||||
status = "okay";
|
||||
};
|
||||
@ -0,0 +1,35 @@
|
||||
diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
|
||||
index 77533f7..8b3b184 100644
|
||||
--- a/drivers/mtd/nand/nand_base.c
|
||||
+++ b/drivers/mtd/nand/nand_base.c
|
||||
@@ -532,11 +532,7 @@ static int nand_block_checkbad(struct mtd_info *mtd, loff_t ofs, int allowbbt)
|
||||
{
|
||||
struct nand_chip *chip = mtd_to_nand(mtd);
|
||||
|
||||
- if (!chip->bbt)
|
||||
- return chip->block_bad(mtd, ofs);
|
||||
-
|
||||
- /* Return info from the table */
|
||||
- return nand_isbad_bbt(mtd, ofs, allowbbt);
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -3030,16 +3026,7 @@ static int nand_block_isbad(struct mtd_info *mtd, loff_t offs)
|
||||
int chipnr = (int)(offs >> chip->chip_shift);
|
||||
int ret;
|
||||
|
||||
- /* Select the NAND device */
|
||||
- nand_get_device(mtd, FL_READING);
|
||||
- chip->select_chip(mtd, chipnr);
|
||||
-
|
||||
- ret = nand_block_checkbad(mtd, offs, 0);
|
||||
-
|
||||
- chip->select_chip(mtd, -1);
|
||||
- nand_release_device(mtd);
|
||||
-
|
||||
- return ret;
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1,14 +0,0 @@
|
||||
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c
|
||||
index adff463..e227f3f 100644
|
||||
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c
|
||||
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c
|
||||
@@ -143,7 +143,9 @@ static int sun7i_gmac_probe(struct platform_device *pdev)
|
||||
/* platform data specifying hardware features and callbacks.
|
||||
* hardware features were copied from Allwinner drivers. */
|
||||
plat_dat->tx_coe = 1;
|
||||
+ plat_dat->rx_coe = 2;
|
||||
plat_dat->has_gmac = true;
|
||||
+ plat_dat->bugged_jumbo = 1;
|
||||
plat_dat->bsp_priv = gmac;
|
||||
plat_dat->init = sun7i_gmac_init;
|
||||
plat_dat->exit = sun7i_gmac_exit;
|
||||
Loading…
Reference in New Issue
Block a user