Commit e233cc59 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'arm-soc-6.0' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc

Pull ARM SoC updates from Arnd Bergmann:
 "The updates for arch/arm/mach-* platform code this time are mainly
  minor cleanups.

  Most notably, the DaVinci DM644x/DM646x SoC support gets removed. This
  was also scheduled for later removal early next year, but Linus
  Walleij asked for having them removed earlier to avoid problems for
  the GPIO subsystem"

* tag 'arm-soc-6.0' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (38 commits)
  ARM: at91: setup outer cache .write_sec() callback if needed
  ARM: at91: add sam_linux_is_optee_available() function
  ARM: Marvell: Update PCIe fixup
  ARM: bcmbca: Include full family name in Kconfig
  ARM: bcm: NSP: Removed forced thermal selection
  ARM: debug: bcmbca: Replace ARCH_BCM_63XX with ARCH_BCMBCA
  arm: bcmbca: Add BCMBCA sub platforms
  arm: bcmbca: Move BCM63138 ARCH_BCM_63XX to ARCH_BCMBCA
  MAINTAINERS: Move BCM63138 to bcmbca arch entry
  ARM: shmobile: rcar-gen2: Increase refcount for new reference
  ARM: davinci: Delete DM646x board files
  ARM: davinci: Delete DM644x board files
  firmware: xilinx: Add TF_A_PM_REGISTER_SGI SMC call
  cpufreq: zynq: Fix refcount leak in zynq_get_revision
  ARM: OMAP2+: Kconfig: Fix indentation
  ARM: OMAP2+: Fix refcount leak in omap3xxx_prm_late_init
  ARM: OMAP2+: pdata-quirks: Fix refcount leak bug
  ARM: OMAP2+: display: Fix refcount leak bug
  ARM: OMAP2+: Fix refcount leak in omapdss_init_of
  ARM: imx25: support silicon revision 1.2
  ...
