ARM: SoC non-critical bug fixes for 3.19
These are bug fixes for harmless problems that were not important enough to get fixed in 3.19. This contains updates to the MAINTAINERS file, in particular: - Ben Dooks stepped down as Samsung co-maintainer (thanks Ben for long years of maintaining this). Kukjin Kim, who has been doing the work de-facto by himself recently is now the only maintainer. - Liviu, Sudeep and Lorenzo from ARM now officially maintain the Versatile Express platform, which was orphaned (thanks for - Gregory Fong and Florian Fainelli help out on the Broadcom BCM7XXX platform - Ray Jui and Scott Branden are the future maintainers for the newly merged Broadcom Cygnus platform. Welcome! In terms of actual fixes, we have the usual set of OMAP bug fixes, which Tony Lindgren separates out well from the other OMAP changes, one really ep93xx regression fix against 3.11 that didn't make it for 3.18, a few GIC changes from Marc Zyngier as a preparation for later rework (the current code is wrong in a harmless way), on Tegra regression and one samsung spelling fix. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iQIVAwUAVIcj22CrR//JCVInAQJyXg/9EPrOpgNBpcCE2pfprc2JmoBqM11C8IDX 1qCP1hMbIhqfgWpoR3DptmiDpUpck5Fwn8L7M1+bIxVvSK0AAgD0n5hQI/GnmeN5 qk2jdAoUlz7tIADb3/1Yc2X8D6ZiYLakhzyi0LVcWfmsmgW1E+bcbuS4XG9RMccR 6gzuqkZqLSzneiKLN3Dqwela8Q3gHYSMFTETFaRxu7gvPkYgc622ePGvGafD7i+u MYs/sfPwsfuNFMQ/fsdmpGQxNFghwb8Cg0VaEkSBztjV2WiDBD0GMo4Ww5UNr8e7 LvHcoHiYjtnbXHW/b5L5Uswk8BCtWp2udgDHigEbZvj2BfmMlq+qXJ72BwmQb0Nf ow2R67yOiZ2HhG+776OcMI2BpeY6D0jFcHSNjc2Q14tgns3bhfP23taDb5rFJ8G1 5aCHoACTL6X7TkX9W2iwZ5/KWW+Ftx2ardbdzCHWtjTlD/KaK624YRWeXlLASsE1 fMpNMJidDygQHirbk7Byj2Y5IpVtvALAesyoh+VCGblzenREvdH3YE4D0onM5jWz T1kRsv6vgiIodbYNAlgPdNXNNb134fMrYOJkWmeblHV0WIddZTcNlHjgAHK2quRJ bAIER/A+IWKcN6sTgPfvHURcxpW8nhKsPUaSQQqqhdk1tLZquKGAg72eFW12A72f VDMJ+337XD0= =J1gB -----END PGP SIGNATURE----- Merge tag 'fixes-nc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc Pull ARM SoC non-critical bug fixes from Arnd Bergmann: "These are bug fixes for harmless problems that were not important enough to get fixed in 3.19. This contains updates to the MAINTAINERS file, in particular: - Ben Dooks stepped down as Samsung co-maintainer (thanks Ben for long years of maintaining this). Kukjin Kim, who has been doing the work de-facto by himself recently is now the only maintainer. - Liviu, Sudeep and Lorenzo from ARM now officially maintain the Versatile Express platform, which was orphaned (thanks for - Gregory Fong and Florian Fainelli help out on the Broadcom BCM7XXX platform - Ray Jui and Scott Branden are the future maintainers for the newly merged Broadcom Cygnus platform. Welcome! In terms of actual fixes, we have the usual set of OMAP bug fixes, which Tony Lindgren separates out well from the other OMAP changes, one really ep93xx regression fix against 3.11 that didn't make it for 3.18, a few GIC changes from Marc Zyngier as a preparation for later rework (the current code is wrong in a harmless way), on Tegra regression and one samsung spelling fix" * tag 'fixes-nc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: ARM: imx6: fix bogus use of irq_get_irq_data ARM: imx: irq: fix buggy usage of irq_data irq field MAINTAINERS: ARM Versatile Express platform, add missing pattern MAINTAINERS: ARM Versatile Express platform arm: ep93xx: add dma_masks for the M2P and M2M DMA controllers MAINTAINERS: Add ahci_st.c to ARCH/STI architecture MAINTAINERS: add entry for the GISB arbiter driver MAINTAINERS: update brcmstb entries MAINTAINERS: update email address and cleanup for exynos entry ARM: tegra: Re-add removed SoC id macro to tegra_resume() MAINTAINERS: Entry for Cygnus/iproc arm architecture ARM: OMAP: serial: remove last vestige of DTR_gpio support. ARM: OMAP2+: gpmc: Get rid of "ti,elm-id not found" warning ARM: EXYNOS: fix typo in static struct name "exynos5_list_diable_wfi_wfe" ARM: OMAP2: Remove unnecessary KERN_* in omap_phy_internal.c ARM: OMAP4+: Remove unused omap_l3_noc platform init ARM: dts: Add twl keypad map for omap3 EVM ARM: dts: Add twl keypad map for LDP ARM: dts: Fix NAND last partition size on LDP ARM: OMAP3: Fix errors for omap_l3_smx when booted with device tree
This commit is contained in:
Коммит
0a9e0acddb
47
MAINTAINERS
47
MAINTAINERS
|
@ -1308,30 +1308,22 @@ F: drivers/*/*rockchip*
|
|||
F: drivers/*/*/*rockchip*
|
||||
F: sound/soc/rockchip/
|
||||
|
||||
ARM/SAMSUNG ARM ARCHITECTURES
|
||||
M: Ben Dooks <ben-linux@fluff.org>
|
||||
M: Kukjin Kim <kgene.kim@samsung.com>
|
||||
ARM/SAMSUNG EXYNOS ARM ARCHITECTURES
|
||||
M: Kukjin Kim <kgene@kernel.org>
|
||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||
L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
|
||||
W: http://www.fluff.org/ben/linux/
|
||||
S: Maintained
|
||||
F: arch/arm/boot/dts/s3c*
|
||||
F: arch/arm/boot/dts/exynos*
|
||||
F: arch/arm/plat-samsung/
|
||||
F: arch/arm/mach-s3c24*/
|
||||
F: arch/arm/mach-s3c64xx/
|
||||
F: arch/arm/mach-s5p*/
|
||||
F: arch/arm/mach-exynos*/
|
||||
F: drivers/*/*s3c2410*
|
||||
F: drivers/*/*/*s3c2410*
|
||||
F: drivers/spi/spi-s3c*
|
||||
F: sound/soc/samsung/*
|
||||
|
||||
ARM/S5P EXYNOS ARM ARCHITECTURES
|
||||
M: Kukjin Kim <kgene.kim@samsung.com>
|
||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||
L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
|
||||
S: Maintained
|
||||
F: arch/arm/mach-s5p*/
|
||||
F: arch/arm/mach-exynos*/
|
||||
N: exynos
|
||||
|
||||
ARM/SAMSUNG MOBILE MACHINE SUPPORT
|
||||
|
@ -1430,6 +1422,7 @@ F: drivers/tty/serial/st-asc.c
|
|||
F: drivers/usb/dwc3/dwc3-st.c
|
||||
F: drivers/usb/host/ehci-st.c
|
||||
F: drivers/usb/host/ohci-st.c
|
||||
F: drivers/ata/ahci_st.c
|
||||
|
||||
ARM/TECHNOLOGIC SYSTEMS TS7250 MACHINE SUPPORT
|
||||
M: Lennert Buytenhek <kernel@wantstofly.org>
|
||||
|
@ -1503,6 +1496,19 @@ S: Maintained
|
|||
F: drivers/clk/ux500/
|
||||
F: include/linux/platform_data/clk-ux500.h
|
||||
|
||||
ARM/VERSATILE EXPRESS PLATFORM
|
||||
M: Liviu Dudau <liviu.dudau@arm.com>
|
||||
M: Sudeep Holla <sudeep.holla@arm.com>
|
||||
M: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
|
||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||
S: Maintained
|
||||
F: arch/arm/boot/dts/vexpress*
|
||||
F: arch/arm/mach-vexpress/
|
||||
F: */*/vexpress*
|
||||
F: */*/*/vexpress*
|
||||
F: drivers/clk/versatile/clk-vexpress-osc.c
|
||||
F: drivers/clocksource/versatile.c
|
||||
|
||||
ARM/VFP SUPPORT
|
||||
M: Russell King <linux@arm.linux.org.uk>
|
||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||
|
@ -2097,10 +2103,13 @@ F: arch/arm/include/debug/bcm63xx.S
|
|||
BROADCOM BCM7XXX ARM ARCHITECTURE
|
||||
M: Marc Carino <marc.ceeeee@gmail.com>
|
||||
M: Brian Norris <computersforpeace@gmail.com>
|
||||
M: Gregory Fong <gregory.0xf0@gmail.com>
|
||||
M: Florian Fainelli <f.fainelli@gmail.com>
|
||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||
S: Maintained
|
||||
F: arch/arm/mach-bcm/*brcmstb*
|
||||
F: arch/arm/boot/dts/bcm7*.dts*
|
||||
F: drivers/bus/brcmstb_gisb.c
|
||||
|
||||
BROADCOM TG3 GIGABIT ETHERNET DRIVER
|
||||
M: Prashant Sreedharan <prashant@broadcom.com>
|
||||
|
@ -2131,6 +2140,20 @@ L: linux-scsi@vger.kernel.org
|
|||
S: Supported
|
||||
F: drivers/scsi/bnx2i/
|
||||
|
||||
BROADCOM CYGNUS/IPROC ARM ARCHITECTURE
|
||||
M: Ray Jui <rjui@broadcom.com>
|
||||
M: Scott Branden <sbranden@broadcom.com>
|
||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||
L: bcm-kernel-feedback-list@broadcom.com
|
||||
T: git git://git.github.com/brcm/linux.git
|
||||
S: Maintained
|
||||
N: iproc
|
||||
N: cygnus
|
||||
N: bcm9113*
|
||||
N: bcm9583*
|
||||
N: bcm583*
|
||||
N: bcm113*
|
||||
|
||||
BROADCOM KONA GPIO DRIVER
|
||||
M: Ray Jui <rjui@broadcom.com>
|
||||
L: bcm-kernel-feedback-list@broadcom.com
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
* Common support for omap3 EVM boards
|
||||
*/
|
||||
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include "omap-gpmc-smsc911x.dtsi"
|
||||
|
||||
/ {
|
||||
|
@ -111,6 +112,26 @@
|
|||
ti,use-leds;
|
||||
};
|
||||
|
||||
&twl_keypad {
|
||||
linux,keymap = <
|
||||
MATRIX_KEY(2, 2, KEY_1)
|
||||
MATRIX_KEY(1, 1, KEY_2)
|
||||
MATRIX_KEY(0, 0, KEY_3)
|
||||
MATRIX_KEY(3, 2, KEY_4)
|
||||
MATRIX_KEY(2, 1, KEY_5)
|
||||
MATRIX_KEY(1, 0, KEY_6)
|
||||
MATRIX_KEY(1, 3, KEY_7)
|
||||
MATRIX_KEY(3, 1, KEY_8)
|
||||
MATRIX_KEY(2, 0, KEY_9)
|
||||
MATRIX_KEY(2, 3, KEY_KPASTERISK)
|
||||
MATRIX_KEY(0, 2, KEY_0)
|
||||
MATRIX_KEY(3, 0, KEY_KPDOT)
|
||||
/* s4 not wired */
|
||||
MATRIX_KEY(1, 2, KEY_BACKSPACE)
|
||||
MATRIX_KEY(0, 1, KEY_ENTER)
|
||||
>;
|
||||
};
|
||||
|
||||
&usb_otg_hs {
|
||||
interface-type = <0>;
|
||||
usb-phy = <&usb2_phy>;
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
*/
|
||||
/dts-v1/;
|
||||
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include "omap34xx.dtsi"
|
||||
#include "omap-gpmc-smsc911x.dtsi"
|
||||
|
||||
|
@ -141,7 +142,7 @@
|
|||
};
|
||||
partition@2000000 {
|
||||
label = "Filesystem";
|
||||
reg = <0x2000000 0xe000000>;
|
||||
reg = <0x2000000 0x6000000>;
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -263,6 +264,26 @@
|
|||
};
|
||||
};
|
||||
|
||||
&twl_keypad {
|
||||
linux,keymap = <MATRIX_KEY(0, 0, KEY_1)
|
||||
MATRIX_KEY(0, 1, KEY_2)
|
||||
MATRIX_KEY(0, 2, KEY_3)
|
||||
MATRIX_KEY(1, 0, KEY_4)
|
||||
MATRIX_KEY(1, 1, KEY_5)
|
||||
MATRIX_KEY(1, 2, KEY_6)
|
||||
MATRIX_KEY(1, 3, KEY_F5)
|
||||
MATRIX_KEY(2, 0, KEY_7)
|
||||
MATRIX_KEY(2, 1, KEY_8)
|
||||
MATRIX_KEY(2, 2, KEY_9)
|
||||
MATRIX_KEY(2, 3, KEY_F6)
|
||||
MATRIX_KEY(3, 0, KEY_F7)
|
||||
MATRIX_KEY(3, 1, KEY_0)
|
||||
MATRIX_KEY(3, 2, KEY_F8)
|
||||
MATRIX_KEY(5, 4, KEY_RESERVED)
|
||||
MATRIX_KEY(4, 4, KEY_VOLUMEUP)
|
||||
MATRIX_KEY(5, 5, KEY_VOLUMEDOWN)>;
|
||||
};
|
||||
|
||||
&uart3 {
|
||||
interrupts-extended = <&intc 74 &omap3_pmx_core OMAP3_UART3_RX>;
|
||||
};
|
||||
|
|
|
@ -79,7 +79,7 @@
|
|||
* hierarchy.
|
||||
*/
|
||||
ocp {
|
||||
compatible = "simple-bus";
|
||||
compatible = "ti,omap3-l3-smx", "simple-bus";
|
||||
reg = <0x68000000 0x10000>;
|
||||
interrupts = <9 10>;
|
||||
#address-cells = <1>;
|
||||
|
|
|
@ -66,11 +66,15 @@ static struct ep93xx_dma_platform_data ep93xx_dma_m2p_data = {
|
|||
.num_channels = ARRAY_SIZE(ep93xx_dma_m2p_channels),
|
||||
};
|
||||
|
||||
static u64 ep93xx_dma_m2p_mask = DMA_BIT_MASK(32);
|
||||
|
||||
static struct platform_device ep93xx_dma_m2p_device = {
|
||||
.name = "ep93xx-dma-m2p",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.platform_data = &ep93xx_dma_m2p_data,
|
||||
.platform_data = &ep93xx_dma_m2p_data,
|
||||
.dma_mask = &ep93xx_dma_m2p_mask,
|
||||
.coherent_dma_mask = DMA_BIT_MASK(32),
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -93,11 +97,15 @@ static struct ep93xx_dma_platform_data ep93xx_dma_m2m_data = {
|
|||
.num_channels = ARRAY_SIZE(ep93xx_dma_m2m_channels),
|
||||
};
|
||||
|
||||
static u64 ep93xx_dma_m2m_mask = DMA_BIT_MASK(32);
|
||||
|
||||
static struct platform_device ep93xx_dma_m2m_device = {
|
||||
.name = "ep93xx-dma-m2m",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.platform_data = &ep93xx_dma_m2m_data,
|
||||
.platform_data = &ep93xx_dma_m2m_data,
|
||||
.dma_mask = &ep93xx_dma_m2m_mask,
|
||||
.coherent_dma_mask = DMA_BIT_MASK(32),
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
@ -329,7 +329,7 @@ static unsigned int const exynos5_list_both_cnt_feed[] = {
|
|||
EXYNOS5_TOP_PWR_SYSMEM_OPTION,
|
||||
};
|
||||
|
||||
static unsigned int const exynos5_list_diable_wfi_wfe[] = {
|
||||
static unsigned int const exynos5_list_disable_wfi_wfe[] = {
|
||||
EXYNOS5_ARM_CORE1_OPTION,
|
||||
EXYNOS5_FSYS_ARM_OPTION,
|
||||
EXYNOS5_ISP_ARM_OPTION,
|
||||
|
@ -360,11 +360,11 @@ static void exynos5_init_pmu(void)
|
|||
/*
|
||||
* Disable WFI/WFE on XXX_OPTION
|
||||
*/
|
||||
for (i = 0 ; i < ARRAY_SIZE(exynos5_list_diable_wfi_wfe) ; i++) {
|
||||
tmp = pmu_raw_readl(exynos5_list_diable_wfi_wfe[i]);
|
||||
for (i = 0 ; i < ARRAY_SIZE(exynos5_list_disable_wfi_wfe) ; i++) {
|
||||
tmp = pmu_raw_readl(exynos5_list_disable_wfi_wfe[i]);
|
||||
tmp &= ~(EXYNOS5_OPTION_USE_STANDBYWFE |
|
||||
EXYNOS5_OPTION_USE_STANDBYWFI);
|
||||
pmu_raw_writel(tmp, exynos5_list_diable_wfi_wfe[i]);
|
||||
pmu_raw_writel(tmp, exynos5_list_disable_wfi_wfe[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -108,8 +108,8 @@ void imx_gpc_pre_suspend(bool arm_power_off);
|
|||
void imx_gpc_post_resume(void);
|
||||
void imx_gpc_mask_all(void);
|
||||
void imx_gpc_restore_all(void);
|
||||
void imx_gpc_irq_mask(struct irq_data *d);
|
||||
void imx_gpc_irq_unmask(struct irq_data *d);
|
||||
void imx_gpc_hwirq_mask(unsigned int hwirq);
|
||||
void imx_gpc_hwirq_unmask(unsigned int hwirq);
|
||||
void imx_anatop_init(void);
|
||||
void imx_anatop_pre_suspend(void);
|
||||
void imx_anatop_post_resume(void);
|
||||
|
|
|
@ -56,14 +56,14 @@ void imx_gpc_post_resume(void)
|
|||
|
||||
static int imx_gpc_irq_set_wake(struct irq_data *d, unsigned int on)
|
||||
{
|
||||
unsigned int idx = d->irq / 32 - 1;
|
||||
unsigned int idx = d->hwirq / 32 - 1;
|
||||
u32 mask;
|
||||
|
||||
/* Sanity check for SPI irq */
|
||||
if (d->irq < 32)
|
||||
if (d->hwirq < 32)
|
||||
return -EINVAL;
|
||||
|
||||
mask = 1 << d->irq % 32;
|
||||
mask = 1 << d->hwirq % 32;
|
||||
gpc_wake_irqs[idx] = on ? gpc_wake_irqs[idx] | mask :
|
||||
gpc_wake_irqs[idx] & ~mask;
|
||||
|
||||
|
@ -91,34 +91,44 @@ void imx_gpc_restore_all(void)
|
|||
writel_relaxed(gpc_saved_imrs[i], reg_imr1 + i * 4);
|
||||
}
|
||||
|
||||
void imx_gpc_irq_unmask(struct irq_data *d)
|
||||
void imx_gpc_hwirq_unmask(unsigned int hwirq)
|
||||
{
|
||||
void __iomem *reg;
|
||||
u32 val;
|
||||
|
||||
/* Sanity check for SPI irq */
|
||||
if (d->irq < 32)
|
||||
return;
|
||||
|
||||
reg = gpc_base + GPC_IMR1 + (d->irq / 32 - 1) * 4;
|
||||
reg = gpc_base + GPC_IMR1 + (hwirq / 32 - 1) * 4;
|
||||
val = readl_relaxed(reg);
|
||||
val &= ~(1 << d->irq % 32);
|
||||
val &= ~(1 << hwirq % 32);
|
||||
writel_relaxed(val, reg);
|
||||
}
|
||||
|
||||
void imx_gpc_irq_mask(struct irq_data *d)
|
||||
void imx_gpc_hwirq_mask(unsigned int hwirq)
|
||||
{
|
||||
void __iomem *reg;
|
||||
u32 val;
|
||||
|
||||
reg = gpc_base + GPC_IMR1 + (hwirq / 32 - 1) * 4;
|
||||
val = readl_relaxed(reg);
|
||||
val |= 1 << (hwirq % 32);
|
||||
writel_relaxed(val, reg);
|
||||
}
|
||||
|
||||
static void imx_gpc_irq_unmask(struct irq_data *d)
|
||||
{
|
||||
/* Sanity check for SPI irq */
|
||||
if (d->irq < 32)
|
||||
if (d->hwirq < 32)
|
||||
return;
|
||||
|
||||
reg = gpc_base + GPC_IMR1 + (d->irq / 32 - 1) * 4;
|
||||
val = readl_relaxed(reg);
|
||||
val |= 1 << (d->irq % 32);
|
||||
writel_relaxed(val, reg);
|
||||
imx_gpc_hwirq_unmask(d->hwirq);
|
||||
}
|
||||
|
||||
static void imx_gpc_irq_mask(struct irq_data *d)
|
||||
{
|
||||
/* Sanity check for SPI irq */
|
||||
if (d->hwirq < 32)
|
||||
return;
|
||||
|
||||
imx_gpc_hwirq_mask(d->hwirq);
|
||||
}
|
||||
|
||||
void __init imx_gpc_init(void)
|
||||
|
|
|
@ -261,7 +261,6 @@ static void imx6q_enable_wb(bool enable)
|
|||
|
||||
int imx6q_set_lpm(enum mxc_cpu_pwr_mode mode)
|
||||
{
|
||||
struct irq_data *iomuxc_irq_data = irq_get_irq_data(32);
|
||||
u32 val = readl_relaxed(ccm_base + CLPCR);
|
||||
|
||||
val &= ~BM_CLPCR_LPM;
|
||||
|
@ -316,9 +315,9 @@ int imx6q_set_lpm(enum mxc_cpu_pwr_mode mode)
|
|||
* 3) Software should mask IRQ #32 right after CCM Low-Power mode
|
||||
* is set (set bits 0-1 of CCM_CLPCR).
|
||||
*/
|
||||
imx_gpc_irq_unmask(iomuxc_irq_data);
|
||||
imx_gpc_hwirq_unmask(32);
|
||||
writel_relaxed(val, ccm_base + CLPCR);
|
||||
imx_gpc_irq_mask(iomuxc_irq_data);
|
||||
imx_gpc_hwirq_mask(32);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -49,7 +49,7 @@ static int __init omap3_l3_init(void)
|
|||
* To avoid code running on other OMAPs in
|
||||
* multi-omap builds
|
||||
*/
|
||||
if (!(cpu_is_omap34xx()))
|
||||
if (!(cpu_is_omap34xx()) || of_have_populated_dt())
|
||||
return -ENODEV;
|
||||
|
||||
snprintf(oh_name, L3_MODULES_MAX_LEN, "l3_main");
|
||||
|
@ -67,40 +67,6 @@ static int __init omap3_l3_init(void)
|
|||
}
|
||||
omap_postcore_initcall(omap3_l3_init);
|
||||
|
||||
static int __init omap4_l3_init(void)
|
||||
{
|
||||
int i;
|
||||
struct omap_hwmod *oh[3];
|
||||
struct platform_device *pdev;
|
||||
char oh_name[L3_MODULES_MAX_LEN];
|
||||
|
||||
/* If dtb is there, the devices will be created dynamically */
|
||||
if (of_have_populated_dt())
|
||||
return -ENODEV;
|
||||
|
||||
/*
|
||||
* To avoid code running on other OMAPs in
|
||||
* multi-omap builds
|
||||
*/
|
||||
if (!cpu_is_omap44xx() && !soc_is_omap54xx())
|
||||
return -ENODEV;
|
||||
|
||||
for (i = 0; i < L3_MODULES; i++) {
|
||||
snprintf(oh_name, L3_MODULES_MAX_LEN, "l3_main_%d", i+1);
|
||||
|
||||
oh[i] = omap_hwmod_lookup(oh_name);
|
||||
if (!(oh[i]))
|
||||
pr_err("could not look up %s\n", oh_name);
|
||||
}
|
||||
|
||||
pdev = omap_device_build_ss("omap_l3_noc", 0, oh, 3, NULL, 0);
|
||||
|
||||
WARN(IS_ERR(pdev), "could not build omap_device for %s\n", oh_name);
|
||||
|
||||
return PTR_RET(pdev);
|
||||
}
|
||||
omap_postcore_initcall(omap4_l3_init);
|
||||
|
||||
#if defined(CONFIG_VIDEO_OMAP2) || defined(CONFIG_VIDEO_OMAP2_MODULE)
|
||||
|
||||
static struct resource omap2cam_resources[] = {
|
||||
|
|
|
@ -1394,8 +1394,6 @@ static int gpmc_probe_nand_child(struct platform_device *pdev,
|
|||
if (gpmc_nand_data->elm_of_node == NULL)
|
||||
gpmc_nand_data->elm_of_node =
|
||||
of_parse_phandle(child, "elm_id", 0);
|
||||
if (gpmc_nand_data->elm_of_node == NULL)
|
||||
pr_warn("%s: ti,elm-id property not found\n", __func__);
|
||||
|
||||
/* select ecc-scheme for NAND */
|
||||
if (of_property_read_string(child, "ti,nand-ecc-opt", &s)) {
|
||||
|
|
|
@ -21,6 +21,8 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/clk.h>
|
||||
|
@ -97,13 +99,13 @@ void am35x_musb_phy_power(u8 on)
|
|||
|
||||
omap_ctrl_writel(devconf2, AM35XX_CONTROL_DEVCONF2);
|
||||
|
||||
pr_info(KERN_INFO "Waiting for PHY clock good...\n");
|
||||
pr_info("Waiting for PHY clock good...\n");
|
||||
while (!(omap_ctrl_readl(AM35XX_CONTROL_DEVCONF2)
|
||||
& CONF2_PHYCLKGD)) {
|
||||
cpu_relax();
|
||||
|
||||
if (time_after(jiffies, timeout)) {
|
||||
pr_err(KERN_ERR "musb PHY clock good timed out\n");
|
||||
pr_err("musb PHY clock good timed out\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -145,7 +147,7 @@ void am35x_set_mode(u8 musb_mode)
|
|||
devconf2 |= CONF2_NO_OVERRIDE;
|
||||
break;
|
||||
default:
|
||||
pr_info(KERN_INFO "Unsupported mode %u\n", musb_mode);
|
||||
pr_info("Unsupported mode %u\n", musb_mode);
|
||||
}
|
||||
|
||||
omap_ctrl_writel(devconf2, AM35XX_CONTROL_DEVCONF2);
|
||||
|
|
|
@ -263,9 +263,6 @@ void __init omap_serial_init_port(struct omap_board_data *bdata,
|
|||
omap_up.dma_rx_timeout = info->dma_rx_timeout;
|
||||
omap_up.dma_rx_poll_rate = info->dma_rx_poll_rate;
|
||||
omap_up.autosuspend_timeout = info->autosuspend_timeout;
|
||||
omap_up.DTR_gpio = info->DTR_gpio;
|
||||
omap_up.DTR_inverted = info->DTR_inverted;
|
||||
omap_up.DTR_present = info->DTR_present;
|
||||
|
||||
pdata = &omap_up;
|
||||
pdata_size = sizeof(struct omap_uart_port_info);
|
||||
|
|
|
@ -51,6 +51,7 @@ ENTRY(tegra_resume)
|
|||
THUMB( it ne )
|
||||
bne cpu_resume @ no
|
||||
|
||||
tegra_get_soc_id TEGRA_APB_MISC_BASE, r6
|
||||
/* Are we on Tegra20? */
|
||||
cmp r6, #TEGRA20
|
||||
beq 1f @ Yes
|
||||
|
|
|
@ -27,6 +27,10 @@
|
|||
#include <linux/platform_device.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_device.h>
|
||||
|
||||
#include "omap_l3_smx.h"
|
||||
|
||||
static inline u64 omap3_l3_readll(void __iomem *base, u16 reg)
|
||||
|
@ -211,7 +215,17 @@ static irqreturn_t omap3_l3_app_irq(int irq, void *_l3)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __init omap3_l3_probe(struct platform_device *pdev)
|
||||
#if IS_BUILTIN(CONFIG_OF)
|
||||
static const struct of_device_id omap3_l3_match[] = {
|
||||
{
|
||||
.compatible = "ti,omap3-l3-smx",
|
||||
},
|
||||
{ },
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, omap3_l3_match);
|
||||
#endif
|
||||
|
||||
static int omap3_l3_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct omap3_l3 *l3;
|
||||
struct resource *res;
|
||||
|
@ -265,7 +279,7 @@ err0:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __exit omap3_l3_remove(struct platform_device *pdev)
|
||||
static int omap3_l3_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct omap3_l3 *l3 = platform_get_drvdata(pdev);
|
||||
|
||||
|
@ -278,15 +292,17 @@ static int __exit omap3_l3_remove(struct platform_device *pdev)
|
|||
}
|
||||
|
||||
static struct platform_driver omap3_l3_driver = {
|
||||
.remove = __exit_p(omap3_l3_remove),
|
||||
.probe = omap3_l3_probe,
|
||||
.remove = omap3_l3_remove,
|
||||
.driver = {
|
||||
.name = "omap_l3_smx",
|
||||
.name = "omap_l3_smx",
|
||||
.of_match_table = of_match_ptr(omap3_l3_match),
|
||||
},
|
||||
};
|
||||
|
||||
static int __init omap3_l3_init(void)
|
||||
{
|
||||
return platform_driver_probe(&omap3_l3_driver, omap3_l3_probe);
|
||||
return platform_driver_register(&omap3_l3_driver);
|
||||
}
|
||||
postcore_initcall_sync(omap3_l3_init);
|
||||
|
||||
|
|
|
@ -38,9 +38,6 @@ struct omap_uart_port_info {
|
|||
unsigned int dma_rx_timeout;
|
||||
unsigned int autosuspend_timeout;
|
||||
unsigned int dma_rx_poll_rate;
|
||||
int DTR_gpio;
|
||||
int DTR_inverted;
|
||||
int DTR_present;
|
||||
|
||||
int (*get_context_loss_count)(struct device *);
|
||||
void (*enable_wakeup)(struct device *, bool);
|
||||
|
|
Загрузка…
Ссылка в новой задаче