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:
Linus Torvalds 2014-12-09 14:14:47 -08:00
Родитель b64bb1d758 65bb688aab
Коммит 0a9e0acddb
16 изменённых файлов: 151 добавлений и 92 удалений

Просмотреть файл

@ -1308,30 +1308,22 @@ F: drivers/*/*rockchip*
F: drivers/*/*/*rockchip* F: drivers/*/*/*rockchip*
F: sound/soc/rockchip/ F: sound/soc/rockchip/
ARM/SAMSUNG ARM ARCHITECTURES ARM/SAMSUNG EXYNOS ARM ARCHITECTURES
M: Ben Dooks <ben-linux@fluff.org> M: Kukjin Kim <kgene@kernel.org>
M: Kukjin Kim <kgene.kim@samsung.com>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
L: linux-samsung-soc@vger.kernel.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 S: Maintained
F: arch/arm/boot/dts/s3c* F: arch/arm/boot/dts/s3c*
F: arch/arm/boot/dts/exynos* F: arch/arm/boot/dts/exynos*
F: arch/arm/plat-samsung/ F: arch/arm/plat-samsung/
F: arch/arm/mach-s3c24*/ F: arch/arm/mach-s3c24*/
F: arch/arm/mach-s3c64xx/ F: arch/arm/mach-s3c64xx/
F: arch/arm/mach-s5p*/
F: arch/arm/mach-exynos*/
F: drivers/*/*s3c2410* F: drivers/*/*s3c2410*
F: drivers/*/*/*s3c2410* F: drivers/*/*/*s3c2410*
F: drivers/spi/spi-s3c* F: drivers/spi/spi-s3c*
F: sound/soc/samsung/* 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 N: exynos
ARM/SAMSUNG MOBILE MACHINE SUPPORT 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/dwc3/dwc3-st.c
F: drivers/usb/host/ehci-st.c F: drivers/usb/host/ehci-st.c
F: drivers/usb/host/ohci-st.c F: drivers/usb/host/ohci-st.c
F: drivers/ata/ahci_st.c
ARM/TECHNOLOGIC SYSTEMS TS7250 MACHINE SUPPORT ARM/TECHNOLOGIC SYSTEMS TS7250 MACHINE SUPPORT
M: Lennert Buytenhek <kernel@wantstofly.org> M: Lennert Buytenhek <kernel@wantstofly.org>
@ -1503,6 +1496,19 @@ S: Maintained
F: drivers/clk/ux500/ F: drivers/clk/ux500/
F: include/linux/platform_data/clk-ux500.h 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 ARM/VFP SUPPORT
M: Russell King <linux@arm.linux.org.uk> M: Russell King <linux@arm.linux.org.uk>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 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 BROADCOM BCM7XXX ARM ARCHITECTURE
M: Marc Carino <marc.ceeeee@gmail.com> M: Marc Carino <marc.ceeeee@gmail.com>
M: Brian Norris <computersforpeace@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) L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
S: Maintained S: Maintained
F: arch/arm/mach-bcm/*brcmstb* F: arch/arm/mach-bcm/*brcmstb*
F: arch/arm/boot/dts/bcm7*.dts* F: arch/arm/boot/dts/bcm7*.dts*
F: drivers/bus/brcmstb_gisb.c
BROADCOM TG3 GIGABIT ETHERNET DRIVER BROADCOM TG3 GIGABIT ETHERNET DRIVER
M: Prashant Sreedharan <prashant@broadcom.com> M: Prashant Sreedharan <prashant@broadcom.com>
@ -2131,6 +2140,20 @@ L: linux-scsi@vger.kernel.org
S: Supported S: Supported
F: drivers/scsi/bnx2i/ 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 BROADCOM KONA GPIO DRIVER
M: Ray Jui <rjui@broadcom.com> M: Ray Jui <rjui@broadcom.com>
L: bcm-kernel-feedback-list@broadcom.com L: bcm-kernel-feedback-list@broadcom.com

Просмотреть файл

@ -2,6 +2,7 @@
* Common support for omap3 EVM boards * Common support for omap3 EVM boards
*/ */
#include <dt-bindings/input/input.h>
#include "omap-gpmc-smsc911x.dtsi" #include "omap-gpmc-smsc911x.dtsi"
/ { / {
@ -111,6 +112,26 @@
ti,use-leds; 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 { &usb_otg_hs {
interface-type = <0>; interface-type = <0>;
usb-phy = <&usb2_phy>; usb-phy = <&usb2_phy>;

Просмотреть файл

@ -7,6 +7,7 @@
*/ */
/dts-v1/; /dts-v1/;
#include <dt-bindings/input/input.h>
#include "omap34xx.dtsi" #include "omap34xx.dtsi"
#include "omap-gpmc-smsc911x.dtsi" #include "omap-gpmc-smsc911x.dtsi"
@ -141,7 +142,7 @@
}; };
partition@2000000 { partition@2000000 {
label = "Filesystem"; 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 { &uart3 {
interrupts-extended = <&intc 74 &omap3_pmx_core OMAP3_UART3_RX>; interrupts-extended = <&intc 74 &omap3_pmx_core OMAP3_UART3_RX>;
}; };

Просмотреть файл

@ -79,7 +79,7 @@
* hierarchy. * hierarchy.
*/ */
ocp { ocp {
compatible = "simple-bus"; compatible = "ti,omap3-l3-smx", "simple-bus";
reg = <0x68000000 0x10000>; reg = <0x68000000 0x10000>;
interrupts = <9 10>; interrupts = <9 10>;
#address-cells = <1>; #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), .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 = { static struct platform_device ep93xx_dma_m2p_device = {
.name = "ep93xx-dma-m2p", .name = "ep93xx-dma-m2p",
.id = -1, .id = -1,
.dev = { .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), .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 = { static struct platform_device ep93xx_dma_m2m_device = {
.name = "ep93xx-dma-m2m", .name = "ep93xx-dma-m2m",
.id = -1, .id = -1,
.dev = { .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, 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_ARM_CORE1_OPTION,
EXYNOS5_FSYS_ARM_OPTION, EXYNOS5_FSYS_ARM_OPTION,
EXYNOS5_ISP_ARM_OPTION, EXYNOS5_ISP_ARM_OPTION,
@ -360,11 +360,11 @@ static void exynos5_init_pmu(void)
/* /*
* Disable WFI/WFE on XXX_OPTION * Disable WFI/WFE on XXX_OPTION
*/ */
for (i = 0 ; i < ARRAY_SIZE(exynos5_list_diable_wfi_wfe) ; i++) { for (i = 0 ; i < ARRAY_SIZE(exynos5_list_disable_wfi_wfe) ; i++) {
tmp = pmu_raw_readl(exynos5_list_diable_wfi_wfe[i]); tmp = pmu_raw_readl(exynos5_list_disable_wfi_wfe[i]);
tmp &= ~(EXYNOS5_OPTION_USE_STANDBYWFE | tmp &= ~(EXYNOS5_OPTION_USE_STANDBYWFE |
EXYNOS5_OPTION_USE_STANDBYWFI); 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_post_resume(void);
void imx_gpc_mask_all(void); void imx_gpc_mask_all(void);
void imx_gpc_restore_all(void); void imx_gpc_restore_all(void);
void imx_gpc_irq_mask(struct irq_data *d); void imx_gpc_hwirq_mask(unsigned int hwirq);
void imx_gpc_irq_unmask(struct irq_data *d); void imx_gpc_hwirq_unmask(unsigned int hwirq);
void imx_anatop_init(void); void imx_anatop_init(void);
void imx_anatop_pre_suspend(void); void imx_anatop_pre_suspend(void);
void imx_anatop_post_resume(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) 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; u32 mask;
/* Sanity check for SPI irq */ /* Sanity check for SPI irq */
if (d->irq < 32) if (d->hwirq < 32)
return -EINVAL; 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] = on ? gpc_wake_irqs[idx] | mask :
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); 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; void __iomem *reg;
u32 val; u32 val;
/* Sanity check for SPI irq */ reg = gpc_base + GPC_IMR1 + (hwirq / 32 - 1) * 4;
if (d->irq < 32)
return;
reg = gpc_base + GPC_IMR1 + (d->irq / 32 - 1) * 4;
val = readl_relaxed(reg); val = readl_relaxed(reg);
val &= ~(1 << d->irq % 32); val &= ~(1 << hwirq % 32);
writel_relaxed(val, reg); writel_relaxed(val, reg);
} }
void imx_gpc_irq_mask(struct irq_data *d) void imx_gpc_hwirq_mask(unsigned int hwirq)
{ {
void __iomem *reg; void __iomem *reg;
u32 val; 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 */ /* Sanity check for SPI irq */
if (d->irq < 32) if (d->hwirq < 32)
return; return;
reg = gpc_base + GPC_IMR1 + (d->irq / 32 - 1) * 4; imx_gpc_hwirq_unmask(d->hwirq);
val = readl_relaxed(reg); }
val |= 1 << (d->irq % 32);
writel_relaxed(val, reg); 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) 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) 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); u32 val = readl_relaxed(ccm_base + CLPCR);
val &= ~BM_CLPCR_LPM; 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 * 3) Software should mask IRQ #32 right after CCM Low-Power mode
* is set (set bits 0-1 of CCM_CLPCR). * 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); writel_relaxed(val, ccm_base + CLPCR);
imx_gpc_irq_mask(iomuxc_irq_data); imx_gpc_hwirq_mask(32);
return 0; return 0;
} }

Просмотреть файл

@ -49,7 +49,7 @@ static int __init omap3_l3_init(void)
* To avoid code running on other OMAPs in * To avoid code running on other OMAPs in
* multi-omap builds * multi-omap builds
*/ */
if (!(cpu_is_omap34xx())) if (!(cpu_is_omap34xx()) || of_have_populated_dt())
return -ENODEV; return -ENODEV;
snprintf(oh_name, L3_MODULES_MAX_LEN, "l3_main"); 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); 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) #if defined(CONFIG_VIDEO_OMAP2) || defined(CONFIG_VIDEO_OMAP2_MODULE)
static struct resource omap2cam_resources[] = { 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) if (gpmc_nand_data->elm_of_node == NULL)
gpmc_nand_data->elm_of_node = gpmc_nand_data->elm_of_node =
of_parse_phandle(child, "elm_id", 0); 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 */ /* select ecc-scheme for NAND */
if (of_property_read_string(child, "ti,nand-ecc-opt", &s)) { 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/types.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/clk.h> #include <linux/clk.h>
@ -97,13 +99,13 @@ void am35x_musb_phy_power(u8 on)
omap_ctrl_writel(devconf2, AM35XX_CONTROL_DEVCONF2); 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) while (!(omap_ctrl_readl(AM35XX_CONTROL_DEVCONF2)
& CONF2_PHYCLKGD)) { & CONF2_PHYCLKGD)) {
cpu_relax(); cpu_relax();
if (time_after(jiffies, timeout)) { 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; break;
} }
} }
@ -145,7 +147,7 @@ void am35x_set_mode(u8 musb_mode)
devconf2 |= CONF2_NO_OVERRIDE; devconf2 |= CONF2_NO_OVERRIDE;
break; break;
default: 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); 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_timeout = info->dma_rx_timeout;
omap_up.dma_rx_poll_rate = info->dma_rx_poll_rate; omap_up.dma_rx_poll_rate = info->dma_rx_poll_rate;
omap_up.autosuspend_timeout = info->autosuspend_timeout; 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 = &omap_up;
pdata_size = sizeof(struct omap_uart_port_info); pdata_size = sizeof(struct omap_uart_port_info);

