diff --git a/arch/arm64/boot/dts/rockchip/rk3566-evb2-lp4x-v10.dtsi b/arch/arm64/boot/dts/rockchip/rk3566-evb2-lp4x-v10.dtsi index bc8affc94a06..65ba3397ec91 100644 --- a/arch/arm64/boot/dts/rockchip/rk3566-evb2-lp4x-v10.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3566-evb2-lp4x-v10.dtsi @@ -219,6 +219,17 @@ status = "okay"; pinctrl-0 = <&i2c2m1_xfer>; + dw9714: dw9714@c { + compatible = "dongwoon,dw9714"; + status = "okay"; + reg = <0x0c>; + rockchip,vcm-start-current = <10>; + rockchip,vcm-rated-current = <85>; + rockchip,vcm-step-mode = <5>; + rockchip,camera-module-index = <0>; + rockchip,camera-module-facing = "back"; + }; + /* split mode: lane0/1 */ ov5695: ov5695@36 { status = "okay"; @@ -234,6 +245,7 @@ rockchip,camera-module-facing = "back"; rockchip,camera-module-name = "TongJu"; rockchip,camera-module-lens-name = "CHT842-MD"; + lens-focus = <&dw9714>; port { ov5695_out: endpoint { remote-endpoint = <&mipi_in_ucam1>; @@ -281,6 +293,7 @@ rockchip,camera-module-facing = "back"; rockchip,camera-module-name = "RK-CMK-8M-2-v1"; rockchip,camera-module-lens-name = "CK8401"; + lens-focus = <&dw9714>; port { gc8034_out: endpoint { remote-endpoint = <&dphy0_in>; diff --git a/arch/arm64/boot/dts/rockchip/rk3566-evb3-ddr3-v10.dtsi b/arch/arm64/boot/dts/rockchip/rk3566-evb3-ddr3-v10.dtsi index 7e99bf7b464f..0a7e2881d1fe 100644 --- a/arch/arm64/boot/dts/rockchip/rk3566-evb3-ddr3-v10.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3566-evb3-ddr3-v10.dtsi @@ -192,6 +192,17 @@ status = "okay"; pinctrl-0 = <&i2c2m1_xfer>; + dw9714: dw9714@c { + compatible = "dongwoon,dw9714"; + status = "okay"; + reg = <0x0c>; + rockchip,vcm-start-current = <10>; + rockchip,vcm-rated-current = <85>; + rockchip,vcm-step-mode = <5>; + rockchip,camera-module-index = <0>; + rockchip,camera-module-facing = "back"; + }; + gc2145: gc2145@3c { status = "okay"; compatible = "galaxycore,gc2145"; @@ -236,6 +247,7 @@ rockchip,camera-module-facing = "back"; rockchip,camera-module-name = "TongJu"; rockchip,camera-module-lens-name = "CHT842-MD"; + lens-focus = <&dw9714>; port { ov5695_out: endpoint { remote-endpoint = <&mipi_in_ucam0>; @@ -259,6 +271,7 @@ rockchip,camera-module-facing = "back"; rockchip,camera-module-name = "RK-CMK-8M-2-v1"; rockchip,camera-module-lens-name = "CK8401"; + lens-focus = <&dw9714>; port { gc8034_out: endpoint { remote-endpoint = <&mipi_in_ucam1>; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi b/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi index 14f35e1bd877..2b72b8c7bbe5 100644 --- a/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi @@ -265,6 +265,18 @@ &i2c4 { status = "okay"; + + dw9714: dw9714@c { + compatible = "dongwoon,dw9714"; + status = "okay"; + reg = <0x0c>; + rockchip,vcm-start-current = <10>; + rockchip,vcm-rated-current = <85>; + rockchip,vcm-step-mode = <5>; + rockchip,camera-module-index = <0>; + rockchip,camera-module-facing = "back"; + }; + gc8034: gc8034@37 { compatible = "galaxycore,gc8034"; status = "okay"; @@ -281,6 +293,7 @@ rockchip,camera-module-facing = "back"; rockchip,camera-module-name = "RK-CMK-8M-2-v1"; rockchip,camera-module-lens-name = "CK8401"; + lens-focus = <&dw9714>; port { gc8034_out: endpoint { remote-endpoint = <&mipi_in_ucam1>; @@ -324,6 +337,7 @@ rockchip,camera-module-facing = "back"; rockchip,camera-module-name = "TongJu"; rockchip,camera-module-lens-name = "CHT842-MD"; + lens-focus = <&dw9714>; port { ov5695_out: endpoint { remote-endpoint = <&mipi_in_ucam2>; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-evb5-ddr4-v10.dtsi b/arch/arm64/boot/dts/rockchip/rk3568-evb5-ddr4-v10.dtsi index cb054e4932e1..ceaf0f2b841d 100644 --- a/arch/arm64/boot/dts/rockchip/rk3568-evb5-ddr4-v10.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3568-evb5-ddr4-v10.dtsi @@ -296,6 +296,18 @@ &i2c4 { status = "okay"; + + dw9714: dw9714@c { + compatible = "dongwoon,dw9714"; + status = "okay"; + reg = <0x0c>; + rockchip,vcm-start-current = <10>; + rockchip,vcm-rated-current = <85>; + rockchip,vcm-step-mode = <5>; + rockchip,camera-module-index = <0>; + rockchip,camera-module-facing = "back"; + }; + gc8034: gc8034@37 { compatible = "galaxycore,gc8034"; status = "okay"; @@ -312,6 +324,7 @@ rockchip,camera-module-facing = "back"; rockchip,camera-module-name = "RK-CMK-8M-2-v1"; rockchip,camera-module-lens-name = "CK8401"; + lens-focus = <&dw9714>; port { gc8034_out: endpoint { remote-endpoint = <&mipi_in_ucam1>; @@ -355,6 +368,7 @@ rockchip,camera-module-facing = "back"; rockchip,camera-module-name = "TongJu"; rockchip,camera-module-lens-name = "CHT842-MD"; + lens-focus = <&dw9714>; port { ov5695_out: endpoint { remote-endpoint = <&mipi_in_ucam2>; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-evb6-ddr3-v10.dtsi b/arch/arm64/boot/dts/rockchip/rk3568-evb6-ddr3-v10.dtsi index 7163f3815272..894fdc0ab3c8 100644 --- a/arch/arm64/boot/dts/rockchip/rk3568-evb6-ddr3-v10.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3568-evb6-ddr3-v10.dtsi @@ -133,6 +133,18 @@ &i2c4 { status = "okay"; + + dw9714: dw9714@c { + compatible = "dongwoon,dw9714"; + status = "okay"; + reg = <0x0c>; + rockchip,vcm-start-current = <10>; + rockchip,vcm-rated-current = <85>; + rockchip,vcm-step-mode = <5>; + rockchip,camera-module-index = <0>; + rockchip,camera-module-facing = "back"; + }; + os04a10: os04a10@36 { compatible = "ovti,os04a10"; reg = <0x36>; @@ -171,6 +183,7 @@ rockchip,camera-module-facing = "back"; rockchip,camera-module-name = "RK-CMK-8M-2-v1"; rockchip,camera-module-lens-name = "CK8401"; + lens-focus = <&dw9714>; port { gc8034_out: endpoint { remote-endpoint = <&mipi_in_ucam1>; @@ -193,6 +206,7 @@ rockchip,camera-module-facing = "back"; rockchip,camera-module-name = "TongJu"; rockchip,camera-module-lens-name = "CHT842-MD"; + lens-focus = <&dw9714>; port { ov5695_out: endpoint { remote-endpoint = <&mipi_in_ucam2>; diff --git a/drivers/gpu/arm/mali400/mali/common/mali_timeline.c b/drivers/gpu/arm/mali400/mali/common/mali_timeline.c old mode 100755 new mode 100644 index ffffee9306ce..ee42a997c7e6 --- a/drivers/gpu/arm/mali400/mali/common/mali_timeline.c +++ b/drivers/gpu/arm/mali400/mali/common/mali_timeline.c @@ -1551,7 +1551,7 @@ static void mali_timeline_do_sync_fence_callback(void *arg) #elif LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0) fence_status = atomic_read(&sync_fence->status); #else - fence_status = sync_fence->fence->ops->signaled(sync_fence->fence); + fence_status = dma_fence_is_signaled(sync_fence->fence); #endif system = tracker->system; diff --git a/drivers/gpu/arm/mali400/mali/common/mali_timeline_fence_wait.c b/drivers/gpu/arm/mali400/mali/common/mali_timeline_fence_wait.c old mode 100755 new mode 100644 index 1ab13f50997f..dff480332868 --- a/drivers/gpu/arm/mali400/mali/common/mali_timeline_fence_wait.c +++ b/drivers/gpu/arm/mali400/mali/common/mali_timeline_fence_wait.c @@ -113,7 +113,7 @@ static mali_bool mali_timeline_fence_wait_check_status(struct mali_timeline_syst #elif LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0) if (0 < atomic_read(&sync_fence->status)) { #else - if (0 == sync_fence->fence->ops->signaled(sync_fence->fence)) { + if (0 == dma_fence_is_signaled(sync_fence->fence)) { #endif ret = MALI_FALSE; diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_internal_sync.c b/drivers/gpu/arm/mali400/mali/linux/mali_internal_sync.c index e13cbad3e513..e0f89108d4fe 100644 --- a/drivers/gpu/arm/mali400/mali/linux/mali_internal_sync.c +++ b/drivers/gpu/arm/mali400/mali/linux/mali_internal_sync.c @@ -92,7 +92,7 @@ static void mali_internal_fence_check_cb_func(struct dma_fence *fence, struct dm if (ret) wake_up_all(&sync_fence->wq); #else - ret = sync_fence->fence->ops->signaled(sync_fence->fence); + ret = dma_fence_is_signaled(sync_fence->fence); if (0 > ret) MALI_PRINT_ERROR(("Mali internal sync:Failed to wait fence 0x%x for sync_fence 0x%x.\n", fence, sync_fence)); @@ -557,10 +557,7 @@ int mali_internal_sync_fence_wait_async(struct mali_internal_sync_fence *sync_fe return !err; #else - if ((sync_fence->fence) && (sync_fence->fence->ops) && (sync_fence->fence->ops->signaled)) - err = sync_fence->fence->ops->signaled(sync_fence->fence); - else - err = -1; + err = dma_fence_is_signaled(sync_fence->fence); if (0 > err) return err; @@ -583,7 +580,7 @@ int mali_internal_sync_fence_wait_async(struct mali_internal_sync_fence *sync_fe waiter->work.private = sync_fence; spin_lock_irqsave(&sync_fence->wq.lock, flags); - err = sync_fence->fence->ops->signaled(sync_fence->fence); + err = dma_fence_is_signaled(sync_fence->fence); if (0 == err){ #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 13, 0) diff --git a/drivers/gpu/drm/rockchip/Kconfig b/drivers/gpu/drm/rockchip/Kconfig index e35dc117e783..6fb5ee464ae2 100644 --- a/drivers/gpu/drm/rockchip/Kconfig +++ b/drivers/gpu/drm/rockchip/Kconfig @@ -8,9 +8,9 @@ config DRM_ROCKCHIP select VIDEOMODE_HELPERS select DRM_ANALOGIX_DP if ROCKCHIP_ANALOGIX_DP select DRM_DW_HDMI if ROCKCHIP_DW_HDMI - select DRM_DW_MIPI_DSI if ROCKCHIP_DW_MIPI_DSI - select GENERIC_PHY if ROCKCHIP_DW_MIPI_DSI - select GENERIC_PHY_MIPI_DPHY if ROCKCHIP_DW_MIPI_DSI + select DRM_DW_MIPI_DSI if ROCKCHIP_DW_MIPI_DSI || ROCKCHIP_DW_MIPI_DSI2 + select GENERIC_PHY if ROCKCHIP_DW_MIPI_DSI || ROCKCHIP_DW_MIPI_DSI2 + select GENERIC_PHY_MIPI_DPHY if ROCKCHIP_DW_MIPI_DSI || ROCKCHIP_DW_MIPI_DSI2 select SND_SOC_HDMI_CODEC if ROCKCHIP_CDN_DP && SND_SOC help Choose this option if you have a Rockchip soc chipset. @@ -107,6 +107,16 @@ config ROCKCHIP_DW_MIPI_DSI enable MIPI DSI on RK3288 or RK3399 based SoC, you should select this option. +config ROCKCHIP_DW_MIPI_DSI2 + bool "Rockchip specific extensions for Synopsys DW MIPI DSI2" + default ROCKCHIP_DW_MIPI_DSI + select GENERIC_PHY_MIPI_DPHY + help + This selects support for Rockchip SoC specific extensions + for the Synopsys DesignWare dsi2 driver. If you want to + enable MIPI DSI2 on RK3576 or RK3588 based SoC, you should + select this option. + config ROCKCHIP_DW_DP bool "Rockchip specific extensions for Synopsys DW DPTX" select DRM_DISPLAY_HDCP_HELPER diff --git a/drivers/gpu/drm/rockchip/Makefile b/drivers/gpu/drm/rockchip/Makefile index 9fa5639df377..68112fed3f14 100644 --- a/drivers/gpu/drm/rockchip/Makefile +++ b/drivers/gpu/drm/rockchip/Makefile @@ -19,8 +19,8 @@ rockchipdrm-$(CONFIG_ROCKCHIP_CDN_DP) += cdn-dp-core.o cdn-dp-reg.o \ cdn-dp-link-training.o rockchipdrm-$(CONFIG_ROCKCHIP_DRM_TVE) += rockchip_drm_tve.o rockchipdrm-$(CONFIG_ROCKCHIP_DW_HDMI) += dw_hdmi-rockchip.o -rockchipdrm-$(CONFIG_ROCKCHIP_DW_MIPI_DSI) += dw-mipi-dsi-rockchip.o \ - dw-mipi-dsi2-rockchip.o +rockchipdrm-$(CONFIG_ROCKCHIP_DW_MIPI_DSI) += dw-mipi-dsi-rockchip.o +rockchipdrm-$(CONFIG_ROCKCHIP_DW_MIPI_DSI2) += dw-mipi-dsi2-rockchip.o rockchipdrm-$(CONFIG_ROCKCHIP_DW_DP) += dw-dp.o rockchipdrm-$(CONFIG_ROCKCHIP_INNO_HDMI) += inno_hdmi.o rockchipdrm-$(CONFIG_ROCKCHIP_LVDS) += rockchip_lvds.o diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c index db3a8387b669..20ca56760777 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c @@ -2587,7 +2587,7 @@ static int __init rockchip_drm_init(void) ADD_ROCKCHIP_SUB_DRIVER(dw_mipi_dsi_rockchip_driver, CONFIG_ROCKCHIP_DW_MIPI_DSI); ADD_ROCKCHIP_SUB_DRIVER(dw_mipi_dsi2_rockchip_driver, - CONFIG_ROCKCHIP_DW_MIPI_DSI); + CONFIG_ROCKCHIP_DW_MIPI_DSI2); ADD_ROCKCHIP_SUB_DRIVER(inno_hdmi_driver, CONFIG_ROCKCHIP_INNO_HDMI); ADD_ROCKCHIP_SUB_DRIVER(rk3066_hdmi_driver, CONFIG_ROCKCHIP_RK3066_HDMI); diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c index 6a8e91a7c256..9c828df0d84a 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c @@ -5775,10 +5775,12 @@ static int vop2_plane_atomic_check(struct drm_plane *plane, struct drm_atomic_st int hsub = fb->format->hsub; int vsub = fb->format->vsub; - if (fb->format->char_per_block[0] == 0) + if (fb->format->char_per_block[0] == 0) { offset = ALIGN_DOWN(src->x1 >> 16, tile_size) * fb->format->cpp[1] / hsub * tile_size; - else - offset = drm_format_info_min_pitch(fb->format, 1, ALIGN_DOWN(src->x1 >> 16, tile_size)) * tile_size / hsub; + } else { + offset = drm_format_info_min_pitch(fb->format, 1, ALIGN_DOWN(src->x1 >> 16, tile_size)) * tile_size; + offset /= hsub; + } if (vpstate->tiled_en) offset /= vsub; @@ -8604,7 +8606,8 @@ static int vop2_calc_dsc_clk(struct drm_crtc *crtc) * so when txp_clk is equal to v_pixclk, we set dsc_cds = crtc_clock / 4, * otherwise dsc_cds = crtc_clock / 8; */ - vcstate->dsc_cds_clk_rate = v_pixclk / (vcstate->dsc_txp_clk_rate == v_pixclk ? 4 : 8); + vcstate->dsc_cds_clk_rate = v_pixclk; + do_div(vcstate->dsc_cds_clk_rate, (vcstate->dsc_txp_clk_rate == v_pixclk ? 4 : 8)); return 0; } diff --git a/drivers/mtd/nand/spi/Kconfig b/drivers/mtd/nand/spi/Kconfig index 8c1d95d23b56..e6cfa409756f 100644 --- a/drivers/mtd/nand/spi/Kconfig +++ b/drivers/mtd/nand/spi/Kconfig @@ -8,3 +8,5 @@ menuconfig MTD_SPI_NAND select MTD_NAND_BBT_USING_FLASH help This is the framework for the SPI NAND device drivers. + +source "drivers/mtd/nand/spi/Kconfig.spinandlist" diff --git a/drivers/mtd/nand/spi/Kconfig.spinandlist b/drivers/mtd/nand/spi/Kconfig.spinandlist new file mode 100644 index 000000000000..eb41188cbd29 --- /dev/null +++ b/drivers/mtd/nand/spi/Kconfig.spinandlist @@ -0,0 +1,156 @@ +# SPDX-License-Identifier: GPL-2.0-only + +if MTD_SPI_NAND + +config MTD_SPI_NAND_DEVICE_AUTOSELECT + bool "Autoselect SPI Nand flash" + default y + help + By default, auto-selects all SPI Nand flash chips. + +menu "SPI Nand flash" + visible if !MTD_SPI_NAND_DEVICE_AUTOSELECT + +config MTD_SPI_NAND_ATO + bool "ATO SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various ATO SPI Nand flash chips + +config MTD_SPI_NAND_BIWIN + bool "BIWIN SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various BIWIN SPI Nand flash chips + +config MTD_SPI_NAND_DOSILICON + bool "DOSILICON SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various DOSILICON SPI Nand flash chips + +config MTD_SPI_NAND_ESMT + bool "ESMT SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + select SPI_NAND_MICRON + help + Add support for various ESMT SPI Nand flash chips + +config MTD_SPI_NAND_ETRON + bool "ETRON SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various ETRON SPI Nand flash chips + +config MTD_SPI_NAND_FMSH + bool "FMSH SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various FMSH SPI Nand flash chips + +config MTD_SPI_NAND_FORESEE + bool "FORESEE SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various FORESEE SPI Nand flash chips + +config MTD_SPI_NAND_GIGADEVICE + bool "GIGADEVICE SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various GIGADEVICE SPI Nand flash chips + +config MTD_SPI_NAND_GSTO + bool "GSTO SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various GSTO SPI Nand flash chips + +config MTD_SPI_NAND_HIKSEMI + bool "HIKSEMI SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various HIKSEMI SPI Nand flash chips + +config MTD_SPI_NAND_HYF + bool "HYF SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various HYF SPI Nand flash chips + +config MTD_SPI_NAND_JSC + bool "JSC SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various JSC SPI Nand flash chips + +config MTD_SPI_NAND_MACRONIX + bool "MACRONIX SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various MACRONIX SPI Nand flash chips + +config MTD_SPI_NAND_MICRON + bool "MICRON SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various MICRON SPI Nand flash chips + +config MTD_SPI_NAND_PARAGON + bool "PARAGON SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various PARAGON SPI Nand flash chips + +config MTD_SPI_NAND_SILICONGO + bool "SILICONGO SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various SILICONGO SPI Nand flash chips + +config MTD_SPI_NAND_SKYHIGH + bool "SKYHIGH SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various SKYHIGH SPI Nand flash chips + +config MTD_SPI_NAND_TOSHIBA + bool "TOSHIBA SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various TOSHIBA SPI Nand flash chips + +config MTD_SPI_NAND_UNIM + bool "UNIM SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various UNIM SPI Nand flash chips + +config MTD_SPI_NAND_WINBOND + bool "WINBOND SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various WINBOND SPI Nand flash chips + +config MTD_SPI_NAND_XINCUN + bool "XINCUN SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various XINCUN SPI Nand flash chips + +config MTD_SPI_NAND_XTX + bool "XTX SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + select MTD_SPI_NAND_MICRON + help + Add support for various XTX SPI Nand flash chips + +config MTD_SPI_NAND_ZBIT + bool "ZBIT SPI flash support" + default y if MTD_SPI_NAND_DEVICE_AUTOSELECT + help + Add support for various ZBIT SPI Nand flash chips + +endmenu + +endif diff --git a/drivers/mtd/nand/spi/Makefile b/drivers/mtd/nand/spi/Makefile index b28cdffeaa6d..2fd86cdb708c 100644 --- a/drivers/mtd/nand/spi/Makefile +++ b/drivers/mtd/nand/spi/Makefile @@ -1,3 +1,27 @@ # SPDX-License-Identifier: GPL-2.0 -spinand-objs := core.o ato.o gigadevice.o gsto.o macronix.o micron.o paragon.o toshiba.o winbond.o biwin.o dosilicon.o esmt.o etron.o fmsh.o foresee.o hiksemi.o hyf.o jsc.o silicongo.o skyhigh.o unim.o xincun.o xtx.o zbit.o +spinand-objs := core.o obj-$(CONFIG_MTD_SPI_NAND) += spinand.o + +spinand-$(CONFIG_MTD_SPI_NAND_ATO) += ato.o +spinand-$(CONFIG_MTD_SPI_NAND_BIWIN) += biwin.o +spinand-$(CONFIG_MTD_SPI_NAND_DOSILICON) += dosilicon.o +spinand-$(CONFIG_MTD_SPI_NAND_ESMT) += esmt.o +spinand-$(CONFIG_MTD_SPI_NAND_ETRON) += etron.o +spinand-$(CONFIG_MTD_SPI_NAND_FMSH) += fmsh.o +spinand-$(CONFIG_MTD_SPI_NAND_FORESEE) += foresee.o +spinand-$(CONFIG_MTD_SPI_NAND_GIGADEVICE) += gigadevice.o +spinand-$(CONFIG_MTD_SPI_NAND_GSTO) += gsto.o +spinand-$(CONFIG_MTD_SPI_NAND_HIKSEMI) += hiksemi.o +spinand-$(CONFIG_MTD_SPI_NAND_HYF) += hyf.o +spinand-$(CONFIG_MTD_SPI_NAND_JSC) += jsc.o +spinand-$(CONFIG_MTD_SPI_NAND_MACRONIX) += macronix.o +spinand-$(CONFIG_MTD_SPI_NAND_MICRON) += micron.o +spinand-$(CONFIG_MTD_SPI_NAND_PARAGON) += paragon.o +spinand-$(CONFIG_MTD_SPI_NAND_SILICONGO) += silicongo.o +spinand-$(CONFIG_MTD_SPI_NAND_SKYHIGH) += skyhigh.o +spinand-$(CONFIG_MTD_SPI_NAND_TOSHIBA) += toshiba.o +spinand-$(CONFIG_MTD_SPI_NAND_UNIM) += unim.o +spinand-$(CONFIG_MTD_SPI_NAND_WINBOND) += winbond.o +spinand-$(CONFIG_MTD_SPI_NAND_XINCUN) += xincun.o +spinand-$(CONFIG_MTD_SPI_NAND_XTX) += xtx.o +spinand-$(CONFIG_MTD_SPI_NAND_ZBIT) += zbit.o diff --git a/drivers/mtd/nand/spi/core.c b/drivers/mtd/nand/spi/core.c index a46142634b1c..0eb65ca35b73 100644 --- a/drivers/mtd/nand/spi/core.c +++ b/drivers/mtd/nand/spi/core.c @@ -951,30 +951,76 @@ static const struct nand_ops spinand_ops = { }; static const struct spinand_manufacturer *spinand_manufacturers[] = { +#ifdef CONFIG_MTD_SPI_NAND_ATO &ato_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_BIWIN &biwin_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_DOSILICON &dosilicon_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_ESMT &esmt_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_ETRON &etron_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_FMSH &fmsh_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_FORESEE &foresee_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_GIGADEVICE &gigadevice_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_GSTO &gsto_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_HIKSEMI &hiksemi_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_HYF &hyf_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_JSC &jsc_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_MACRONIX ¯onix_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_MICRON µn_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_PARAGON ¶gon_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_SILICONGO &silicongo_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_SKYHIGH &skyhigh_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_TOSHIBA &toshiba_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_UNIM &unim_spinand_manufacturer, &unim_zl_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_WINBOND &winbond_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_XINCUN &xincun_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_XTX &xtx_spinand_manufacturer, +#endif +#ifdef CONFIG_MTD_SPI_NAND_ZBIT &zbit_spinand_manufacturer, +#endif }; static int spinand_manufacturer_match(struct spinand_device *spinand, diff --git a/drivers/mtd/spi-nor/Kconfig b/drivers/mtd/spi-nor/Kconfig index ab7f2e7cdde5..e88fb485839c 100644 --- a/drivers/mtd/spi-nor/Kconfig +++ b/drivers/mtd/spi-nor/Kconfig @@ -76,5 +76,6 @@ config MTD_SPI_NOR_SWP_KEEP endchoice source "drivers/mtd/spi-nor/controllers/Kconfig" +source "drivers/mtd/spi-nor/Kconfig.spinorlist" endif # MTD_SPI_NOR diff --git a/drivers/mtd/spi-nor/Kconfig.spinorlist b/drivers/mtd/spi-nor/Kconfig.spinorlist new file mode 100644 index 000000000000..eb281a667fcc --- /dev/null +++ b/drivers/mtd/spi-nor/Kconfig.spinorlist @@ -0,0 +1,148 @@ +# SPDX-License-Identifier: GPL-2.0-only + +if MTD_SPI_NOR + +config MTD_SPI_NOR_DEVICE_AUTOSELECT + bool "Autoselect SPI Nor flash" + default y + help + By default, auto-selects all SPI Nor flash chips. + +menu "SPI Nor flash" + visible if !MTD_SPI_NOR_DEVICE_AUTOSELECT + +config MTD_SPI_NOR_ATMEL + bool "Atmel SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various Atmel SPI flash chips (AT45xxx and AT25xxx) + +config MTD_SPI_NOR_BOYA + bool "BOYA SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various BOYA SPI flash chips (BY25xxx) + +config MTD_SPI_NOR_CATALYST + bool "CATALYST SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various CATALYST SPI flash chips (cat25xxx) + +config MTD_SPI_NOR_DOSILICON + bool "DOSILICON SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various DOSILICON SPI flash chips (FM25xxx) + +config MTD_SPI_NOR_EON + bool "EON SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various EON SPI flash chips (EN25xxx) + +config MTD_SPI_NOR_ESMT + bool "ESMT SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various ESMT SPI flash chips (F25xxx and EN25) + +config MTD_SPI_NOR_EVERSPIN + bool "EVERSPIN SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various EVERSPIN SPI flash chips (mrxxx) + +config MTD_SPI_NOR_FMSH + bool "FMSH SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various FMSH SPI flash chips (FM25xxx) + +config MTD_SPI_NOR_FUJITSU + bool "FUJITSU SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various FUJITSU SPI flash chips (MB85xxx) + +config MTD_SPI_NOR_GIGADEVICE + bool "GigaDevice SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various GigaDevice SPI flash chips (GD25xxx) + +config MTD_SPI_NOR_INTEL + bool "INTEL SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various INTEL SPI flash chips + +config MTD_SPI_NOR_ISSI + bool "ISSI SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various ISSI SPI flash chips (ISxxx) + +config MTD_SPI_NOR_MACRONIX + bool "Macronix SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various Macronix SPI flash chips (MX25Lxxx) + +config MTD_SPI_NOR_NORMEM + bool "NORMEM SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various NORMEM SPI flash chips (NM25xxx) + +config MTD_SPI_NOR_PUYA + bool "PUYA SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various PUYA SPI flash chips (PY25xxx) + +config MTD_SPI_NOR_SPANSION + bool "Spansion SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various Spansion SPI flash chips (S25FLxxx) + +config MTD_SPI_NOR_STMICRO + bool "STMicro SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various STMicro SPI flash chips (M25Pxxx and N25Qxxx) + +config MTD_SPI_NOR_SST + bool "SST SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various SST SPI flash chips (SST25xxx) + +config MTD_SPI_NOR_WINBOND + bool "Winbond SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various WINBOND SPI flash chips (W25xxx) + +config MTD_SPI_NOR_XILINX + bool "XILINX SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various XILINX SPI flash chips (3Sxxx) + +config MTD_SPI_NOR_XMC + bool "XMC SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various XMC SPI flash chips (XM25xxx) + +config MTD_SPI_NOR_XTX + bool "XTX SPI flash support" + default y if MTD_SPI_NOR_DEVICE_AUTOSELECT + help + Add support for various XTX SPI flash chips (XT25xxx) + +endmenu + +endif # MTD_SPI_NOR diff --git a/drivers/mtd/spi-nor/Makefile b/drivers/mtd/spi-nor/Makefile index 1401664fea87..a89fe38b21a8 100644 --- a/drivers/mtd/spi-nor/Makefile +++ b/drivers/mtd/spi-nor/Makefile @@ -1,28 +1,28 @@ # SPDX-License-Identifier: GPL-2.0 spi-nor-objs := core.o sfdp.o swp.o otp.o sysfs.o -spi-nor-objs += atmel.o -spi-nor-objs += boya.o -spi-nor-objs += catalyst.o -spi-nor-objs += dosilicon.o -spi-nor-objs += eon.o -spi-nor-objs += esmt.o -spi-nor-objs += everspin.o -spi-nor-objs += fmsh.o -spi-nor-objs += fujitsu.o -spi-nor-objs += gigadevice.o -spi-nor-objs += normem.o -spi-nor-objs += intel.o -spi-nor-objs += issi.o -spi-nor-objs += macronix.o -spi-nor-objs += micron-st.o -spi-nor-objs += puya.o -spi-nor-objs += spansion.o -spi-nor-objs += sst.o -spi-nor-objs += winbond.o -spi-nor-objs += xilinx.o -spi-nor-objs += xmc.o -spi-nor-objs += xtx.o +spi-nor-$(CONFIG_MTD_SPI_NOR_ATMEL) += atmel.o +spi-nor-$(CONFIG_MTD_SPI_NOR_BOYA) += boya.o +spi-nor-$(CONFIG_MTD_SPI_NOR_CATALYST) += catalyst.o +spi-nor-$(CONFIG_MTD_SPI_NOR_DOSILICON) += dosilicon.o +spi-nor-$(CONFIG_MTD_SPI_NOR_EON) += eon.o +spi-nor-$(CONFIG_MTD_SPI_NOR_ESMT) += esmt.o +spi-nor-$(CONFIG_MTD_SPI_NOR_EVERSPIN) += everspin.o +spi-nor-$(CONFIG_MTD_SPI_NOR_FMSH) += fmsh.o +spi-nor-$(CONFIG_MTD_SPI_NOR_FUJITSU) += fujitsu.o +spi-nor-$(CONFIG_MTD_SPI_NOR_GIGADEVICE) += gigadevice.o +spi-nor-$(CONFIG_MTD_SPI_NOR_INTEL) += intel.o +spi-nor-$(CONFIG_MTD_SPI_NOR_ISSI) += issi.o +spi-nor-$(CONFIG_MTD_SPI_NOR_MACRONIX) += macronix.o +spi-nor-$(CONFIG_MTD_SPI_NOR_STMICRO) += micron-st.o +spi-nor-$(CONFIG_MTD_SPI_NOR_NORMEM) += normem.o +spi-nor-$(CONFIG_MTD_SPI_NOR_PUYA) += puya.o +spi-nor-$(CONFIG_MTD_SPI_NOR_SPANSION) += spansion.o +spi-nor-$(CONFIG_MTD_SPI_NOR_SST) += sst.o +spi-nor-$(CONFIG_MTD_SPI_NOR_WINBOND) += winbond.o +spi-nor-$(CONFIG_MTD_SPI_NOR_XILINX) += xilinx.o +spi-nor-$(CONFIG_MTD_SPI_NOR_XMC) += xmc.o +spi-nor-$(CONFIG_MTD_SPI_NOR_XTX) += xtx.o spi-nor-$(CONFIG_DEBUG_FS) += debugfs.o obj-$(CONFIG_MTD_SPI_NOR) += spi-nor.o diff --git a/drivers/mtd/spi-nor/core.c b/drivers/mtd/spi-nor/core.c index f46420308c21..ba809b46cd4f 100644 --- a/drivers/mtd/spi-nor/core.c +++ b/drivers/mtd/spi-nor/core.c @@ -1753,29 +1753,75 @@ int spi_nor_sr2_bit2_quad_enable(struct spi_nor *nor) } static const struct spi_nor_manufacturer *manufacturers[] = { +#ifdef CONFIG_MTD_SPI_NOR_ATMEL &spi_nor_atmel, +#endif +#ifdef CONFIG_MTD_SPI_NOR_BOYA &spi_nor_boya, +#endif +#ifdef CONFIG_MTD_SPI_NOR_CATALYST &spi_nor_catalyst, +#endif +#ifdef CONFIG_MTD_SPI_NOR_DOSILICON &spi_nor_dosilicon, +#endif +#ifdef CONFIG_MTD_SPI_NOR_EON &spi_nor_eon, +#endif +#ifdef CONFIG_MTD_SPI_NOR_ESMT &spi_nor_esmt, +#endif +#ifdef CONFIG_MTD_SPI_NOR_EVERSPIN &spi_nor_everspin, +#endif +#ifdef CONFIG_MTD_SPI_NOR_FMSH &spi_nor_fmsh, +#endif +#ifdef CONFIG_MTD_SPI_NOR_FUJITSU &spi_nor_fujitsu, +#endif +#ifdef CONFIG_MTD_SPI_NOR_GIGADEVICE &spi_nor_gigadevice, +#endif +#ifdef CONFIG_MTD_SPI_NOR_NORMEM &spi_nor_normem, +#endif +#ifdef CONFIG_MTD_SPI_NOR_INTEL &spi_nor_intel, +#endif +#ifdef CONFIG_MTD_SPI_NOR_ISSI &spi_nor_issi, +#endif +#ifdef CONFIG_MTD_SPI_NOR_MACRONIX &spi_nor_macronix, +#endif +#ifdef CONFIG_MTD_SPI_NOR_STMICRO &spi_nor_micron, +#endif +#ifdef CONFIG_MTD_SPI_NOR_PUYA &spi_nor_puya, +#endif +#ifdef CONFIG_MTD_SPI_NOR_STMICRO &spi_nor_st, +#endif +#ifdef CONFIG_MTD_SPI_NOR_SPANSION &spi_nor_spansion, +#endif +#ifdef CONFIG_MTD_SPI_NOR_SST &spi_nor_sst, +#endif +#ifdef CONFIG_MTD_SPI_NOR_WINBOND &spi_nor_winbond, +#endif +#ifdef CONFIG_MTD_SPI_NOR_XILINX &spi_nor_xilinx, +#endif +#ifdef CONFIG_MTD_SPI_NOR_XMC &spi_nor_xmc, +#endif +#ifdef CONFIG_MTD_SPI_NOR_XTX &spi_nor_xtx, +#endif }; static const struct flash_info *spi_nor_match_id(struct spi_nor *nor,