From 0bb7e983785c4a360b591056866141baed662f3d Mon Sep 17 00:00:00 2001 From: Dongjin Kim Date: Mon, 11 Feb 2019 13:54:38 +0900 Subject: [PATCH] ODROID-COMMON: spifc: add new hardware node 'spifc' In order to access SPI-NOR flash memory from Linux kernel, new node 'spifc' is added as 'disabled' by default. Since SPI flash memory shares the hardware bus with eMMC, one can not be enabled when another one is enabled. Change-Id: I7ae258dcc1b18df59dc33e8473c83f7ff0329461 Signed-off-by: Dongjin Kim --- .../dts/amlogic/mesong12_odroid_common.dtsi | 11 +++ arch/arm64/boot/dts/amlogic/mesong12a.dtsi | 21 +++++ arch/arm64/boot/dts/amlogic/mesong12b.dtsi | 21 +++++ arch/arm64/configs/odroidn2_defconfig | 7 +- arch/arm64/configs/odroidn2_spibios_defconfig | 80 ++++++++++++++++++- 5 files changed, 138 insertions(+), 2 deletions(-) diff --git a/arch/arm64/boot/dts/amlogic/mesong12_odroid_common.dtsi b/arch/arm64/boot/dts/amlogic/mesong12_odroid_common.dtsi index 0c406358bb78..d7ee7ae8e2c2 100644 --- a/arch/arm64/boot/dts/amlogic/mesong12_odroid_common.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesong12_odroid_common.dtsi @@ -521,3 +521,14 @@ }; }; }; /* end of pinctrl_periphs */ + +&spifc { + status = "disabled"; + spi-nor@0 { + compatible = "jedec,spi-nor"; + spifc-frequency = <40000000>; + read-capability = <2>; + spifc-io-width = <2>; + cs_gpios = <&gpio BOOT_14 GPIO_ACTIVE_LOW>; + }; +}; diff --git a/arch/arm64/boot/dts/amlogic/mesong12a.dtsi b/arch/arm64/boot/dts/amlogic/mesong12a.dtsi index d55ca6cc5b73..5d572445d79d 100644 --- a/arch/arm64/boot/dts/amlogic/mesong12a.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesong12a.dtsi @@ -647,6 +647,16 @@ status = "disabled"; }; + spifc: spifc@14000 { + status = "disabled"; + compatible = "amlogic,aml-spi-nor"; + reg = <0x0 0x14000 0x0 0x80>; + pinctrl-names = "default"; + pinctrl-0 = <&spifc_all_pins>; + clocks = <&clkc CLKID_CLK81>; + clock-names = "core"; + }; + spicc1: spi@15000 { compatible = "amlogic,meson-g12a-spicc"; reg = <0x0 0x15000 0x0 0x44>; @@ -2403,6 +2413,17 @@ }; }; + spifc_all_pins: spifc_all_pins { + mux { + groups = "nor_d", + "nor_q", + "nor_c"; + function = "nor"; + input-enable; + bias-pull-up; + }; + }; + spicc0_pins_c: spicc0_pins_c { mux { groups = "spi0_mosi_c", diff --git a/arch/arm64/boot/dts/amlogic/mesong12b.dtsi b/arch/arm64/boot/dts/amlogic/mesong12b.dtsi index f02f67fac3b8..2ce002e97e98 100644 --- a/arch/arm64/boot/dts/amlogic/mesong12b.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesong12b.dtsi @@ -669,6 +669,16 @@ status = "disabled"; }; + spifc: spifc@14000 { + status = "disabled"; + compatible = "amlogic,aml-spi-nor"; + reg = <0x0 0x14000 0x0 0x80>; + pinctrl-names = "default"; + pinctrl-0 = <&spifc_all_pins>; + clocks = <&clkc CLKID_CLK81>; + clock-names = "core"; + }; + spicc1: spi@15000 { compatible = "amlogic,meson-g12b-spicc", "amlogic,meson-g12a-spicc"; @@ -2416,6 +2426,17 @@ }; }; + spifc_all_pins: spifc_all_pins { + mux { + groups = "nor_d", + "nor_q", + "nor_c"; + function = "nor"; + input-enable; + bias-pull-up; + }; + }; + spicc1_pins: spicc1_pins { mux { groups = "spi1_mosi", diff --git a/arch/arm64/configs/odroidn2_defconfig b/arch/arm64/configs/odroidn2_defconfig index bbe227c04348..2e3d536d8b33 100644 --- a/arch/arm64/configs/odroidn2_defconfig +++ b/arch/arm64/configs/odroidn2_defconfig @@ -1557,6 +1557,7 @@ CONFIG_AMLOGIC_DEFENDKEY=y # # Meson SPI NOR Flash Support # +CONFIG_SPI_AML_SPIFC=y CONFIG_AMLOGIC_MEDIA_VDEC_MPEG12=m CONFIG_AMLOGIC_MEDIA_VDEC_MPEG4=m CONFIG_AMLOGIC_MEDIA_VDEC_MPEG4_MULTI=m @@ -1674,6 +1675,7 @@ CONFIG_MTD_CFI_I2=y # Self-contained MTD device drivers # # CONFIG_MTD_DATAFLASH is not set +# CONFIG_MTD_M25P80 is not set # CONFIG_MTD_SST25L is not set # CONFIG_MTD_SLRAM is not set # CONFIG_MTD_PHRAM is not set @@ -1706,7 +1708,9 @@ CONFIG_MTD_NAND=y # LPDDR & LPDDR2 PCM memory drivers # # CONFIG_MTD_LPDDR is not set -# CONFIG_MTD_SPI_NOR is not set +CONFIG_MTD_SPI_NOR=y +# CONFIG_MTD_MT81xx_NOR is not set +CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y CONFIG_MTD_UBI=y CONFIG_MTD_UBI_WL_THRESHOLD=4096 CONFIG_MTD_UBI_BEB_LIMIT=20 @@ -2532,6 +2536,7 @@ CONFIG_SPI_BITBANG=y CONFIG_SPI_GPIO=y # CONFIG_SPI_FSL_SPI is not set CONFIG_SPI_MESON_SPICC=m +# CONFIG_SPI_MESON_SPIFC is not set # CONFIG_SPI_OC_TINY is not set # CONFIG_SPI_PL022 is not set # CONFIG_SPI_PXA2XX_PCI is not set diff --git a/arch/arm64/configs/odroidn2_spibios_defconfig b/arch/arm64/configs/odroidn2_spibios_defconfig index 3c75c1d2c571..75c41c30d66a 100644 --- a/arch/arm64/configs/odroidn2_spibios_defconfig +++ b/arch/arm64/configs/odroidn2_spibios_defconfig @@ -996,6 +996,7 @@ CONFIG_AMLOGIC_GPIO_IRQ=y # # Meson SPI NOR Flash Support # +CONFIG_SPI_AML_SPIFC=y # CONFIG_AMLOGIC_MEDIA_VDEC_MPEG12 is not set # CONFIG_AMLOGIC_MEDIA_VDEC_MPEG4 is not set # CONFIG_AMLOGIC_MEDIA_VDEC_MPEG4_MULTI is not set @@ -1058,7 +1059,80 @@ CONFIG_CMA_ALIGNMENT=8 # CONFIG_ARM_CCN is not set # CONFIG_VEXPRESS_CONFIG is not set # CONFIG_CONNECTOR is not set -# CONFIG_MTD is not set +CONFIG_MTD=y +# CONFIG_MTD_REDBOOT_PARTS is not set +# CONFIG_MTD_CMDLINE_PARTS is not set +# CONFIG_MTD_AFS_PARTS is not set +CONFIG_MTD_OF_PARTS=y +# CONFIG_MTD_AR7_PARTS is not set + +# +# User Modules And Translation Layers +# +# CONFIG_MTD_BLOCK is not set +# CONFIG_MTD_BLOCK_RO is not set +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set +# CONFIG_SM_FTL is not set +# CONFIG_MTD_OOPS is not set +# CONFIG_MTD_SWAP is not set +# CONFIG_MTD_PARTITIONED_MASTER is not set + +# +# RAM/ROM/Flash chip drivers +# +# CONFIG_MTD_CFI is not set +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +# CONFIG_MTD_PLATRAM is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_DATAFLASH is not set +# CONFIG_MTD_M25P80 is not set +# CONFIG_MTD_SST25L is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOCG3 is not set +# CONFIG_MTD_NAND_IDS is not set +# CONFIG_MTD_NAND is not set +# CONFIG_MTD_ONENAND is not set + +# +# LPDDR & LPDDR2 PCM memory drivers +# +# CONFIG_MTD_LPDDR is not set +CONFIG_MTD_SPI_NOR=y +# CONFIG_MTD_MT81xx_NOR is not set +CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y +# CONFIG_MTD_UBI is not set CONFIG_DTC=y CONFIG_OF=y # CONFIG_OF_UNITTEST is not set @@ -1606,6 +1680,7 @@ CONFIG_SPI_BITBANG=y CONFIG_SPI_GPIO=y # CONFIG_SPI_FSL_SPI is not set CONFIG_SPI_MESON_SPICC=y +# CONFIG_SPI_MESON_SPIFC is not set # CONFIG_SPI_OC_TINY is not set # CONFIG_SPI_PL022 is not set # CONFIG_SPI_PXA2XX_PCI is not set @@ -2504,6 +2579,7 @@ CONFIG_LEDS_PWM=y CONFIG_LEDS_TRIGGERS=y CONFIG_LEDS_TRIGGER_TIMER=y CONFIG_LEDS_TRIGGER_ONESHOT=y +# CONFIG_LEDS_TRIGGER_MTD is not set CONFIG_LEDS_TRIGGER_HEARTBEAT=y CONFIG_LEDS_TRIGGER_BACKLIGHT=y CONFIG_LEDS_TRIGGER_CPU=y @@ -2675,6 +2751,7 @@ CONFIG_EXTCON=y CONFIG_PWM=y CONFIG_PWM_SYSFS=y # CONFIG_PWM_FSL_FTM is not set +# CONFIG_PWM_GPIO is not set # CONFIG_PWM_PCA9685 is not set CONFIG_IRQCHIP=y CONFIG_ARM_GIC=y @@ -2859,6 +2936,7 @@ CONFIG_SDCARD_FS=y # CONFIG_BEFS_FS is not set # CONFIG_BFS_FS is not set # CONFIG_EFS_FS is not set +# CONFIG_JFFS2_FS is not set # CONFIG_LOGFS is not set # CONFIG_CRAMFS is not set # CONFIG_SQUASHFS is not set