Просмотреть файл

@ -51,6 +51,7 @@ ENTRY(tegra_resume)
THUMB( it ne ) THUMB( it ne )
bne cpu_resume @ no bne cpu_resume @ no
tegra_get_soc_id TEGRA_APB_MISC_BASE, r6
/* Are we on Tegra20? */ /* Are we on Tegra20? */
cmp r6, #TEGRA20 cmp r6, #TEGRA20
beq 1f @ Yes beq 1f @ Yes

Просмотреть файл

@ -27,6 +27,10 @@
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_device.h>
#include "omap_l3_smx.h" #include "omap_l3_smx.h"
static inline u64 omap3_l3_readll(void __iomem *base, u16 reg) 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; 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 omap3_l3 *l3;
struct resource *res; struct resource *res;
@ -265,7 +279,7 @@ err0:
return ret; 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); 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 = { static struct platform_driver omap3_l3_driver = {
.remove = __exit_p(omap3_l3_remove), .probe = omap3_l3_probe,
.remove = omap3_l3_remove,
.driver = { .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) 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); postcore_initcall_sync(omap3_l3_init);

Просмотреть файл

@ -38,9 +38,6 @@ struct omap_uart_port_info {
unsigned int dma_rx_timeout; unsigned int dma_rx_timeout;
unsigned int autosuspend_timeout; unsigned int autosuspend_timeout;
unsigned int dma_rx_poll_rate; unsigned int dma_rx_poll_rate;
int DTR_gpio;
int DTR_inverted;
int DTR_present;
int (*get_context_loss_count)(struct device *); int (*get_context_loss_count)(struct device *);
void (*enable_wakeup)(struct device *, bool); void (*enable_wakeup)(struct device *, bool);