* [PATCH 1/3] gpio: Add simple poweroff-gpio driver
From: Stephen Warren @ 2012-11-11 22:03 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1352650891-18356-2-git-send-email-andrew@lunn.ch>
On 11/11/2012 09:21 AM, Andrew Lunn wrote:
> From: Jamie Lentin <jm@lentin.co.uk>
>
> Given appropriate devicetree bindings, this driver registers a
> pm_power_off function to set a GPIO line high/low to power down
> your board.
This feature will be useful for the Tegra TrimSlice board too.
> diff --git a/Documentation/devicetree/bindings/gpio/gpio-poweroff.txt b/Documentation/devicetree/bindings/gpio/gpio-poweroff.txt
> +Required properties:
> +- compatible : should be "gpio-poweroff".
> +- gpios : The GPIO to set high/low, see "gpios property" in
> + Documentation/devicetree/bindings/gpio/gpio.txt. If the pin should be
> + low to power down the board set it to "Active Low", otherwise set
> + gpio to "Active High".
Unfortunately, not all GPIO bindings support active high/low flags in
the GPIO specifier. As such, the flags there are basically useless.
Other bindings (e.g. IIRC the fixed-regulator binding) have added a
separate active-high property to indicate the GPIO polarity. This
binding should probably follow suite.
^ permalink raw reply
* Porting board initialization for fdt
From: Constantine Shulyupin @ 2012-11-11 22:38 UTC (permalink / raw)
To: linux-arm-kernel
What is architecture and the best strategy to port board initialization to fdt?
Let's see for example omap4_ehci_init and usbhs_bdata @
arch/arm/mach-omap2/board-omap4panda.c.
How to perform board specific initializations?
Can omap4_ehci_init be converted to probe function of new platform
driver omap4_ehci?
Where and how define GPIO, clock?
Should it be defined in of_dev_auxdata or in fdt?
Thanks
--
Constantine Shulyupin
http://www.MakeLinux.com/
Embedded Linux Systems
^ permalink raw reply
* [PATCH 0/8] mfd: Batch together MFD related patches
From: Samuel Ortiz @ 2012-11-11 23:33 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1352128236-11554-1-git-send-email-lee.jones@linaro.org>
Hi Lee,
On Mon, Nov 05, 2012 at 04:10:28PM +0100, Lee Jones wrote:
> Hi Sam,
>
> I know you've been busy giving NFC presentations at ELC, but ... :)
>
> All these patches have been on the list in various other patch-sets
> for some time and have been reviewed by some key people already. All
> other patches from the patch-sets have been taken, so I thought I'd
> batch these up for easy review/acceptance.
Thanks, much appreciated.
I applied all of them to my for-next branch. I don't think patch #1 is rc
material though, as it only fixes a boot warning and not an actual bug or
regression.
Cheers,
Samuel.
--
Intel Open Source Technology Centre
http://oss.intel.com/
^ permalink raw reply
* [PATCH 0/6] ARM: integrator: SoC bus & cleanup
From: Linus Walleij @ 2012-11-12 0:52 UTC (permalink / raw)
To: linux-arm-kernel
This series will:
- Switch the Integrator/AP and /CP to use the SoC bus
when booting from device tree.
- Group all devices on the SoC below this bus so as to
set a good example of how to do this. The bus was
invented by Lee Jones, let's show how it's to be used
on a DT:ed SoC.
- Fetch the special system controller offsets from two
special device tree nodes for each case and replace
the static mappings with these at boot.
- Move some static remaps to the ATAG-only code path
and delete some static maps that aren't used.
Linus Walleij (6):
ARM: integrator: hook the AP into the SoC bus
ARM: integrator: hook the CP into the SoC bus
ARM: integrator: remove static AP syscon mapping
ARM: integrator: remove static CP syscon mapping
ARM: integrator: delete SC mapping on the CP
ARM: integrator: delete static UART1 mapping
Documentation/devicetree/bindings/arm/arm-boards | 4 +
arch/arm/boot/dts/integratorap.dts | 5 +
arch/arm/boot/dts/integratorcp.dts | 5 +
arch/arm/mach-integrator/Kconfig | 2 +
arch/arm/mach-integrator/common.h | 1 +
arch/arm/mach-integrator/core.c | 91 ++++++++++++++++++
arch/arm/mach-integrator/integrator_ap.c | 114 ++++++++++++++++++-----
arch/arm/mach-integrator/integrator_cp.c | 111 ++++++++++++++++------
8 files changed, 283 insertions(+), 50 deletions(-)
--
1.7.11.7
^ permalink raw reply
* [PATCH 1/6] ARM: integrator: hook the AP into the SoC bus
From: Linus Walleij @ 2012-11-12 0:52 UTC (permalink / raw)
To: linux-arm-kernel
This hooks the Integrator/AP into the SoC bus when booting from
device tree, by mapping the AP controller registers first,
then registering the SoC device, and then populating the device
tree with the SoC device as parent.
Introduce some helpers in the core to provide sysfs files
detailing the use of the SoC ID which will later be reused by
the Integrator/CP patch for the same bus grouping.
Cc: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
arch/arm/boot/dts/integratorap.dts | 5 ++
arch/arm/mach-integrator/Kconfig | 1 +
arch/arm/mach-integrator/common.h | 1 +
arch/arm/mach-integrator/core.c | 91 ++++++++++++++++++++++++++++++++
arch/arm/mach-integrator/integrator_ap.c | 57 +++++++++++++++++++-
5 files changed, 153 insertions(+), 2 deletions(-)
diff --git a/arch/arm/boot/dts/integratorap.dts b/arch/arm/boot/dts/integratorap.dts
index 6176775..c9c3fa3 100644
--- a/arch/arm/boot/dts/integratorap.dts
+++ b/arch/arm/boot/dts/integratorap.dts
@@ -18,6 +18,11 @@
bootargs = "root=/dev/ram0 console=ttyAM0,38400n8 earlyprintk";
};
+ syscon {
+ /* AP system controller registers */
+ reg = <0x11000000 0x100>;
+ };
+
timer0: timer at 13000000 {
compatible = "arm,integrator-timer";
};
diff --git a/arch/arm/mach-integrator/Kconfig b/arch/arm/mach-integrator/Kconfig
index 350e266..3961942 100644
--- a/arch/arm/mach-integrator/Kconfig
+++ b/arch/arm/mach-integrator/Kconfig
@@ -8,6 +8,7 @@ config ARCH_INTEGRATOR_AP
select MIGHT_HAVE_PCI
select SERIAL_AMBA_PL010
select SERIAL_AMBA_PL010_CONSOLE
+ select SOC_BUS
help
Include support for the ARM(R) Integrator/AP and
Integrator/PP2 platforms.
diff --git a/arch/arm/mach-integrator/common.h b/arch/arm/mach-integrator/common.h
index c3ff21b..fc9f47d 100644
--- a/arch/arm/mach-integrator/common.h
+++ b/arch/arm/mach-integrator/common.h
@@ -4,3 +4,4 @@ void integrator_init_early(void);
int integrator_init(bool is_cp);
void integrator_reserve(void);
void integrator_restart(char, const char *);
+void integrator_init_sysfs(struct device *parent, u32 id);
diff --git a/arch/arm/mach-integrator/core.c b/arch/arm/mach-integrator/core.c
index ea22a17..161fbf8 100644
--- a/arch/arm/mach-integrator/core.c
+++ b/arch/arm/mach-integrator/core.c
@@ -22,6 +22,7 @@
#include <linux/amba/bus.h>
#include <linux/amba/serial.h>
#include <linux/io.h>
+#include <linux/stat.h>
#include <mach/hardware.h>
#include <mach/platform.h>
@@ -169,3 +170,93 @@ void integrator_restart(char mode, const char *cmd)
{
cm_control(CM_CTRL_RESET, CM_CTRL_RESET);
}
+
+static u32 integrator_id;
+
+static ssize_t intcp_get_manf(struct device *dev,
+ struct device_attribute *attr,
+ char *buf)
+{
+ return sprintf(buf, "%02x\n", integrator_id >> 24);
+}
+
+static struct device_attribute intcp_manf_attr =
+ __ATTR(manufacturer, S_IRUGO, intcp_get_manf, NULL);
+
+static ssize_t intcp_get_arch(struct device *dev,
+ struct device_attribute *attr,
+ char *buf)
+{
+ const char *arch;
+
+ switch ((integrator_id >> 16) & 0xff) {
+ case 0x00:
+ arch = "ASB little-endian";
+ break;
+ case 0x01:
+ arch = "AHB little-endian";
+ break;
+ case 0x03:
+ arch = "AHB-Lite system bus, bi-endian";
+ break;
+ case 0x04:
+ arch = "AHB";
+ break;
+ default:
+ arch = "Unknown";
+ break;
+ }
+
+ return sprintf(buf, "%s\n", arch);
+}
+
+static struct device_attribute intcp_arch_attr =
+ __ATTR(architecture, S_IRUGO, intcp_get_arch, NULL);
+
+static ssize_t intcp_get_fpga(struct device *dev,
+ struct device_attribute *attr,
+ char *buf)
+{
+ const char *fpga;
+
+ switch ((integrator_id >> 12) & 0xf) {
+ case 0x01:
+ fpga = "XC4062";
+ break;
+ case 0x02:
+ fpga = "XC4085";
+ break;
+ case 0x04:
+ fpga = "EPM7256AE (Altera PLD)";
+ break;
+ default:
+ fpga = "Unknown";
+ break;
+ }
+
+ return sprintf(buf, "%s\n", fpga);
+}
+
+static struct device_attribute intcp_fpga_attr =
+ __ATTR(fpga, S_IRUGO, intcp_get_fpga, NULL);
+
+static ssize_t intcp_get_build(struct device *dev,
+ struct device_attribute *attr,
+ char *buf)
+{
+ return sprintf(buf, "%02x\n", (integrator_id >> 4) & 0xFF);
+}
+
+static struct device_attribute intcp_build_attr =
+ __ATTR(build, S_IRUGO, intcp_get_build, NULL);
+
+
+
+void integrator_init_sysfs(struct device *parent, u32 id)
+{
+ integrator_id = id;
+ device_create_file(parent, &intcp_manf_attr);
+ device_create_file(parent, &intcp_arch_attr);
+ device_create_file(parent, &intcp_fpga_attr);
+ device_create_file(parent, &intcp_build_attr);
+}
diff --git a/arch/arm/mach-integrator/integrator_ap.c b/arch/arm/mach-integrator/integrator_ap.c
index e6617c1..7d84080 100644
--- a/arch/arm/mach-integrator/integrator_ap.c
+++ b/arch/arm/mach-integrator/integrator_ap.c
@@ -37,6 +37,8 @@
#include <linux/of_irq.h>
#include <linux/of_address.h>
#include <linux/of_platform.h>
+#include <linux/stat.h>
+#include <linux/sys_soc.h>
#include <video/vga.h>
#include <mach/hardware.h>
@@ -462,13 +464,64 @@ static struct of_dev_auxdata ap_auxdata_lookup[] __initdata = {
{ /* sentinel */ },
};
+/* Base address to the AP system controller */
+static void __iomem *ap_syscon_base;
+
static void __init ap_init_of(void)
{
unsigned long sc_dec;
+ struct device_node *root;
+ struct device_node *syscon;
+ struct device *parent;
+ struct soc_device *soc_dev;
+ struct soc_device_attribute *soc_dev_attr;
+ u32 ap_sc_id;
+ int err;
int i;
- of_platform_populate(NULL, of_default_bus_match_table,
- ap_auxdata_lookup, NULL);
+ /* Here we create an SoC device for the root node */
+ root = of_find_node_by_path("/");
+ if (!root)
+ return;
+ syscon = of_find_node_by_path("/syscon");
+ if (!syscon)
+ return;
+
+ ap_syscon_base = of_iomap(syscon, 0);
+ if (!ap_syscon_base)
+ return;
+
+ ap_sc_id = readl(ap_syscon_base);
+
+ soc_dev_attr = kzalloc(sizeof(*soc_dev_attr), GFP_KERNEL);
+ if (!soc_dev_attr)
+ return;
+
+ err = of_property_read_string(root, "compatible",
+ &soc_dev_attr->soc_id);
+ if (err)
+ return;
+ err = of_property_read_string(root, "model", &soc_dev_attr->machine);
+ if (err)
+ return;
+ soc_dev_attr->family = "Integrator";
+ soc_dev_attr->revision = kasprintf(GFP_KERNEL, "%c",
+ 'A' + (ap_sc_id & 0x0f));
+
+ soc_dev = soc_device_register(soc_dev_attr);
+ if (IS_ERR_OR_NULL(soc_dev)) {
+ kfree(soc_dev_attr->revision);
+ kfree(soc_dev_attr);
+ return;
+ }
+
+ parent = soc_device_to_device(soc_dev);
+
+ if (!IS_ERR_OR_NULL(parent))
+ integrator_init_sysfs(parent, ap_sc_id);
+
+ of_platform_populate(root, of_default_bus_match_table,
+ ap_auxdata_lookup, parent);
sc_dec = readl(VA_SC_BASE + INTEGRATOR_SC_DEC_OFFSET);
for (i = 0; i < 4; i++) {
--
1.7.11.7
^ permalink raw reply related
* [PATCH 2/6] ARM: integrator: hook the CP into the SoC bus
From: Linus Walleij @ 2012-11-12 0:52 UTC (permalink / raw)
To: linux-arm-kernel
This hooks the Integrator/CP into the SoC bus when booting from
device tree, by mapping the CP controller registers first,
then registering the SoC device, and then populating the device
tree with the SoC device as parent.
Cc: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
Documentation/devicetree/bindings/arm/arm-boards | 4 ++
arch/arm/boot/dts/integratorcp.dts | 5 +++
arch/arm/mach-integrator/Kconfig | 1 +
arch/arm/mach-integrator/integrator_cp.c | 57 +++++++++++++++++++++++-
4 files changed, 65 insertions(+), 2 deletions(-)
diff --git a/Documentation/devicetree/bindings/arm/arm-boards b/Documentation/devicetree/bindings/arm/arm-boards
index fc81a7d..db5858e 100644
--- a/Documentation/devicetree/bindings/arm/arm-boards
+++ b/Documentation/devicetree/bindings/arm/arm-boards
@@ -9,6 +9,10 @@ Required properties (in root node):
FPGA type interrupt controllers, see the versatile-fpga-irq binding doc.
+In the root node the Integrator/CP must have a /cpcon node pointing
+to the CP control registers, and the Integrator/AP must have a
+/syscon node pointing to the Integrator/AP system controller.
+
ARM Versatile Application and Platform Baseboards
-------------------------------------------------
diff --git a/arch/arm/boot/dts/integratorcp.dts b/arch/arm/boot/dts/integratorcp.dts
index 2dd5e4e..8b11939 100644
--- a/arch/arm/boot/dts/integratorcp.dts
+++ b/arch/arm/boot/dts/integratorcp.dts
@@ -18,6 +18,11 @@
bootargs = "root=/dev/ram0 console=ttyAMA0,38400n8 earlyprintk";
};
+ cpcon {
+ /* CP controller registers */
+ reg = <0xcb000000 0x100>;
+ };
+
timer0: timer at 13000000 {
compatible = "arm,sp804", "arm,primecell";
};
diff --git a/arch/arm/mach-integrator/Kconfig b/arch/arm/mach-integrator/Kconfig
index 3961942..abeff25 100644
--- a/arch/arm/mach-integrator/Kconfig
+++ b/arch/arm/mach-integrator/Kconfig
@@ -20,6 +20,7 @@ config ARCH_INTEGRATOR_CP
select PLAT_VERSATILE_CLCD
select SERIAL_AMBA_PL011
select SERIAL_AMBA_PL011_CONSOLE
+ select SOC_BUS
help
Include support for the ARM(R) Integrator CP platform.
diff --git a/arch/arm/mach-integrator/integrator_cp.c b/arch/arm/mach-integrator/integrator_cp.c
index 5b08e8e..9194a4f 100644
--- a/arch/arm/mach-integrator/integrator_cp.c
+++ b/arch/arm/mach-integrator/integrator_cp.c
@@ -26,6 +26,7 @@
#include <linux/of_irq.h>
#include <linux/of_address.h>
#include <linux/of_platform.h>
+#include <linux/sys_soc.h>
#include <mach/hardware.h>
#include <mach/platform.h>
@@ -336,10 +337,62 @@ static struct of_dev_auxdata intcp_auxdata_lookup[] __initdata = {
{ /* sentinel */ },
};
+/* Base address to the CP controller */
+static void __iomem *intcp_con_base;
+
static void __init intcp_init_of(void)
{
- of_platform_populate(NULL, of_default_bus_match_table,
- intcp_auxdata_lookup, NULL);
+ struct device_node *root;
+ struct device_node *cpcon;
+ struct device *parent;
+ struct soc_device *soc_dev;
+ struct soc_device_attribute *soc_dev_attr;
+ u32 intcp_sc_id;
+ int err;
+
+ /* Here we create an SoC device for the root node */
+ root = of_find_node_by_path("/");
+ if (!root)
+ return;
+ cpcon = of_find_node_by_path("/cpcon");
+ if (!cpcon)
+ return;
+
+ intcp_con_base = of_iomap(cpcon, 0);
+ if (!intcp_con_base)
+ return;
+
+ intcp_sc_id = readl(intcp_con_base);
+
+ soc_dev_attr = kzalloc(sizeof(*soc_dev_attr), GFP_KERNEL);
+ if (!soc_dev_attr)
+ return;
+
+ err = of_property_read_string(root, "compatible",
+ &soc_dev_attr->soc_id);
+ if (err)
+ return;
+ err = of_property_read_string(root, "model", &soc_dev_attr->machine);
+ if (err)
+ return;
+ soc_dev_attr->family = "Integrator";
+ soc_dev_attr->revision = kasprintf(GFP_KERNEL, "%c",
+ 'A' + (intcp_sc_id & 0x0f));
+
+ soc_dev = soc_device_register(soc_dev_attr);
+ if (IS_ERR_OR_NULL(soc_dev)) {
+ kfree(soc_dev_attr->revision);
+ kfree(soc_dev_attr);
+ return;
+ }
+
+ parent = soc_device_to_device(soc_dev);
+
+ if (!IS_ERR_OR_NULL(parent))
+ integrator_init_sysfs(parent, intcp_sc_id);
+
+ of_platform_populate(root, of_default_bus_match_table,
+ intcp_auxdata_lookup, parent);
}
static const char * intcp_dt_board_compat[] = {
--
1.7.11.7
^ permalink raw reply related
* [PATCH 3/6] ARM: integrator: remove static AP syscon mapping
From: Linus Walleij @ 2012-11-12 0:52 UTC (permalink / raw)
To: linux-arm-kernel
This removes the static mapping for the AP system controller for
the device tree case. Fork the static mappings table and move
the system controller to only be statically mapped in the ATAG
boot path.
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
arch/arm/mach-integrator/integrator_ap.c | 58 +++++++++++++++++++++-----------
1 file changed, 38 insertions(+), 20 deletions(-)
diff --git a/arch/arm/mach-integrator/integrator_ap.c b/arch/arm/mach-integrator/integrator_ap.c
index 7d84080..becba43 100644
--- a/arch/arm/mach-integrator/integrator_ap.c
+++ b/arch/arm/mach-integrator/integrator_ap.c
@@ -62,7 +62,10 @@
#include "common.h"
-/*
+/* Base address to the AP system controller */
+static void __iomem *ap_syscon_base;
+
+/*
* All IO addresses are mapped onto VA 0xFFFx.xxxx, where x.xxxx
* is the (PA >> 12).
*
@@ -70,7 +73,6 @@
* just for now).
*/
#define VA_IC_BASE __io_address(INTEGRATOR_IC_BASE)
-#define VA_SC_BASE __io_address(INTEGRATOR_SC_BASE)
#define VA_EBI_BASE __io_address(INTEGRATOR_EBI_BASE)
#define VA_CMIC_BASE __io_address(INTEGRATOR_HDR_IC)
@@ -99,11 +101,6 @@ static struct map_desc ap_io_desc[] __initdata = {
.length = SZ_4K,
.type = MT_DEVICE
}, {
- .virtual = IO_ADDRESS(INTEGRATOR_SC_BASE),
- .pfn = __phys_to_pfn(INTEGRATOR_SC_BASE),
- .length = SZ_4K,
- .type = MT_DEVICE
- }, {
.virtual = IO_ADDRESS(INTEGRATOR_EBI_BASE),
.pfn = __phys_to_pfn(INTEGRATOR_EBI_BASE),
.length = SZ_4K,
@@ -203,8 +200,6 @@ device_initcall(irq_syscore_init);
/*
* Flash handling.
*/
-#define SC_CTRLC (VA_SC_BASE + INTEGRATOR_SC_CTRLC_OFFSET)
-#define SC_CTRLS (VA_SC_BASE + INTEGRATOR_SC_CTRLS_OFFSET)
#define EBI_CSR1 (VA_EBI_BASE + INTEGRATOR_EBI_CSR1_OFFSET)
#define EBI_LOCK (VA_EBI_BASE + INTEGRATOR_EBI_LOCK_OFFSET)
@@ -212,7 +207,8 @@ static int ap_flash_init(struct platform_device *dev)
{
u32 tmp;
- writel(INTEGRATOR_SC_CTRL_nFLVPPEN | INTEGRATOR_SC_CTRL_nFLWP, SC_CTRLC);
+ writel(INTEGRATOR_SC_CTRL_nFLVPPEN | INTEGRATOR_SC_CTRL_nFLWP,
+ ap_syscon_base + INTEGRATOR_SC_CTRLC_OFFSET);
tmp = readl(EBI_CSR1) | INTEGRATOR_EBI_WRITE_ENABLE;
writel(tmp, EBI_CSR1);
@@ -229,7 +225,8 @@ static void ap_flash_exit(struct platform_device *dev)
{
u32 tmp;
- writel(INTEGRATOR_SC_CTRL_nFLVPPEN | INTEGRATOR_SC_CTRL_nFLWP, SC_CTRLC);
+ writel(INTEGRATOR_SC_CTRL_nFLVPPEN | INTEGRATOR_SC_CTRL_nFLWP,
+ ap_syscon_base + INTEGRATOR_SC_CTRLC_OFFSET);
tmp = readl(EBI_CSR1) & ~INTEGRATOR_EBI_WRITE_ENABLE;
writel(tmp, EBI_CSR1);
@@ -243,9 +240,12 @@ static void ap_flash_exit(struct platform_device *dev)
static void ap_flash_set_vpp(struct platform_device *pdev, int on)
{
- void __iomem *reg = on ? SC_CTRLS : SC_CTRLC;
-
- writel(INTEGRATOR_SC_CTRL_nFLVPPEN, reg);
+ if (on)
+ writel(INTEGRATOR_SC_CTRL_nFLVPPEN,
+ ap_syscon_base + INTEGRATOR_SC_CTRLS_OFFSET);
+ else
+ writel(INTEGRATOR_SC_CTRL_nFLVPPEN,
+ ap_syscon_base + INTEGRATOR_SC_CTRLC_OFFSET);
}
static struct physmap_flash_data ap_flash_data = {
@@ -464,9 +464,6 @@ static struct of_dev_auxdata ap_auxdata_lookup[] __initdata = {
{ /* sentinel */ },
};
-/* Base address to the AP system controller */
-static void __iomem *ap_syscon_base;
-
static void __init ap_init_of(void)
{
unsigned long sc_dec;
@@ -523,7 +520,7 @@ static void __init ap_init_of(void)
of_platform_populate(root, of_default_bus_match_table,
ap_auxdata_lookup, parent);
- sc_dec = readl(VA_SC_BASE + INTEGRATOR_SC_DEC_OFFSET);
+ sc_dec = readl(ap_syscon_base + INTEGRATOR_SC_DEC_OFFSET);
for (i = 0; i < 4; i++) {
struct lm_device *lmdev;
@@ -567,6 +564,27 @@ MACHINE_END
#ifdef CONFIG_ATAGS
/*
+ * For the ATAG boot some static mappings are needed. This will
+ * go away with the ATAG support down the road.
+ */
+
+static struct map_desc ap_io_desc_atag[] __initdata = {
+ {
+ .virtual = IO_ADDRESS(INTEGRATOR_SC_BASE),
+ .pfn = __phys_to_pfn(INTEGRATOR_SC_BASE),
+ .length = SZ_4K,
+ .type = MT_DEVICE
+ },
+};
+
+static void __init ap_map_io_atag(void)
+{
+ iotable_init(ap_io_desc_atag, ARRAY_SIZE(ap_io_desc_atag));
+ ap_syscon_base = __io_address(INTEGRATOR_SC_BASE);
+ ap_map_io();
+}
+
+/*
* This is where non-devicetree initialization code is collected and stashed
* for eventual deletion.
*/
@@ -634,7 +652,7 @@ static void __init ap_init(void)
platform_device_register(&cfi_flash_device);
- sc_dec = readl(VA_SC_BASE + INTEGRATOR_SC_DEC_OFFSET);
+ sc_dec = readl(ap_syscon_base + INTEGRATOR_SC_DEC_OFFSET);
for (i = 0; i < 4; i++) {
struct lm_device *lmdev;
@@ -661,7 +679,7 @@ MACHINE_START(INTEGRATOR, "ARM-Integrator")
/* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */
.atag_offset = 0x100,
.reserve = integrator_reserve,
- .map_io = ap_map_io,
+ .map_io = ap_map_io_atag,
.nr_irqs = NR_IRQS_INTEGRATOR_AP,
.init_early = ap_init_early,
.init_irq = ap_init_irq,
--
1.7.11.7
^ permalink raw reply related
* [PATCH 4/6] ARM: integrator: remove static CP syscon mapping
From: Linus Walleij @ 2012-11-12 0:52 UTC (permalink / raw)
To: linux-arm-kernel
This removes the static mapping for the CP system controller for
the device tree case. Fork the static mappings table and move
the system controller to only be statically mapped in the ATAG
boot path.
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
arch/arm/mach-integrator/integrator_cp.c | 50 +++++++++++++++++++++-----------
1 file changed, 33 insertions(+), 17 deletions(-)
diff --git a/arch/arm/mach-integrator/integrator_cp.c b/arch/arm/mach-integrator/integrator_cp.c
index 9194a4f..7220210 100644
--- a/arch/arm/mach-integrator/integrator_cp.c
+++ b/arch/arm/mach-integrator/integrator_cp.c
@@ -52,11 +52,13 @@
#include "common.h"
+/* Base address to the CP controller */
+static void __iomem *intcp_con_base;
+
#define INTCP_PA_FLASH_BASE 0x24000000
#define INTCP_PA_CLCD_BASE 0xc0000000
-#define INTCP_VA_CTRL_BASE __io_address(INTEGRATOR_CP_CTL_BASE)
#define INTCP_FLASHPROG 0x04
#define CINTEGRATOR_FLASHPROG_FLVPPEN (1 << 0)
#define CINTEGRATOR_FLASHPROG_FLWREN (1 << 1)
@@ -127,11 +129,6 @@ static struct map_desc intcp_io_desc[] __initdata = {
.pfn = __phys_to_pfn(INTEGRATOR_CP_SIC_BASE),
.length = SZ_4K,
.type = MT_DEVICE
- }, {
- .virtual = IO_ADDRESS(INTEGRATOR_CP_CTL_BASE),
- .pfn = __phys_to_pfn(INTEGRATOR_CP_CTL_BASE),
- .length = SZ_4K,
- .type = MT_DEVICE
}
};
@@ -147,9 +144,9 @@ static int intcp_flash_init(struct platform_device *dev)
{
u32 val;
- val = readl(INTCP_VA_CTRL_BASE + INTCP_FLASHPROG);
+ val = readl(intcp_con_base + INTCP_FLASHPROG);
val |= CINTEGRATOR_FLASHPROG_FLWREN;
- writel(val, INTCP_VA_CTRL_BASE + INTCP_FLASHPROG);
+ writel(val, intcp_con_base + INTCP_FLASHPROG);
return 0;
}
@@ -158,21 +155,21 @@ static void intcp_flash_exit(struct platform_device *dev)
{
u32 val;
- val = readl(INTCP_VA_CTRL_BASE + INTCP_FLASHPROG);
+ val = readl(intcp_con_base + INTCP_FLASHPROG);
val &= ~(CINTEGRATOR_FLASHPROG_FLVPPEN|CINTEGRATOR_FLASHPROG_FLWREN);
- writel(val, INTCP_VA_CTRL_BASE + INTCP_FLASHPROG);
+ writel(val, intcp_con_base + INTCP_FLASHPROG);
}
static void intcp_flash_set_vpp(struct platform_device *pdev, int on)
{
u32 val;
- val = readl(INTCP_VA_CTRL_BASE + INTCP_FLASHPROG);
+ val = readl(intcp_con_base + INTCP_FLASHPROG);
if (on)
val |= CINTEGRATOR_FLASHPROG_FLVPPEN;
else
val &= ~CINTEGRATOR_FLASHPROG_FLVPPEN;
- writel(val, INTCP_VA_CTRL_BASE + INTCP_FLASHPROG);
+ writel(val, intcp_con_base + INTCP_FLASHPROG);
}
static struct physmap_flash_data intcp_flash_data = {
@@ -191,7 +188,7 @@ static struct physmap_flash_data intcp_flash_data = {
static unsigned int mmc_status(struct device *dev)
{
unsigned int status = readl(__io_address(0xca000000 + 4));
- writel(8, __io_address(INTEGRATOR_CP_CTL_BASE + 8));
+ writel(8, intcp_con_base + 8);
return status & 8;
}
@@ -337,9 +334,6 @@ static struct of_dev_auxdata intcp_auxdata_lookup[] __initdata = {
{ /* sentinel */ },
};
-/* Base address to the CP controller */
-static void __iomem *intcp_con_base;
-
static void __init intcp_init_of(void)
{
struct device_node *root;
@@ -418,6 +412,28 @@ MACHINE_END
#ifdef CONFIG_ATAGS
/*
+ * For the ATAG boot some static mappings are needed. This will
+ * go away with the ATAG support down the road.
+ */
+
+static struct map_desc intcp_io_desc_atag[] __initdata = {
+ {
+ .virtual = IO_ADDRESS(INTEGRATOR_CP_CTL_BASE),
+ .pfn = __phys_to_pfn(INTEGRATOR_CP_CTL_BASE),
+ .length = SZ_4K,
+ .type = MT_DEVICE
+ },
+};
+
+static void __init intcp_map_io_atag(void)
+{
+ iotable_init(intcp_io_desc_atag, ARRAY_SIZE(intcp_io_desc_atag));
+ intcp_con_base = __io_address(INTEGRATOR_CP_CTL_BASE);
+ intcp_map_io();
+}
+
+
+/*
* This is where non-devicetree initialization code is collected and stashed
* for eventual deletion.
*/
@@ -556,7 +572,7 @@ MACHINE_START(CINTEGRATOR, "ARM-IntegratorCP")
/* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */
.atag_offset = 0x100,
.reserve = integrator_reserve,
- .map_io = intcp_map_io,
+ .map_io = intcp_map_io_atag,
.nr_irqs = NR_IRQS_INTEGRATOR_CP,
.init_early = intcp_init_early,
.init_irq = intcp_init_irq,
--
1.7.11.7
^ permalink raw reply related
* [PATCH 5/6] ARM: integrator: delete SC mapping on the CP
From: Linus Walleij @ 2012-11-12 0:53 UTC (permalink / raw)
To: linux-arm-kernel
The Integrator/CP does not use the address space defined as
used by the Integrator/AP system controller, it's just unused
memory. So just delete this static mapping from the CP static
mapping table.
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
arch/arm/mach-integrator/integrator_cp.c | 5 -----
1 file changed, 5 deletions(-)
diff --git a/arch/arm/mach-integrator/integrator_cp.c b/arch/arm/mach-integrator/integrator_cp.c
index 7220210..fc2b1e4 100644
--- a/arch/arm/mach-integrator/integrator_cp.c
+++ b/arch/arm/mach-integrator/integrator_cp.c
@@ -85,11 +85,6 @@ static struct map_desc intcp_io_desc[] __initdata = {
.length = SZ_4K,
.type = MT_DEVICE
}, {
- .virtual = IO_ADDRESS(INTEGRATOR_SC_BASE),
- .pfn = __phys_to_pfn(INTEGRATOR_SC_BASE),
- .length = SZ_4K,
- .type = MT_DEVICE
- }, {
.virtual = IO_ADDRESS(INTEGRATOR_EBI_BASE),
.pfn = __phys_to_pfn(INTEGRATOR_EBI_BASE),
.length = SZ_4K,
--
1.7.11.7
^ permalink raw reply related
* [PATCH 6/6] ARM: integrator: delete static UART1 mapping
From: Linus Walleij @ 2012-11-12 0:53 UTC (permalink / raw)
To: linux-arm-kernel
The Integrators does not use the UART1 for any debugging
or similar, dynamic mapping should be all that is needed
so delete this static map.
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
arch/arm/mach-integrator/integrator_ap.c | 5 -----
arch/arm/mach-integrator/integrator_cp.c | 5 -----
2 files changed, 10 deletions(-)
diff --git a/arch/arm/mach-integrator/integrator_ap.c b/arch/arm/mach-integrator/integrator_ap.c
index becba43..771cbe4 100644
--- a/arch/arm/mach-integrator/integrator_ap.c
+++ b/arch/arm/mach-integrator/integrator_ap.c
@@ -121,11 +121,6 @@ static struct map_desc ap_io_desc[] __initdata = {
.length = SZ_4K,
.type = MT_DEVICE
}, {
- .virtual = IO_ADDRESS(INTEGRATOR_UART1_BASE),
- .pfn = __phys_to_pfn(INTEGRATOR_UART1_BASE),
- .length = SZ_4K,
- .type = MT_DEVICE
- }, {
.virtual = IO_ADDRESS(INTEGRATOR_DBG_BASE),
.pfn = __phys_to_pfn(INTEGRATOR_DBG_BASE),
.length = SZ_4K,
diff --git a/arch/arm/mach-integrator/integrator_cp.c b/arch/arm/mach-integrator/integrator_cp.c
index fc2b1e4..c4b6af9 100644
--- a/arch/arm/mach-integrator/integrator_cp.c
+++ b/arch/arm/mach-integrator/integrator_cp.c
@@ -105,11 +105,6 @@ static struct map_desc intcp_io_desc[] __initdata = {
.length = SZ_4K,
.type = MT_DEVICE
}, {
- .virtual = IO_ADDRESS(INTEGRATOR_UART1_BASE),
- .pfn = __phys_to_pfn(INTEGRATOR_UART1_BASE),
- .length = SZ_4K,
- .type = MT_DEVICE
- }, {
.virtual = IO_ADDRESS(INTEGRATOR_DBG_BASE),
.pfn = __phys_to_pfn(INTEGRATOR_DBG_BASE),
.length = SZ_4K,
--
1.7.11.7
^ permalink raw reply related
* [PATCH 1/3] gpio: Add simple poweroff-gpio driver
From: Linus Walleij @ 2012-11-12 1:00 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1352650891-18356-2-git-send-email-andrew@lunn.ch>
On Sun, Nov 11, 2012 at 5:21 PM, Andrew Lunn <andrew@lunn.ch> wrote:
> From: Jamie Lentin <jm@lentin.co.uk>
>
> Given appropriate devicetree bindings, this driver registers a
> pm_power_off function to set a GPIO line high/low to power down
> your board.
>
> Signed-off-by: Jamie Lentin <jm@lentin.co.uk>
> Signed-off-by: Andrew Lunn <andrew@lunn.ch>
So this is just a GPIO client like any such thing right?
I mean this thing has nothing more to do with the GPIO subsystem
than say, drivers/input/keyboard/gpio_keys.c?
So from the GPIO subsystem point of view controlling power is
an alien concept.
But I suspect Anton may be ready to welcome a driver like this
under drivers/power/* which I think is where it belongs.
Yours,
Linus Walleij
^ permalink raw reply
* [PATCH 1/3] gpio: Add simple poweroff-gpio driver
From: Anton Vorontsov @ 2012-11-12 1:12 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <CACRpkdZvHBjFQTrQnxvc3WCOb2CqGbjYJxyQ5qQkSbU+UWHYZA@mail.gmail.com>
On Mon, Nov 12, 2012 at 02:00:31AM +0100, Linus Walleij wrote:
> On Sun, Nov 11, 2012 at 5:21 PM, Andrew Lunn <andrew@lunn.ch> wrote:
>
> > From: Jamie Lentin <jm@lentin.co.uk>
> >
> > Given appropriate devicetree bindings, this driver registers a
> > pm_power_off function to set a GPIO line high/low to power down
> > your board.
> >
> > Signed-off-by: Jamie Lentin <jm@lentin.co.uk>
> > Signed-off-by: Andrew Lunn <andrew@lunn.ch>
>
> So this is just a GPIO client like any such thing right?
>
> I mean this thing has nothing more to do with the GPIO subsystem
> than say, drivers/input/keyboard/gpio_keys.c?
>
> So from the GPIO subsystem point of view controlling power is
> an alien concept.
>
> But I suspect Anton may be ready to welcome a driver like this
> under drivers/power/* which I think is where it belongs.
Yup. driver/power/reset/ seems appropriate.
Thanks,
Anton.
^ permalink raw reply
* [RFC] dt/platform: Use cell-index for device naming if available
From: Stepan Moskovchenko @ 2012-11-12 1:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <CACxGe6s3gJ4fmhn9VBd1Fq8bH5S0_ejmE=KqVjYn20bT42wQ_Q@mail.gmail.com>
> On Sun, Nov 11, 2012 at 2:32 AM, Rob Herring <robherring2@gmail.com>
> wrote:
>> On 11/09/2012 06:48 PM, Stepan Moskovchenko wrote:
>>> Use the cell-index property to construct names for platform
>>> devices, falling back on the existing scheme of using the
>>> device register address if cell-index is not specified.
>>>
>>> The cell-index property is a more useful device identifier,
>>> especially in systems containing several numbered instances
>>> of a particular hardware block, since it more easily
>>> illustrates how devices relate to each other.
>>>
>>> Additionally, userspace software may rely on the classic
>>> <name>.<id> naming scheme to access device attributes in
>>> sysfs, without having to know the physical addresses of
>>> that device on every platform the userspace software may
>>> support. Using cell-index for device naming allows the
>>> device addresses to be hidden from userspace and to be
>>> exposed by logical device number without having to rely on
>>> auxdata to perform name overrides. This allows userspace to
>>> make assumptions about which sysfs nodes map to which
>>> logical instance of a specific hardware block.
>>>
>>> Signed-off-by: Stepan Moskovchenko <stepanm@codeaurora.org>
>>> ---
>>> I had also considered using something like the linux,label property to
>>> allow
>>> custom names for platform devices without resorting to auxdata, but the
>>> cell-index approach seems more in line with what cell-index was
>>> intended for
>>> and with what the pre-DT platform device naming scheme used to be.
>>> Please let
>>> me know if you think there is a better way to accomplish this.
>>>
>>> This is just being sent out as an RFC for now. If there are no
>>> objections, I
>>> will send this out as an official patch, along with (or combined with)
>>> a patch
>>> to fix up the device names in things like clock tables of any affected
>>> platforms.
>>
>> cell-index is basically deprecated. This has been discussed multiple
>> times in the past. You can use auxdata if you really need to have the
>> old name.
>
> Actually, I think it would be fine to use an /aliases entry to set the
> device name. That's the place to put global namespace information.
>
> g.
>
Ah, thank you. I would prefer to stay away from auxdata, since it involves
placing more platform-specific data into the kernel, and it is my
understanding that auxdata is intended as a temporary measure. The
/aliases approach looks interesting, and I'll see what I can do with it -
hopefully I can have an RFC / patch soon. It looks like we would want an
"inverse" alias lookup- that is, we would need to know which alias
corresponds to a given node. Is it possible for a node to have multiple
aliases? If so, which shall we use to create the device name? Anyway, I
will further look into how these aliases work.
Steve
^ permalink raw reply
* [PATCH] ARM: mxs: Setup scheduler clock
From: Shawn Guo @ 2012-11-12 1:54 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <509C3619.30701@meduna.org>
On Thu, Nov 08, 2012 at 11:45:45PM +0100, Stanislav Meduna wrote:
> Hi,
>
> OK, as the problem with 16-bit fast ticking timer looks to
> be more complicated, I'd like to submit the patch for the 32-bit
> ones.
>
> Thanks
> --
> Stano
>
> From 74092cc0217a5bab6f80ee07aa188a54f5792634 Mon Sep 17 00:00:00 2001
> From: Stanislav Meduna <stano@meduna.org>
> Date: Mon, 8 Nov 2012 23:39:14 +0100
> Subject: [PATCH] ARM: mxs: Setup scheduler clock
>
> Setup scheduler clock on ARM MXS platforms with a 32-bit timrot
> such as MX.28. This allows the scheduler to use sub-jiffy resolution.
>
s/MX.28/i.MX28
I fixed it up and applied the patch. Thanks.
Shawn
> The corresponding change for 16-bit v1 timrots is not possible
> at the moment due to rounding issues with clock values wrapping
> faster than once per several seconds in the common ARM platform code.
>
> Signed-off-by: Stanislav Meduna <stano@meduna.org>
> ---
> arch/arm/mach-mxs/timer.c | 10 +++++++++-
> 1 files changed, 9 insertions(+), 1 deletions(-)
>
> diff --git a/arch/arm/mach-mxs/timer.c b/arch/arm/mach-mxs/timer.c
> index 564a632..4b6e36c 100644
> --- a/arch/arm/mach-mxs/timer.c
> +++ b/arch/arm/mach-mxs/timer.c
> @@ -26,6 +26,7 @@
> #include <linux/clk.h>
>
> #include <asm/mach/time.h>
> +#include <asm/sched_clock.h>
> #include <mach/mxs.h>
> #include <mach/common.h>
>
> @@ -230,15 +231,22 @@ static struct clocksource clocksource_mxs = {
> .flags = CLOCK_SOURCE_IS_CONTINUOUS,
> };
>
> +static u32 notrace mxs_read_sched_clock_v2(void)
> +{
> + return ~readl_relaxed(mxs_timrot_base + HW_TIMROT_RUNNING_COUNTn(1));
> +}
> +
> static int __init mxs_clocksource_init(struct clk *timer_clk)
> {
> unsigned int c = clk_get_rate(timer_clk);
>
> if (timrot_is_v1())
> clocksource_register_hz(&clocksource_mxs, c);
> - else
> + else {
> clocksource_mmio_init(mxs_timrot_base + HW_TIMROT_RUNNING_COUNTn(1),
> "mxs_timer", c, 200, 32, clocksource_mmio_readl_down);
> + setup_sched_clock(mxs_read_sched_clock_v2, 32, c);
> + }
>
> return 0;
> }
> --
> 1.7.0.4
>
^ permalink raw reply
* [PATCH 1/1] regulator: gpio-regulator: fix crash when no states property in dt
From: Frank Li @ 2012-11-12 1:56 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20121109165609.GV23807@opensource.wolfsonmicro.com>
2012/11/10 Mark Brown <broonie@opensource.wolfsonmicro.com>:
> On Fri, Nov 09, 2012 at 04:34:36PM +0800, Frank Li wrote:
>
>> /* Fetch states. */
>> prop = of_find_property(np, "states", NULL);
>> - proplen = prop->length / sizeof(int);
>> + proplen = prop ? prop->length / sizeof(int) : 0;
>
> Aren't states mandatory for this driver, in which case shouldn't the
> probe fail here?
I think No. GPIO-Regulator can be used as just turn on/off power
domain and not adjust voltage or current. So "states" is option.
"gpios" was already options.
^ permalink raw reply
* [PATCH v2] ARM: mxs: apf28dev: Add I2C and SPI support
From: Shawn Guo @ 2012-11-12 2:41 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1352464961-6414-1-git-send-email-gwenhael.goavec-merou@armadeus.com>
On Fri, Nov 09, 2012 at 01:42:41PM +0100, Gwenhael Goavec-Merou wrote:
> Changes since v1:
> - Removed the spidev support.
I'm not sure you want to have this in the final commit log, so I just
removed it and applied the patch.
>
> Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@armadeus.com>
> ---
Instead, any comment goes here (after ---) will not show up in the
final commit log when the patch gets applied with 'git am' command.
Shawn
> arch/arm/boot/dts/imx28-apf28dev.dts | 13 +++++++++++++
> 1 files changed, 13 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/boot/dts/imx28-apf28dev.dts b/arch/arm/boot/dts/imx28-apf28dev.dts
> index 1643d25..6d8865b 100644
> --- a/arch/arm/boot/dts/imx28-apf28dev.dts
> +++ b/arch/arm/boot/dts/imx28-apf28dev.dts
> @@ -27,6 +27,13 @@
> status = "okay";
> };
>
> + ssp2: ssp at 80014000 {
> + compatible = "fsl,imx28-spi";
> + pinctrl-names = "default";
> + pinctrl-0 = <&spi2_pins_a>;
> + status = "okay";
> + };
> +
> pinctrl at 80018000 {
> pinctrl-names = "default";
> pinctrl-0 = <&hog_pins_apf28dev>;
> @@ -74,6 +81,12 @@
> status = "okay";
> };
>
> + i2c0: i2c at 80058000 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&i2c0_pins_a>;
> + status = "okay";
> + };
> +
> pwm: pwm at 80064000 {
> pinctrl-names = "default";
> pinctrl-0 = <&pwm3_pins_a &pwm4_pins_a>;
> --
> 1.7.8.6
>
^ permalink raw reply
* [PATCH] ARM: tegra: retain L2 content over CPU suspend/resume
From: Joseph Lo @ 2012-11-12 4:10 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <509D7BA1.506@wwwdotorg.org>
On Sat, 2012-11-10 at 05:54 +0800, Stephen Warren wrote:
> On 11/06/2012 02:32 AM, Joseph Lo wrote:
> > The L2 RAM is in different power domain from the CPU cluster. So the
> > L2 content can be retained over CPU suspend/resume. To do that, we
> > need to disable L2 after the MMU is disabled, and enable L2 before
> > the MMU is enabled. But the L2 controller is in the same power domain
> > with the CPU cluster. We need to restore it's settings and re-enable
> > it after the power be resumed.
>
> This doesn't compile:
>
> arch/arm/mach-tegra/headsmp.S: Assembler messages:
> arch/arm/mach-tegra/headsmp.S:119: Error: undefined symbol L2X0_CTRL_EN
> used as an immediate value
> arch/arm/mach-tegra/headsmp.S:119: Error: undefined symbol L2X0_CTRL_EN
> used as an immediate value
Ah, sorry for mention that.
This patch was depended on "07bd005 ARM: 7547/1: cache-l2x0: add support
for Aurora L2 cache ctrl" and only showed up after "next-20121024". The
definition of "L2X0_CTRL_EN" was been introduced in that patch.
Should I re-send a patch that based on tegra "for-next" branch that will
change L2X0_CTRL_EN to 0x1? Sorry for inconvenience.
Thanks,
Joseph
^ permalink raw reply
* [PATCH v7 0/5] usb: phy: samsung: Introducing usb phy driver for samsung SoCs
From: Kukjin Kim @ 2012-11-12 4:41 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20121109135441.GC8567@arwen.pp.htv.fi>
Felipe Balbi wrote:
>
> Hi,
>
Hi :-)
[...]
> Sure, but I still need Kukjin's 'say-so' for the arch/arm/plat-samsung
> and arch/arm/mach-exynos part.
>
Basically, this approach looks OK to me.
BTW, I have some comments and need to update...
>From 4th patch...
> diff --git a/arch/arm/mach-s3c64xx/mach-smdk6410.c b/arch/arm/mach-
> s3c64xx/mach-smdk6410.c
[...]
> @@ -72,6 +73,8 @@
> #include <linux/platform_data/touchscreen-s3c2410.h>
> #include <plat/keypad.h>
> #include <plat/backlight.h>
> +#include <plat/regs-fb-v4.h>
Why? In addition, this causes build error with s3c6400_defconfig.
[...]
> diff --git a/arch/arm/plat-samsung/devs.c b/arch/arm/plat-samsung/devs.c
> index 03f654d..9cdb666 100644
[...]
> @@ -1370,6 +1371,30 @@ struct platform_device s5p_device_mixer = {
>
> /* USB */
>
> +#ifdef CONFIG_S3C_DEV_USB_HSOTG
> +/* USB PHY*/
> +static struct resource samsung_usbphy_resource[] = {
> + [0] = {
> + .start = S3C_PA_USB_PHY,
> + .end = S3C_PA_USB_PHY + SZ_16 - 1,
> + .flags = IORESOURCE_MEM,
> + },
> +};
+static struct resource samsung_usbphy_resource[] = {
+ [0] = DEFINED_RES_MEM(S3C_PA_USB_PHY, SZ_16),
+};
[...]
Happens build error with s5pv210_defconfig
arch/arm/plat-samsung/devs.c:1375: error: 'S3C_PA_USB_PHY' undeclared here
(not in a function)
make[2]: *** [arch/arm/plat-samsung/devs.o] Error 1
make[1]: *** [arch/arm/plat-samsung] Error 2
make[1]: *** Waiting for unfinished jobs....
And another build error with exynos_defconfig...
arch/arm/mach-exynos/built-in.o: In function `.LANCHOR1':
setup-i2c0.c:(.data+0x8080): undefined reference to
`s5p_usb_phy_pmu_isolation'
>From 5th patch....
If possible, please to use 'ARM: [sub-arch dir name]: [subject]' format.
So I preferred to use 'ARM: EXYNOS: Enabling samsung-usbphy driver for
EXYNOS4210' on that.
Please make sure your patch has no problem for kernel compilation before
submitting...
Thanks.
Best regards,
Kgene.
--
Kukjin Kim <kgene.kim@samsung.com>, Senior Engineer,
SW Solution Development Team, Samsung Electronics Co., Ltd.
^ permalink raw reply
* [PATCH 1/2] ARM: S3C64XX: Remove duplicated camera clock
From: Kukjin Kim @ 2012-11-12 5:02 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <509EC5C1.2000901@gmail.com>
Sylwester Nawrocki wrote:
>
> On 11/10/2012 03:07 PM, dron0gus at gmail.com wrote:
> > From: Andrey Gusakov<dron_gus@mail.ru>
> >
> > Camera clock defined two times. One in init_clocks_off array with
> > "cam" name, second in clksrcs array with "camera" name. Leave
> > second definition because clock have divider.
> >
> > Signed-off-by: Andrey Gusakov<dron0gus@gmail.com>
>
> Reviewed-by: Sylwester Nawrocki <sylvester.nawrocki@gmail.com>
Applied, thanks.
Best regards,
Kgene.
--
Kukjin Kim <kgene.kim@samsung.com>, Senior Engineer,
SW Solution Development Team, Samsung Electronics Co., Ltd.
^ permalink raw reply
* [PATCH 2/2] ARM: S3C64XX: Staticly define parent clock of "camera" clock
From: Kukjin Kim @ 2012-11-12 5:02 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <509EC83D.8010704@gmail.com>
Sylwester Nawrocki wrote:
>
> On 11/10/2012 10:13 PM, Sylwester Nawrocki wrote:
> > On 11/10/2012 03:07 PM, dron0gus at gmail.com wrote:
> >> From: Andrey Gusakov<dron_gus@mail.ru>
> >>
> >> The "camera" clock have only one parent. Define it staticly and
>
> Forgot to point out a small typo here: staticly -> statically.
>
Thanks for pointing out. I fixed it when I applied.
> >> remove unused source clock list.
> >>
> >> Signed-off-by: Andrey Gusakov<dron0gus@gmail.com>
> >
> > Reviewed-by: Sylwester Nawrocki <sylvester.nawrocki@gmail.com>
Thanks.
Best regards,
Kgene.
--
Kukjin Kim <kgene.kim@samsung.com>, Senior Engineer,
SW Solution Development Team, Samsung Electronics Co., Ltd.
^ permalink raw reply
* [PATCH 2/4] gpio: samsung: Skip registration if pinctrl driver is present on Exynos4x12
From: Kukjin Kim @ 2012-11-12 5:03 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <CACRpkdZGu2VfP-EzAOxK3947x6Pd78bh=TWDK98iXwkJx2WiTQ@mail.gmail.com>
Linus Walleij wrote:
>
> >
> > Can you drop above 3 commits in your tree? If many conflicts happens
> during
> > rebasing, how about that I merge your pinctrl/samsung branch into
> Samsung
> > tree?...
>
> Why not :-)
>
> I have removed the samsung branch from my for-next to avoid
> clashes.
>
Thanks ;-)
> So please bring the samsung branch into you tree and fix
> everything up there.
>
I did.
> Axel Lin has sent some tree-wide cleanups but let's hope they don't
> hit samsung so much, or they will need to be postponed/dropped.
>
OK, I see.
Thanks again.
Best regards,
Kgene.
--
Kukjin Kim <kgene.kim@samsung.com>, Senior Engineer,
SW Solution Development Team, Samsung Electronics Co., Ltd.
^ permalink raw reply
* [PATCH 1/3] gpio: Add simple poweroff-gpio driver
From: Andrew Lunn @ 2012-11-12 6:07 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20121112011258.GA23724@lizard>
On Sun, Nov 11, 2012 at 05:12:58PM -0800, Anton Vorontsov wrote:
> On Mon, Nov 12, 2012 at 02:00:31AM +0100, Linus Walleij wrote:
> > On Sun, Nov 11, 2012 at 5:21 PM, Andrew Lunn <andrew@lunn.ch> wrote:
> >
> > > From: Jamie Lentin <jm@lentin.co.uk>
> > >
> > > Given appropriate devicetree bindings, this driver registers a
> > > pm_power_off function to set a GPIO line high/low to power down
> > > your board.
> > >
> > > Signed-off-by: Jamie Lentin <jm@lentin.co.uk>
> > > Signed-off-by: Andrew Lunn <andrew@lunn.ch>
> >
> > So this is just a GPIO client like any such thing right?
> >
> > I mean this thing has nothing more to do with the GPIO subsystem
> > than say, drivers/input/keyboard/gpio_keys.c?
> >
> > So from the GPIO subsystem point of view controlling power is
> > an alien concept.
> >
> > But I suspect Anton may be ready to welcome a driver like this
> > under drivers/power/* which I think is where it belongs.
>
> Yup. driver/power/reset/ seems appropriate.
Hi Anton
I was unsure where to put it. I will submit new patches with the move.
I'm not too sure about 'reset' though. Its not a reset operation, the
power goes off and stays off. Would 'shutdown' or 'power_off' be
better?
Andrew
^ permalink raw reply
* [PATCH] ARM: select PINCTRL for ARCH_MMP
From: Axel Lin @ 2012-11-12 6:30 UTC (permalink / raw)
To: linux-arm-kernel
This makes PINCTRL related config options visible.
Otherwise there is no way to build pinctrl drivers for MMP2, PXA168 and PXA910.
Signed-off-by: Axel Lin <axel.lin@ingics.com>
---
arch/arm/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 48eea16..24e9339 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -581,6 +581,7 @@ config ARCH_MMP
select GPIO_PXA
select IRQ_DOMAIN
select NEED_MACH_GPIO_H
+ select PINCTRL
select PLAT_PXA
select SPARSE_IRQ
help
--
1.7.9.5
^ permalink raw reply related
* [PATCH] pinctrl: Drop selecting PINCONF for MMP2, PXA168 and PXA910
From: Axel Lin @ 2012-11-12 6:33 UTC (permalink / raw)
To: linux-arm-kernel
These drivers do not need to select PINCONF.
Signed-off-by: Axel Lin <axel.lin@ingics.com>
---
drivers/pinctrl/Kconfig | 3 ---
1 file changed, 3 deletions(-)
diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig
index 6d5a50b..1d61d89 100644
--- a/drivers/pinctrl/Kconfig
+++ b/drivers/pinctrl/Kconfig
@@ -96,7 +96,6 @@ config PINCTRL_MMP2
bool "MMP2 pin controller driver"
depends on ARCH_MMP
select PINCTRL_PXA3xx
- select PINCONF
config PINCTRL_MXS
bool
@@ -135,13 +134,11 @@ config PINCTRL_PXA168
bool "PXA168 pin controller driver"
depends on ARCH_MMP
select PINCTRL_PXA3xx
- select PINCONF
config PINCTRL_PXA910
bool "PXA910 pin controller driver"
depends on ARCH_MMP
select PINCTRL_PXA3xx
- select PINCONF
config PINCTRL_SINGLE
tristate "One-register-per-pin type device tree based pinctrl driver"
--
1.7.9.5
^ permalink raw reply related
* [PATCH] ARM: OMAP2+: timer: remove CONFIG_OMAP_32K_TIMER
From: Hiremath, Vaibhav @ 2012-11-12 6:38 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <509F8D6B.5070504@compulab.co.il>
On Sun, Nov 11, 2012 at 17:05:07, Igor Grinberg wrote:
>
>
> On 11/08/12 20:34, Jon Hunter wrote:
> >
> > On 11/08/2012 12:17 PM, Paul Walmsley wrote:
> >> On Thu, 8 Nov 2012, Jon Hunter wrote:
> >>
> >>> On 11/08/2012 11:58 AM, Paul Walmsley wrote:
> >>>> On Thu, 8 Nov 2012, Jon Hunter wrote:
> >>>>
> >>>>> Igor was mentioning a h/w scenario where the 32kHz source is not
> >>>>> present. However, I am not sure which devices support this and is
> >>>>> applicable too.
> >>>>
> >>>> Pretty sure Igor is referring to the AM3517/3505. This is very poorly
> >>>> documented, but can be observed in the AM3517 TRM Rev B (SPRUGR0B) Figure
> >>>> 4-23 "PRM Clock Generator" and the AM3517 DM Rev C (SPRS550C) Section 4
> >>>> "Clock Specifications".
> >>>
> >>> But AFAICT, even in that h/w configuration the internal 32k
> >>> oscillator will be used
> >>
> >> Just to clarify, there's no internal 32k oscillator used on the 3517/3505;
> >> just a divider from the HF clock.
> >
> > Ah yes I see that now!
> >
> >>> and so the gptimer will still have a 32k clock source.
> >>
> >> That's a good question and you might want to check with Igor on that one,
> >> the AM3517 TRM conflicts with the DM as to whether it's available to the
> >> GPTIMER or not :-(
> >
> > Well the external 32k and internal divided down version go through the
> > same mux and so that seems to imply either they are both available to
> > the gptimer or neither is.
>
> Yep, but the /800 do not get you the 32768...
> and that makes the timer suck.
> Of course this can be dealt with in the clock subsystem
> (I remember Paul said that he will look into that), but it will take time.
>
> Also, what about having the sys_clk instead of 32k for higher precision?
> Is that possible already (without my patch)?
>
Yes, it is possible. You can choose it through bootargs.
Thanks,
Vaibhav
>
> --
> Regards,
> Igor.
>
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox