diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-09-06 16:30:06 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-09-06 16:30:06 -0400 |
| commit | b4b50fd78b1e31989940dfc647e64453d0f7176a (patch) | |
| tree | 1a55f110e021c02963b63759f3f18ea7ba3aa228 /include | |
| parent | dccfd1e439c11422d7aca0d834b0430d24650e85 (diff) | |
| parent | f97c43bbdf8a1ea42477b1a804a48e7e368cb13c (diff) | |
Merge tag 'soc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull ARM SoC platform changes from Olof Johansson:
"This branch contains mostly additions and changes to platform
enablement and SoC-level drivers. Since there's sometimes a
dependency on device-tree changes, there's also a fair amount of
those in this branch.
Pieces worth mentioning are:
- Mbus driver for Marvell platforms, allowing kernel configuration
and resource allocation of on-chip peripherals.
- Enablement of the mbus infrastructure from Marvell PCI-e drivers.
- Preparation of MSI support for Marvell platforms.
- Addition of new PCI-e host controller driver for Tegra platforms
- Some churn caused by sharing of macro names between i.MX 6Q and 6DL
platforms in the device tree sources and header files.
- Various suspend/PM updates for Tegra, including LP1 support.
- Versatile Express support for MCPM, part of big little support.
- Allwinner platform support for A20 and A31 SoCs (dual and quad
Cortex-A7)
- OMAP2+ support for DRA7, a new Cortex-A15-based SoC.
The code that touches other architectures are patches moving MSI
arch-specific functions over to weak symbols and removal of
ARCH_SUPPORTS_MSI, acked by PCI maintainers"
* tag 'soc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (266 commits)
tegra-cpuidle: provide stub when !CONFIG_CPU_IDLE
PCI: tegra: replace devm_request_and_ioremap by devm_ioremap_resource
ARM: tegra: Drop ARCH_SUPPORTS_MSI and sort list
ARM: dts: vf610-twr: enable i2c0 device
ARM: dts: i.MX51: Add one more I2C2 pinmux entry
ARM: dts: i.MX51: Move pins configuration under "iomuxc" label
ARM: dtsi: imx6qdl-sabresd: Add USB OTG vbus pin to pinctrl_hog
ARM: dtsi: imx6qdl-sabresd: Add USB host 1 VBUS regulator
ARM: dts: imx27-phytec-phycore-som: Enable AUDMUX
ARM: dts: i.MX27: Disable AUDMUX in the template
ARM: dts: wandboard: Add support for SDIO bcm4329
ARM: i.MX5 clocks: Remove optional clock setup (CKIH1) from i.MX51 template
ARM: dts: imx53-qsb: Make USBH1 functional
ARM i.MX6Q: dts: Enable I2C1 with EEPROM and PMIC on Phytec phyFLEX-i.MX6 Ouad module
ARM i.MX6Q: dts: Enable SPI NOR flash on Phytec phyFLEX-i.MX6 Ouad module
ARM: dts: imx6qdl-sabresd: Add touchscreen support
ARM: imx: add ocram clock for imx53
ARM: dts: imx: ocram size is different between imx6q and imx6dl
ARM: dts: imx27-phytec-phycore-som: Fix regulator settings
ARM: dts: i.MX27: Remove clock name from CPU node
...
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/mbus.h | 16 | ||||
| -rw-r--r-- | include/linux/micrel_phy.h | 6 | ||||
| -rw-r--r-- | include/linux/msi.h | 21 | ||||
| -rw-r--r-- | include/linux/of_pci.h | 12 | ||||
| -rw-r--r-- | include/linux/pci.h | 1 | ||||
| -rw-r--r-- | include/linux/tegra-cpuidle.h | 25 |
6 files changed, 75 insertions, 6 deletions
diff --git a/include/linux/mbus.h b/include/linux/mbus.h index dba482e31a13..345b8c53b897 100644 --- a/include/linux/mbus.h +++ b/include/linux/mbus.h | |||
| @@ -11,6 +11,8 @@ | |||
| 11 | #ifndef __LINUX_MBUS_H | 11 | #ifndef __LINUX_MBUS_H |
| 12 | #define __LINUX_MBUS_H | 12 | #define __LINUX_MBUS_H |
| 13 | 13 | ||
| 14 | struct resource; | ||
| 15 | |||
| 14 | struct mbus_dram_target_info | 16 | struct mbus_dram_target_info |
| 15 | { | 17 | { |
| 16 | /* | 18 | /* |
| @@ -59,14 +61,18 @@ static inline const struct mbus_dram_target_info *mv_mbus_dram_info(void) | |||
| 59 | } | 61 | } |
| 60 | #endif | 62 | #endif |
| 61 | 63 | ||
| 62 | int mvebu_mbus_add_window_remap_flags(const char *devname, phys_addr_t base, | 64 | void mvebu_mbus_get_pcie_mem_aperture(struct resource *res); |
| 63 | size_t size, phys_addr_t remap, | 65 | void mvebu_mbus_get_pcie_io_aperture(struct resource *res); |
| 64 | unsigned int flags); | 66 | int mvebu_mbus_add_window_remap_by_id(unsigned int target, |
| 65 | int mvebu_mbus_add_window(const char *devname, phys_addr_t base, | 67 | unsigned int attribute, |
| 66 | size_t size); | 68 | phys_addr_t base, size_t size, |
| 69 | phys_addr_t remap); | ||
| 70 | int mvebu_mbus_add_window_by_id(unsigned int target, unsigned int attribute, | ||
| 71 | phys_addr_t base, size_t size); | ||
| 67 | int mvebu_mbus_del_window(phys_addr_t base, size_t size); | 72 | int mvebu_mbus_del_window(phys_addr_t base, size_t size); |
| 68 | int mvebu_mbus_init(const char *soc, phys_addr_t mbus_phys_base, | 73 | int mvebu_mbus_init(const char *soc, phys_addr_t mbus_phys_base, |
| 69 | size_t mbus_size, phys_addr_t sdram_phys_base, | 74 | size_t mbus_size, phys_addr_t sdram_phys_base, |
| 70 | size_t sdram_size); | 75 | size_t sdram_size); |
| 76 | int mvebu_mbus_dt_init(void); | ||
| 71 | 77 | ||
| 72 | #endif /* __LINUX_MBUS_H */ | 78 | #endif /* __LINUX_MBUS_H */ |
diff --git a/include/linux/micrel_phy.h b/include/linux/micrel_phy.h index 8752dbbc6135..ad05ce60c1c9 100644 --- a/include/linux/micrel_phy.h +++ b/include/linux/micrel_phy.h | |||
| @@ -17,6 +17,7 @@ | |||
| 17 | 17 | ||
| 18 | #define PHY_ID_KSZ8873MLL 0x000e7237 | 18 | #define PHY_ID_KSZ8873MLL 0x000e7237 |
| 19 | #define PHY_ID_KSZ9021 0x00221610 | 19 | #define PHY_ID_KSZ9021 0x00221610 |
| 20 | #define PHY_ID_KSZ9021RLRN 0x00221611 | ||
| 20 | #define PHY_ID_KS8737 0x00221720 | 21 | #define PHY_ID_KS8737 0x00221720 |
| 21 | #define PHY_ID_KSZ8021 0x00221555 | 22 | #define PHY_ID_KSZ8021 0x00221555 |
| 22 | #define PHY_ID_KSZ8031 0x00221556 | 23 | #define PHY_ID_KSZ8031 0x00221556 |
| @@ -35,4 +36,9 @@ | |||
| 35 | /* struct phy_device dev_flags definitions */ | 36 | /* struct phy_device dev_flags definitions */ |
| 36 | #define MICREL_PHY_50MHZ_CLK 0x00000001 | 37 | #define MICREL_PHY_50MHZ_CLK 0x00000001 |
| 37 | 38 | ||
| 39 | #define MICREL_KSZ9021_EXTREG_CTRL 0xB | ||
| 40 | #define MICREL_KSZ9021_EXTREG_DATA_WRITE 0xC | ||
| 41 | #define MICREL_KSZ9021_RGMII_CLK_CTRL_PAD_SCEW 0x104 | ||
| 42 | #define MICREL_KSZ9021_RGMII_RX_DATA_PAD_SCEW 0x105 | ||
| 43 | |||
| 38 | #endif /* _MICREL_PHY_H */ | 44 | #endif /* _MICREL_PHY_H */ |
diff --git a/include/linux/msi.h b/include/linux/msi.h index ee66f3a12fb6..b17ead818aec 100644 --- a/include/linux/msi.h +++ b/include/linux/msi.h | |||
| @@ -51,12 +51,31 @@ struct msi_desc { | |||
| 51 | }; | 51 | }; |
| 52 | 52 | ||
| 53 | /* | 53 | /* |
| 54 | * The arch hook for setup up msi irqs | 54 | * The arch hooks to setup up msi irqs. Those functions are |
| 55 | * implemented as weak symbols so that they /can/ be overriden by | ||
| 56 | * architecture specific code if needed. | ||
| 55 | */ | 57 | */ |
| 56 | int arch_setup_msi_irq(struct pci_dev *dev, struct msi_desc *desc); | 58 | int arch_setup_msi_irq(struct pci_dev *dev, struct msi_desc *desc); |
| 57 | void arch_teardown_msi_irq(unsigned int irq); | 59 | void arch_teardown_msi_irq(unsigned int irq); |
| 58 | int arch_setup_msi_irqs(struct pci_dev *dev, int nvec, int type); | 60 | int arch_setup_msi_irqs(struct pci_dev *dev, int nvec, int type); |
| 59 | void arch_teardown_msi_irqs(struct pci_dev *dev); | 61 | void arch_teardown_msi_irqs(struct pci_dev *dev); |
| 60 | int arch_msi_check_device(struct pci_dev* dev, int nvec, int type); | 62 | int arch_msi_check_device(struct pci_dev* dev, int nvec, int type); |
| 63 | void arch_restore_msi_irqs(struct pci_dev *dev, int irq); | ||
| 64 | |||
| 65 | void default_teardown_msi_irqs(struct pci_dev *dev); | ||
| 66 | void default_restore_msi_irqs(struct pci_dev *dev, int irq); | ||
| 67 | |||
| 68 | struct msi_chip { | ||
| 69 | struct module *owner; | ||
| 70 | struct device *dev; | ||
| 71 | struct device_node *of_node; | ||
| 72 | struct list_head list; | ||
| 73 | |||
| 74 | int (*setup_irq)(struct msi_chip *chip, struct pci_dev *dev, | ||
| 75 | struct msi_desc *desc); | ||
| 76 | void (*teardown_irq)(struct msi_chip *chip, unsigned int irq); | ||
| 77 | int (*check_device)(struct msi_chip *chip, struct pci_dev *dev, | ||
| 78 | int nvec, int type); | ||
| 79 | }; | ||
| 61 | 80 | ||
| 62 | #endif /* LINUX_MSI_H */ | 81 | #endif /* LINUX_MSI_H */ |
diff --git a/include/linux/of_pci.h b/include/linux/of_pci.h index 7a04826018c0..fd9c408631a0 100644 --- a/include/linux/of_pci.h +++ b/include/linux/of_pci.h | |||
| @@ -2,6 +2,7 @@ | |||
| 2 | #define __OF_PCI_H | 2 | #define __OF_PCI_H |
| 3 | 3 | ||
| 4 | #include <linux/pci.h> | 4 | #include <linux/pci.h> |
| 5 | #include <linux/msi.h> | ||
| 5 | 6 | ||
| 6 | struct pci_dev; | 7 | struct pci_dev; |
| 7 | struct of_irq; | 8 | struct of_irq; |
| @@ -13,4 +14,15 @@ struct device_node *of_pci_find_child_device(struct device_node *parent, | |||
| 13 | int of_pci_get_devfn(struct device_node *np); | 14 | int of_pci_get_devfn(struct device_node *np); |
| 14 | int of_pci_parse_bus_range(struct device_node *node, struct resource *res); | 15 | int of_pci_parse_bus_range(struct device_node *node, struct resource *res); |
| 15 | 16 | ||
| 17 | #if defined(CONFIG_OF) && defined(CONFIG_PCI_MSI) | ||
| 18 | int of_pci_msi_chip_add(struct msi_chip *chip); | ||
| 19 | void of_pci_msi_chip_remove(struct msi_chip *chip); | ||
| 20 | struct msi_chip *of_pci_find_msi_chip_by_node(struct device_node *of_node); | ||
| 21 | #else | ||
| 22 | static inline int of_pci_msi_chip_add(struct msi_chip *chip) { return -EINVAL; } | ||
| 23 | static inline void of_pci_msi_chip_remove(struct msi_chip *chip) { } | ||
| 24 | static inline struct msi_chip * | ||
| 25 | of_pci_find_msi_chip_by_node(struct device_node *of_node) { return NULL; } | ||
| 26 | #endif | ||
| 27 | |||
| 16 | #endif | 28 | #endif |
diff --git a/include/linux/pci.h b/include/linux/pci.h index 20888589c09e..da172f956ad6 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h | |||
| @@ -446,6 +446,7 @@ struct pci_bus { | |||
| 446 | struct resource busn_res; /* bus numbers routed to this bus */ | 446 | struct resource busn_res; /* bus numbers routed to this bus */ |
| 447 | 447 | ||
| 448 | struct pci_ops *ops; /* configuration access functions */ | 448 | struct pci_ops *ops; /* configuration access functions */ |
| 449 | struct msi_chip *msi; /* MSI controller */ | ||
| 449 | void *sysdata; /* hook for sys-specific extension */ | 450 | void *sysdata; /* hook for sys-specific extension */ |
| 450 | struct proc_dir_entry *procdir; /* directory entry in /proc/bus/pci */ | 451 | struct proc_dir_entry *procdir; /* directory entry in /proc/bus/pci */ |
| 451 | 452 | ||
diff --git a/include/linux/tegra-cpuidle.h b/include/linux/tegra-cpuidle.h new file mode 100644 index 000000000000..9c6286bbf662 --- /dev/null +++ b/include/linux/tegra-cpuidle.h | |||
| @@ -0,0 +1,25 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (c) 2013, NVIDIA CORPORATION. All rights reserved. | ||
| 3 | * | ||
| 4 | * This program is free software; you can redistribute it and/or modify it | ||
| 5 | * under the terms and conditions of the GNU General Public License, | ||
| 6 | * version 2, as published by the Free Software Foundation. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope it will be useful, but WITHOUT | ||
| 9 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
| 10 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
| 11 | * more details. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #ifndef __LINUX_TEGRA_CPUIDLE_H__ | ||
| 15 | #define __LINUX_TEGRA_CPUIDLE_H__ | ||
| 16 | |||
| 17 | #ifdef CONFIG_CPU_IDLE | ||
| 18 | void tegra_cpuidle_pcie_irqs_in_use(void); | ||
| 19 | #else | ||
| 20 | static inline void tegra_cpuidle_pcie_irqs_in_use(void) | ||
| 21 | { | ||
| 22 | } | ||
| 23 | #endif | ||
| 24 | |||
| 25 | #endif | ||