parents 9de1f9c8 755d0ebc
...@@ -3875,15 +3875,28 @@ BROADCOM BCMBCA ARM ARCHITECTURE ...@@ -3875,15 +3875,28 @@ BROADCOM BCMBCA ARM ARCHITECTURE
M: William Zhang <william.zhang@broadcom.com> M: William Zhang <william.zhang@broadcom.com>
M: Anand Gore <anand.gore@broadcom.com> M: Anand Gore <anand.gore@broadcom.com>
M: Kursad Oney <kursad.oney@broadcom.com> M: Kursad Oney <kursad.oney@broadcom.com>
M: Florian Fainelli <f.fainelli@gmail.com>
R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com> R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
S: Maintained S: Maintained
T: git git://github.com/broadcom/stblinux.git T: git git://github.com/broadcom/stblinux.git
F: Documentation/devicetree/bindings/arm/bcm/brcm,bcmbca.yaml F: Documentation/devicetree/bindings/arm/bcm/brcm,bcmbca.yaml
F: arch/arm/boot/dts/bcm47622.dtsi F: arch/arm64/boot/dts/broadcom/bcmbca/*
F: arch/arm/boot/dts/bcm947622.dts
N: bcmbca N: bcmbca
N: bcm[9]?47622 N: bcm[9]?47622
N: bcm[9]?4912
N: bcm[9]?63138
N: bcm[9]?63146
N: bcm[9]?63148
N: bcm[9]?63158
N: bcm[9]?63178
N: bcm[9]?6756
N: bcm[9]?6813
N: bcm[9]?6846
N: bcm[9]?6855
N: bcm[9]?6856
N: bcm[9]?6858
N: bcm[9]?6878
BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE
M: Florian Fainelli <f.fainelli@gmail.com> M: Florian Fainelli <f.fainelli@gmail.com>
...@@ -3959,14 +3972,6 @@ S: Maintained ...@@ -3959,14 +3972,6 @@ S: Maintained
F: arch/arm/boot/dts/bcm47189* F: arch/arm/boot/dts/bcm47189*
F: arch/arm/boot/dts/bcm53573* F: arch/arm/boot/dts/bcm53573*
BROADCOM BCM63XX ARM ARCHITECTURE
M: Florian Fainelli <f.fainelli@gmail.com>
R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
S: Maintained
T: git git://github.com/broadcom/stblinux.git
N: bcm63xx
BROADCOM BCM63XX/BCM33XX UDC DRIVER BROADCOM BCM63XX/BCM33XX UDC DRIVER
M: Kevin Cernekee <cernekee@gmail.com> M: Kevin Cernekee <cernekee@gmail.com>
L: linux-usb@vger.kernel.org L: linux-usb@vger.kernel.org
......
...@@ -271,7 +271,7 @@ choice ...@@ -271,7 +271,7 @@ choice
config DEBUG_BCM63XX_UART config DEBUG_BCM63XX_UART
bool "Kernel low-level debugging on BCM63XX UART" bool "Kernel low-level debugging on BCM63XX UART"
depends on ARCH_BCM_63XX depends on ARCH_BCMBCA
config DEBUG_BERLIN_UART config DEBUG_BERLIN_UART
bool "Marvell Berlin SoC Debug UART" bool "Marvell Berlin SoC Debug UART"
......
...@@ -27,6 +27,12 @@ struct arm_smccc_res sam_smccc_call(u32 fn, u32 arg0, u32 arg1) ...@@ -27,6 +27,12 @@ struct arm_smccc_res sam_smccc_call(u32 fn, u32 arg0, u32 arg1)
return res; return res;
} }
bool sam_linux_is_optee_available(void)
{
/* If optee has been detected, then we are running in normal world */
return optee_available;
}
void __init sam_secure_init(void) void __init sam_secure_init(void)
{ {
struct device_node *np; struct device_node *np;
......
...@@ -14,5 +14,6 @@ ...@@ -14,5 +14,6 @@
void __init sam_secure_init(void); void __init sam_secure_init(void);
struct arm_smccc_res sam_smccc_call(u32 fn, u32 arg0, u32 arg1); struct arm_smccc_res sam_smccc_call(u32 fn, u32 arg0, u32 arg1);
bool sam_linux_is_optee_available(void);
#endif /* SAM_SECURE_H */ #endif /* SAM_SECURE_H */
...@@ -9,13 +9,27 @@ ...@@ -9,13 +9,27 @@
#include <linux/of.h> #include <linux/of.h>
#include <linux/of_platform.h> #include <linux/of_platform.h>
#include <asm/hardware/cache-l2x0.h>
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
#include <asm/mach/map.h> #include <asm/mach/map.h>
#include <asm/outercache.h>
#include <asm/system_misc.h> #include <asm/system_misc.h>
#include "generic.h" #include "generic.h"
#include "sam_secure.h" #include "sam_secure.h"
static void sama5_l2c310_write_sec(unsigned long val, unsigned reg)
{
/* OP-TEE configures the L2 cache and does not allow modifying it yet */
}
static void __init sama5_secure_cache_init(void)
{
sam_secure_init();
if (sam_linux_is_optee_available())
outer_cache.write_sec = sama5_l2c310_write_sec;
}
static void __init sama5_dt_device_init(void) static void __init sama5_dt_device_init(void)
{ {
of_platform_default_populate(NULL, NULL, NULL); of_platform_default_populate(NULL, NULL, NULL);
...@@ -48,7 +62,6 @@ MACHINE_END ...@@ -48,7 +62,6 @@ MACHINE_END
static void __init sama5d2_init(void) static void __init sama5d2_init(void)
{ {
of_platform_default_populate(NULL, NULL, NULL); of_platform_default_populate(NULL, NULL, NULL);
sam_secure_init();
sama5d2_pm_init(); sama5d2_pm_init();
} }
...@@ -60,6 +73,7 @@ static const char *const sama5d2_compat[] __initconst = { ...@@ -60,6 +73,7 @@ static const char *const sama5d2_compat[] __initconst = {
DT_MACHINE_START(sama5d2, "Atmel SAMA5") DT_MACHINE_START(sama5d2, "Atmel SAMA5")
/* Maintainer: Atmel */ /* Maintainer: Atmel */
.init_machine = sama5d2_init, .init_machine = sama5d2_init,
.init_early = sama5_secure_cache_init,
.dt_compat = sama5d2_compat, .dt_compat = sama5d2_compat,
.l2c_aux_mask = ~0UL, .l2c_aux_mask = ~0UL,
MACHINE_END MACHINE_END
...@@ -54,8 +54,6 @@ config ARCH_BCM_NSP ...@@ -54,8 +54,6 @@ config ARCH_BCM_NSP
select ARM_ERRATA_775420 select ARM_ERRATA_775420
select ARM_ERRATA_764369 if SMP select ARM_ERRATA_764369 if SMP
select ARM_TIMER_SP804 select ARM_TIMER_SP804
select THERMAL
select THERMAL_OF
help help
Support for Broadcom Northstar Plus SoC. Support for Broadcom Northstar Plus SoC.
Broadcom Northstar Plus family of SoCs are used for switching control Broadcom Northstar Plus family of SoCs are used for switching control
...@@ -182,23 +180,6 @@ config ARCH_BCM_53573 ...@@ -182,23 +180,6 @@ config ARCH_BCM_53573
The base chip is BCM53573 and there are some packaging modifications The base chip is BCM53573 and there are some packaging modifications
like BCM47189 and BCM47452. like BCM47189 and BCM47452.
config ARCH_BCM_63XX
bool "Broadcom BCM63xx DSL SoC"
depends on ARCH_MULTI_V7
select ARCH_HAS_RESET_CONTROLLER
select ARM_ERRATA_754322
select ARM_ERRATA_764369 if SMP
select ARM_GIC
select ARM_GLOBAL_TIMER
select CACHE_L2X0
select HAVE_ARM_ARCH_TIMER
select HAVE_ARM_TWD if SMP
select HAVE_ARM_SCU if SMP
help
This enables support for systems based on Broadcom DSL SoCs.
It currently supports the 'BCM63XX' ARM-based family, which includes
the BCM63138 variant.
config ARCH_BRCMSTB config ARCH_BRCMSTB
bool "Broadcom BCM7XXX based boards" bool "Broadcom BCM7XXX based boards"
depends on ARCH_MULTI_V7 depends on ARCH_MULTI_V7
...@@ -218,8 +199,8 @@ config ARCH_BRCMSTB ...@@ -218,8 +199,8 @@ config ARCH_BRCMSTB
This enables support for Broadcom ARM-based set-top box chipsets, This enables support for Broadcom ARM-based set-top box chipsets,
including the 7445 family of chips. including the 7445 family of chips.
config ARCH_BCMBCA menuconfig ARCH_BCMBCA
bool "Broadcom Broadband SoC" bool "Broadcom Broadband Carrier Access (BCA) origin SoC"
depends on ARCH_MULTI_V7 depends on ARCH_MULTI_V7
select ARM_AMBA select ARM_AMBA
select ARM_GIC select ARM_GIC
...@@ -230,4 +211,46 @@ config ARCH_BCMBCA ...@@ -230,4 +211,46 @@ config ARCH_BCMBCA
This enables support for Broadcom BCA ARM-based broadband chipsets, This enables support for Broadcom BCA ARM-based broadband chipsets,
including the DSL, PON and Wireless family of chips. including the DSL, PON and Wireless family of chips.
comment "BCMBCA sub platforms"
if ARCH_BCMBCA
config ARCH_BCMBCA_CORTEXA7
bool "Cortex-A7 SoCs"
help
Say Y if you intend to run the kernel on a Broadcom Broadband ARM A7
based chipset.
This enables support for Broadcom BCA ARM A7 broadband chipsets,
including various DSL, PON and Wireless family of chips.
config ARCH_BCMBCA_CORTEXA9
bool "Cortex-A9 SoCS"
select ARM_ERRATA_754322
select ARM_ERRATA_764369 if SMP
select ARCH_HAS_RESET_CONTROLLER
select ARM_GLOBAL_TIMER
select CACHE_L2X0
select HAVE_ARM_TWD if SMP
select HAVE_ARM_SCU if SMP
help
Say Y if you intend to run the kernel on a Broadcom Broadband ARM A9
based BCA chipset.
This enables support for Broadcom BCA ARM A9 broadband chipset. Currently
only DSL chip BCM63138.
config ARCH_BCMBCA_BRAHMAB15
bool "Brahma-B15 SoCs"
select ARM_ERRATA_798181 if SMP
help
Say Y if you intend to run the kernel on a Broadcom Broadband ARM B15
based BCA chipset.
This enables support for Broadcom BCA ARM B15 broadband chipset. Currently
only DSL chip BCM63148.
endif
endif endif
...@@ -57,14 +57,13 @@ ifeq ($(CONFIG_ARCH_BCM_5301X),y) ...@@ -57,14 +57,13 @@ ifeq ($(CONFIG_ARCH_BCM_5301X),y)
obj-$(CONFIG_SMP) += platsmp.o obj-$(CONFIG_SMP) += platsmp.o
endif endif
# BCM63XXx
ifeq ($(CONFIG_ARCH_BCM_63XX),y)
obj-y += bcm63xx.o
obj-$(CONFIG_SMP) += bcm63xx_smp.o bcm63xx_pmb.o
endif
ifeq ($(CONFIG_ARCH_BRCMSTB),y) ifeq ($(CONFIG_ARCH_BRCMSTB),y)
CFLAGS_platsmp-brcmstb.o += -march=armv7-a CFLAGS_platsmp-brcmstb.o += -march=armv7-a
obj-y += brcmstb.o obj-y += brcmstb.o
obj-$(CONFIG_SMP) += platsmp-brcmstb.o obj-$(CONFIG_SMP) += platsmp-brcmstb.o
endif endif
# BCMBCA
ifeq ($(CONFIG_ARCH_BCMBCA),y)
obj-$(CONFIG_SMP) += bcm63xx_smp.o bcm63xx_pmb.o
endif
/*
* Copyright (C) 2014 Broadcom Corporation
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation version 2.
*
* This program is distributed "as is" WITHOUT ANY WARRANTY of any
* kind, whether express or implied; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <linux/of_platform.h>
#include <asm/mach/arch.h>
static const char * const bcm63xx_dt_compat[] = {
"brcm,bcm63138",
NULL
};
DT_MACHINE_START(BCM63XXX_DT, "BCM63xx DSL SoC")
.dt_compat = bcm63xx_dt_compat,
.l2c_aux_val = 0,
.l2c_aux_mask = ~0,
MACHINE_END
...@@ -52,6 +52,7 @@ int __init bcm_kona_smc_init(void) ...@@ -52,6 +52,7 @@ int __init bcm_kona_smc_init(void)
return -ENODEV; return -ENODEV;
prop_val = of_get_address(node, 0, &prop_size, NULL); prop_val = of_get_address(node, 0, &prop_size, NULL);
of_node_put(node);
if (!prop_val) if (!prop_val)
return -EINVAL; return -EINVAL;
......
...@@ -19,21 +19,11 @@ config ARCH_DAVINCI_DMx ...@@ -19,21 +19,11 @@ config ARCH_DAVINCI_DMx
comment "DaVinci Core Type" comment "DaVinci Core Type"
config ARCH_DAVINCI_DM644x
bool "DaVinci 644x based system"
select DAVINCI_AINTC
select ARCH_DAVINCI_DMx
config ARCH_DAVINCI_DM355 config ARCH_DAVINCI_DM355
bool "DaVinci 355 based system" bool "DaVinci 355 based system"
select DAVINCI_AINTC select DAVINCI_AINTC
select ARCH_DAVINCI_DMx select ARCH_DAVINCI_DMx
config ARCH_DAVINCI_DM646x
bool "DaVinci 646x based system"
select DAVINCI_AINTC
select ARCH_DAVINCI_DMx
config ARCH_DAVINCI_DA830 config ARCH_DAVINCI_DA830
bool "DA830/OMAP-L137/AM17x based system" bool "DA830/OMAP-L137/AM17x based system"
depends on !ARCH_DAVINCI_DMx || (AUTO_ZRELADDR && ARM_PATCH_PHYS_VIRT) depends on !ARCH_DAVINCI_DMx || (AUTO_ZRELADDR && ARM_PATCH_PHYS_VIRT)
...@@ -67,28 +57,6 @@ config MACH_DA8XX_DT ...@@ -67,28 +57,6 @@ config MACH_DA8XX_DT
Say y here to include support for TI DaVinci DA850 based using Say y here to include support for TI DaVinci DA850 based using
Flattened Device Tree. More information at Documentation/devicetree Flattened Device Tree. More information at Documentation/devicetree
config MACH_DAVINCI_EVM
bool "TI DM644x EVM"
default ARCH_DAVINCI_DM644x
depends on ARCH_DAVINCI_DM644x
help
Configure this option to specify the whether the board used
for development is a DM644x EVM
config MACH_SFFSDR
bool "Lyrtech SFFSDR"
depends on ARCH_DAVINCI_DM644x
help
Say Y here to select the Lyrtech Small Form Factor
Software Defined Radio (SFFSDR) board.
config MACH_NEUROS_OSD2
bool "Neuros OSD2 Open Television Set Top Box"
depends on ARCH_DAVINCI_DM644x
help
Configure this option to specify the whether the board used
for development is a Neuros OSD2 Open Set Top Box.
config MACH_DAVINCI_DM355_EVM config MACH_DAVINCI_DM355_EVM
bool "TI DM355 EVM" bool "TI DM355 EVM"
default ARCH_DAVINCI_DM355 default ARCH_DAVINCI_DM355
...@@ -104,18 +72,6 @@ config MACH_DM355_LEOPARD ...@@ -104,18 +72,6 @@ config MACH_DM355_LEOPARD
Configure this option to specify the whether the board used Configure this option to specify the whether the board used
for development is a DM355 Leopard board. for development is a DM355 Leopard board.
config MACH_DAVINCI_DM6467_EVM
bool "TI DM6467 EVM"
default ARCH_DAVINCI_DM646x
depends on ARCH_DAVINCI_DM646x
select MACH_DAVINCI_DM6467TEVM
help
Configure this option to specify the whether the board used
for development is a DM6467 EVM
config MACH_DAVINCI_DM6467TEVM
bool
config MACH_DAVINCI_DM365_EVM config MACH_DAVINCI_DM365_EVM
bool "TI DM365 EVM" bool "TI DM365 EVM"
default ARCH_DAVINCI_DM365 default ARCH_DAVINCI_DM365
......
...@@ -10,21 +10,15 @@ obj-y := serial.o usb.o common.o sram.o ...@@ -10,21 +10,15 @@ obj-y := serial.o usb.o common.o sram.o
obj-$(CONFIG_DAVINCI_MUX) += mux.o obj-$(CONFIG_DAVINCI_MUX) += mux.o
# Chip specific # Chip specific
obj-$(CONFIG_ARCH_DAVINCI_DM644x) += dm644x.o devices.o
obj-$(CONFIG_ARCH_DAVINCI_DM355) += dm355.o devices.o obj-$(CONFIG_ARCH_DAVINCI_DM355) += dm355.o devices.o
obj-$(CONFIG_ARCH_DAVINCI_DM646x) += dm646x.o devices.o
obj-$(CONFIG_ARCH_DAVINCI_DM365) += dm365.o devices.o obj-$(CONFIG_ARCH_DAVINCI_DM365) += dm365.o devices.o
obj-$(CONFIG_ARCH_DAVINCI_DA830) += da830.o devices-da8xx.o usb-da8xx.o obj-$(CONFIG_ARCH_DAVINCI_DA830) += da830.o devices-da8xx.o usb-da8xx.o
obj-$(CONFIG_ARCH_DAVINCI_DA850) += da850.o devices-da8xx.o usb-da8xx.o obj-$(CONFIG_ARCH_DAVINCI_DA850) += da850.o devices-da8xx.o usb-da8xx.o
# Board specific # Board specific
obj-$(CONFIG_MACH_DA8XX_DT) += da8xx-dt.o pdata-quirks.o obj-$(CONFIG_MACH_DA8XX_DT) += da8xx-dt.o pdata-quirks.o
obj-$(CONFIG_MACH_DAVINCI_EVM) += board-dm644x-evm.o
obj-$(CONFIG_MACH_SFFSDR) += board-sffsdr.o
obj-$(CONFIG_MACH_NEUROS_OSD2) += board-neuros-osd2.o
obj-$(CONFIG_MACH_DAVINCI_DM355_EVM) += board-dm355-evm.o obj-$(CONFIG_MACH_DAVINCI_DM355_EVM) += board-dm355-evm.o
obj-$(CONFIG_MACH_DM355_LEOPARD) += board-dm355-leopard.o obj-$(CONFIG_MACH_DM355_LEOPARD) += board-dm355-leopard.o
obj-$(CONFIG_MACH_DAVINCI_DM6467_EVM) += board-dm646x-evm.o
obj-$(CONFIG_MACH_DAVINCI_DM365_EVM) += board-dm365-evm.o obj-$(CONFIG_MACH_DAVINCI_DM365_EVM) += board-dm365-evm.o
obj-$(CONFIG_MACH_DAVINCI_DA830_EVM) += board-da830-evm.o obj-$(CONFIG_MACH_DAVINCI_DA830_EVM) += board-da830-evm.o
obj-$(CONFIG_MACH_DAVINCI_DA850_EVM) += board-da850-evm.o obj-$(CONFIG_MACH_DAVINCI_DA850_EVM) += board-da850-evm.o
......
This diff is collapsed.
This diff is collapsed.
/*
* Neuros Technologies OSD2 board support
*
* Modified from original 644X-EVM board support.
* 2008 (c) Neuros Technology, LLC.
* 2009 (c) Jorge Luis Zapata Muga <jorgeluis.zapata@gmail.com>
* 2009 (c) Andrey A. Porodko <Andrey.Porodko@gmail.com>
*
* The Neuros OSD 2.0 is the hardware component of the Neuros Open
* Internet Television Platform. Hardware is very close to TI
* DM644X-EVM board. It has:
* DM6446M02 module with 256MB NAND, 256MB RAM, TLV320AIC32 AIC,
* USB, Ethernet, SD/MMC, UART, THS8200, TVP7000 for video.
* Additionally realtime clock, IR remote control receiver,
* IR Blaster based on MSP430 (firmware although is different
* from used in DM644X-EVM), internal ATA-6 3.5” HDD drive
* with PATA interface, two muxed red-green leds.
*
* For more information please refer to
* http://wiki.neurostechnology.com/index.php/OSD_2.0_HD
*
* This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any
* warranty of any kind, whether express or implied.
*/
#include <linux/platform_device.h>
#include <linux/gpio.h>
#include <linux/leds.h>
#include <linux/mtd/partitions.h>
#include <linux/platform_data/gpio-davinci.h>
#include <linux/platform_data/i2c-davinci.h>
#include <linux/platform_data/mmc-davinci.h>
#include <linux/platform_data/mtd-davinci.h>
#include <linux/platform_data/usb-davinci.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include "common.h"
#include "serial.h"
#include "mux.h"
#include "davinci.h"
#define NEUROS_OSD2_PHY_ID "davinci_mdio-0:01"
#define LXT971_PHY_ID 0x001378e2
#define LXT971_PHY_MASK 0xfffffff0
#define NTOSD2_AUDIOSOC_I2C_ADDR 0x18
#define NTOSD2_MSP430_I2C_ADDR 0x59
#define NTOSD2_MSP430_IRQ 2
/* Neuros OSD2 has a Samsung 256 MByte NAND flash (Dev ID of 0xAA,
* 2048 blocks in the device, 64 pages per block, 2048 bytes per
* page.
*/
#define NAND_BLOCK_SIZE SZ_128K
static struct mtd_partition davinci_ntosd2_nandflash_partition[] = {
{
/* UBL (a few copies) plus U-Boot */
.name = "bootloader",
.offset = 0,
.size = 15 * NAND_BLOCK_SIZE,
.mask_flags = MTD_WRITEABLE, /* force read-only */
}, {
/* U-Boot environment */
.name = "params",
.offset = MTDPART_OFS_APPEND,
.size = 1 * NAND_BLOCK_SIZE,
.mask_flags = 0,
}, {
/* Kernel */
.name = "kernel",
.offset = MTDPART_OFS_APPEND,
.size = SZ_4M,
.mask_flags = 0,
}, {
/* File System */
.name = "filesystem",
.offset = MTDPART_OFS_APPEND,
.size = MTDPART_SIZ_FULL,
.mask_flags = 0,
}
/* A few blocks at end hold a flash Bad Block Table. */
};
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),
.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST,
.ecc_bits = 1,
.bbt_options = NAND_BBT_USE_FLASH,
};
static struct resource davinci_ntosd2_nandflash_resource[] = {
{
.start = DM644X_ASYNC_EMIF_DATA_CE0_BASE,
.end = DM644X_ASYNC_EMIF_DATA_CE0_BASE + SZ_16M - 1,
.flags = IORESOURCE_MEM,
}, {
.start = DM644X_ASYNC_EMIF_CONTROL_BASE,
.end = DM644X_ASYNC_EMIF_CONTROL_BASE + SZ_4K - 1,
.flags = IORESOURCE_MEM,
},
};
static struct platform_device davinci_ntosd2_nandflash_device = {
.name = "davinci_nand",
.id = 0,
.dev = {
.platform_data = &davinci_ntosd2_nandflash_data,
},
.num_resources = ARRAY_SIZE(davinci_ntosd2_nandflash_resource),
.resource = davinci_ntosd2_nandflash_resource,
};
static u64 davinci_fb_dma_mask = DMA_BIT_MASK(32);
static struct platform_device davinci_fb_device = {
.name = "davincifb",
.id = -1,
.dev = {
.dma_mask = &davinci_fb_dma_mask,
.coherent_dma_mask = DMA_BIT_MASK(32),
},
.num_resources = 0,
};
static const struct gpio_led ntosd2_leds[] = {
{ .name = "led1_green", .gpio = 10, },
{ .name = "led1_red", .gpio = 11, },
{ .name = "led2_green", .gpio = 12, },
{ .name = "led2_red", .gpio = 13, },
};
static struct gpio_led_platform_data ntosd2_leds_data = {
.num_leds = ARRAY_SIZE(ntosd2_leds),
.leds = ntosd2_leds,
};
static struct platform_device ntosd2_leds_dev = {
.name = "leds-gpio",
.id = -1,
.dev = {
.platform_data = &ntosd2_leds_data,
},
};
static struct platform_device *davinci_ntosd2_devices[] __initdata = {
&davinci_fb_device,
&ntosd2_leds_dev,
};
static void __init davinci_ntosd2_map_io(void)
{
dm644x_init();
}
static struct davinci_mmc_config davinci_ntosd2_mmc_config = {
.wires = 4,
};
#define HAS_ATA (IS_ENABLED(CONFIG_BLK_DEV_PALMCHIP_BK3710) || \
IS_ENABLED(CONFIG_PATA_BK3710))
#define HAS_NAND IS_ENABLED(CONFIG_MTD_NAND_DAVINCI)
static __init void davinci_ntosd2_init(void)
{
int ret;
struct clk *aemif_clk;
struct davinci_soc_info *soc_info = &davinci_soc_info;
dm644x_register_clocks();
dm644x_init_devices();
ret = dm644x_gpio_register();
if (ret)
pr_warn("%s: GPIO init failed: %d\n", __func__, ret);
aemif_clk = clk_get(NULL, "aemif");
clk_prepare_enable(aemif_clk);
if (HAS_ATA) {
if (HAS_NAND)
pr_warn("WARNING: both IDE and Flash are enabled, but they share AEMIF pins\n"
"\tDisable IDE for NAND/NOR support\n");
davinci_init_ide();
} else if (HAS_NAND) {
davinci_cfg_reg(DM644X_HPIEN_DISABLE);
davinci_cfg_reg(DM644X_ATAEN_DISABLE);
/* only one device will be jumpered and detected */
if (HAS_NAND)
platform_device_register(
&davinci_ntosd2_nandflash_device);
}
platform_add_devices(davinci_ntosd2_devices,
ARRAY_SIZE(davinci_ntosd2_devices));
davinci_serial_init(dm644x_serial_device);
dm644x_init_asp();
soc_info->emac_pdata->phy_id = NEUROS_OSD2_PHY_ID;
davinci_setup_usb(1000, 8);
/*
* Mux the pins to be GPIOs, VLYNQEN is already done at startup.
* The AEAWx are five new AEAW pins that can be muxed by separately.
* They are a bitmask for GPIO management. According TI
* documentation (https://www.ti.com/lit/gpn/tms320dm6446) to employ
* gpio(10,11,12,13) for leds any combination of bits works except
* four last. So we are to reset all five.
*/
davinci_cfg_reg(DM644X_AEAW0);
davinci_cfg_reg(DM644X_AEAW1);
davinci_cfg_reg(DM644X_AEAW2);
davinci_cfg_reg(DM644X_AEAW3);
davinci_cfg_reg(DM644X_AEAW4);
davinci_setup_mmc(0, &davinci_ntosd2_mmc_config);
}
MACHINE_START(NEUROS_OSD2, "Neuros OSD2")
/* Maintainer: Neuros Technologies <neuros@groups.google.com> */
.atag_offset = 0x100,
.map_io = davinci_ntosd2_map_io,
.init_irq = dm644x_init_irq,
.init_time = dm644x_init_time,
.init_machine = davinci_ntosd2_init,
.init_late = davinci_init_late,
.dma_zone_size = SZ_128M,
MACHINE_END
// SPDX-License-Identifier: GPL-2.0-or-later
/*
* Lyrtech SFFSDR board support.
*
* Copyright (C) 2008 Philip Balister, OpenSDR <philip@opensdr.com>
* Copyright (C) 2008 Lyrtech <www.lyrtech.com>
*
* Based on DV-EVM platform, original copyright follows:
*
* Copyright (C) 2007 MontaVista Software, Inc.
*/
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/i2c.h>
#include <linux/property.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/rawnand.h>
#include <linux/mtd/partitions.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <asm/mach/flash.h>
#include <linux/platform_data/i2c-davinci.h>
#include <linux/platform_data/usb-davinci.h>
#include "common.h"
#include "serial.h"
#include "mux.h"
#include "davinci.h"
#define SFFSDR_PHY_ID "davinci_mdio-0:01"
static struct mtd_partition davinci_sffsdr_nandflash_partition[] = {
/* U-Boot Environment: Block 0
* UBL: Block 1
* U-Boot: Blocks 6-7 (256 kb)
* Integrity Kernel: Blocks 8-31 (3 Mb)
* Integrity Data: Blocks 100-END
*/
{
.name = "Linux Kernel",
.offset = 32 * SZ_128K,
.size = 16 * SZ_128K, /* 2 Mb */
.mask_flags = MTD_WRITEABLE, /* Force read-only */
},
{
.name = "Linux ROOT",
.offset = MTDPART_OFS_APPEND,
.size = 256 * SZ_128K, /* 32 Mb */
.mask_flags = 0, /* R/W */
},
};
static struct flash_platform_data davinci_sffsdr_nandflash_data = {
.parts = davinci_sffsdr_nandflash_partition,
.nr_parts = ARRAY_SIZE(davinci_sffsdr_nandflash_partition),
};
static struct resource davinci_sffsdr_nandflash_resource[] = {
{
.start = DM644X_ASYNC_EMIF_DATA_CE0_BASE,
.end = DM644X_ASYNC_EMIF_DATA_CE0_BASE + SZ_16M - 1,
.flags = IORESOURCE_MEM,
}, {
.start = DM644X_ASYNC_EMIF_CONTROL_BASE,
.end = DM644X_ASYNC_EMIF_CONTROL_BASE + SZ_4K - 1,
.flags = IORESOURCE_MEM,
},
};
static struct platform_device davinci_sffsdr_nandflash_device = {
.name = "davinci_nand", /* Name of driver */
.id = 0,
.dev = {
.platform_data = &davinci_sffsdr_nandflash_data,
},
.num_resources = ARRAY_SIZE(davinci_sffsdr_nandflash_resource),
.resource = davinci_sffsdr_nandflash_resource,
};
static const struct property_entry eeprom_properties[] = {
PROPERTY_ENTRY_U32("pagesize", 32),
{ }
};
static const struct software_node eeprom_node = {
.properties = eeprom_properties,
};
static struct i2c_board_info __initdata i2c_info[] = {
{
I2C_BOARD_INFO("24c64", 0x50),
.swnode = &eeprom_node,
},
/* Other I2C devices:
* MSP430, addr 0x23 (not used)
* PCA9543, addr 0x70 (setup done by U-Boot)
* ADS7828, addr 0x48 (ADC for voltage monitoring.)
*/
};
static struct davinci_i2c_platform_data i2c_pdata = {
.bus_freq = 20 /* kHz */,
.bus_delay = 100 /* usec */,
};
static void __init sffsdr_init_i2c(void)
{
davinci_init_i2c(&i2c_pdata);
i2c_register_board_info(1, i2c_info, ARRAY_SIZE(i2c_info));
}
static struct platform_device *davinci_sffsdr_devices[] __initdata = {
&davinci_sffsdr_nandflash_device,
};
static void __init davinci_sffsdr_map_io(void)
{
dm644x_init();
}
static __init void davinci_sffsdr_init(void)
{
struct davinci_soc_info *soc_info = &davinci_soc_info;
dm644x_register_clocks();
dm644x_init_devices();
platform_add_devices(davinci_sffsdr_devices,
ARRAY_SIZE(davinci_sffsdr_devices));
sffsdr_init_i2c();
davinci_serial_init(dm644x_serial_device);
soc_info->emac_pdata->phy_id = SFFSDR_PHY_ID;
davinci_setup_usb(0, 0); /* We support only peripheral mode. */
/* mux VLYNQ pins */
davinci_cfg_reg(DM644X_VLYNQEN);
davinci_cfg_reg(DM644X_VLYNQWD);
}
MACHINE_START(SFFSDR, "Lyrtech SFFSDR")
.atag_offset = 0x100,
.map_io = davinci_sffsdr_map_io,
.init_irq = dm644x_init_irq,
.init_time = dm644x_init_time,
.init_machine = davinci_sffsdr_init,
.init_late = davinci_init_late,
.dma_zone_size = SZ_128M,
MACHINE_END
This diff is collapsed.
This diff is collapsed.
...@@ -8,6 +8,7 @@ menuconfig ARCH_DOVE ...@@ -8,6 +8,7 @@ menuconfig ARCH_DOVE
select PINCTRL_DOVE select PINCTRL_DOVE
select PLAT_ORION_LEGACY select PLAT_ORION_LEGACY
select PM_GENERIC_DOMAINS if PM select PM_GENERIC_DOMAINS if PM
select PCI_QUIRKS if PCI
help help
Support for the Marvell Dove SoC 88AP510 Support for the Marvell Dove SoC 88AP510
......
...@@ -136,14 +136,19 @@ static struct pci_ops pcie_ops = { ...@@ -136,14 +136,19 @@ static struct pci_ops pcie_ops = {
.write = pcie_wr_conf, .write = pcie_wr_conf,
}; };
/*
* The root complex has a hardwired class of PCI_CLASS_MEMORY_OTHER, when it
* is operating as a root complex this needs to be switched to
* PCI_CLASS_BRIDGE_HOST or Linux will errantly try to process the BAR's on
* the device. Decoding setup is handled by the orion code.
*/
static void rc_pci_fixup(struct pci_dev *dev) static void rc_pci_fixup(struct pci_dev *dev)
{ {
/*
* Prevent enumeration of root complex.
*/
if (dev->bus->parent == NULL && dev->devfn == 0) { if (dev->bus->parent == NULL && dev->devfn == 0) {
int i; int i;
dev->class &= 0xff;
dev->class |= PCI_CLASS_BRIDGE_HOST << 8;
for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) { for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) {
dev->resource[i].start = 0; dev->resource[i].start = 0;
dev->resource[i].end = 0; dev->resource[i].end = 0;
......
...@@ -96,7 +96,7 @@ config SOC_IMX5 ...@@ -96,7 +96,7 @@ config SOC_IMX5
select HAVE_IMX_SRC select HAVE_IMX_SRC
select MXC_TZIC select MXC_TZIC
config SOC_IMX50 config SOC_IMX50
bool "i.MX50 support" bool "i.MX50 support"
select PINCTRL_IMX50 select PINCTRL_IMX50
select SOC_IMX5 select SOC_IMX5
...@@ -111,7 +111,7 @@ config SOC_IMX51 ...@@ -111,7 +111,7 @@ config SOC_IMX51
help help
This enables support for Freescale i.MX51 processor This enables support for Freescale i.MX51 processor
config SOC_IMX53 config SOC_IMX53
bool "i.MX53 support" bool "i.MX53 support"
select PINCTRL_IMX53 select PINCTRL_IMX53
select SOC_IMX5 select SOC_IMX5
...@@ -216,7 +216,7 @@ config SOC_IMX7D ...@@ -216,7 +216,7 @@ config SOC_IMX7D
select SOC_IMX7D_CM4 if ARM_SINGLE_ARMV7M select SOC_IMX7D_CM4 if ARM_SINGLE_ARMV7M
select ARM_ERRATA_814220 if ARCH_MULTI_V7 select ARM_ERRATA_814220 if ARCH_MULTI_V7
help help
This enables support for Freescale i.MX7 Dual processor. This enables support for Freescale i.MX7 Dual processor.
config SOC_IMX7ULP config SOC_IMX7ULP
bool "i.MX7ULP support" bool "i.MX7ULP support"
......
...@@ -32,6 +32,8 @@ static int mx25_read_cpu_rev(void) ...@@ -32,6 +32,8 @@ static int mx25_read_cpu_rev(void)
return IMX_CHIP_REVISION_1_0; return IMX_CHIP_REVISION_1_0;
case 0x01: case 0x01:
return IMX_CHIP_REVISION_1_1; return IMX_CHIP_REVISION_1_1;
case 0x02:
return IMX_CHIP_REVISION_1_2;
default: default:
return IMX_CHIP_REVISION_UNKNOWN; return IMX_CHIP_REVISION_UNKNOWN;
} }
......
...@@ -180,14 +180,19 @@ static struct pci_ops pcie_ops = { ...@@ -180,14 +180,19 @@ static struct pci_ops pcie_ops = {
.write = pcie_wr_conf, .write = pcie_wr_conf,
}; };
/*
* The root complex has a hardwired class of PCI_CLASS_MEMORY_OTHER, when it
* is operating as a root complex this needs to be switched to
* PCI_CLASS_BRIDGE_HOST or Linux will errantly try to process the BAR's on
* the device. Decoding setup is handled by the orion code.
*/
static void rc_pci_fixup(struct pci_dev *dev) static void rc_pci_fixup(struct pci_dev *dev)
{ {
/*
* Prevent enumeration of root complex.
*/
if (dev->bus->parent == NULL && dev->devfn == 0) { if (dev->bus->parent == NULL && dev->devfn == 0) {
int i; int i;
dev->class &= 0xff;
dev->class |= PCI_CLASS_BRIDGE_HOST << 8;
for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) { for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) {
dev->resource[i].start = 0; dev->resource[i].start = 0;
dev->resource[i].end = 0; dev->resource[i].end = 0;
......
...@@ -123,7 +123,7 @@ config ARCH_OMAP2PLUS ...@@ -123,7 +123,7 @@ config ARCH_OMAP2PLUS
config OMAP_INTERCONNECT_BARRIER config OMAP_INTERCONNECT_BARRIER
bool bool
select ARM_HEAVY_MB select ARM_HEAVY_MB
config ARCH_OMAP config ARCH_OMAP
bool bool
...@@ -243,10 +243,10 @@ config MACH_OMAP2_TUSB6010 ...@@ -243,10 +243,10 @@ config MACH_OMAP2_TUSB6010
default y if MACH_NOKIA_N8X0 default y if MACH_NOKIA_N8X0
config MACH_NOKIA_N810 config MACH_NOKIA_N810
bool bool
config MACH_NOKIA_N810_WIMAX config MACH_NOKIA_N810_WIMAX
bool bool
config MACH_NOKIA_N8X0 config MACH_NOKIA_N8X0
bool "Nokia N800/N810" bool "Nokia N800/N810"
......
...@@ -211,6 +211,7 @@ static int __init omapdss_init_fbdev(void) ...@@ -211,6 +211,7 @@ static int __init omapdss_init_fbdev(void)
node = of_find_node_by_name(NULL, "omap4_padconf_global"); node = of_find_node_by_name(NULL, "omap4_padconf_global");
if (node) if (node)
omap4_dsi_mux_syscon = syscon_node_to_regmap(node); omap4_dsi_mux_syscon = syscon_node_to_regmap(node);
of_node_put(node);
return 0; return 0;
} }
...@@ -259,11 +260,13 @@ static int __init omapdss_init_of(void) ...@@ -259,11 +260,13 @@ static int __init omapdss_init_of(void)
if (!pdev) { if (!pdev) {
pr_err("Unable to find DSS platform device\n"); pr_err("Unable to find DSS platform device\n");
of_node_put(node);
return -ENODEV; return -ENODEV;
} }
r = of_platform_populate(node, NULL, NULL, &pdev->dev); r = of_platform_populate(node, NULL, NULL, &pdev->dev);
put_device(&pdev->dev); put_device(&pdev->dev);
of_node_put(node);
if (r) { if (r) {
pr_err("Unable to populate DSS submodule devices\n"); pr_err("Unable to populate DSS submodule devices\n");
return r; return r;
......
...@@ -540,6 +540,8 @@ pdata_quirks_init_clocks(const struct of_device_id *omap_dt_match_table) ...@@ -540,6 +540,8 @@ pdata_quirks_init_clocks(const struct of_device_id *omap_dt_match_table)
of_platform_populate(np, omap_dt_match_table, of_platform_populate(np, omap_dt_match_table,
omap_auxdata_lookup, NULL); omap_auxdata_lookup, NULL);
of_node_put(np);
} }
} }
......
...@@ -708,6 +708,7 @@ static int omap3xxx_prm_late_init(void) ...@@ -708,6 +708,7 @@ static int omap3xxx_prm_late_init(void)
} }
irq_num = of_irq_get(np, 0); irq_num = of_irq_get(np, 0);
of_node_put(np);
if (irq_num == -EPROBE_DEFER) if (irq_num == -EPROBE_DEFER)
return irq_num; return irq_num;
......
...@@ -7,6 +7,7 @@ menuconfig ARCH_ORION5X ...@@ -7,6 +7,7 @@ menuconfig ARCH_ORION5X
select GPIOLIB select GPIOLIB
select MVEBU_MBUS select MVEBU_MBUS
select FORCE_PCI select FORCE_PCI
select PCI_QUIRKS
select PHYLIB if NETDEVICES select PHYLIB if NETDEVICES
select PLAT_ORION_LEGACY select PLAT_ORION_LEGACY
help help
......
...@@ -515,14 +515,20 @@ static int __init pci_setup(struct pci_sys_data *sys) ...@@ -515,14 +515,20 @@ static int __init pci_setup(struct pci_sys_data *sys)
/***************************************************************************** /*****************************************************************************
* General PCIe + PCI * General PCIe + PCI
****************************************************************************/ ****************************************************************************/
/*
* The root complex has a hardwired class of PCI_CLASS_MEMORY_OTHER, when it
* is operating as a root complex this needs to be switched to
* PCI_CLASS_BRIDGE_HOST or Linux will errantly try to process the BAR's on
* the device. Decoding setup is handled by the orion code.
*/
static void rc_pci_fixup(struct pci_dev *dev) static void rc_pci_fixup(struct pci_dev *dev)
{ {
/*
* Prevent enumeration of root complex.
*/
if (dev->bus->parent == NULL && dev->devfn == 0) { if (dev->bus->parent == NULL && dev->devfn == 0) {
int i; int i;
dev->class &= 0xff;
dev->class |= PCI_CLASS_BRIDGE_HOST << 8;
for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) { for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) {
dev->resource[i].start = 0; dev->resource[i].start = 0;
dev->resource[i].end = 0; dev->resource[i].end = 0;
......
...@@ -43,12 +43,12 @@ config SAMSUNG_ATAGS ...@@ -43,12 +43,12 @@ config SAMSUNG_ATAGS
def_bool n def_bool n
depends on ATAGS depends on ATAGS
help help
This option enables ATAGS based boot support code for This option enables ATAGS based boot support code for
Samsung platforms, including static platform devices, legacy Samsung platforms, including static platform devices, legacy
clock, timer and interrupt initialization, etc. clock, timer and interrupt initialization, etc.
Platforms that support only DT based boot need not to select Platforms that support only DT based boot need not to select
this option. this option.
if SAMSUNG_ATAGS if SAMSUNG_ATAGS
...@@ -102,7 +102,7 @@ config S3C_DEV_HSMMC3 ...@@ -102,7 +102,7 @@ config S3C_DEV_HSMMC3
config S3C_DEV_HWMON config S3C_DEV_HWMON
bool bool
help help
Compile in platform device definitions for HWMON Compile in platform device definitions for HWMON
config S3C_DEV_I2C1 config S3C_DEV_I2C1
bool bool
...@@ -194,7 +194,7 @@ config S3C64XX_DEV_SPI0 ...@@ -194,7 +194,7 @@ config S3C64XX_DEV_SPI0
config SAMSUNG_DEV_TS config SAMSUNG_DEV_TS
bool bool
help help
Common in platform device definitions for touchscreen device Common in platform device definitions for touchscreen device
config SAMSUNG_DEV_KEYPAD config SAMSUNG_DEV_KEYPAD
bool bool
......
...@@ -37,8 +37,6 @@ config PLAT_S3C24XX ...@@ -37,8 +37,6 @@ config PLAT_S3C24XX
help help
Base platform code for any Samsung S3C24XX device Base platform code for any Samsung S3C24XX device
menu "Samsung S3C24XX SoCs Support" menu "Samsung S3C24XX SoCs Support"
comment "S3C24XX SoCs" comment "S3C24XX SoCs"
...@@ -293,7 +291,7 @@ config MACH_VR1000 ...@@ -293,7 +291,7 @@ config MACH_VR1000
help help
Say Y here if you are using the Thorcom VR1000 board. Say Y here if you are using the Thorcom VR1000 board.
endif # CPU_S3C2410 endif # CPU_S3C2410
config S3C2412_PM_SLEEP config S3C2412_PM_SLEEP
bool bool
...@@ -367,7 +365,7 @@ config MACH_VSTMS ...@@ -367,7 +365,7 @@ config MACH_VSTMS
help help
Say Y here if you are using an VSTMS board Say Y here if you are using an VSTMS board
endif # CPU_S3C2412 endif # CPU_S3C2412
if CPU_S3C2416 if CPU_S3C2416
...@@ -415,7 +413,7 @@ config MACH_S3C2416_DT ...@@ -415,7 +413,7 @@ config MACH_S3C2416_DT
Note: This is under development and not all peripherals can be supported Note: This is under development and not all peripherals can be supported
with this machine file. with this machine file.
endif # CPU_S3C2416 endif # CPU_S3C2416
if CPU_S3C2440 || CPU_S3C2442 if CPU_S3C2440 || CPU_S3C2442
...@@ -444,7 +442,7 @@ config S3C2440_PLL_16934400 ...@@ -444,7 +442,7 @@ config S3C2440_PLL_16934400
default y if S3C24XX_PLL default y if S3C24XX_PLL
help help
PLL tables for S3C2440 or S3C2442 CPUs with 16.934MHz crystals. PLL tables for S3C2440 or S3C2442 CPUs with 16.934MHz crystals.
endif endif # CPU_S3C2440 || CPU_S3C2442
if CPU_S3C2440 if CPU_S3C2440
...@@ -540,7 +538,7 @@ config SMDK2440_CPU2440 ...@@ -540,7 +538,7 @@ config SMDK2440_CPU2440
default y if ARCH_S3C2440 default y if ARCH_S3C2440
select S3C2440_XTAL_16934400 select S3C2440_XTAL_16934400
endif # CPU_S3C2440 endif # CPU_S3C2440
if CPU_S3C2442 if CPU_S3C2442
...@@ -559,7 +557,7 @@ config MACH_NEO1973_GTA02 ...@@ -559,7 +557,7 @@ config MACH_NEO1973_GTA02
select POWER_SUPPLY select POWER_SUPPLY
select S3C_DEV_USB_HOST select S3C_DEV_USB_HOST
help help
Say Y here if you are using the Openmoko GTA02 / Freerunner GSM Phone Say Y here if you are using the Openmoko GTA02 / Freerunner GSM Phone
config MACH_RX1950 config MACH_RX1950
bool "HP iPAQ rx1950" bool "HP iPAQ rx1950"
...@@ -570,9 +568,9 @@ config MACH_RX1950 ...@@ -570,9 +568,9 @@ config MACH_RX1950
select S3C2440_XTAL_16934400 select S3C2440_XTAL_16934400
select S3C_DEV_NAND select S3C_DEV_NAND
help help
Say Y here if you're using HP iPAQ rx1950 Say Y here if you're using HP iPAQ rx1950
endif # CPU_S3C2442 endif # CPU_S3C2442
if CPU_S3C2443 || CPU_S3C2416 if CPU_S3C2443 || CPU_S3C2416
...@@ -581,7 +579,7 @@ config S3C2443_SETUP_SPI ...@@ -581,7 +579,7 @@ config S3C2443_SETUP_SPI
help help
Common setup code for SPI GPIO configurations Common setup code for SPI GPIO configurations
endif # CPU_S3C2443 || CPU_S3C2416 endif # CPU_S3C2443 || CPU_S3C2416
if CPU_S3C2443 if CPU_S3C2443
...@@ -594,13 +592,13 @@ config MACH_SMDK2443 ...@@ -594,13 +592,13 @@ config MACH_SMDK2443
help help
Say Y here if you are using an SMDK2443 Say Y here if you are using an SMDK2443
endif # CPU_S3C2443 endif # CPU_S3C2443
config PM_H1940 config PM_H1940
bool bool
help help
Internal node for H1940 and related PM Internal node for H1940 and related PM
endmenu # Samsung S3C24XX SoCs Support endmenu # "Samsung S3C24XX SoCs Support"
endif # ARCH_S3C24XX endif # ARCH_S3C24XX
...@@ -104,7 +104,7 @@ config S3C64XX_SETUP_SDHCI_GPIO ...@@ -104,7 +104,7 @@ config S3C64XX_SETUP_SDHCI_GPIO
config S3C64XX_SETUP_SPI config S3C64XX_SETUP_SPI
bool bool
help help
Common setup code for SPI GPIO configurations Common setup code for SPI GPIO configurations
config S3C64XX_SETUP_USB_PHY config S3C64XX_SETUP_USB_PHY
bool bool
...@@ -114,7 +114,7 @@ config S3C64XX_SETUP_USB_PHY ...@@ -114,7 +114,7 @@ config S3C64XX_SETUP_USB_PHY
# S36400 Macchine support # S36400 Macchine support
config MACH_SMDK6400 config MACH_SMDK6400
bool "SMDK6400" bool "SMDK6400"
depends on ATAGS depends on ATAGS
select CPU_S3C6400 select CPU_S3C6400
select S3C64XX_SETUP_SDHCI select S3C64XX_SETUP_SDHCI
...@@ -205,7 +205,7 @@ config SMDK6410_SD_CH0 ...@@ -205,7 +205,7 @@ config SMDK6410_SD_CH0
bool "Use channel 0 only" bool "Use channel 0 only"
depends on MACH_SMDK6410 depends on MACH_SMDK6410
help help
Select CON7 (channel 0) as the MMC/SD slot, as Select CON7 (channel 0) as the MMC/SD slot, as
at least some SMDK6410 boards come with the at least some SMDK6410 boards come with the
resistors fitted so that the card detects for resistors fitted so that the card detects for
channels 0 and 1 are the same. channels 0 and 1 are the same.
...@@ -214,7 +214,7 @@ config SMDK6410_SD_CH1 ...@@ -214,7 +214,7 @@ config SMDK6410_SD_CH1
bool "Use channel 1 only" bool "Use channel 1 only"
depends on MACH_SMDK6410 depends on MACH_SMDK6410
help help
Select CON6 (channel 1) as the MMC/SD slot, as Select CON6 (channel 1) as the MMC/SD slot, as
at least some SMDK6410 boards come with the at least some SMDK6410 boards come with the
resistors fitted so that the card detects for resistors fitted so that the card detects for
channels 0 and 1 are the same. channels 0 and 1 are the same.
...@@ -260,7 +260,7 @@ config MACH_NCP ...@@ -260,7 +260,7 @@ config MACH_NCP
select S3C_DEV_HSMMC1 select S3C_DEV_HSMMC1
select S3C_DEV_I2C1 select S3C_DEV_I2C1
help help
Machine support for the Samsung NCP Machine support for the Samsung NCP
config MACH_HMT config MACH_HMT
bool "Airgoo HMT" bool "Airgoo HMT"
...@@ -292,21 +292,21 @@ config MACH_SMARTQ ...@@ -292,21 +292,21 @@ config MACH_SMARTQ
select SAMSUNG_DEV_PWM select SAMSUNG_DEV_PWM
select SAMSUNG_DEV_TS select SAMSUNG_DEV_TS
help help
Shared machine support for SmartQ 5/7 Shared machine support for SmartQ 5/7
config MACH_SMARTQ5 config MACH_SMARTQ5
bool "SmartQ 5" bool "SmartQ 5"
depends on ATAGS depends on ATAGS
select MACH_SMARTQ select MACH_SMARTQ
help help
Machine support for the SmartQ 5 Machine support for the SmartQ 5
config MACH_SMARTQ7 config MACH_SMARTQ7
bool "SmartQ 7" bool "SmartQ 7"
depends on ATAGS depends on ATAGS
select MACH_SMARTQ select MACH_SMARTQ
help help
Machine support for the SmartQ 7 Machine support for the SmartQ 7
config MACH_WLF_CRAGG_6410 config MACH_WLF_CRAGG_6410
bool "Wolfson Cragganmore 6410" bool "Wolfson Cragganmore 6410"
......
...@@ -624,7 +624,7 @@ static char mini2440_features_str[12] __initdata = "0tb"; ...@@ -624,7 +624,7 @@ static char mini2440_features_str[12] __initdata = "0tb";
static int __init mini2440_features_setup(char *str) static int __init mini2440_features_setup(char *str)
{ {
if (str) if (str)
strlcpy(mini2440_features_str, str, strscpy(mini2440_features_str, str,
sizeof(mini2440_features_str)); sizeof(mini2440_features_str));
return 1; return 1;
} }
......
...@@ -125,6 +125,7 @@ static int regulator_quirk_notify(struct notifier_block *nb, ...@@ -125,6 +125,7 @@ static int regulator_quirk_notify(struct notifier_block *nb,
list_for_each_entry_safe(pos, tmp, &quirk_list, list) { list_for_each_entry_safe(pos, tmp, &quirk_list, list) {
list_del(&pos->list); list_del(&pos->list);
of_node_put(pos->np);
kfree(pos); kfree(pos);
} }
...@@ -174,11 +175,12 @@ static int __init rcar_gen2_regulator_quirk(void) ...@@ -174,11 +175,12 @@ static int __init rcar_gen2_regulator_quirk(void)
memcpy(&quirk->i2c_msg, id->data, sizeof(quirk->i2c_msg)); memcpy(&quirk->i2c_msg, id->data, sizeof(quirk->i2c_msg));
quirk->id = id; quirk->id = id;
quirk->np = np; quirk->np = of_node_get(np);
quirk->i2c_msg.addr = addr; quirk->i2c_msg.addr = addr;
ret = of_irq_parse_one(np, 0, argsa); ret = of_irq_parse_one(np, 0, argsa);
if (ret) { /* Skip invalid entry and continue */ if (ret) { /* Skip invalid entry and continue */
of_node_put(np);
kfree(quirk); kfree(quirk);
continue; continue;
} }
...@@ -225,6 +227,7 @@ static int __init rcar_gen2_regulator_quirk(void) ...@@ -225,6 +227,7 @@ static int __init rcar_gen2_regulator_quirk(void)
err_mem: err_mem:
list_for_each_entry_safe(pos, tmp, &quirk_list, list) { list_for_each_entry_safe(pos, tmp, &quirk_list, list) {
list_del(&pos->list); list_del(&pos->list);
of_node_put(pos->np);
kfree(pos); kfree(pos);
} }
......
...@@ -77,6 +77,7 @@ static int __init zynq_get_revision(void) ...@@ -77,6 +77,7 @@ static int __init zynq_get_revision(void)
} }
zynq_devcfg_base = of_iomap(np, 0); zynq_devcfg_base = of_iomap(np, 0);
of_node_put(np);
if (!zynq_devcfg_base) { if (!zynq_devcfg_base) {
pr_err("%s: Unable to map I/O memory\n", __func__); pr_err("%s: Unable to map I/O memory\n", __func__);
return -1; return -1;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
/* /*
* Xilinx Zynq MPSoC Firmware layer * Xilinx Zynq MPSoC Firmware layer
* *
* Copyright (C) 2014-2021 Xilinx, Inc. * Copyright (C) 2014-2022 Xilinx, Inc.
* *
* Michal Simek <michal.simek@xilinx.com> * Michal Simek <michal.simek@xilinx.com>
* Davorin Mista <davorin.mista@aggios.com> * Davorin Mista <davorin.mista@aggios.com>
...@@ -340,6 +340,20 @@ int zynqmp_pm_invoke_fn(u32 pm_api_id, u32 arg0, u32 arg1, ...@@ -340,6 +340,20 @@ int zynqmp_pm_invoke_fn(u32 pm_api_id, u32 arg0, u32 arg1,
static u32 pm_api_version; static u32 pm_api_version;
static u32 pm_tz_version; static u32 pm_tz_version;
int zynqmp_pm_register_sgi(u32 sgi_num, u32 reset)
{
int ret;
ret = zynqmp_pm_invoke_fn(TF_A_PM_REGISTER_SGI, sgi_num, reset, 0, 0,
NULL);
if (!ret)
return ret;
/* try old implementation as fallback strategy if above fails */
return zynqmp_pm_invoke_fn(PM_IOCTL, 0, IOCTL_REGISTER_SGI, sgi_num,
reset, NULL);
}
/** /**
* zynqmp_pm_get_api_version() - Get version number of PMU PM firmware * zynqmp_pm_get_api_version() - Get version number of PMU PM firmware
* @version: Returned version value * @version: Returned version value
......
...@@ -647,8 +647,7 @@ static int xlnx_event_manager_probe(struct platform_device *pdev) ...@@ -647,8 +647,7 @@ static int xlnx_event_manager_probe(struct platform_device *pdev)
cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "soc/event:starting", cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "soc/event:starting",
xlnx_event_cpuhp_start, xlnx_event_cpuhp_down); xlnx_event_cpuhp_start, xlnx_event_cpuhp_down);
ret = zynqmp_pm_invoke_fn(PM_IOCTL, 0, IOCTL_REGISTER_SGI, sgi_num, ret = zynqmp_pm_register_sgi(sgi_num, 0);
0, NULL);
if (ret) { if (ret) {
dev_err(&pdev->dev, "SGI %d Registration over TF-A failed with %d\n", sgi_num, ret); dev_err(&pdev->dev, "SGI %d Registration over TF-A failed with %d\n", sgi_num, ret);
xlnx_event_cleanup_sgi(pdev); xlnx_event_cleanup_sgi(pdev);
...@@ -681,7 +680,7 @@ static int xlnx_event_manager_remove(struct platform_device *pdev) ...@@ -681,7 +680,7 @@ static int xlnx_event_manager_remove(struct platform_device *pdev)
kfree(eve_data); kfree(eve_data);
} }
ret = zynqmp_pm_invoke_fn(PM_IOCTL, 0, IOCTL_REGISTER_SGI, 0, 1, NULL); ret = zynqmp_pm_register_sgi(0, 1);
if (ret) if (ret)
dev_err(&pdev->dev, "SGI unregistration over TF-A failed with %d\n", ret); dev_err(&pdev->dev, "SGI unregistration over TF-A failed with %d\n", ret);
......
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
#define PM_API_VERSION_2 2 #define PM_API_VERSION_2 2
/* ATF only commands */ /* ATF only commands */
#define TF_A_PM_REGISTER_SGI 0xa04
#define PM_GET_TRUSTZONE_VERSION 0xa03 #define PM_GET_TRUSTZONE_VERSION 0xa03
#define PM_SET_SUSPEND_MODE 0xa02 #define PM_SET_SUSPEND_MODE 0xa02
#define GET_CALLBACK_DATA 0xa01 #define GET_CALLBACK_DATA 0xa01
...@@ -468,6 +469,7 @@ int zynqmp_pm_feature(const u32 api_id); ...@@ -468,6 +469,7 @@ int zynqmp_pm_feature(const u32 api_id);
int zynqmp_pm_is_function_supported(const u32 api_id, const u32 id); int zynqmp_pm_is_function_supported(const u32 api_id, const u32 id);
int zynqmp_pm_set_feature_config(enum pm_feature_config_id id, u32 value); int zynqmp_pm_set_feature_config(enum pm_feature_config_id id, u32 value);
int zynqmp_pm_get_feature_config(enum pm_feature_config_id id, u32 *payload); int zynqmp_pm_get_feature_config(enum pm_feature_config_id id, u32 *payload);
int zynqmp_pm_register_sgi(u32 sgi_num, u32 reset);
#else #else
static inline int zynqmp_pm_get_api_version(u32 *version) static inline int zynqmp_pm_get_api_version(u32 *version)
{ {
...@@ -733,6 +735,11 @@ static inline int zynqmp_pm_get_feature_config(enum pm_feature_config_id id, ...@@ -733,6 +735,11 @@ static inline int zynqmp_pm_get_feature_config(enum pm_feature_config_id id,
{ {
return -ENODEV; return -ENODEV;
} }
static inline int zynqmp_pm_register_sgi(u32 sgi_num, u32 reset)
{
return -ENODEV;
}
#endif #endif
#endif /* __FIRMWARE_ZYNQMP_H__ */ #endif /* __FIRMWARE_ZYNQMP_H__ */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment