* new branch for linux-next [Was: [PATCH v6 0/3] Updated Cortex-M3 series]
From: Uwe Kleine-König @ 2012-10-08 15:43 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1343988614-5508-1-git-send-email-u.kleine-koenig@pengutronix.de>
Hello Stephen,
I already tried several times to get feedback from Russell King (as you
probably know he's the ARM maintainer and busy most of the time) for my
series to support Cortex-M3 machines. As I think the outcome will
probably (at least) be that it should be included in next for some time
first (as for example Arnd Bergmann already suggested), can you please
add
git://git.pengutronix.de/git/ukl/linux-2.6.git for-next
to your tree? I'd suggest adding it after arm and arm-soc.
I intend to use this branch later for efm32 support (which depends on
the Cortex-M3 stuff).
Currently the branch is still empty, but I intend to fill it with what I
consider to be applyable after I did some more testing. (Mainly to
assert it still does what it did when I developed it on an older base.)
@Russell: I hope this is OK for you. If not, I'm sure you'll protest.
Thanks
Uwe
--
Pengutronix e.K. | Uwe Kleine-K?nig |
Industrial Linux Solutions | http://www.pengutronix.de/ |
^ permalink raw reply
* [PATCH] ARM: sort select statements alphanumerically
From: Shawn Guo @ 2012-10-08 15:29 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <E1TKX8k-0006QP-M5@rmk-PC.arm.linux.org.uk>
Russell,
On Sat, Oct 06, 2012 at 05:22:10PM +0100, Russell King wrote:
> This commit is likely to change as we get closer to the end of the merge
> window, as other changes get merged into Linus' tree. I will be refreshing
> this from time to time, and keeping it out of linux-next, as it will cause
> more pain than its worth to put it into linux-next.
>
You plan to send this for 3.7 merge window or 3.8? Hope it's 3.7 since
I have a series queued for 3.8 merging plat-mxc into mach-imx which
will clash with the patch.
Shawn
^ permalink raw reply
* [PATCH 2/2] [media]: mx2_camera: Fix regression caused by clock conversion
From: Fabio Estevam @ 2012-10-08 15:12 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <5072A528.8010605@gmail.com>
On Mon, Oct 8, 2012 at 7:04 AM, Ga?tan Carlier <gcembed@gmail.com> wrote:
>
> This patch does not apply on linux-next-20121008. I suppose that linux-media
> development branch is needed. How can I put linux-media branch on top of
Ok, I have just rebased it against linux-next-20121008. See below.
It allows ov2640 to probe correctly. However, it does not work with
Gstreamer anymore (Friday's linux-next allowed to get the Gstreamer
pipeline to work).
$ gst-launch v4l2src ! fbdevsink
Setting pipeline to PAUSED ...mx2-camera mx2-camera.0: Camera driver
attached to camera 0
mx2-camera mx2-camera.0: Camera driver detached from camera 0
ERROR: Pipeline doesn't want to pause.
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Failed
to query norm on device '/dev/video0'.
Additional debug info:
v4l2_calls.c(213): gst_v4l2_fill_lists ():
/GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
Failed to get attributes for norm 0 on devide '/dev/video0'. (61 - No
data available)
Setting pipeline to NULL ...
Freeing pipeline ...
Does anyone have any ideas?
Thanks,
Fabio Estevam
---
drivers/media/platform/soc_camera/mx2_camera.c | 47 +++++++++++++++++-------
1 file changed, 34 insertions(+), 13 deletions(-)
diff --git a/drivers/media/platform/soc_camera/mx2_camera.c
b/drivers/media/platform/soc_camera/mx2_camera.c
index 403d7f1..9f8c5f0 100644
--- a/drivers/media/platform/soc_camera/mx2_camera.c
+++ b/drivers/media/platform/soc_camera/mx2_camera.c
@@ -272,7 +272,8 @@ struct mx2_camera_dev {
struct device *dev;
struct soc_camera_host soc_host;
struct soc_camera_device *icd;
- struct clk *clk_csi, *clk_emma_ahb, *clk_emma_ipg;
+ struct clk *clk_emma_ahb, *clk_emma_ipg;
+ struct clk *clk_csi_ahb, *clk_csi_per;
void __iomem *base_csi, *base_emma;
@@ -432,7 +433,8 @@ static void mx2_camera_deactivate(struct
mx2_camera_dev *pcdev)
{
unsigned long flags;
- clk_disable_unprepare(pcdev->clk_csi);
+ clk_disable_unprepare(pcdev->clk_csi_ahb);
+ clk_disable_unprepare(pcdev->clk_csi_per);
writel(0, pcdev->base_csi + CSICR1);
if (cpu_is_mx27()) {
writel(0, pcdev->base_emma + PRP_CNTL);
@@ -460,7 +462,11 @@ static int mx2_camera_add_device(struct
soc_camera_device *icd)
if (pcdev->icd)
return -EBUSY;
- ret = clk_prepare_enable(pcdev->clk_csi);
+ ret = clk_prepare_enable(pcdev->clk_csi_ahb);
+ if (ret < 0)
+ return ret;
+
+ ret = clk_prepare_enable(pcdev->clk_csi_per);
if (ret < 0)
return ret;
@@ -1725,11 +1731,18 @@ static int __devinit mx2_camera_probe(struct
platform_device *pdev)
goto exit;
}
- pcdev->clk_csi = devm_clk_get(&pdev->dev, "ahb");
- if (IS_ERR(pcdev->clk_csi)) {
- dev_err(&pdev->dev, "Could not get csi clock\n");
- err = PTR_ERR(pcdev->clk_csi);
- goto exit;
+ pcdev->clk_csi_ahb = devm_clk_get(&pdev->dev, "ahb");
+ if (IS_ERR(pcdev->clk_csi_ahb)) {
+ dev_err(&pdev->dev, "Could not get csi ahb clock\n");
+ err = PTR_ERR(pcdev->clk_csi_ahb);
+ goto exit;
+ }
+
+ pcdev->clk_csi_per = devm_clk_get(&pdev->dev, "per");
+ if (IS_ERR(pcdev->clk_csi_per)) {
+ dev_err(&pdev->dev, "Could not get csi per clock\n");
+ err = PTR_ERR(pcdev->clk_csi_per);
+ goto exit_csi_ahb;
}
pcdev->pdata = pdev->dev.platform_data;
@@ -1738,14 +1751,15 @@ static int __devinit mx2_camera_probe(struct
platform_device *pdev)
pcdev->platform_flags = pcdev->pdata->flags;
- rate = clk_round_rate(pcdev->clk_csi, pcdev->pdata->clk * 2);
+ rate = clk_round_rate(pcdev->clk_csi_per,
+ pcdev->pdata->clk * 2);
if (rate <= 0) {
err = -ENODEV;
- goto exit;
+ goto exit_csi_per;
}
- err = clk_set_rate(pcdev->clk_csi, rate);
+ err = clk_set_rate(pcdev->clk_csi_per, rate);
if (err < 0)
- goto exit;
+ goto exit_csi_per;
}
INIT_LIST_HEAD(&pcdev->capture);
@@ -1801,7 +1815,7 @@ static int __devinit mx2_camera_probe(struct
platform_device *pdev)
goto exit_free_emma;
dev_info(&pdev->dev, "MX2 Camera (CSI) driver probed, clock frequency: %ld\n",
- clk_get_rate(pcdev->clk_csi));
+ clk_get_rate(pcdev->clk_csi_per));
return 0;
@@ -1812,6 +1826,10 @@ eallocctx:
clk_disable_unprepare(pcdev->clk_emma_ipg);
clk_disable_unprepare(pcdev->clk_emma_ahb);
}
+exit_csi_per:
+ clk_disable_unprepare(pcdev->clk_csi_per);
+exit_csi_ahb:
+ clk_disable_unprepare(pcdev->clk_csi_ahb);
exit:
return err;
}
@@ -1831,6 +1849,9 @@ static int __devexit mx2_camera_remove(struct
platform_device *pdev)
clk_disable_unprepare(pcdev->clk_emma_ahb);
}
+ clk_disable_unprepare(pcdev->clk_csi_per);
+ clk_disable_unprepare(pcdev->clk_csi_ahb);
+
dev_info(&pdev->dev, "MX2 Camera driver unloaded\n");
return 0;
--
1.7.9.5
^ permalink raw reply related
* [PATCH v5 7/7] ARM: davinci: da850 evm: register uio_pruss device
From: Matt Porter @ 2012-10-08 13:54 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1349456686-22736-8-git-send-email-mporter@ti.com>
Registers the uio_pruss platform device on the DA850 EVM.
Tested on AM180x-EVM using the PRU_memAccessPRUDataRam and
PRU_memAccessL3andDDR examples from the PRU userspace tools
available from http://www.ti.com/tool/sprc940
Signed-off-by: Matt Porter <mporter@ti.com>
---
arch/arm/mach-davinci/board-da850-evm.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c
index 7359375..9e7f954 100644
--- a/arch/arm/mach-davinci/board-da850-evm.c
+++ b/arch/arm/mach-davinci/board-da850-evm.c
@@ -31,6 +31,7 @@
#include <linux/platform_data/mtd-davinci.h>
#include <linux/platform_data/mtd-davinci-aemif.h>
#include <linux/platform_data/spi-davinci.h>
+#include <linux/platform_data/uio_pruss.h>
#include <linux/regulator/machine.h>
#include <linux/regulator/tps6507x.h>
#include <linux/spi/spi.h>
@@ -1339,6 +1340,11 @@ static __init void da850_evm_init(void)
pr_warning("da850_evm_init: lcdcntl mux setup failed: %d\n",
ret);
+ ret = da8xx_register_uio_pruss();
+ if (ret)
+ pr_warning("da850_evm_init: pruss initialization failed: %d\n",
+ ret);
+
/* Handle board specific muxing for LCD here */
ret = davinci_cfg_reg_list(da850_evm_lcdc_pins);
if (ret)
--
1.7.9.5
^ permalink raw reply related
* [PATCH v5 5/7] ARM: davinci: da8xx: add DA850 PRUSS support
From: Matt Porter @ 2012-10-08 13:53 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1349456686-22736-6-git-send-email-mporter@ti.com>
Adds PRUSS clock support and registration helper for the
uio_pruss device.
Signed-off-by: Matt Porter <mporter@ti.com>
---
arch/arm/mach-davinci/da850.c | 7 +++
arch/arm/mach-davinci/devices-da8xx.c | 71 ++++++++++++++++++++++++++++
arch/arm/mach-davinci/include/mach/da8xx.h | 2 +
3 files changed, 80 insertions(+)
diff --git a/arch/arm/mach-davinci/da850.c b/arch/arm/mach-davinci/da850.c
index d8d69de..ebd7d6a 100644
--- a/arch/arm/mach-davinci/da850.c
+++ b/arch/arm/mach-davinci/da850.c
@@ -212,6 +212,12 @@ static struct clk tptc2_clk = {
.flags = ALWAYS_ENABLED,
};
+static struct clk pruss_clk = {
+ .name = "pruss",
+ .parent = &pll0_sysclk2,
+ .lpsc = DA8XX_LPSC0_PRUSS,
+};
+
static struct clk uart0_clk = {
.name = "uart0",
.parent = &pll0_sysclk2,
@@ -378,6 +384,7 @@ static struct clk_lookup da850_clks[] = {
CLK(NULL, "tptc1", &tptc1_clk),
CLK(NULL, "tpcc1", &tpcc1_clk),
CLK(NULL, "tptc2", &tptc2_clk),
+ CLK("pruss_uio", "pruss", &pruss_clk),
CLK(NULL, "uart0", &uart0_clk),
CLK(NULL, "uart1", &uart1_clk),
CLK(NULL, "uart2", &uart2_clk),
diff --git a/arch/arm/mach-davinci/devices-da8xx.c b/arch/arm/mach-davinci/devices-da8xx.c
index bd2f72b..36d09d7 100644
--- a/arch/arm/mach-davinci/devices-da8xx.c
+++ b/arch/arm/mach-davinci/devices-da8xx.c
@@ -22,6 +22,7 @@
#include <mach/time.h>
#include <mach/da8xx.h>
#include <mach/cpuidle.h>
+#include <mach/sram.h>
#include "clock.h"
#include "asp.h"
@@ -32,6 +33,7 @@
#define DA8XX_WDOG_BASE 0x01c21000 /* DA8XX_TIMER64P1_BASE */
#define DA8XX_I2C0_BASE 0x01c22000
#define DA8XX_RTC_BASE 0x01c23000
+#define DA8XX_PRUSS_MEM_BASE 0x01c30000
#define DA8XX_MMCSD0_BASE 0x01c40000
#define DA8XX_SPI0_BASE 0x01c41000
#define DA830_SPI1_BASE 0x01e12000
@@ -518,6 +520,75 @@ void __init da8xx_register_mcasp(int id, struct snd_platform_data *pdata)
}
}
+static struct resource da8xx_pruss_resources[] = {
+ {
+ .start = DA8XX_PRUSS_MEM_BASE,
+ .end = DA8XX_PRUSS_MEM_BASE + 0xFFFF,
+ .flags = IORESOURCE_MEM,
+ },
+ {
+ .start = IRQ_DA8XX_EVTOUT0,
+ .end = IRQ_DA8XX_EVTOUT0,
+ .flags = IORESOURCE_IRQ,
+ },
+ {
+ .start = IRQ_DA8XX_EVTOUT1,
+ .end = IRQ_DA8XX_EVTOUT1,
+ .flags = IORESOURCE_IRQ,
+ },
+ {
+ .start = IRQ_DA8XX_EVTOUT2,
+ .end = IRQ_DA8XX_EVTOUT2,
+ .flags = IORESOURCE_IRQ,
+ },
+ {
+ .start = IRQ_DA8XX_EVTOUT3,
+ .end = IRQ_DA8XX_EVTOUT3,
+ .flags = IORESOURCE_IRQ,
+ },
+ {
+ .start = IRQ_DA8XX_EVTOUT4,
+ .end = IRQ_DA8XX_EVTOUT4,
+ .flags = IORESOURCE_IRQ,
+ },
+ {
+ .start = IRQ_DA8XX_EVTOUT5,
+ .end = IRQ_DA8XX_EVTOUT5,
+ .flags = IORESOURCE_IRQ,
+ },
+ {
+ .start = IRQ_DA8XX_EVTOUT6,
+ .end = IRQ_DA8XX_EVTOUT6,
+ .flags = IORESOURCE_IRQ,
+ },
+ {
+ .start = IRQ_DA8XX_EVTOUT7,
+ .end = IRQ_DA8XX_EVTOUT7,
+ .flags = IORESOURCE_IRQ,
+ },
+};
+
+static struct uio_pruss_pdata da8xx_uio_pruss_pdata = {
+ .pintc_base = 0x4000,
+};
+
+static struct platform_device da8xx_uio_pruss_dev = {
+ .name = "pruss_uio",
+ .id = -1,
+ .num_resources = ARRAY_SIZE(da8xx_pruss_resources),
+ .resource = da8xx_pruss_resources,
+ .dev = {
+ .coherent_dma_mask = DMA_BIT_MASK(32),
+ .platform_data = &da8xx_uio_pruss_pdata,
+ }
+};
+
+int __init da8xx_register_uio_pruss(void)
+{
+ da8xx_uio_pruss_pdata.sram_pool = sram_get_gen_pool();
+ return platform_device_register(&da8xx_uio_pruss_dev);
+}
+
static const struct display_panel disp_panel = {
QVGA,
16,
diff --git a/arch/arm/mach-davinci/include/mach/da8xx.h b/arch/arm/mach-davinci/include/mach/da8xx.h
index 20553cf..9262821 100644
--- a/arch/arm/mach-davinci/include/mach/da8xx.h
+++ b/arch/arm/mach-davinci/include/mach/da8xx.h
@@ -25,6 +25,7 @@
#include <linux/platform_data/mmc-davinci.h>
#include <linux/platform_data/usb-davinci.h>
#include <linux/platform_data/spi-davinci.h>
+#include <linux/platform_data/uio_pruss.h>
extern void __iomem *da8xx_syscfg0_base;
extern void __iomem *da8xx_syscfg1_base;
@@ -83,6 +84,7 @@ int da8xx_register_watchdog(void);
int da8xx_register_usb20(unsigned mA, unsigned potpgt);
int da8xx_register_usb11(struct da8xx_ohci_root_hub *pdata);
int da8xx_register_emac(void);
+int da8xx_register_uio_pruss(void);
int da8xx_register_lcdc(struct da8xx_lcdc_platform_data *pdata);
int da8xx_register_mmcsd0(struct davinci_mmc_config *config);
int da850_register_mmcsd1(struct davinci_mmc_config *config);
--
1.7.9.5
^ permalink raw reply related
* [PATCH] of: add stub of_get_child_by_name for non-OF builds
From: Rob Herring @ 2012-10-08 13:47 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1349631654-20931-1-git-send-email-olof@lixom.net>
On 10/07/2012 12:40 PM, Olof Johansson wrote:
> Fixes build error on s3c6400_defconfig, introduced by commit
> 06455bbcab76e5f5225de5f38ab948d37a1c3587, "dt/s3c64xx/spi: Use
> of_get_child_by_name to get a named child".
>
> drivers/spi/spi-s3c64xx.c: In function 's3c64xx_get_slave_ctrldata':
> drivers/spi/spi-s3c64xx.c:838:2: error: implicit declaration of function
> 'of_get_child_by_name' [-Werror=implicit-function-declaration]
>
> Signed-off-by: Olof Johansson <olof@lixom.net>
> ---
Applied, thanks.
Rob
> include/linux/of.h | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/include/linux/of.h b/include/linux/of.h
> index 72843b7..b4e50d5 100644
> --- a/include/linux/of.h
> +++ b/include/linux/of.h
> @@ -331,6 +331,13 @@ static inline bool of_have_populated_dt(void)
> #define for_each_child_of_node(parent, child) \
> while (0)
>
> +static inline struct device_node *of_get_child_by_name(
> + const struct device_node *node,
> + const char *name)
> +{
> + return NULL;
> +}
> +
> static inline int of_get_child_count(const struct device_node *np)
> {
> return 0;
>
^ permalink raw reply
* [PATCH] video: imxfb: Do not crash on reboot
From: Fabio Estevam @ 2012-10-08 13:35 UTC (permalink / raw)
To: linux-arm-kernel
Issuing a "reboot" command after the LCD times out causes the following
warnings:
Requesting system reboot
------------[ cut here ]------------
WARNING: at drivers/clk/clk.c:471 clk_disable+0x24/0x50()
Modules linked in:
[<c001ad90>] (unwind_backtrace+0x0/0xf4) from [<c0025aac>] (warn_slowpath_common+0x48/0x60)
[<c0025aac>] (warn_slowpath_common+0x48/0x60) from [<c0025ae0>] (warn_slowpath_null+0x1c/0x24)
[<c0025ae0>] (warn_slowpath_null+0x1c/0x24) from [<c03960a0>] (clk_disable+0x24/0x50)
[<c03960a0>] (clk_disable+0x24/0x50) from [<c02695a0>] (imxfb_disable_controller+0x48/0x7c)
[<c02695a0>] (imxfb_disable_controller+0x48/0x7c) from [<c029d838>] (platform_drv_shutdown+0x18/0x1c)
[<c029d838>] (platform_drv_shutdown+0x18/0x1c) from [<c02990fc>] (device_shutdown+0x48/0x14c)
[<c02990fc>] (device_shutdown+0x48/0x14c) from [<c003d09c>] (kernel_restart_prepare+0x2c/0x3c)
[<c003d09c>] (kernel_restart_prepare+0x2c/0x3c) from [<c003d0e4>] (kernel_restart+0xc/0x48)
[<c003d0e4>] (kernel_restart+0xc/0x48) from [<c003d1e8>] (sys_reboot+0xc0/0x1bc)
[<c003d1e8>] (sys_reboot+0xc0/0x1bc) from [<c0014ca0>] (ret_fast_syscall+0x0/0x2c)
---[ end trace da6b502ca79c854f ]---
------------[ cut here ]------------
WARNING: at drivers/clk/clk.c:380 clk_unprepare+0x1c/0x2c()
Modules linked in:
[<c001ad90>] (unwind_backtrace+0x0/0xf4) from [<c0025aac>] (warn_slowpath_common+0x48/0x60)
[<c0025aac>] (warn_slowpath_common+0x48/0x60) from [<c0025ae0>] (warn_slowpath_null+0x1c/0x24)
[<c0025ae0>] (warn_slowpath_null+0x1c/0x24) from [<c0396338>] (clk_unprepare+0x1c/0x2c)
[<c0396338>] (clk_unprepare+0x1c/0x2c) from [<c02695a8>] (imxfb_disable_controller+0x50/0x7c)
[<c02695a8>] (imxfb_disable_controller+0x50/0x7c) from [<c029d838>] (platform_drv_shutdown+0x18/0x1c)
[<c029d838>] (platform_drv_shutdown+0x18/0x1c) from [<c02990fc>] (device_shutdown+0x48/0x14c)
[<c02990fc>] (device_shutdown+0x48/0x14c) from [<c003d09c>] (kernel_restart_prepare+0x2c/0x3c)
[<c003d09c>] (kernel_restart_prepare+0x2c/0x3c) from [<c003d0e4>] (kernel_restart+0xc/0x48)
[<c003d0e4>] (kernel_restart+0xc/0x48) from [<c003d1e8>] (sys_reboot+0xc0/0x1bc)
[<c003d1e8>] (sys_reboot+0xc0/0x1bc) from [<c0014ca0>] (ret_fast_syscall+0x0/0x2c)
---[ end trace da6b502ca79c8550 ]---
------------[ cut here ]------------
This happens because "reboot" triggers imxfb_shutdown(), which calls
imxfb_disable_controller with the clocks already disabled.
To prevent this, add a clock enabled status so that we can check if the clocks
are enabled before disabling them.
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
---
drivers/video/imxfb.c | 19 +++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)
diff --git a/drivers/video/imxfb.c b/drivers/video/imxfb.c
index f3363b2..6acf98a 100644
--- a/drivers/video/imxfb.c
+++ b/drivers/video/imxfb.c
@@ -134,6 +134,7 @@ struct imxfb_info {
struct clk *clk_ipg;
struct clk *clk_ahb;
struct clk *clk_per;
+ int enabled;
/*
* These are the addresses we mapped
@@ -530,9 +531,12 @@ static void imxfb_enable_controller(struct imxfb_info *fbi)
*/
writel(RMCR_LCDC_EN_MX1, fbi->regs + LCDC_RMCR);
- clk_prepare_enable(fbi->clk_ipg);
- clk_prepare_enable(fbi->clk_ahb);
- clk_prepare_enable(fbi->clk_per);
+ if (!fbi->enabled) {
+ clk_prepare_enable(fbi->clk_ipg);
+ clk_prepare_enable(fbi->clk_ahb);
+ clk_prepare_enable(fbi->clk_per);
+ fbi->enabled = 1;
+ }
if (fbi->backlight_power)
fbi->backlight_power(1);
@@ -551,9 +555,12 @@ static void imxfb_disable_controller(struct imxfb_info *fbi)
writel(0, fbi->regs + LCDC_RMCR);
- clk_disable_unprepare(fbi->clk_per);
- clk_disable_unprepare(fbi->clk_ipg);
- clk_disable_unprepare(fbi->clk_ahb);
+ if (fbi->enabled) {
+ clk_disable_unprepare(fbi->clk_per);
+ clk_disable_unprepare(fbi->clk_ipg);
+ clk_disable_unprepare(fbi->clk_ahb);
+ fbi->enabled = 0;
+ }
}
static int imxfb_blank(int blank, struct fb_info *info)
--
1.7.9.5
^ permalink raw reply related
* [PATCH] usb: remove CONFIG_USB_MUSB_HOST etc
From: Constantine Shulyupin @ 2012-10-08 13:17 UTC (permalink / raw)
To: linux-arm-kernel
From: Constantine Shulyupin <const@MakeLinux.com>
Remove USB configuration in arch/arm/mach-davinci/usb.c accordingly
CONFIG_USB_MUSB_OTG CONFIG_USB_MUSB_PERIPHERAL CONFIG_USB_MUSB_HOST
and set MUSB_OTG configuration by default
because this configuration options are removed from Kconfig.
Signed-off-by: Constantine Shulyupin <const@MakeLinux.com>
---
arch/arm/mach-davinci/usb.c | 6 ------
1 file changed, 6 deletions(-)
diff --git a/arch/arm/mach-davinci/usb.c b/arch/arm/mach-davinci/usb.c
index f77b953..34509ff 100644
--- a/arch/arm/mach-davinci/usb.c
+++ b/arch/arm/mach-davinci/usb.c
@@ -42,14 +42,8 @@ static struct musb_hdrc_config musb_config = {
};
static struct musb_hdrc_platform_data usb_data = {
-#if defined(CONFIG_USB_MUSB_OTG)
/* OTG requires a Mini-AB connector */
.mode = MUSB_OTG,
-#elif defined(CONFIG_USB_MUSB_PERIPHERAL)
- .mode = MUSB_PERIPHERAL,
-#elif defined(CONFIG_USB_MUSB_HOST)
- .mode = MUSB_HOST,
-#endif
.clock = "usb",
.config = &musb_config,
};
--
1.7.9.5
^ permalink raw reply related
* [PATCH V4] MXS: Implement DMA support into mxs-i2c
From: Marek Vasut @ 2012-10-08 13:15 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20121008092530.GA22051@pengutronix.de>
Dear Wolfram Sang,
> On Fri, Aug 24, 2012 at 05:44:31AM +0200, Marek Vasut wrote:
> > This patch implements DMA support into mxs-i2c. DMA transfers are now
> > enabled via DT. The DMA operation is enabled by default.
> >
> > Signed-off-by: Marek Vasut <marex@denx.de>
>
> Thanks, applied to -next.
>
> I am meanwhile thinking the driver needs massive changes
+1 it does.
> probably dropping PIOQUEUE entirely
Yes, in favor of PIO which can do switching with DMA.
> This is probably best done via incremental
> patches to this one. I have sketches which were sadly not ready for this
> merge-window :(
Cc me when submitting, I'd like to see those.
Best regards,
Marek Vasut
^ permalink raw reply
* [PATCH] ARM: dts: exynos4: Enable serial controllers on Origen and SMDKV310
From: Tomasz Figa @ 2012-10-08 13:15 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1349701968-6675-1-git-send-email-t.figa@samsung.com>
Hi Kgene,
On Monday 08 of October 2012 15:12:48 Tomasz Figa wrote:
> This patch adds status override of serial nodes to enable used serial
> ports on Origen and SMDKV310 board.
>
> Signed-off-by: Tomasz Figa <t.figa@samsung.com>
> ---
> arch/arm/boot/dts/exynos4210-origen.dts | 16 ++++++++++++++++
> arch/arm/boot/dts/exynos4210-smdkv310.dts | 16 ++++++++++++++++
> 2 files changed, 32 insertions(+)
>
I think you missed this patch when applying Exynos dts reorganization
patches. It is needed to enable serial ports on Origen and SMDKV310 boards.
Could you apply it as well?
Best regards,
--
Tomasz Figa
Samsung Poland R&D Center
^ permalink raw reply
* [PATCH 1/6] ARM: bcm476x: Add infrastructure
From: Jean-Christophe PLAGNIOL-VILLARD @ 2012-10-08 13:13 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20121007225417.GA29996@glitch>
On 00:54 Mon 08 Oct , Domenico Andreoli wrote:
> On Sun, Oct 07, 2012 at 09:57:59PM +0200, Jean-Christophe PLAGNIOL-VILLARD wrote:
> > On 03:53 Sun 07 Oct , Domenico Andreoli wrote:
> > > From: Domenico Andreoli <domenico.andreoli@linux.com>
> > >
> > > BCM476x's minimal infrastructure, Kernel's great reuse.
> > >
> > > Look mom, no include/mach directory!
> > >
> > > Signed-off-by: Domenico Andreoli <domenico.andreoli@linux.com>
> > > ---
> > > Documentation/devicetree/bindings/arm/bcm476x.txt | 8 +
> > > MAINTAINERS | 9 +
> > > arch/arm/Kconfig | 2 +
> > > arch/arm/Makefile | 1 +
> > > arch/arm/boot/dts/bcm476x-catalina.dts | 11 +
> > > arch/arm/boot/dts/bcm476x.dtsi | 31 ++
> > > arch/arm/configs/bcm476x_defconfig | 352 ++++++++++++++++++++++
> > > arch/arm/include/debug/bcm476x-uncompress.h | 53 +++
> > > arch/arm/include/debug/bcm476x.S | 35 ++
> > > arch/arm/mach-bcm476x/Kconfig | 17 +
> > > arch/arm/mach-bcm476x/Makefile | 1 +
> > > arch/arm/mach-bcm476x/Makefile.boot | 5 +
> > > arch/arm/mach-bcm476x/bcm476x.c | 83 +++++
> > > 13 files changed, 608 insertions(+)
> > >
> > > Index: b/arch/arm/boot/dts/bcm476x.dtsi
> > > ===================================================================
> > > --- /dev/null
> > > +++ b/arch/arm/boot/dts/bcm476x.dtsi
> > > @@ -0,0 +1,31 @@
> > > +/include/ "skeleton.dtsi"
> > > +
> > > +/ {
> > > + compatible = "brcm,bcm476x";
> > > + model = "Broadcom BCM476x";
> > > +
> > > + chosen {
> > > + bootargs = "earlyprintk";
> > > + };
> > > +
> > > + amba {
> > > + compatible = "arm,amba-bus";
> > > + #address-cells = <1>;
> > > + #size-cells = <1>;
> > > + ranges;
> > > +
> > > + vic0: interrupt-controller at 80000 {
> > > + compatible = "brcm,bcm476x-pl192", "arm,pl192-vic", "arm,primecell";
> > why brcm specific compatbile?
>
> Nothing breaks if I drop it. I think it's a future-proof clause, especially
> if you consider that the devicetree could be not easy to upgrade and you
> may need a way to differentiate the bcm476x's implementation from the
> common one. I'm not sure it's an actual requirement with use cases.
on amba we use periph id for differeniate IP implementation
>
> > > + reg = <0x80000 0x1000>;
> > > + interrupt-controller;
> > > + #interrupt-cells = <1>;
> > > + };
> > > +
> > > + vic1: interrupt-controller at 81000 {
> > > + compatible = "brcm,bcm476x-pl192", "arm,pl192-vic", "arm,primecell";
> > > + reg = <0x81000 0x1000>;
> > > + interrupt-controller;
> > > + #interrupt-cells = <1>;
> > > + };
> > > + };
> > > +};
> > > Index: b/arch/arm/include/debug/bcm476x.S
> > > ===================================================================
> > > --- /dev/null
> > > +++ b/arch/arm/include/debug/bcm476x.S
> > > @@ -0,0 +1,35 @@
> > > +/*
> > > + * Broadcom BCM476x SoCs DEBUG_LL support
> > > + *
> > > + * Copyright (C) 2012 Domenico Andreoli <domenico.andreoli@linux.com>
> > > + *
> > > + * This program is free software; you can redistribute it and/or modify
> > > + * it under the terms of the GNU General Public License as published by
> > > + * the Free Software Foundation; either version 2 of the License, or
> > > + * (at your option) any later version.
> > > + *
> > > + * This program is distributed in the hope that it will be useful,
> > > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> > > + * GNU General Public License for more details.
> > > + */
> > > +
> > > +#if defined(CONFIG_DEBUG_BCM476X_UART0)
> > > +# define BCM476X_DEBUG_PHYS 0x000c0000
> > > +# define BCM476X_DEBUG_VIRT 0xd00c0000
> > > +#elif defined(CONFIG_DEBUG_BCM476X_UART1)
> > > +# define BCM476X_DEBUG_PHYS 0x000c1000
> > > +# define BCM476X_DEBUG_VIRT 0xd00c1000
> > > +#elif defined(CONFIG_DEBUG_BCM476X_UART2)
> > > +# define BCM476X_DEBUG_PHYS 0x000b2000
> > > +# define BCM476X_DEBUG_VIRT 0xd00b2000
> > > +#else
> > > +# error Unknown BCM476x debug port
> > > +#endif
> >
> > can't you detect it?
>
> If I can assume that the boot loader will configure and enable only the
> console port, I could use the first one in such state.
>
> Where could I place such detection, in the maco addruart itself?
>
> > > +
> > > + .macro addruart, rp, rv, tmp
> > > + ldr \rp, =BCM476X_DEBUG_PHYS
> > > + ldr \rv, =BCM476X_DEBUG_VIRT
> > > + .endm
> > > +
> > > +#include <asm/hardware/debug-pl01x.S>
> > > Index: b/arch/arm/include/debug/bcm476x-uncompress.h
> > > ===================================================================
> > > --- /dev/null
> > > +++ b/arch/arm/include/debug/bcm476x-uncompress.h
> > > @@ -0,0 +1,53 @@
> > > +/*
> > > + * Broadcom BCM476x SoCs decompressor output
> > > + *
> > > + * Copyright (C) 2012 Domenico Andreoli <domenico.andreoli@linux.com>
> > > + *
> > > + * This program is free software; you can redistribute it and/or modify
> > > + * it under the terms of the GNU General Public License as published by
> > > + * the Free Software Foundation; either version 2 of the License, or
> > > + * (at your option) any later version.
> > > + *
> > > + * This program is distributed in the hope that it will be useful,
> > > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> > > + * GNU General Public License for more details.
> > > + */
> > > +
> > > +#include <linux/io.h>
> > > +#include <linux/amba/serial.h>
> > > +
> > > +#if defined(CONFIG_DEBUG_BCM476X_UART0)
> > > +# define BCM476X_DEBUG_PHYS 0x000c0000
> > > +#elif defined(CONFIG_DEBUG_BCM476X_UART1)
> > > +# define BCM476X_DEBUG_PHYS 0x000c1000
> > > +#elif defined(CONFIG_DEBUG_BCM476X_UART2)
> > > +# define BCM476X_DEBUG_PHYS 0x000b2000
> > > +#else
> > > +# error Unknown BCM476x debug port
> > ditto here by using the first one enable by the bootloader
>
> Are you saying that the detection should happen always or only in this
> last else branch, which actually should be impossible?
if your bootloader do not enable a uart your kernel may not boot
>
> > > +#endif
> > > +
> > > +#define BCM476X_UART_DR IOMEM(BCM476X_DEBUG_PHYS + UART01x_DR)
> > > +#define BCM476X_UART_FR IOMEM(BCM476X_DEBUG_PHYS + UART01x_FR)
> > > +#define BCM476X_UART_CR IOMEM(BCM476X_DEBUG_PHYS + UART011_CR)
> > > +
> > > +static inline void putc(int c)
> > > +{
> > > + while (__raw_readl(BCM476X_UART_FR) & UART01x_FR_TXFF)
> > > + barrier();
> > > +
> > > + __raw_writel(c, BCM476X_UART_DR);
> > > + barrier();
> > > +}
> > > +
> > > +static inline void flush(void)
> > > +{
> > > + int fr;
> > > +
> > > + do {
> > > + fr = __raw_readl(BCM476X_UART_FR);
> > > + barrier();
> > > + } while ((fr & (UART011_FR_TXFE | UART01x_FR_BUSY)) != UART011_FR_TXFE);
> > > +}
> > > +
>
> Thank you.
>
> Regards,
> Domenico
^ permalink raw reply
* [PATCH] ARM: dts: exynos4: Enable serial controllers on Origen and SMDKV310
From: Tomasz Figa @ 2012-10-08 13:12 UTC (permalink / raw)
To: linux-arm-kernel
This patch adds status override of serial nodes to enable used serial ports
on Origen and SMDKV310 board.
Signed-off-by: Tomasz Figa <t.figa@samsung.com>
---
arch/arm/boot/dts/exynos4210-origen.dts | 16 ++++++++++++++++
arch/arm/boot/dts/exynos4210-smdkv310.dts | 16 ++++++++++++++++
2 files changed, 32 insertions(+)
diff --git a/arch/arm/boot/dts/exynos4210-origen.dts b/arch/arm/boot/dts/exynos4210-origen.dts
index d1a1101..c7295fb 100644
--- a/arch/arm/boot/dts/exynos4210-origen.dts
+++ b/arch/arm/boot/dts/exynos4210-origen.dts
@@ -57,6 +57,22 @@
status = "okay";
};
+ serial at 13800000 {
+ status = "okay";
+ };
+
+ serial at 13810000 {
+ status = "okay";
+ };
+
+ serial at 13820000 {
+ status = "okay";
+ };
+
+ serial at 13830000 {
+ status = "okay";
+ };
+
gpio_keys {
compatible = "gpio-keys";
#address-cells = <1>;
diff --git a/arch/arm/boot/dts/exynos4210-smdkv310.dts b/arch/arm/boot/dts/exynos4210-smdkv310.dts
index b87cca2..f634907 100644
--- a/arch/arm/boot/dts/exynos4210-smdkv310.dts
+++ b/arch/arm/boot/dts/exynos4210-smdkv310.dts
@@ -43,6 +43,22 @@
status = "okay";
};
+ serial at 13800000 {
+ status = "okay";
+ };
+
+ serial at 13810000 {
+ status = "okay";
+ };
+
+ serial at 13820000 {
+ status = "okay";
+ };
+
+ serial at 13830000 {
+ status = "okay";
+ };
+
keypad at 100A0000 {
samsung,keypad-num-rows = <2>;
samsung,keypad-num-columns = <8>;
--
1.7.12
^ permalink raw reply related
* [PATCH 18/32 v4] ARM: cns3xxx: use OHCI platform driver
From: Florian Fainelli @ 2012-10-08 13:11 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1349701906-16481-1-git-send-email-florian@openwrt.org>
This patch converts the cns3xxx platform to use the ohci-platform driver which
is now suitable for use.
A previous patch converted the cns3xxx platform to use the ehci-platform
driver, and thus introduced the need to have power_{on,off} callbacks.
Since both the EHCI and OHCI platform drivers use the same same power_{on,off}
callbacks now, rename them to cns3xx_usb_power_{on,off} to show that they are
shared.
Signed-off-by: Florian Fainelli <florian@openwrt.org>
---
Changes in v4:
- rebase against greg's latest usb-next
Changes in v3:
- improved commit message to give backround on the patch ordering and to
understand the commit message
arch/arm/mach-cns3xxx/cns3420vb.c | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/arch/arm/mach-cns3xxx/cns3420vb.c b/arch/arm/mach-cns3xxx/cns3420vb.c
index 906094c..8a00cee8 100644
--- a/arch/arm/mach-cns3xxx/cns3420vb.c
+++ b/arch/arm/mach-cns3xxx/cns3420vb.c
@@ -25,6 +25,7 @@
#include <linux/mtd/physmap.h>
#include <linux/mtd/partitions.h>
#include <linux/usb/ehci_pdriver.h>
+#include <linux/usb/ohci_pdriver.h>
#include <asm/setup.h>
#include <asm/mach-types.h>
#include <asm/hardware/gic.h>
@@ -127,7 +128,7 @@ static struct resource cns3xxx_usb_ehci_resources[] = {
static u64 cns3xxx_usb_ehci_dma_mask = DMA_BIT_MASK(32);
-static int csn3xxx_usb_ehci_power_on(struct platform_device *pdev)
+static int csn3xxx_usb_power_on(struct platform_device *pdev)
{
/*
* EHCI and OHCI share the same clock and power,
@@ -148,7 +149,7 @@ static int csn3xxx_usb_ehci_power_on(struct platform_device *pdev)
return 0;
}
-static void csn3xxx_usb_ehci_power_off(struct platform_device *pdev)
+static void csn3xxx_usb_power_off(struct platform_device *pdev)
{
/*
* EHCI and OHCI share the same clock and power,
@@ -162,8 +163,8 @@ static void csn3xxx_usb_ehci_power_off(struct platform_device *pdev)
static struct usb_ehci_pdata cns3xxx_usb_ehci_pdata = {
.port_power_off = 1,
- .power_on = csn3xxx_usb_ehci_power_on,
- .power_off = csn3xxx_usb_ehci_power_off,
+ .power_on = csn3xxx_usb_power_on,
+ .power_off = csn3xxx_usb_power_off,
};
static struct platform_device cns3xxx_usb_ehci_device = {
@@ -191,13 +192,20 @@ static struct resource cns3xxx_usb_ohci_resources[] = {
static u64 cns3xxx_usb_ohci_dma_mask = DMA_BIT_MASK(32);
+static struct usb_ohci_pdata cns3xxx_usb_ohci_pdata = {
+ .num_ports = 1,
+ .power_on = csn3xxx_usb_power_on,
+ .power_off = csn3xxx_usb_power_off,
+};
+
static struct platform_device cns3xxx_usb_ohci_device = {
- .name = "cns3xxx-ohci",
+ .name = "ohci-platform",
.num_resources = ARRAY_SIZE(cns3xxx_usb_ohci_resources),
.resource = cns3xxx_usb_ohci_resources,
.dev = {
.dma_mask = &cns3xxx_usb_ohci_dma_mask,
.coherent_dma_mask = DMA_BIT_MASK(32),
+ .platform_data = &cns3xxx_usb_ohci_pdata,
},
};
--
1.7.9.5
^ permalink raw reply related
* [PATCH 15/32 v3] USB: ohci: merge ohci_finish_controller_resume with ohci_resume
From: Florian Fainelli @ 2012-10-08 13:11 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1349701906-16481-1-git-send-email-florian@openwrt.org>
Merge ohci_finish_controller_resume with ohci_resume as suggested by Alan
Stern. Since ohci_finish_controller_resume no longer exists, update the
various OHCI drivers to call ohci_resume() instead. Some drivers used to set
themselves the bit HCD_FLAG_HW_ACCESSIBLE, which is now handled by
ohci_resume().
Acked-by: Jingoo Han <jg1.han@samsung.com>
Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Signed-off-by: Florian Fainelli <florian@openwrt.org>
---
Changes in v3:
- rebased against greg's latest usb-next
Changes in v2:
- added Nicolas and Jingoo's Acked-by
drivers/usb/host/ohci-at91.c | 2 +-
drivers/usb/host/ohci-ep93xx.c | 2 +-
drivers/usb/host/ohci-exynos.c | 5 +----
drivers/usb/host/ohci-hcd.c | 41 +++++++++++++++++++++++++++++++++++--
drivers/usb/host/ohci-hub.c | 42 --------------------------------------
drivers/usb/host/ohci-omap.c | 2 +-
drivers/usb/host/ohci-platform.c | 2 +-
drivers/usb/host/ohci-pxa27x.c | 2 +-
drivers/usb/host/ohci-s3c2410.c | 3 +--
drivers/usb/host/ohci-spear.c | 2 +-
drivers/usb/host/ohci-tmio.c | 2 +-
11 files changed, 48 insertions(+), 57 deletions(-)
diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c
index 0bf72f9..908d84a 100644
--- a/drivers/usb/host/ohci-at91.c
+++ b/drivers/usb/host/ohci-at91.c
@@ -705,7 +705,7 @@ static int ohci_hcd_at91_drv_resume(struct platform_device *pdev)
if (!clocked)
at91_start_clock();
- ohci_finish_controller_resume(hcd);
+ ohci_resume(hcd, false);
return 0;
}
#else
diff --git a/drivers/usb/host/ohci-ep93xx.c b/drivers/usb/host/ohci-ep93xx.c
index dbfbd1d..a982f04 100644
--- a/drivers/usb/host/ohci-ep93xx.c
+++ b/drivers/usb/host/ohci-ep93xx.c
@@ -194,7 +194,7 @@ static int ohci_hcd_ep93xx_drv_resume(struct platform_device *pdev)
ep93xx_start_hc(&pdev->dev);
- ohci_finish_controller_resume(hcd);
+ ohci_resume(hcd, false);
return 0;
}
#endif
diff --git a/drivers/usb/host/ohci-exynos.c b/drivers/usb/host/ohci-exynos.c
index 20a5008..929a494 100644
--- a/drivers/usb/host/ohci-exynos.c
+++ b/drivers/usb/host/ohci-exynos.c
@@ -252,10 +252,7 @@ static int exynos_ohci_resume(struct device *dev)
if (pdata && pdata->phy_init)
pdata->phy_init(pdev, S5P_USB_PHY_HOST);
- /* Mark hardware accessible again as we are out of D3 state by now */
- set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
-
- ohci_finish_controller_resume(hcd);
+ ohci_resume(hcd, false);
return 0;
}
diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
index 31a4616..8e17f17 100644
--- a/drivers/usb/host/ohci-hcd.c
+++ b/drivers/usb/host/ohci-hcd.c
@@ -1007,13 +1007,50 @@ static int __maybe_unused ohci_suspend(struct usb_hcd *hcd, bool do_wakeup)
static int __maybe_unused ohci_resume(struct usb_hcd *hcd, bool hibernated)
{
+ struct ohci_hcd *ohci = hcd_to_ohci(hcd);
+ int port;
+ bool need_reinit = false;
+
set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
/* Make sure resume from hibernation re-enumerates everything */
if (hibernated)
- ohci_usb_reset(hcd_to_ohci(hcd));
+ ohci_usb_reset(ohci);
+
+ /* See if the controller is already running or has been reset */
+ ohci->hc_control = ohci_readl(ohci, &ohci->regs->control);
+ if (ohci->hc_control & (OHCI_CTRL_IR | OHCI_SCHED_ENABLES)) {
+ need_reinit = true;
+ } else {
+ switch (ohci->hc_control & OHCI_CTRL_HCFS) {
+ case OHCI_USB_OPER:
+ case OHCI_USB_RESET:
+ need_reinit = true;
+ }
+ }
+
+ /* If needed, reinitialize and suspend the root hub */
+ if (need_reinit) {
+ spin_lock_irq(&ohci->lock);
+ ohci_rh_resume(ohci);
+ ohci_rh_suspend(ohci, 0);
+ spin_unlock_irq(&ohci->lock);
+ }
+
+ /* Normally just turn on port power and enable interrupts */
+ else {
+ ohci_dbg(ohci, "powerup ports\n");
+ for (port = 0; port < ohci->num_ports; port++)
+ ohci_writel(ohci, RH_PS_PPS,
+ &ohci->regs->roothub.portstatus[port]);
+
+ ohci_writel(ohci, OHCI_INTR_MIE, &ohci->regs->intrenable);
+ ohci_readl(ohci, &ohci->regs->intrenable);
+ msleep(20);
+ }
+
+ usb_hcd_resume_root_hub(hcd);
- ohci_finish_controller_resume(hcd);
return 0;
}
diff --git a/drivers/usb/host/ohci-hub.c b/drivers/usb/host/ohci-hub.c
index 2f3619e..db09dae 100644
--- a/drivers/usb/host/ohci-hub.c
+++ b/drivers/usb/host/ohci-hub.c
@@ -316,48 +316,6 @@ static int ohci_bus_resume (struct usb_hcd *hcd)
return rc;
}
-/* Carry out the final steps of resuming the controller device */
-static void __maybe_unused ohci_finish_controller_resume(struct usb_hcd *hcd)
-{
- struct ohci_hcd *ohci = hcd_to_ohci(hcd);
- int port;
- bool need_reinit = false;
-
- /* See if the controller is already running or has been reset */
- ohci->hc_control = ohci_readl(ohci, &ohci->regs->control);
- if (ohci->hc_control & (OHCI_CTRL_IR | OHCI_SCHED_ENABLES)) {
- need_reinit = true;
- } else {
- switch (ohci->hc_control & OHCI_CTRL_HCFS) {
- case OHCI_USB_OPER:
- case OHCI_USB_RESET:
- need_reinit = true;
- }
- }
-
- /* If needed, reinitialize and suspend the root hub */
- if (need_reinit) {
- spin_lock_irq(&ohci->lock);
- ohci_rh_resume(ohci);
- ohci_rh_suspend(ohci, 0);
- spin_unlock_irq(&ohci->lock);
- }
-
- /* Normally just turn on port power and enable interrupts */
- else {
- ohci_dbg(ohci, "powerup ports\n");
- for (port = 0; port < ohci->num_ports; port++)
- ohci_writel(ohci, RH_PS_PPS,
- &ohci->regs->roothub.portstatus[port]);
-
- ohci_writel(ohci, OHCI_INTR_MIE, &ohci->regs->intrenable);
- ohci_readl(ohci, &ohci->regs->intrenable);
- msleep(20);
- }
-
- usb_hcd_resume_root_hub(hcd);
-}
-
/* Carry out polling-, autostop-, and autoresume-related state changes */
static int ohci_root_hub_state_changes(struct ohci_hcd *ohci, int changed,
int any_connected, int rhsc_status)
diff --git a/drivers/usb/host/ohci-omap.c b/drivers/usb/host/ohci-omap.c
index 4531d03..733c77c 100644
--- a/drivers/usb/host/ohci-omap.c
+++ b/drivers/usb/host/ohci-omap.c
@@ -530,7 +530,7 @@ static int ohci_omap_resume(struct platform_device *dev)
ohci->next_statechange = jiffies;
omap_ohci_clock_power(1);
- ohci_finish_controller_resume(hcd);
+ ohci_resume(hcd, false);
return 0;
}
diff --git a/drivers/usb/host/ohci-platform.c b/drivers/usb/host/ohci-platform.c
index 1caaf65..99d1755 100644
--- a/drivers/usb/host/ohci-platform.c
+++ b/drivers/usb/host/ohci-platform.c
@@ -203,7 +203,7 @@ static int ohci_platform_resume(struct device *dev)
return err;
}
- ohci_finish_controller_resume(hcd);
+ ohci_resume(hcd, false);
return 0;
}
diff --git a/drivers/usb/host/ohci-pxa27x.c b/drivers/usb/host/ohci-pxa27x.c
index 2bf1144..156d289 100644
--- a/drivers/usb/host/ohci-pxa27x.c
+++ b/drivers/usb/host/ohci-pxa27x.c
@@ -591,7 +591,7 @@ static int ohci_hcd_pxa27x_drv_resume(struct device *dev)
/* Select Power Management Mode */
pxa27x_ohci_select_pmm(ohci, inf->port_mode);
- ohci_finish_controller_resume(hcd);
+ ohci_resume(hcd, false);
return 0;
}
diff --git a/drivers/usb/host/ohci-s3c2410.c b/drivers/usb/host/ohci-s3c2410.c
index 0d2309c..281d5c6 100644
--- a/drivers/usb/host/ohci-s3c2410.c
+++ b/drivers/usb/host/ohci-s3c2410.c
@@ -524,8 +524,7 @@ static int ohci_hcd_s3c2410_drv_resume(struct device *dev)
s3c2410_start_hc(pdev, hcd);
- set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
- ohci_finish_controller_resume(hcd);
+ ohci_resume(hcd, false);
return 0;
}
diff --git a/drivers/usb/host/ohci-spear.c b/drivers/usb/host/ohci-spear.c
index fc7305e..d607be3 100644
--- a/drivers/usb/host/ohci-spear.c
+++ b/drivers/usb/host/ohci-spear.c
@@ -231,7 +231,7 @@ static int spear_ohci_hcd_drv_resume(struct platform_device *dev)
ohci->next_statechange = jiffies;
spear_start_ohci(ohci_p);
- ohci_finish_controller_resume(hcd);
+ ohci_resume(hcd, false);
return 0;
}
#endif
diff --git a/drivers/usb/host/ohci-tmio.c b/drivers/usb/host/ohci-tmio.c
index 60c2b07..2c9ab8f 100644
--- a/drivers/usb/host/ohci-tmio.c
+++ b/drivers/usb/host/ohci-tmio.c
@@ -352,7 +352,7 @@ static int ohci_hcd_tmio_drv_resume(struct platform_device *dev)
spin_unlock_irqrestore(&tmio->lock, flags);
- ohci_finish_controller_resume(hcd);
+ ohci_resume(hcd, false);
return 0;
}
--
1.7.9.5
^ permalink raw reply related
* [PATCH 10/32 v4] ARM: cns3xxx: use ehci platform driver
From: Florian Fainelli @ 2012-10-08 13:11 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1349701906-16481-1-git-send-email-florian@openwrt.org>
This patch converts the cns3xxx platform to use the ehci-platform driver
instead of the ehci-cns3xxx platform driver.
The ehci-platform driver is provided with power_{on,off} callbacks to ensure
proper block gating and USB configuration of the EHCI controller.
Signed-off-by: Florian Fainelli <florian@openwrt.org>
---
Changes in v4:
- rebased against greg's latest usb-next
No changes in v2 and v3
arch/arm/mach-cns3xxx/cns3420vb.c | 44 ++++++++++++++++++++++++++++++++++++-
1 file changed, 43 insertions(+), 1 deletion(-)
diff --git a/arch/arm/mach-cns3xxx/cns3420vb.c b/arch/arm/mach-cns3xxx/cns3420vb.c
index 2c5fb4c..906094c 100644
--- a/arch/arm/mach-cns3xxx/cns3420vb.c
+++ b/arch/arm/mach-cns3xxx/cns3420vb.c
@@ -24,6 +24,7 @@
#include <linux/mtd/mtd.h>
#include <linux/mtd/physmap.h>
#include <linux/mtd/partitions.h>
+#include <linux/usb/ehci_pdriver.h>
#include <asm/setup.h>
#include <asm/mach-types.h>
#include <asm/hardware/gic.h>
@@ -32,6 +33,7 @@
#include <asm/mach/time.h>
#include <mach/cns3xxx.h>
#include <mach/irqs.h>
+#include <mach/pm.h>
#include "core.h"
#include "devices.h"
@@ -125,13 +127,53 @@ static struct resource cns3xxx_usb_ehci_resources[] = {
static u64 cns3xxx_usb_ehci_dma_mask = DMA_BIT_MASK(32);
+static int csn3xxx_usb_ehci_power_on(struct platform_device *pdev)
+{
+ /*
+ * EHCI and OHCI share the same clock and power,
+ * resetting twice would cause the 1st controller been reset.
+ * Therefore only do power up at the first up device, and
+ * power down at the last down device.
+ *
+ * Set USB AHB INCR length to 16
+ */
+ if (atomic_inc_return(&usb_pwr_ref) == 1) {
+ cns3xxx_pwr_power_up(1 << PM_PLL_HM_PD_CTRL_REG_OFFSET_PLL_USB);
+ cns3xxx_pwr_clk_en(1 << PM_CLK_GATE_REG_OFFSET_USB_HOST);
+ cns3xxx_pwr_soft_rst(1 << PM_SOFT_RST_REG_OFFST_USB_HOST);
+ __raw_writel((__raw_readl(MISC_CHIP_CONFIG_REG) | (0X2 << 24)),
+ MISC_CHIP_CONFIG_REG);
+ }
+
+ return 0;
+}
+
+static void csn3xxx_usb_ehci_power_off(struct platform_device *pdev)
+{
+ /*
+ * EHCI and OHCI share the same clock and power,
+ * resetting twice would cause the 1st controller been reset.
+ * Therefore only do power up at the first up device, and
+ * power down@the last down device.
+ */
+ if (atomic_dec_return(&usb_pwr_ref) == 0)
+ cns3xxx_pwr_clk_dis(1 << PM_CLK_GATE_REG_OFFSET_USB_HOST);
+}
+
+static struct usb_ehci_pdata cns3xxx_usb_ehci_pdata = {
+ .port_power_off = 1,
+ .power_on = csn3xxx_usb_ehci_power_on,
+ .power_off = csn3xxx_usb_ehci_power_off,
+};
+
static struct platform_device cns3xxx_usb_ehci_device = {
- .name = "cns3xxx-ehci",
+ .name = "ehci-platform",
.num_resources = ARRAY_SIZE(cns3xxx_usb_ehci_resources),
.resource = cns3xxx_usb_ehci_resources,
.dev = {
.dma_mask = &cns3xxx_usb_ehci_dma_mask,
.coherent_dma_mask = DMA_BIT_MASK(32),
+ .platform_data = &cns3xxx_usb_ehci_pdata,
},
};
--
1.7.9.5
^ permalink raw reply related
* [PATCH 4/4] ARM: EXYNOS: Kconfig: Remove dependencies on particular SoCs from DT machines
From: Tomasz Figa @ 2012-10-08 13:02 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1349701345-2681-1-git-send-email-t.figa@samsung.com>
MACH_EXYNOS{4,5}_DT are used for whole SoC lines, so they should depend
on ARCH_EXYNOS{4,5} rather than on particular SoCs.
Signed-off-by: Tomasz Figa <t.figa@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
---
arch/arm/mach-exynos/Kconfig | 2 --
1 file changed, 2 deletions(-)
diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
index 6ea95f0..2e82ce7 100644
--- a/arch/arm/mach-exynos/Kconfig
+++ b/arch/arm/mach-exynos/Kconfig
@@ -404,7 +404,6 @@ comment "Flattened Device Tree based board for EXYNOS SoCs"
config MACH_EXYNOS4_DT
bool "Samsung Exynos4 Machine using device tree"
depends on ARCH_EXYNOS4
- select SOC_EXYNOS4210
select USE_OF
select ARM_AMBA
select HAVE_SAMSUNG_KEYPAD if INPUT_KEYBOARD
@@ -419,7 +418,6 @@ config MACH_EXYNOS4_DT
config MACH_EXYNOS5_DT
bool "SAMSUNG EXYNOS5 Machine using device tree"
depends on ARCH_EXYNOS5
- select SOC_EXYNOS5250
select USE_OF
select ARM_AMBA
help
--
1.7.12
^ permalink raw reply related
* [PATCH 3/4] ARM: EXYNOS: Kconfig: Group EXYNOS{4212,4412} into EXYNOS4X12
From: Tomasz Figa @ 2012-10-08 13:02 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1349701345-2681-1-git-send-email-t.figa@samsung.com>
This patch adds CONFIG_EXYNOS4X12, which is automatically selected
whenever there is at least one SoC from Exynos4x12 line enabled. All the
shared dependencies of EXYNOS{4212,4412} are moved to this new
option.
This fixes build with Exynos4412 enabled and Exynos4212 and Exynos4210
disabled and also allows to simplify conditional compilation in several
places.
Signed-off-by: Tomasz Figa <t.figa@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
---
arch/arm/mach-exynos/Kconfig | 15 +++++++++------
arch/arm/mach-exynos/Makefile | 2 +-
arch/arm/mach-exynos/common.h | 2 +-
drivers/cpufreq/Kconfig.arm | 2 +-
4 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
index 9f91892..6ea95f0 100644
--- a/arch/arm/mach-exynos/Kconfig
+++ b/arch/arm/mach-exynos/Kconfig
@@ -38,22 +38,25 @@ config SOC_EXYNOS4210
help
Enable EXYNOS4210 CPU support
-config SOC_EXYNOS4212
- bool "SAMSUNG EXYNOS4212"
- default y
+config SOC_EXYNOS4X12
+ def_bool n
select ARCH_EXYNOS4
select SAMSUNG_DMADEV
+ select ARM_CPU_SUSPEND if PM
select S5P_PM if PM
select S5P_SLEEP if PM
+
+config SOC_EXYNOS4212
+ bool "SAMSUNG EXYNOS4212"
+ select SOC_EXYNOS4X12
+ default y
help
Enable EXYNOS4212 SoC support
config SOC_EXYNOS4412
bool "SAMSUNG EXYNOS4412"
- select ARCH_EXYNOS4
+ select SOC_EXYNOS4X12
default y
- depends on ARCH_EXYNOS4
- select SAMSUNG_DMADEV
help
Enable EXYNOS4412 SoC support
diff --git a/arch/arm/mach-exynos/Makefile b/arch/arm/mach-exynos/Makefile
index ceeb8c9..f88fcb6 100644
--- a/arch/arm/mach-exynos/Makefile
+++ b/arch/arm/mach-exynos/Makefile
@@ -16,7 +16,7 @@ obj-$(CONFIG_ARCH_EXYNOS) += common.o
obj-$(CONFIG_ARCH_EXYNOS4) += clock-exynos4.o
obj-$(CONFIG_ARCH_EXYNOS5) += clock-exynos5.o
obj-$(CONFIG_SOC_EXYNOS4210) += clock-exynos4210.o
-obj-$(CONFIG_SOC_EXYNOS4212) += clock-exynos4212.o
+obj-$(CONFIG_SOC_EXYNOS4X12) += clock-exynos4212.o
obj-$(CONFIG_PM) += pm.o
obj-$(CONFIG_PM_GENERIC_DOMAINS) += pm_domains.o
diff --git a/arch/arm/mach-exynos/common.h b/arch/arm/mach-exynos/common.h
index 054c786..a8cb3e6 100644
--- a/arch/arm/mach-exynos/common.h
+++ b/arch/arm/mach-exynos/common.h
@@ -52,7 +52,7 @@ void exynos4210_register_clocks(void);
#define exynos4210_register_clocks()
#endif
-#ifdef CONFIG_SOC_EXYNOS4212
+#ifdef CONFIG_SOC_EXYNOS4X12
void exynos4212_register_clocks(void);
#else
diff --git a/drivers/cpufreq/Kconfig.arm b/drivers/cpufreq/Kconfig.arm
index ca4ede3..d0ff91a 100644
--- a/drivers/cpufreq/Kconfig.arm
+++ b/drivers/cpufreq/Kconfig.arm
@@ -66,7 +66,7 @@ config ARM_EXYNOS4210_CPUFREQ
SoC (S5PV310 or S5PC210).
config ARM_EXYNOS4X12_CPUFREQ
- def_bool (SOC_EXYNOS4212 || SOC_EXYNOS4412)
+ def_bool SOC_EXYNOS4X12
help
This adds the CPUFreq driver for Samsung EXYNOS4X12
SoC (EXYNOS4212 or EXYNOS4412).
--
1.7.12
^ permalink raw reply related
* [PATCH 2/4] ARM: EXYNOS: Kconfig: Sort out dependencies between options
From: Tomasz Figa @ 2012-10-08 13:02 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1349701345-2681-1-git-send-email-t.figa@samsung.com>
This patch modifies the dependencies between Exynos-related Kconfig
options to represent the real dependencies between code units more
closely.
Originally it was possible to enable ARCH_EXYNOS{4,5} without any
SOC_EXYNOS_{4,5}.* enabled, which could end with compilation or link
errors. Now ARCH_EXYNOS{4,5} is only selected when there is a
SOC_EXYNOS_{4,5}.* enabled, which requires it.
Signed-off-by: Tomasz Figa <t.figa@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
---
arch/arm/mach-exynos/Kconfig | 15 ++++++---------
drivers/devfreq/Kconfig | 2 +-
drivers/mmc/host/sdhci-s3c.c | 2 +-
drivers/tty/serial/samsung.c | 3 +--
4 files changed, 9 insertions(+), 13 deletions(-)
diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
index 05dcd07..9f91892 100644
--- a/arch/arm/mach-exynos/Kconfig
+++ b/arch/arm/mach-exynos/Kconfig
@@ -12,15 +12,14 @@ if ARCH_EXYNOS
menu "SAMSUNG EXYNOS SoCs Support"
config ARCH_EXYNOS4
- bool "SAMSUNG EXYNOS4"
- default y
+ def_bool n
select HAVE_SMP
select MIGHT_HAVE_CACHE_L2X0
help
Samsung EXYNOS4 SoCs based systems
config ARCH_EXYNOS5
- bool "SAMSUNG EXYNOS5"
+ def_bool n
select HAVE_SMP
help
Samsung EXYNOS5 (Cortex-A15) SoC based systems
@@ -30,7 +29,7 @@ comment "EXYNOS SoCs"
config SOC_EXYNOS4210
bool "SAMSUNG EXYNOS4210"
default y
- depends on ARCH_EXYNOS4
+ select ARCH_EXYNOS4
select SAMSUNG_DMADEV
select ARM_CPU_SUSPEND if PM
select S5P_PM if PM
@@ -42,7 +41,7 @@ config SOC_EXYNOS4210
config SOC_EXYNOS4212
bool "SAMSUNG EXYNOS4212"
default y
- depends on ARCH_EXYNOS4
+ select ARCH_EXYNOS4
select SAMSUNG_DMADEV
select S5P_PM if PM
select S5P_SLEEP if PM
@@ -51,6 +50,7 @@ config SOC_EXYNOS4212
config SOC_EXYNOS4412
bool "SAMSUNG EXYNOS4412"
+ select ARCH_EXYNOS4
default y
depends on ARCH_EXYNOS4
select SAMSUNG_DMADEV
@@ -60,7 +60,7 @@ config SOC_EXYNOS4412
config SOC_EXYNOS5250
bool "SAMSUNG EXYNOS5250"
default y
- depends on ARCH_EXYNOS5
+ select ARCH_EXYNOS5
select SAMSUNG_DMADEV
select S5P_PM if PM
select S5P_SLEEP if PM
@@ -176,8 +176,6 @@ config EXYNOS_SETUP_SPI
# machine support
-if ARCH_EXYNOS4
-
comment "EXYNOS4210 Boards"
config MACH_SMDKC210
@@ -397,7 +395,6 @@ config MACH_SMDK4412
select MACH_SMDK4212
help
Machine support for Samsung SMDK4412
-endif
comment "Flattened Device Tree based board for EXYNOS SoCs"
diff --git a/drivers/devfreq/Kconfig b/drivers/devfreq/Kconfig
index 8545069..c559609 100644
--- a/drivers/devfreq/Kconfig
+++ b/drivers/devfreq/Kconfig
@@ -67,7 +67,7 @@ comment "DEVFREQ Drivers"
config ARM_EXYNOS4_BUS_DEVFREQ
bool "ARM Exynos4210/4212/4412 Memory Bus DEVFREQ Driver"
- depends on SOC_EXYNOS4210 || CPU_EXYNOS4212 || CPU_EXYNOS4412
+ depends on ARCH_EXYNOS4
select ARCH_HAS_OPP
select DEVFREQ_GOV_SIMPLE_ONDEMAND
help
diff --git a/drivers/mmc/host/sdhci-s3c.c b/drivers/mmc/host/sdhci-s3c.c
index b090415..5e2083b 100644
--- a/drivers/mmc/host/sdhci-s3c.c
+++ b/drivers/mmc/host/sdhci-s3c.c
@@ -716,7 +716,7 @@ static const struct dev_pm_ops sdhci_s3c_pmops = {
#define SDHCI_S3C_PMOPS NULL
#endif
-#if defined(CONFIG_SOC_EXYNOS4210) || defined(CONFIG_SOC_EXYNOS4212)
+#if defined(CONFIG_ARCH_EXYNOS4)
static struct sdhci_s3c_drv_data exynos4_sdhci_drv_data = {
.sdhci_quirks = SDHCI_QUIRK_NONSTANDARD_CLOCK,
};
diff --git a/drivers/tty/serial/samsung.c b/drivers/tty/serial/samsung.c
index 175ba6e..c689091 100644
--- a/drivers/tty/serial/samsung.c
+++ b/drivers/tty/serial/samsung.c
@@ -1594,8 +1594,7 @@ static struct s3c24xx_serial_drv_data s5pv210_serial_drv_data = {
#define S5PV210_SERIAL_DRV_DATA (kernel_ulong_t)NULL
#endif
-#if defined(CONFIG_SOC_EXYNOS4210) || defined(CONFIG_SOC_EXYNOS4212) || \
- defined(CONFIG_SOC_EXYNOS4412) || defined(CONFIG_SOC_EXYNOS5250)
+#if defined(CONFIG_ARCH_EXYNOS4) || defined(CONFIG_ARCH_EXYNOS5)
static struct s3c24xx_serial_drv_data exynos4210_serial_drv_data = {
.info = &(struct s3c24xx_uart_info) {
.name = "Samsung Exynos4 UART",
--
1.7.12
^ permalink raw reply related
* [PATCH 1/4] ARM: EXYNOS: Kconfig: Rename CPU_EXYNOS4210 to SOC_EXYNOS4210
From: Tomasz Figa @ 2012-10-08 13:02 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1349701345-2681-1-git-send-email-t.figa@samsung.com>
This patch renames CONFIG_CPU_EXYNOS4210 to CONFIG_SOC_EXYNOS4210 to
match the convention used by rest of Exynos SoCs and correctly represent
the reality (Exynos4210 is a SoC, not a CPU).
Signed-off-by: Tomasz Figa <t.figa@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
---
arch/arm/mach-exynos/Kconfig | 14 +++++++-------
arch/arm/mach-exynos/Makefile | 2 +-
arch/arm/mach-exynos/common.h | 2 +-
arch/arm/plat-samsung/include/plat/cpu.h | 2 +-
drivers/cpufreq/Kconfig.arm | 2 +-
drivers/devfreq/Kconfig | 2 +-
drivers/mmc/host/sdhci-s3c.c | 2 +-
drivers/tty/serial/samsung.c | 2 +-
8 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
index 4372075..05dcd07 100644
--- a/arch/arm/mach-exynos/Kconfig
+++ b/arch/arm/mach-exynos/Kconfig
@@ -27,7 +27,7 @@ config ARCH_EXYNOS5
comment "EXYNOS SoCs"
-config CPU_EXYNOS4210
+config SOC_EXYNOS4210
bool "SAMSUNG EXYNOS4210"
default y
depends on ARCH_EXYNOS4
@@ -188,7 +188,7 @@ config MACH_SMDKC210
config MACH_SMDKV310
bool "SMDKV310"
- select CPU_EXYNOS4210
+ select SOC_EXYNOS4210
select S5P_DEV_FIMD0
select S3C_DEV_RTC
select S3C_DEV_WDT
@@ -227,7 +227,7 @@ config MACH_SMDKV310
config MACH_ARMLEX4210
bool "ARMLEX4210"
- select CPU_EXYNOS4210
+ select SOC_EXYNOS4210
select S3C_DEV_RTC
select S3C_DEV_WDT
select S3C_DEV_HSMMC
@@ -241,7 +241,7 @@ config MACH_ARMLEX4210
config MACH_UNIVERSAL_C210
bool "Mobile UNIVERSAL_C210 Board"
- select CPU_EXYNOS4210
+ select SOC_EXYNOS4210
select S5P_HRT
select CLKSRC_MMIO
select HAVE_SCHED_CLOCK
@@ -282,7 +282,7 @@ config MACH_UNIVERSAL_C210
config MACH_NURI
bool "Mobile NURI Board"
- select CPU_EXYNOS4210
+ select SOC_EXYNOS4210
select S5P_GPIO_INT
select S3C_DEV_WDT
select S3C_DEV_RTC
@@ -323,7 +323,7 @@ config MACH_NURI
config MACH_ORIGEN
bool "ORIGEN"
- select CPU_EXYNOS4210
+ select SOC_EXYNOS4210
select S3C_DEV_RTC
select S3C_DEV_WDT
select S3C_DEV_HSMMC
@@ -404,7 +404,7 @@ comment "Flattened Device Tree based board for EXYNOS SoCs"
config MACH_EXYNOS4_DT
bool "Samsung Exynos4 Machine using device tree"
depends on ARCH_EXYNOS4
- select CPU_EXYNOS4210
+ select SOC_EXYNOS4210
select USE_OF
select ARM_AMBA
select HAVE_SAMSUNG_KEYPAD if INPUT_KEYBOARD
diff --git a/arch/arm/mach-exynos/Makefile b/arch/arm/mach-exynos/Makefile
index 9b58024..ceeb8c9 100644
--- a/arch/arm/mach-exynos/Makefile
+++ b/arch/arm/mach-exynos/Makefile
@@ -15,7 +15,7 @@ obj- :=
obj-$(CONFIG_ARCH_EXYNOS) += common.o
obj-$(CONFIG_ARCH_EXYNOS4) += clock-exynos4.o
obj-$(CONFIG_ARCH_EXYNOS5) += clock-exynos5.o
-obj-$(CONFIG_CPU_EXYNOS4210) += clock-exynos4210.o
+obj-$(CONFIG_SOC_EXYNOS4210) += clock-exynos4210.o
obj-$(CONFIG_SOC_EXYNOS4212) += clock-exynos4212.o
obj-$(CONFIG_PM) += pm.o
diff --git a/arch/arm/mach-exynos/common.h b/arch/arm/mach-exynos/common.h
index aed2eeb..054c786 100644
--- a/arch/arm/mach-exynos/common.h
+++ b/arch/arm/mach-exynos/common.h
@@ -45,7 +45,7 @@ void exynos5_setup_clocks(void);
#define exynos5_setup_clocks()
#endif
-#ifdef CONFIG_CPU_EXYNOS4210
+#ifdef CONFIG_SOC_EXYNOS4210
void exynos4210_register_clocks(void);
#else
diff --git a/arch/arm/plat-samsung/include/plat/cpu.h b/arch/arm/plat-samsung/include/plat/cpu.h
index ace4451..021fff0 100644
--- a/arch/arm/plat-samsung/include/plat/cpu.h
+++ b/arch/arm/plat-samsung/include/plat/cpu.h
@@ -102,7 +102,7 @@ IS_SAMSUNG_CPU(exynos5250, EXYNOS5250_SOC_ID, EXYNOS5_SOC_MASK)
# define soc_is_s5pv210() 0
#endif
-#if defined(CONFIG_CPU_EXYNOS4210)
+#if defined(CONFIG_SOC_EXYNOS4210)
# define soc_is_exynos4210() is_samsung_exynos4210()
#else
# define soc_is_exynos4210() 0
diff --git a/drivers/cpufreq/Kconfig.arm b/drivers/cpufreq/Kconfig.arm
index 5961e64..ca4ede3 100644
--- a/drivers/cpufreq/Kconfig.arm
+++ b/drivers/cpufreq/Kconfig.arm
@@ -60,7 +60,7 @@ config ARM_EXYNOS_CPUFREQ
If in doubt, say N.
config ARM_EXYNOS4210_CPUFREQ
- def_bool CPU_EXYNOS4210
+ def_bool SOC_EXYNOS4210
help
This adds the CPUFreq driver for Samsung EXYNOS4210
SoC (S5PV310 or S5PC210).
diff --git a/drivers/devfreq/Kconfig b/drivers/devfreq/Kconfig
index f6b0a6e2..8545069 100644
--- a/drivers/devfreq/Kconfig
+++ b/drivers/devfreq/Kconfig
@@ -67,7 +67,7 @@ comment "DEVFREQ Drivers"
config ARM_EXYNOS4_BUS_DEVFREQ
bool "ARM Exynos4210/4212/4412 Memory Bus DEVFREQ Driver"
- depends on CPU_EXYNOS4210 || CPU_EXYNOS4212 || CPU_EXYNOS4412
+ depends on SOC_EXYNOS4210 || CPU_EXYNOS4212 || CPU_EXYNOS4412
select ARCH_HAS_OPP
select DEVFREQ_GOV_SIMPLE_ONDEMAND
help
diff --git a/drivers/mmc/host/sdhci-s3c.c b/drivers/mmc/host/sdhci-s3c.c
index a50c205..b090415 100644
--- a/drivers/mmc/host/sdhci-s3c.c
+++ b/drivers/mmc/host/sdhci-s3c.c
@@ -716,7 +716,7 @@ static const struct dev_pm_ops sdhci_s3c_pmops = {
#define SDHCI_S3C_PMOPS NULL
#endif
-#if defined(CONFIG_CPU_EXYNOS4210) || defined(CONFIG_SOC_EXYNOS4212)
+#if defined(CONFIG_SOC_EXYNOS4210) || defined(CONFIG_SOC_EXYNOS4212)
static struct sdhci_s3c_drv_data exynos4_sdhci_drv_data = {
.sdhci_quirks = SDHCI_QUIRK_NONSTANDARD_CLOCK,
};
diff --git a/drivers/tty/serial/samsung.c b/drivers/tty/serial/samsung.c
index 02d07bf..175ba6e 100644
--- a/drivers/tty/serial/samsung.c
+++ b/drivers/tty/serial/samsung.c
@@ -1594,7 +1594,7 @@ static struct s3c24xx_serial_drv_data s5pv210_serial_drv_data = {
#define S5PV210_SERIAL_DRV_DATA (kernel_ulong_t)NULL
#endif
-#if defined(CONFIG_CPU_EXYNOS4210) || defined(CONFIG_SOC_EXYNOS4212) || \
+#if defined(CONFIG_SOC_EXYNOS4210) || defined(CONFIG_SOC_EXYNOS4212) || \
defined(CONFIG_SOC_EXYNOS4412) || defined(CONFIG_SOC_EXYNOS5250)
static struct s3c24xx_serial_drv_data exynos4210_serial_drv_data = {
.info = &(struct s3c24xx_uart_info) {
--
1.7.12
^ permalink raw reply related
* [PATCH 0/4] ARM: EXYNOS: Kconfig cleanup
From: Tomasz Figa @ 2012-10-08 13:02 UTC (permalink / raw)
To: linux-arm-kernel
This patch series aims to consolidate low level Kconfig entries for Exynos
SoC series by adding missing or removing wrong dependencies, renaming
entries to match a single naming convention and introducing a common
parent entry for EXYNOS4212 and EXYNOS4412.
See particular patches for more detailed descriptions.
Tomasz Figa (4):
ARM: EXYNOS: Kconfig: Rename CPU_EXYNOS4210 to SOC_EXYNOS4210
ARM: EXYNOS: Kconfig: Sort out dependencies between options
ARM: EXYNOS: Kconfig: Group EXYNOS{4212,4412} into EXYNOS4X12
ARM: EXYNOS: Kconfig: Remove dependencies on particular SoCs from DT
machines
arch/arm/mach-exynos/Kconfig | 42 +++++++++++++++-----------------
arch/arm/mach-exynos/Makefile | 4 +--
arch/arm/mach-exynos/common.h | 4 +--
arch/arm/plat-samsung/include/plat/cpu.h | 2 +-
drivers/cpufreq/Kconfig.arm | 4 +--
drivers/devfreq/Kconfig | 2 +-
drivers/mmc/host/sdhci-s3c.c | 2 +-
drivers/tty/serial/samsung.c | 3 +--
8 files changed, 30 insertions(+), 33 deletions(-)
--
1.7.12
^ permalink raw reply
* [PATCH] ARM: Push selects for TWD/SCU into machine entries
From: Rob Herring @ 2012-10-08 12:56 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <506DE1F4.9090309@codeaurora.org>
On 10/04/2012 02:22 PM, Stephen Boyd wrote:
> On 10/04/12 06:05, Rob Herring wrote:
>> On 10/04/2012 03:50 AM, Stephen Boyd wrote:
>>> The TWD and SCU configs are selected by default as long as
>>> SCORPIONMP is false and/or MCT is false. Implementing the logic
>>> this way certainly saves lines in the Kconfig but it precludes
>>> those machines which select SCORPIONMP or MCT from participating
>>> in the single zImage effort because when those machines are
>>> combined with other SMP capable machines the TWD and SCU are no
>>> longer selected.
>>>
>>> Push the select out to the machine entries so that we can compile
>>> these machines together and still select the appropriate configs.
>> I think this is the wrong direction as I'd like to see the platform
>> selects shrink. I believe the local timers are run-time enabled now, so
>> can't we just drop the condition and always select TWD and SCU for
>> multi-platform?
>
> That sounds fine for multi-platform but it penalizes the "optimized"
> images made for a particular device that doesn't want any extra code
> than is necessary. Isn't this why we have the Kconfig language?
>
Yes, but neither of those are very much code. There has to be some
threshold.
>>
>> Or perhaps we need a CortexA9 config symbol that selects V7, GIC, TWD,
>> SCU, SMP, PL310, errata, etc. rather than duplicating those for every
>> platform.
>>
>>
>
> This sounds like a good consolidation of lines that can be done in
> parallel to this patch. Care to send a patch on top?
So I would just go and delete most of the lines you are adding? Sounds
like churn to me. We should do this first if we are going to.
Also, your patch is not going to apply once Russell's alphabetizing of
selects patch goes in. I'm not sure if that is this merge window or next.
Rob
^ permalink raw reply
* [PATCH] [media] s5p-tv: remove unused including <linux/version.h>
From: Wei Yongjun @ 2012-10-08 12:32 UTC (permalink / raw)
To: linux-arm-kernel
From: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
Remove including <linux/version.h> that don't need it.
dpatch engine is used to auto generate this patch.
(https://github.com/weiyj/dpatch)
Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
---
drivers/media/platform/s5p-tv/mixer_video.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/media/platform/s5p-tv/mixer_video.c b/drivers/media/platform/s5p-tv/mixer_video.c
index 0c1cd89..9b52f3a 100644
--- a/drivers/media/platform/s5p-tv/mixer_video.c
+++ b/drivers/media/platform/s5p-tv/mixer_video.c
@@ -19,7 +19,6 @@
#include <linux/videodev2.h>
#include <linux/mm.h>
#include <linux/module.h>
-#include <linux/version.h>
#include <linux/timer.h>
#include <media/videobuf2-dma-contig.h>
^ permalink raw reply related
* [PATCH] ARM: Push selects for TWD/SCU into machine entries
From: Pawel Moll @ 2012-10-08 12:15 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1349340644-13937-1-git-send-email-sboyd@codeaurora.org>
On Thu, 2012-10-04 at 09:50 +0100, Stephen Boyd wrote:
> The TWD and SCU configs are selected by default as long as
> SCORPIONMP is false and/or MCT is false. Implementing the logic
> this way certainly saves lines in the Kconfig but it precludes
> those machines which select SCORPIONMP or MCT from participating
> in the single zImage effort because when those machines are
> combined with other SMP capable machines the TWD and SCU are no
> longer selected.
>
> Push the select out to the machine entries so that we can compile
> these machines together and still select the appropriate configs.
[...]
> diff --git a/arch/arm/mach-vexpress/Kconfig b/arch/arm/mach-vexpress/Kconfig
> index c952960..4f8e0db 100644
> --- a/arch/arm/mach-vexpress/Kconfig
> +++ b/arch/arm/mach-vexpress/Kconfig
> @@ -11,6 +11,8 @@ config ARCH_VEXPRESS
> select HAVE_CLK
> select HAVE_PATA_PLATFORM
> select HAVE_SMP
> + select HAVE_ARM_SCU if SMP
> + select HAVE_ARM_TWD if LOCAL_TIMERS
> select ICST
> select MIGHT_HAVE_CACHE_L2X0
> select NO_IOPORT
If you move these two lines before HAVE_CLK so everything stays in
alphabetical order ;-) you can add my Acked-by for vexpress:
Acked-by: Pawel Moll <pawel.moll@arm.com>
Thanks!
Pawel
^ permalink raw reply
* [PATCH 1/6] ARM: bcm476x: Add infrastructure
From: Thomas Petazzoni @ 2012-10-08 12:14 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20121007015405.958959522@gmail.com>
On Sun, 07 Oct 2012 03:53:01 +0200, Domenico Andreoli wrote:
> Index: b/arch/arm/mach-bcm476x/Makefile.boot
> ===================================================================
> --- /dev/null
> +++ b/arch/arm/mach-bcm476x/Makefile.boot
> @@ -0,0 +1,5 @@
> + zreladdr-y := 0x00008000
> +params_phys-y := 0x00000100
> +initrd_phys-y := 0x00800000
Those params_phys-y and initrd_phys-y lines as useless as you're using
the Device Tree.
> +#define BCM476X_PERIPH_PHYS 0x00080000
> +#define BCM476X_PERIPH_VIRT 0xd0080000
This one should be defined with IOMEM(). Yes, you will have to add a
cast to make it play nicely with map_desc.virtual.
Best regards,
Thomas
--
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
^ permalink raw reply
* [PATCH v4 0/7] uio_pruss cleanup and platform support
From: Matt Porter @ 2012-10-08 12:03 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <5072B190.1060200@ti.com>
On Mon, Oct 08, 2012 at 04:27:20PM +0530, Sekhar Nori wrote:
> On 10/5/2012 10:34 PM, Matt Porter wrote:
>
> > This series enables uio_pruss on DA850 and removes use of the
> > private SRAM API by the driver. The driver previously was not
> > enabled by any platform and the private SRAM API was accessing
> > an invalid SRAM bank.
> >
> > It is regression tested on AM180x EVM with suspend/resume due
> > to the new use of the shared SRAM for both PM and PRUSS. The
> > uio_pruss driver is tested on the same platform using the
> > PRU_memAccessPRUDataRam and PRU_memAccessL3andDDR examples from
> > the PRU userspace tools available from http://www.ti.com/tool/sprc940
>
> I applied patches 2/7, 3/7 and 6/7 of this series for v3.8. I have some
> comments on the board patch. Rest of the patches depend on acceptance of
> 1/7 so I will take them only after that is accepted.
Ok, thanks...and I'll post a v5 of 5/7 and 7/7 and those should be ready
when 1/7 is accepted.
-Matt
^ 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