* [PATCH 11/15] ARM: OMAP: timer: Interchange clksrc and clkevt for AM33XX
From: Bedia, Vaibhav @ 2012-11-04 15:26 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <509546F2.8080505@ti.com>
On Sat, Nov 03, 2012 at 22:01:46, Shilimkar, Santosh wrote:
> >
> As mentioned on other patch comment, I think this might break your
> SOC idle.
>
Unfortunately we don't have SOC idle.
Regards,
Vaibhav
^ permalink raw reply
* [PATCH 15/15] ARM: OMAP2+: AM33XX: Basic suspend resume support
From: Bedia, Vaibhav @ 2012-11-04 15:26 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <50954CEF.5080209@ti.com>
On Sat, Nov 03, 2012 at 22:27:19, Shilimkar, Santosh wrote:
[...]
> >
> Nice descriptive change log Vaibhav.
Thanks :)
>
[...]
> > +#include "soc.h"
> > +
> In case not checked yet, see if you need
> all above headers.
>
Will double-check, I know it's a long list of includes.
> > +void (*am33xx_do_wfi_sram)(void);
> > +
> > +static void __iomem *am33xx_emif_base;
> > +static struct powerdomain *cefuse_pwrdm, *gfx_pwrdm, *per_pwrdm;
> > +static struct clockdomain *gfx_l3_clkdm, *gfx_l4ls_clkdm;
> > +static struct wkup_m3_context *wkup_m3;
> > +
> > +static DECLARE_COMPLETION(wkup_m3_sync);
> > +
> > +#ifdef CONFIG_SUSPEND
> > +static int am33xx_do_sram_idle(long unsigned int unused)
> > +{
> > + am33xx_do_wfi_sram();
> > + return 0;
> > +}
> > +
> > +static int am33xx_pm_suspend(void)
> > +{
> > + int status, ret = 0;
> > +
> > + struct omap_hwmod *gpmc_oh, *usb_oh;
> > + struct omap_hwmod *tptc0_oh, *tptc1_oh, *tptc2_oh;
> > +
> > + /*
> > + * By default the following IPs do not have MSTANDBY asserted
> > + * which is necessary for PER domain transition. If the drivers
> > + * are not compiled into the kernel HWMOD code will not change the
> > + * state of the IPs if the IP was not never enabled
> > + */
> > + usb_oh = omap_hwmod_lookup("usb_otg_hs");
> > + gpmc_oh = omap_hwmod_lookup("gpmc");
> > + tptc0_oh = omap_hwmod_lookup("tptc0");
> > + tptc1_oh = omap_hwmod_lookup("tptc1");
> > + tptc2_oh = omap_hwmod_lookup("tptc2");
> > +
> This look you don't need every suspend.
>
Sorry I don't follow you here.
> > + omap_hwmod_enable(usb_oh);
> > + omap_hwmod_enable(gpmc_oh);
> > + omap_hwmod_enable(tptc0_oh);
> > + omap_hwmod_enable(tptc1_oh);
> > + omap_hwmod_enable(tptc2_oh);
> > +
> > + omap_hwmod_idle(usb_oh);
> > + omap_hwmod_idle(gpmc_oh);
> > + omap_hwmod_idle(tptc0_oh);
> > + omap_hwmod_idle(tptc1_oh);
> > + omap_hwmod_idle(tptc2_oh);
> > +
> Calling omap_hwmod_idle() directly tells me something is not
> right. Can these module not idle themself with respective device
> drivers ?
>
With device drivers, yes. The problem comes if the drivers are not
compiled in. MSTANDBY needs to be forced for each suspend cycle.
During resume, these IPs come out of standby and sysconfig changes.
If it makes sense I could add a new HWMOD flag and some sort of
suspend-resume routine, perhaps syscore_ops, in there to do
this?
> > + /* Put the GFX clockdomains to sleep */
> > + clkdm_sleep(gfx_l3_clkdm);
> > + clkdm_sleep(gfx_l4ls_clkdm);
> Can GFX driver suspend code not take care of above ?
Will check if the GFX driver does this. I needed this to ensure
that even without the GFX driver the PER domain transition doesn't
get blocked.
> Also are these clock domains are not supporting HW supervised
> mode ?
All clock domains in AM33xx are SW-supervised.
>
> > + /* Try to put GFX to sleep */
> > + pwrdm_set_next_pwrst(gfx_pwrdm, PWRDM_POWER_OFF);
> > +
> Above as well can be taken care by constraint QOS API by
> GFX driver.
>
Will check if I can get rid of this.
> > + ret = cpu_suspend(0, am33xx_do_sram_idle);
> > +
> > + status = pwrdm_read_pwrst(gfx_pwrdm);
> > + if (status != PWRDM_POWER_OFF)
> > + pr_err("GFX domain did not transition\n");
> > + else
> > + pr_info("GFX domain entered low power state\n");
> > +
> > + /* Needed to ensure L4LS clockdomain transitions properly */
> > + clkdm_wakeup(gfx_l3_clkdm);
> > + clkdm_wakeup(gfx_l4ls_clkdm);
> > +
> > + if (ret) {
> > + pr_err("Kernel suspend failure\n");
> > + } else {
> > + status = omap_ctrl_readl(AM33XX_CONTROL_IPC_MSG_REG1);
> > + status &= IPC_RESP_MASK;
> > + status >>= __ffs(IPC_RESP_MASK);
> > +
> > + switch (status) {
> > + case 0:
> > + pr_info("Successfully transitioned to low power state\n");
> > + if (wkup_m3->sleep_mode == IPC_CMD_DS0)
> > + /* XXX: Use SOC specific ops for this? */
> > + per_pwrdm->ret_logic_off_counter++;
> > + break;
> > + case 1:
> > + pr_err("Could not enter low power state\n");
> > + ret = -1;
> > + break;
> > + default:
> > + pr_err("Something is terribly wrong :(\nStatus = %d\n",
> > + status);
> Sounds terrible :-)
>
Well this is not the expected state. But I guess better to leave in a
message instead of ignoring the unexpected :)
[...]
> > + if (!wait_for_completion_timeout(&wkup_m3_sync,
> > + msecs_to_jiffies(500))) {
>
> 500 is from spec or arbitrary timeout ?
>
We just need enough delay to let the M3 respond. I didn't have the
hw delays so put in a timeout which is not too big.
[...]
> > +
> > + ret = am33xx_map_emif();
> > +
> No EMIF driver to handle EMIF MAP, registers etc ?
>
We just need to ioremap it here. EMIF registers are updated
from assembly only.
[...]
> > +#define EMIF_DDR_PHY_CTRL_1_SHDW 0x00e8
> > +
> Above should be part of the EMIF driver, no ?
>
The driver would end up being a dummy driver which just does
an ioremap so I added the register offsets here.
[...]
> > +
> Sleep code looks pretty big so I will have a closer look at it bit
> later. At least from the code it seems, the EMIF registers and hence
> memory controller needs to be maneged by SW which is really bad.
>
It will get a slightly bigger once DDR3 specific handling gets added ;)
I agree the s/w managed memory controller is not good. It even places
limitations on Core DVFS.
Regards,
Vaibhav
^ permalink raw reply
* [PATCH] pinctrl: nomadik: Add terminating entry for platform_device_id table
From: Axel Lin @ 2012-11-04 15:30 UTC (permalink / raw)
To: linux-arm-kernel
The platform_device_id table is supposed to be zero-terminated.
Signed-off-by: Axel Lin <axel.lin@ingics.com>
---
drivers/pinctrl/pinctrl-nomadik.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/pinctrl/pinctrl-nomadik.c b/drivers/pinctrl/pinctrl-nomadik.c
index f2fd99b..22f6937 100644
--- a/drivers/pinctrl/pinctrl-nomadik.c
+++ b/drivers/pinctrl/pinctrl-nomadik.c
@@ -1922,6 +1922,7 @@ static const struct platform_device_id nmk_pinctrl_id[] = {
{ "pinctrl-stn8815", PINCTRL_NMK_STN8815 },
{ "pinctrl-db8500", PINCTRL_NMK_DB8500 },
{ "pinctrl-db8540", PINCTRL_NMK_DB8540 },
+ { }
};
static struct platform_driver nmk_pinctrl_driver = {
--
1.7.9.5
^ permalink raw reply related
* [PATCH 0/2] net: at91_ether add dt and pinctrl support
From: Jean-Christophe PLAGNIOL-VILLARD @ 2012-11-04 15:49 UTC (permalink / raw)
To: linux-arm-kernel
Hi,
This patch serie add dt and pinctrl support to the at91 ether
this is need to use the network on at91rm9200 as we now have dt
support on it
Jean-Christophe PLAGNIOL-VILLARD (2):
net: at91_ether: add dt support
net: at91_ether: add pinctrl support
Documentation/devicetree/bindings/net/cdns-emac.txt | 23 +++++++++++++++++++++++
drivers/net/ethernet/cadence/at91_ether.c | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------
2 files changed, 99 insertions(+), 7 deletions(-)
create mode 100644 Documentation/devicetree/bindings/net/cdns-emac.txt
Best Regards,
J.
^ permalink raw reply
* [PATCH v3 0/6] DT support for AT91RM9200
From: Jean-Christophe PLAGNIOL-VILLARD @ 2012-11-04 15:52 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1351449071-5763-1-git-send-email-manabian@gmail.com>
On 19:31 Sun 28 Oct , Joachim Eastwood wrote:
> Patch 1 is a fix for a build failure which can happen if board-dt is enabled when no AT91SAM machines are enabled.
>
> Patch 2 adds DT support to the AT91RM9200 system timer. Based on AT91 PIT patch by Jean-Christophe PLAGNIOL-VILLARD.
>
> Patch 3 adds clock lookups for DT.
>
> Patch 4 adds a new board for RM9200 DT support.
>
> Patch 5-6 adds the base devicetree for AT91RM9200 and support for AT91RM9200-EK board.
>
>
> I don't have a AT91RM9200-EK to test on but I was able to boot at91rm9200ek.dts on my custom board using a initrd. As far as I can tell pinctrl, usart and ohci all work.
After updating barebox to have the DT support I've tested it on rm9200ek with net support
work fine
It does not apply on my tree as I've a more patch but I'll manage the merge
conflict
Best Regards,
J.
>
> Patches based on linux-next.
>
>
> Joachim Eastwood (6):
> ARM: AT91: Fix build failure on board-dt
> ARM: AT91: Add DT support to AT91RM9200 System Timer
> ARM: AT91: Add usart/tc/pio/ohci DT clock lookup to AT91RM9200
> ARM: AT91: Add AT91RM9200 DT board
> ARM: AT91: Add AT91RM9200 device tree
> ARM: AT91: Add AT91RM9200EK board device tree
>
> .../devicetree/bindings/arm/atmel-at91.txt | 6 +
> arch/arm/boot/dts/Makefile | 2 +
> arch/arm/boot/dts/at91rm9200.dtsi | 333 +++++++++++++++++++++
> arch/arm/boot/dts/at91rm9200ek.dts | 78 +++++
> arch/arm/mach-at91/Kconfig | 9 +
> arch/arm/mach-at91/Makefile | 1 +
> arch/arm/mach-at91/at91rm9200.c | 18 ++
> arch/arm/mach-at91/at91rm9200_time.c | 63 +++-
> arch/arm/mach-at91/board-rm9200-dt.c | 59 ++++
> arch/arm/mach-at91/generic.h | 1 +
> arch/arm/mach-at91/setup.c | 14 +
> 11 files changed, 582 insertions(+), 2 deletions(-)
> create mode 100644 arch/arm/boot/dts/at91rm9200.dtsi
> create mode 100644 arch/arm/boot/dts/at91rm9200ek.dts
> create mode 100644 arch/arm/mach-at91/board-rm9200-dt.c
>
> --
> 1.8.0
>
^ permalink raw reply
* [GIT PULL] Integrator & Versatile IRQchip changes
From: Linus Walleij @ 2012-11-04 17:28 UTC (permalink / raw)
To: linux-arm-kernel
Hi ARM SoC maintainers,
this is a set of three irq cleanup/movement patches that affect the FPGA
IRQ chip make the integrator a better example of how irq descriptors
should be treated. As I suspect there may be more irqchip drivers moving
out of arch/arm I figured that pushing these through ARM SoC was the
best thing.
Please pull them in!
Yours,
Linus Walleij
The following changes since commit 6f0c0580b70c89094b3422ba81118c7b959c7556:
Linux 3.7-rc2 (2012-10-20 12:11:32 -0700)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-integrator.git
tags/integrator-irq
for you to fetch changes up to 2389d5014342e9535aad212d0c68d439aaf534ba:
ARM: plat-versatile: move FPGA irq driver to drivers/irqchip
(2012-11-04 18:09:12 +0100)
----------------------------------------------------------------
This provides the following Integrator refactorings:
- Switch the FPGA IRQ controller to use the simple IRQ domain
- Get rid of preallocated IRQ descriptors on the Integrator
- Move the FPGA IRQ driver to drivers/irqchip
----------------------------------------------------------------
Linus Walleij (3):
ARM: plat-versatile: use simple irqdomain for FPGA IRQ
ARM: integrator: get rid of preallocated irq descriptors
ARM: plat-versatile: move FPGA irq driver to drivers/irqchip
arch/arm/Kconfig | 4 +-
arch/arm/mach-integrator/include/mach/irqs.h | 109 ++++++++++-----------
arch/arm/mach-integrator/integrator_ap.c | 5 +-
arch/arm/mach-integrator/integrator_cp.c | 6 +-
arch/arm/mach-versatile/core.c | 2 +-
arch/arm/plat-versatile/Kconfig | 9 --
arch/arm/plat-versatile/Makefile | 1 -
drivers/irqchip/Kconfig | 9 +-
drivers/irqchip/Makefile | 1 +
.../irqchip/irq-versatile-fpga.c | 54 +++++-----
.../linux/irqchip/versatile-fpga.h | 0
11 files changed, 93 insertions(+), 107 deletions(-)
rename arch/arm/plat-versatile/fpga-irq.c =>
drivers/irqchip/irq-versatile-fpga.c (83%)
rename arch/arm/plat-versatile/include/plat/fpga-irq.h =>
include/linux/irqchip/versatile-fpga.h (100%)
^ permalink raw reply
* [PATCH v2] leds: leds-gpio: adopt pinctrl support
From: Linus Walleij @ 2012-11-04 17:37 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <331ABD5ECB02734CA317220B2BBEABC13EA5C598@DBDE01.ent.ti.com>
On Tue, Oct 30, 2012 at 3:12 PM, AnilKumar, Chimata <anilkumar@ti.com> wrote:
> I completely understood this named modes, I have added named
> modes like this in am335x-xxx.dts files
I do not understand how the pinctrl-single dts files work actually,
so please get Tony to review this part.
> I think "pinctrl-1" state will be used in driver
> suspend/resume calls.
Hopefully, I think you should test the code and monitor the
system to make sure the right thing happens.
> I have the pinmux/conf settings for default state but fully
> optimized pinmux/conf values in idle & suspend states are not
> available yet.
You have defined a "sleep" state which is what should be used
for suspend? Or do you mean that you do have a state but
you're just not defining it to the most optimal setting yet?
> Even though if I add here, I am unable to test
> these pins in suspend state because suspend/resume of AM35xx
> is not added yet
Aha.
> I have two options now
> - add only default states for now, I can add reset of
> the state details once suspend/resume is supported.
> - add same values in all the states, modify those once
> suspend/resume is added for AM335x.
The OMAP maintainer gets to choose how this is to be done,
it's none of my business :-)
Yours,
Linus Walleij
^ permalink raw reply
* [PATCH v3 0/6] DT support for AT91RM9200
From: Joachim Eastwood @ 2012-11-04 17:55 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20121104155212.GK19021@game.jcrosoft.org>
On 4 November 2012 16:52, Jean-Christophe PLAGNIOL-VILLARD
<plagnioj@jcrosoft.com> wrote:
> On 19:31 Sun 28 Oct , Joachim Eastwood wrote:
>> Patch 1 is a fix for a build failure which can happen if board-dt is enabled when no AT91SAM machines are enabled.
>>
>> Patch 2 adds DT support to the AT91RM9200 system timer. Based on AT91 PIT patch by Jean-Christophe PLAGNIOL-VILLARD.
>>
>> Patch 3 adds clock lookups for DT.
>>
>> Patch 4 adds a new board for RM9200 DT support.
>>
>> Patch 5-6 adds the base devicetree for AT91RM9200 and support for AT91RM9200-EK board.
>>
>>
>> I don't have a AT91RM9200-EK to test on but I was able to boot at91rm9200ek.dts on my custom board using a >>initrd. As far as I can tell pinctrl, usart and ohci all work.
>
> After updating barebox to have the DT support I've tested it on rm9200ek with net support
>
> work fine
Excellent.
> It does not apply on my tree as I've a more patch but I'll manage the merge
> conflict
Thanks for fixing it up Jean-Christophe.
regards
Joachim Eastwood
^ permalink raw reply
* [PATCH 1/2] Input: nomadik-ske-keypad - fixup use of clk
From: Linus Walleij @ 2012-11-04 18:09 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1351779602-13818-2-git-send-email-ulf.hansson@stericsson.com>
On Thu, Nov 1, 2012 at 3:20 PM, Ulf Hansson <ulf.hansson@stericsson.com> wrote:
> From: Ulf Hansson <ulf.hansson@linaro.org>
>
> Do proper error handling for clk and make sure clocks are being
> prepared|unprepared as well as enabled|disabled.
>
> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Yours,
Linus Walleij
^ permalink raw reply
* [PATCH 1/2] net: at91_ether: add dt support
From: Jean-Christophe PLAGNIOL-VILLARD @ 2012-11-04 18:10 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20121104154954.GJ19021@game.jcrosoft.org>
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: Joachim Eastwood <manabian@gmail.com>
Cc: netdev at vger.kernel.org
---
.../devicetree/bindings/net/cdns-emac.txt | 23 +++++++
drivers/net/ethernet/cadence/at91_ether.c | 72 ++++++++++++++++++--
2 files changed, 88 insertions(+), 7 deletions(-)
create mode 100644 Documentation/devicetree/bindings/net/cdns-emac.txt
diff --git a/Documentation/devicetree/bindings/net/cdns-emac.txt b/Documentation/devicetree/bindings/net/cdns-emac.txt
new file mode 100644
index 0000000..45b8760
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/cdns-emac.txt
@@ -0,0 +1,23 @@
+* Cadence EMAC Ethernet controller
+
+Required properties:
+- compatible: Should be "cdns,[<chip>-]{emac}"
+ Use "cdns,at91rm9200-emac" Atmel at91rm9200 SoC.
+ or the generic form: "cdns,emac".
+- reg: Address and length of the register set for the device
+- interrupts: Should contain macb interrupt
+- phy-mode: String, operation mode of the PHY interface.
+ Supported values are: "mii", "rmii".
+
+Optional properties:
+- local-mac-address: 6 bytes, mac address
+
+Examples:
+
+ macb0: ethernet at fffc4000 {
+ compatible = "cdns,atrm9200-emac";
+ reg = <0xfffc4000 0x4000>;
+ interrupts = <21>;
+ phy-mode = "rmii";
+ local-mac-address = [3a 0e 03 04 05 06];
+ };
diff --git a/drivers/net/ethernet/cadence/at91_ether.c b/drivers/net/ethernet/cadence/at91_ether.c
index 0d6392d..3e843b4 100644
--- a/drivers/net/ethernet/cadence/at91_ether.c
+++ b/drivers/net/ethernet/cadence/at91_ether.c
@@ -31,6 +31,9 @@
#include <linux/gfp.h>
#include <linux/phy.h>
#include <linux/io.h>
+#include <linux/of.h>
+#include <linux/of_device.h>
+#include <linux/of_net.h>
#include "macb.h"
@@ -443,6 +446,49 @@ static const struct net_device_ops at91ether_netdev_ops = {
#endif
};
+#if defined(CONFIG_OF)
+static const struct of_device_id at91ether_dt_ids[] = {
+ { .compatible = "cdns,at91rm9200-emac" },
+ { .compatible = "cdns,emac" },
+ { /* sentinel */ }
+};
+
+MODULE_DEVICE_TABLE(of, at91ether_dt_ids);
+
+static int at91ether_get_phy_mode_dt(struct platform_device *pdev)
+{
+ struct device_node *np = pdev->dev.of_node;
+
+ if (np)
+ return of_get_phy_mode(np);
+
+ return -ENODEV;
+}
+
+static int at91ether_get_hwaddr_dt(struct macb *bp)
+{
+ struct device_node *np = bp->pdev->dev.of_node;
+ if (np) {
+ const char *mac = of_get_mac_address(np);
+ if (mac) {
+ memcpy(bp->dev->dev_addr, mac, ETH_ALEN);
+ return 0;
+ }
+ }
+
+ return -ENODEV;
+}
+#else
+static int at91ether_get_phy_mode_dt(struct platform_device *pdev)
+{
+ return -ENODEV;
+}
+static int at91ether_get_hwaddr_dt(struct macb *bp)
+{
+ return -ENODEV;
+}
+#endif
+
/*
* Detect MAC & PHY and perform ethernet interface initialization
*/
@@ -466,7 +512,8 @@ static int __init at91ether_probe(struct platform_device *pdev)
lp = netdev_priv(dev);
lp->pdev = pdev;
lp->dev = dev;
- lp->board_data = *board_data;
+ if (board_data)
+ lp->board_data = *board_data;
spin_lock_init(&lp->lock);
dev->base_addr = regs->start; /* physical base address */
@@ -496,18 +543,28 @@ static int __init at91ether_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, dev);
SET_NETDEV_DEV(dev, &pdev->dev);
- get_mac_address(dev); /* Get ethernet address and store it in dev->dev_addr */
+ res = at91ether_get_hwaddr_dt(lp);
+ if (res < 0)
+ get_mac_address(dev); /* Get ethernet address and store it in dev->dev_addr */
+
update_mac_address(dev); /* Program ethernet address into MAC */
+ res = at91ether_get_phy_mode_dt(pdev);
+ if (res < 0) {
+ if (board_data && board_data->is_rmii)
+ lp->phy_interface = PHY_INTERFACE_MODE_RMII;
+ else
+ lp->phy_interface = PHY_INTERFACE_MODE_MII;
+ } else {
+ lp->phy_interface = res;
+ }
+
macb_writel(lp, NCR, 0);
- if (board_data->is_rmii) {
+ if (lp->phy_interface == PHY_INTERFACE_MODE_RMII)
macb_writel(lp, NCFGR, MACB_BF(CLK, MACB_CLK_DIV32) | MACB_BIT(BIG) | MACB_BIT(RM9200_RMII));
- lp->phy_interface = PHY_INTERFACE_MODE_RMII;
- } else {
+ else
macb_writel(lp, NCFGR, MACB_BF(CLK, MACB_CLK_DIV32) | MACB_BIT(BIG));
- lp->phy_interface = PHY_INTERFACE_MODE_MII;
- }
/* Register the network interface */
res = register_netdev(dev);
@@ -602,6 +659,7 @@ static struct platform_driver at91ether_driver = {
.driver = {
.name = DRV_NAME,
.owner = THIS_MODULE,
+ .of_match_table = of_match_ptr(at91ether_dt_ids),
},
};
--
1.7.10.4
^ permalink raw reply related
* [PATCH 2/2] net: at91_ether: add pinctrl support
From: Jean-Christophe PLAGNIOL-VILLARD @ 2012-11-04 18:10 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1352052637-5154-1-git-send-email-plagnioj@jcrosoft.com>
If no pinctrl available just report a warning as some architecture may not
need to do anything.
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: Joachim Eastwood <manabian@gmail.com>
Cc: netdev at vger.kernel.org
---
drivers/net/ethernet/cadence/at91_ether.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/drivers/net/ethernet/cadence/at91_ether.c b/drivers/net/ethernet/cadence/at91_ether.c
index 3e843b4..ffcdbc3 100644
--- a/drivers/net/ethernet/cadence/at91_ether.c
+++ b/drivers/net/ethernet/cadence/at91_ether.c
@@ -34,6 +34,7 @@
#include <linux/of.h>
#include <linux/of_device.h>
#include <linux/of_net.h>
+#include <linux/pinctrl/consumer.h>
#include "macb.h"
@@ -500,11 +501,21 @@ static int __init at91ether_probe(struct platform_device *pdev)
struct phy_device *phydev;
struct macb *lp;
int res;
+ struct pinctrl *pinctrl;
regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!regs)
return -ENOENT;
+ pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
+ if (IS_ERR(pinctrl)) {
+ res = PTR_ERR(pinctrl);
+ if (res == -EPROBE_DEFER)
+ return res;
+
+ dev_warn(&pdev->dev, "No pinctrl provided\n");
+ }
+
dev = alloc_etherdev(sizeof(struct macb));
if (!dev)
return -ENOMEM;
--
1.7.10.4
^ permalink raw reply related
* [PATCH 2/2] Input: nomadik-ske-keypad - start using the apb_pclk
From: Linus Walleij @ 2012-11-04 18:12 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1351779602-13818-3-git-send-email-ulf.hansson@stericsson.com>
On Thu, Nov 1, 2012 at 3:20 PM, Ulf Hansson <ulf.hansson@stericsson.com> wrote:
> From: Ulf Hansson <ulf.hansson@linaro.org>
>
> Previously this clock was handled internally by the clockdriver,
> but now this is separate clk. So we need take care of it.
>
> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
So this is a silicon block clock and falls into the category of things
we've been discussing...
If I understand correctly, the only "real" solution is to
implement the PM domains and have these enable the clocks.
An alternative may be to move this driver over to the AMBA bus,
because I think this device actually has primecell registers.
Then the bus will take care of the pclk for starters.
Yours,
Linus Walleij
^ permalink raw reply
* [PATCH 1/1] mtd: physmap_of: allow to specify the mtd name for retro compatiblity
From: Jean-Christophe PLAGNIOL-VILLARD @ 2012-11-04 20:57 UTC (permalink / raw)
To: linux-arm-kernel
linux,mtd-name allow to specify the mtd name for retro capability with
physmap-flash drivers as boot loader pass the mtd partition via the old
device name physmap-flash.
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
Documentation/devicetree/bindings/mtd/mtd-physmap.txt | 3 +++
drivers/mtd/maps/physmap_of.c | 5 ++++-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/mtd/mtd-physmap.txt b/Documentation/devicetree/bindings/mtd/mtd-physmap.txt
index 94de19b..dab7847 100644
--- a/Documentation/devicetree/bindings/mtd/mtd-physmap.txt
+++ b/Documentation/devicetree/bindings/mtd/mtd-physmap.txt
@@ -23,6 +23,9 @@ file systems on embedded devices.
unaligned accesses as implemented in the JFFS2 code via memcpy().
By defining "no-unaligned-direct-access", the flash will not be
exposed directly to the MTD users (e.g. JFFS2) any more.
+ - linux,mtd-name: allow to specify the mtd name for retro capability with
+ physmap-flash drivers as boot loader pass the mtd partition via the old
+ device name physmap-flash.
For JEDEC compatible devices, the following additional properties
are defined:
diff --git a/drivers/mtd/maps/physmap_of.c b/drivers/mtd/maps/physmap_of.c
index 6f19aca..9a8db0c 100644
--- a/drivers/mtd/maps/physmap_of.c
+++ b/drivers/mtd/maps/physmap_of.c
@@ -170,6 +170,7 @@ static int __devinit of_flash_probe(struct platform_device *dev)
resource_size_t res_size;
struct mtd_part_parser_data ppdata;
bool map_indirect;
+ const char *mtd_name;
match = of_match_device(of_flash_match, &dev->dev);
if (!match)
@@ -178,6 +179,8 @@ static int __devinit of_flash_probe(struct platform_device *dev)
reg_tuple_size = (of_n_addr_cells(dp) + of_n_size_cells(dp)) * sizeof(u32);
+ of_property_read_string(dp, "linux,mtd-name", &mtd_name);
+
/*
* Get number of "reg" tuples. Scan for MTD devices on area's
* described by each "reg" region. This makes it possible (including
@@ -234,7 +237,7 @@ static int __devinit of_flash_probe(struct platform_device *dev)
goto err_out;
}
- info->list[i].map.name = dev_name(&dev->dev);
+ info->list[i].map.name = mtd_name ? mtd_name : dev_name(&dev->dev);
info->list[i].map.phys = res.start;
info->list[i].map.size = res_size;
info->list[i].map.bankwidth = be32_to_cpup(width);
--
1.7.10.4
^ permalink raw reply related
* [PATCH 1/2] net: at91_ether: add dt support
From: Joachim Eastwood @ 2012-11-04 22:21 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1352052637-5154-1-git-send-email-plagnioj@jcrosoft.com>
Hi Jean-Christophe,
Some minor comments below.
On 4 November 2012 19:10, Jean-Christophe PLAGNIOL-VILLARD
<plagnioj@jcrosoft.com> wrote:
> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
> Cc: Joachim Eastwood <manabian@gmail.com>
> Cc: netdev at vger.kernel.org
> ---
> .../devicetree/bindings/net/cdns-emac.txt | 23 +++++++
> drivers/net/ethernet/cadence/at91_ether.c | 72 ++++++++++++++++++--
> 2 files changed, 88 insertions(+), 7 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/net/cdns-emac.txt
>
> diff --git a/Documentation/devicetree/bindings/net/cdns-emac.txt b/Documentation/devicetree/bindings/net/cdns-emac.txt
> new file mode 100644
> index 0000000..45b8760
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/net/cdns-emac.txt
> @@ -0,0 +1,23 @@
> +* Cadence EMAC Ethernet controller
> +
> +Required properties:
> +- compatible: Should be "cdns,[<chip>-]{emac}"
> + Use "cdns,at91rm9200-emac" Atmel at91rm9200 SoC.
> + or the generic form: "cdns,emac".
> +- reg: Address and length of the register set for the device
> +- interrupts: Should contain macb interrupt
> +- phy-mode: String, operation mode of the PHY interface.
> + Supported values are: "mii", "rmii".
> +
> +Optional properties:
> +- local-mac-address: 6 bytes, mac address
> +
> +Examples:
> +
> + macb0: ethernet at fffc4000 {
> + compatible = "cdns,atrm9200-emac";
Typo in the compatible string. Should be "cdns,at91rm9200-emac"
> + reg = <0xfffc4000 0x4000>;
> + interrupts = <21>;
> + phy-mode = "rmii";
> + local-mac-address = [3a 0e 03 04 05 06];
> + };
> diff --git a/drivers/net/ethernet/cadence/at91_ether.c b/drivers/net/ethernet/cadence/at91_ether.c
> index 0d6392d..3e843b4 100644
> --- a/drivers/net/ethernet/cadence/at91_ether.c
> +++ b/drivers/net/ethernet/cadence/at91_ether.c
> @@ -31,6 +31,9 @@
> #include <linux/gfp.h>
> #include <linux/phy.h>
> #include <linux/io.h>
> +#include <linux/of.h>
> +#include <linux/of_device.h>
> +#include <linux/of_net.h>
>
> #include "macb.h"
>
> @@ -443,6 +446,49 @@ static const struct net_device_ops at91ether_netdev_ops = {
> #endif
> };
>
> +#if defined(CONFIG_OF)
> +static const struct of_device_id at91ether_dt_ids[] = {
> + { .compatible = "cdns,at91rm9200-emac" },
> + { .compatible = "cdns,emac" },
> + { /* sentinel */ }
> +};
> +
> +MODULE_DEVICE_TABLE(of, at91ether_dt_ids);
> +
> +static int at91ether_get_phy_mode_dt(struct platform_device *pdev)
> +{
> + struct device_node *np = pdev->dev.of_node;
> +
> + if (np)
> + return of_get_phy_mode(np);
> +
> + return -ENODEV;
> +}
> +
> +static int at91ether_get_hwaddr_dt(struct macb *bp)
> +{
> + struct device_node *np = bp->pdev->dev.of_node;
Space between variables and code, please.
> + if (np) {
> + const char *mac = of_get_mac_address(np);
> + if (mac) {
> + memcpy(bp->dev->dev_addr, mac, ETH_ALEN);
> + return 0;
> + }
> + }
> +
> + return -ENODEV;
> +}
> +#else
> +static int at91ether_get_phy_mode_dt(struct platform_device *pdev)
> +{
> + return -ENODEV;
> +}
> +static int at91ether_get_hwaddr_dt(struct macb *bp)
> +{
> + return -ENODEV;
> +}
> +#endif
> +
> /*
> * Detect MAC & PHY and perform ethernet interface initialization
> */
> @@ -466,7 +512,8 @@ static int __init at91ether_probe(struct platform_device *pdev)
> lp = netdev_priv(dev);
> lp->pdev = pdev;
> lp->dev = dev;
> - lp->board_data = *board_data;
> + if (board_data)
> + lp->board_data = *board_data;
> spin_lock_init(&lp->lock);
>
> dev->base_addr = regs->start; /* physical base address */
> @@ -496,18 +543,28 @@ static int __init at91ether_probe(struct platform_device *pdev)
> platform_set_drvdata(pdev, dev);
> SET_NETDEV_DEV(dev, &pdev->dev);
>
> - get_mac_address(dev); /* Get ethernet address and store it in dev->dev_addr */
> + res = at91ether_get_hwaddr_dt(lp);
> + if (res < 0)
> + get_mac_address(dev); /* Get ethernet address and store it in dev->dev_addr */
> +
> update_mac_address(dev); /* Program ethernet address into MAC */
>
> + res = at91ether_get_phy_mode_dt(pdev);
> + if (res < 0) {
> + if (board_data && board_data->is_rmii)
> + lp->phy_interface = PHY_INTERFACE_MODE_RMII;
> + else
> + lp->phy_interface = PHY_INTERFACE_MODE_MII;
> + } else {
> + lp->phy_interface = res;
> + }
> +
> macb_writel(lp, NCR, 0);
>
> - if (board_data->is_rmii) {
> + if (lp->phy_interface == PHY_INTERFACE_MODE_RMII)
> macb_writel(lp, NCFGR, MACB_BF(CLK, MACB_CLK_DIV32) | MACB_BIT(BIG) | MACB_BIT(RM9200_RMII));
> - lp->phy_interface = PHY_INTERFACE_MODE_RMII;
> - } else {
> + else
> macb_writel(lp, NCFGR, MACB_BF(CLK, MACB_CLK_DIV32) | MACB_BIT(BIG));
> - lp->phy_interface = PHY_INTERFACE_MODE_MII;
> - }
>
> /* Register the network interface */
> res = register_netdev(dev);
> @@ -602,6 +659,7 @@ static struct platform_driver at91ether_driver = {
> .driver = {
> .name = DRV_NAME,
> .owner = THIS_MODULE,
> + .of_match_table = of_match_ptr(at91ether_dt_ids),
> },
> };
>
Tested-by: Joachim Eastwood <manabian@gmail.com>
regards
Joachim Eastwood
^ permalink raw reply
* [PATCH V6 3/6] arm: cache-l2x0: add support for Aurora L2 cache ctrl
From: Russell King - ARM Linux @ 2012-11-04 22:32 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <5086700E.10702@free-electrons.com>
On Tue, Oct 23, 2012 at 12:23:10PM +0200, Gregory CLEMENT wrote:
> On 10/23/2012 12:00 PM, Russell King - ARM Linux wrote:
> > On Tue, Oct 23, 2012 at 11:43:02AM +0200, Gregory CLEMENT wrote:
> >> On 10/23/2012 11:01 AM, Russell King - ARM Linux wrote:
> >>> On Thu, Sep 27, 2012 at 11:35:23AM +0200, Gregory CLEMENT wrote:
> >>>> Aurora Cache Controller was designed to be compatible with the ARM L2
> >>>> Cache Controller. It comes with some difference or improvement such
> >>>> as:
> >>>> - no cache id part number available through hardware (need to get it
> >>>> by the DT).
> >>>> - always write through mode available.
> >>>> - two flavors of the controller outer cache and system cache (meaning
> >>>> maintenance operations on L1 are broadcasted to the L2 and L2
> >>>> performs the same operation).
> >>>> - in outer cache mode, the cache maintenance operations are improved and
> >>>> can be done on a range inside a page and are not limited to a cache
> >>>> line.
> >>>
> >>> This adds new build warnings:
> >>>
> >>> arch/arm/mm/cache-l2x0.c:328:13: warning: 'aurora_inv_range' defined but not used
> >>> arch/arm/mm/cache-l2x0.c:347:13: warning: 'aurora_clean_range' defined but not used
> >>> arch/arm/mm/cache-l2x0.c:365:13: warning: 'aurora_flush_range' defined but not used
> >>>
> >>> to the realview build (non-DT). Please investigate, thanks.
> >>
> >> OK I found the problem: aurora cache support is new so it is only
> >> enable with device tree support. I moved all this functions in the
> >> under OF_CONFIG (see the patch below). Do you want I submit it on the
> >> patch system, or can you get it directly from this email?
> >
> > Easier by the patch system, and much less likely to get buried and lost
> > between now and when I do the update, thanks.
> >
> OK, the initial patch 7547/1 was superseded by the patch 7547/2 that I have just
> pushed in the patch system. I hope I have done it right.
I know it's been a while, but it looks like it's still producing a warning.
arch/arm/mm/cache-l2x0.c:37:12: warning: 'l2_wt_override' defined but not used
This seems to be used only by the aurora code, which is wholely contained
within a CONFIG_OF block, and this is outside of said block...
^ permalink raw reply
* [PATCH] net/at91_ether: fix the use of macb structure
From: Nicolas Ferre @ 2012-11-04 23:02 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20121103.150414.707741347606909244.davem@davemloft.net>
On 11/03/2012 08:04 PM, David Miller :
> From: Nicolas Ferre <nicolas.ferre@atmel.com>
> Date: Tue, 30 Oct 2012 12:30:28 +0100
>
>> Due to the use of common structure in at91_ether and macb drivers,
>> change the name of DMA descriptor structures in at91_ether as well:
>> dma_desc => macb_dma_desc
>>
>> Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
>
> This does not apply to net-next, respin it if this change is
> still relevant.
This one is not relevant anymore.
Best regards,
--
Nicolas Ferre
^ permalink raw reply
* OMAP baseline test results for v3.7-rc3
From: Paul Walmsley @ 2012-11-05 2:41 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <508F59FB.7080400@ti.com>
Hi
On Tue, 30 Oct 2012, Vaibhav Hiremath wrote:
> This is surprising, I have tested v3.7-rc3 branch on AM335xBone platform
> and its booting up for me without any issues.
> Jon had submitted another patch which fixes boot issue on Bone.
>
> https://patchwork.kernel.org/patch/1606471/
v3.7-rc4 failed for me with a detached .dtb in a quick test. Probably it
is due to the original u-boot that was shipped with the MMC card:
U-Boot 2011.09-00009-gcf6e04d (Mar 08 2012 - 17:15:43)
arm-arago-linux-gnueabi-gcc (GCC) 4.5.3 20110311 (prerelease)
Which U-boot are you using these days?
- Paul
^ permalink raw reply
* OMAP baseline test results for v3.7-rc4
From: Paul Walmsley @ 2012-11-05 2:46 UTC (permalink / raw)
To: linux-arm-kernel
Here are some basic OMAP test results for Linux v3.7-rc4.
Logs and other details at:
http://www.pwsan.com/omap/testlogs/test_v3.7-rc4/20121104142910/
Passing tests
-------------
Boot to userspace: 2420n800, 3517evm, 3530es3beagle, 3730beaglexm, 37xxevm,
4430es2panda, 5912osk, am335xbone
PM ret/off, suspend + dynamic idle: (none)
Failing tests: fixed by posted patches
--------------------------------------
Boot tests:
* 2430sdp: vfp_reload_hw oops during MMC initialization
- Kernel attempts to save FP registers that don't exist; fix posted:
- http://www.spinics.net/lists/arm-kernel/msg200646.html
- added to rmk's patch system as 7566/1
* AM335x Beaglebone: omap2plus_defconfig kernels don't boot
- Due to GPMC missing support for DT
- Temporary workaround at
http://www.spinics.net/lists/arm-kernel/msg200787.html
- May be fixed now, pending retest:
- http://marc.info/?l=linux-omap&m=135082257727502&w=2
- Not yet part of the automated test suite
* May be due to an old U-boot with FDT support problems?
PM tests:
* 3530es3beagle, 37xxevm, 3730beaglexm: I2C fails during resume from suspend
- Causes MMC to become unusable since regulators are not reenabled
- Caused by RT throttling
- Fixed by http://www.spinics.net/lists/arm-kernel/msg202224.html
- Patch in rmk's patch system as 7565/1
* 3530es3beagle: hangs during off-mode dynamic idle test
- Appears to be caused by commit 6c31b2150ff96755d24e0ab6d6fea08a7bf5c44c:
- http://marc.info/?l=linux-omap&m=135075364705188&w=2
- Fixed by http://www.spinics.net/lists/arm-kernel/msg202116.html
Other:
* 2420N800: powers down 30 seconds after boot
- Presumably due to missing CBUS patches for watchdog control
- http://lkml.org/lkml/2012/9/3/265
* 4430es2panda: omap_hwmod: mcpdm: cannot be enabled for reset (3)
- clock source is from an external I2C-controlled source
- must skip reset until the switchover to hwmod late init
- http://www.spinics.net/lists/arm-kernel/msg178138.html
Failing tests: needing investigation
------------------------------------
Boot tests:
* CM-T3517: L3 in-band error with IPSS during boot
- Cause unknown but see http://marc.info/?l=linux-omap&m=134833869730129&w=2
- Longstanding issue; does not occur on the 3517EVM
* 3517EVM & CM-T3517: boot hangs with NFS root
- Likely some Kconfig, board file, and PM issues with EMAC
* CM-T3517: boot hangs with MMC boot
- Due to missing MMC setup in board file
* 4460pandaes: boot fails early
- Appears to be due to X-loader problems here
- Need to note the X-loader version so we know it's broken
* 3530ES3 Beagle: I2C timeouts during userspace init
- Intermittent, appears on 5 out of 6 boots here
- Aaro Koskinen observes this also on N900
- Appears to be caused by commit 3db11feffc1ad2ab9dea27789e6b5b3032827adc
- http://marc.info/?l=linux-arm-kernel&m=135071372426971&w=2
- http://marc.info/?l=linux-omap&m=135197877112220&w=2
PM tests:
* 3730 Beagle XM: does not serial wake from off-idle suspend when console
UART doesn't clock gate ("debug ignore_loglevel")
- Not shown in the current test logs; cause unknown
- Pending re-test
Other:
* 4430es2panda: omap_hwmod: l3_instr: _wait_target_disable failed
- Unknown cause; could be due to the lack of hierarchical enable/disable
in hwmod code
- Jon Hunter reports this does not appear with the same X-loader/bootloader
on his 4430ES2.3 Panda, so could be ES-level dependent
vmlinux object size
(delta in bytes from test_v3.7-rc3 (8f0d8163b50e01f398b14bcd4dc039ac5ab18d64)):
text data bss total kernel
+750 0 0 +750 am33xx_only
+208 0 0 +208 n800_multi_omap2xxx
+208 0 0 +208 n800_only_a
+2645 0 0 +2645 omap1_defconfig
+2641 0 0 +2641 omap1_defconfig_1510innovator_only
+2629 0 0 +2629 omap1_defconfig_5912osk_only
+738 0 0 +738 omap2plus_defconfig
+746 0 0 +746 omap2plus_defconfig_2430sdp_only
+742 0 0 +742 omap2plus_defconfig_cpupm
+742 0 0 +742 omap2plus_defconfig_no_pm
+742 0 0 +742 omap2plus_defconfig_omap2_4_only
+750 0 0 +750 omap2plus_defconfig_omap3_4_only
+1105 0 0 +1105 rmk_omap3430_ldp_oldconfig
+1527 +8 0 +1535 rmk_omap4430_sdp_oldconfig
An interesting 2.5KiB jump in OMAP1 kernel size.
- Paul
^ permalink raw reply
* OMAP baseline test results for v3.7-rc1
From: Paul Walmsley @ 2012-11-05 3:15 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <CAORVsuUda69_sE9LpBnuETXSA2jPxw7nQ=MkAq=Or8B7t1fvcA@mail.gmail.com>
Hi Jean,
On Sat, 3 Nov 2012, Jean Pihet wrote:
> The setup is as identical as possible to yours:
> - U-Boot 2011.06-dirty (Sep 04 2012 - 17:06:58) from
> http://www.pwsan.com/tmp/3530es3beagle-MLO-u-boot-20121023.tar.bz2.
> Please note that the MLO image does not run on my board and so I had
> to use my known-to-work image.
Interesting...
> The result is that I could reproduce the issue but it happens much
> more rarely on my side (only once vs quasi 100% on ~50 boot cycles).
Hmm...
> The issue is triggered by running 'hwclock --systohc' while the
> system is heavily loaded (running depmod etc.).
OK.
> More investigation on-going, so more to come!
Great, keep us posted.
Will try to kick off those tests you requested within the next 24-48
hours.
- Paul
^ permalink raw reply
* [PATCH v2 2/3] serial: mxs-auart: add the DMA support for mx28
From: Huang Shijie @ 2012-11-05 3:16 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1351163280.7077.11.camel@vkoul-udesk3>
? 2012?10?25? 19:08, Vinod Koul ??:
> On Thu, 2012-10-25 at 17:15 +0800, Huang Shijie wrote:
>> yes. I have to setup the register. Could you told me which API is the
>> right API?
> dmaengine_slave_config() should be used to send the slave specfic
> parameters
It seems hard to set the registers by the
dmaengine_slave_config().
[1] firstly, there are several drivers use the mxs-dma, the gpmi-nand, mxs-mmc,spi-mxs, i2c-mxs.
If we set the registers by the dmaengine_slave_config(), we must have the register base address for gpmi, mxs, spi, i2c.
It's not a good idea to access these registers in the mxs-dma driver.
[2] secondly, take gpmi_read_page() for example, it uses the DMA_TRANS_NONE several times :
If we set the registers by the dmaengine_slave_config(), the gpmi_read_page() will become like:
.....................................
dmaengine_slave_config()
dmaengine_prep_slave_sg().
...................................
dmaengine_slave_config()
dmaengine_prep_slave_sg().
...................................
dmaengine_slave_config()
dmaengine_prep_slave_sg().
...................................
Is it a nice look?
[3] dma_slave_config{} does not have the fields to contain the registers value.
So I think the current code it's ok, we'd better do not change it.
thanks
Huang Shijie
^ permalink raw reply
* [PATCH 1/2] ARM: mxs: apf28dev: Add pinctrl and gpios
From: Shawn Guo @ 2012-11-05 3:20 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1351879308-72491-1-git-send-email-gwenhael.goavec-merou@armadeus.com>
On Fri, Nov 02, 2012 at 07:01:47PM +0100, Gwenhael Goavec-Merou wrote:
>
> Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@armadeus.com>
> Signed-off-by: Julien Boibessot <julien.boibessot@armadeus.com>
Applied both, thanks.
^ permalink raw reply
* [PATCH 0/2] Pinctrl muxing for the Crystalfontz boards
From: Shawn Guo @ 2012-11-05 3:20 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1351958348-7327-1-git-send-email-maxime.ripard@free-electrons.com>
On Sat, Nov 03, 2012 at 04:59:06PM +0100, Maxime Ripard wrote:
> Hi all,
>
> This patch serie add the hogpins to explicitly mux the GPIOs used
> across the device tree as such for the two Crystalfontz boards, and
> make the gpio-led driver use pinctrl.
>
> This serie goes on top of the i2c-mux-gpios patches I sent on this
> list.
I do not see that dependency at all, so just applied both patches.
Shawn
>
> Maxime
>
> Maxime Ripard (2):
> ARM: dts: cfa10036: Use pinctrl for power led
> ARM: dts: mxs: Add hog pins to Crystalfontz boards
>
> arch/arm/boot/dts/imx28-cfa10036.dts | 27 +++++++++++++++++++++++++++
> arch/arm/boot/dts/imx28-cfa10049.dts | 16 ++++++++++++++++
> 2 files changed, 43 insertions(+)
>
> --
> 1.7.9.5
>
^ permalink raw reply
* ARM: idle sleep time for hotplugged cpu
From: Taniya Das @ 2012-11-05 3:53 UTC (permalink / raw)
To: linux-arm-kernel
Hello,
I was looking at the arch/arm/process.c:cpu_die, I was wondering why we
do not exit from NOHZ for a hotplugged/offline cpu?
If I understand correctly an offlined cpu too will enter
NOHz(tick_nohz_idle_enter) and update the idle_entrytime. The cpu will die
and it will reenter the idle thread and update idle_entrytime onces it
comes back online and only then it will exit NOHz, but time spent in sleep
idle_sleeptime will be wrongly calculated.
void cpu_idle(void)
{
.....
/* endless idle loop with no priority at all */
while (1) {
idle_notifier_call_chain(IDLE_START);
tick_nohz_idle_enter();--> Offline CPU entering NOHZ
rcu_idle_enter();
while (!need_resched()) {
#ifdef CONFIG_HOTPLUG_CPU
if (cpu_is_offline(smp_processor_id()))
cpu_die(); ---> CPU becomes offline and re-enter the idle thread without
exiting from NOHZ,
#endif
...
}
Is it a good idea to exit from NOHZ before cpu_die() or it could be
achieved in some other way? Please provide your
comments.
--
Thanks & Regards,
Taniya Das.
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation.
^ permalink raw reply
* [PATCH 11/15] ARM: OMAP: timer: Interchange clksrc and clkevt for AM33XX
From: Bedia, Vaibhav @ 2012-11-05 4:40 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <509544A8.7010507@deeprootsystems.com>
Hi Kevin,
On Sat, Nov 03, 2012 at 21:52:00, Kevin Hilman wrote:
> On 11/02/2012 12:32 PM, Vaibhav Bedia wrote:
> > AM33XX has only one usable timer in the WKUP domain.
>
> After reading the TRM, it seems there are two: DMTIMER0 and DMTIMER1.
>
> Looking at the hwmod data though, I don't see a hwmod for DMTIMER0. Can
> you explain a little about why DMTIMER0 is missing/broken?
>
DMTimer0 is usable only in secure devices only. This timer by default runs
from an inaccurate RC oscillator the frequency of which can be anywhere
from 16-60KHz based on process variations. There is a mux to change the
clock source but the register for the mux can't be modified in GP devices.
(will add this in the changelog)
Regards,
Vaibhav
^ permalink raw reply
* [Patch v2 3/4] ASoC: atmel-ssc-dai: register platform from DAIs
From: Bo Shen @ 2012-11-05 5:25 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20121102142444.GY4413@opensource.wolfsonmicro.com>
Hi Mark Brown,
On 11/2/2012 22:24, Mark Brown wrote:
> On Fri, Nov 02, 2012 at 10:34:21AM +0800, Bo Shen wrote:
>> On 11/1/2012 22:43, Mark Brown wrote:
>>> On Wed, Oct 31, 2012 at 03:26:59PM +0800, Bo Shen wrote:
>
>>>> +dai: dai {
>>>> + compatible = "atmel,atmel-ssc-dai";
>>>> + atmel,dai-master = <&ssc0>;
>>>> +};
>
>>> This seems to be a purely virtual device which remaps the SSC onto the
>>> Linux audio subsystem? If that is the case then it shouldn't appear in
>>> the device tree,
>
>> Yes. This is a purely virtual device. I add this as to the following reason.
>
>> In our case, the ssc can connect to audio codec, DAC and other
>> devices. In order to avoid duplicate the code, so keep ssc as a
>> library, register it directly in Linux and use remap method to let
>> it work onto other different subsystem.
>
> Your quote appears to have deleted the bit of my mail where I told you
> how to fix this. Is there something unclear in my suggestion that the
> machine driver directly reference the SSC node?
>
Sorry for misunderstand. I split your e-mail into two parts. May be you
miss some parts of my e-mail. You can check the last mail from me. Or
check the following fully quote.
--------------------------------------------------------------------------
On 11/1/2012 22:43, Mark Brown wrote:
> On Wed, Oct 31, 2012 at 03:26:59PM +0800, Bo Shen wrote:
>
>> +Required properties:
>> + - compatible: "atmel,atmel-ssc-dai"
>> + - atmel,dai-master: this dai base on which ssc controller
>
>> +Example:
>> +dai: dai {
>> + compatible = "atmel,atmel-ssc-dai";
>> + atmel,dai-master = <&ssc0>;
>> +};
>
> This seems to be a purely virtual device which remaps the SSC onto the
> Linux audio subsystem? If that is the case then it shouldn't appear in
> the device tree,
Yes. This is a purely virtual device. I add this as to the following reason.
In our case, the ssc can connect to audio codec, DAC and other devices.
In order to avoid duplicate the code, so keep ssc as a library, register
it directly in Linux and use remap method to let it work onto other
different subsystem.
So, for ssc connect to audio codec, use dai to remap the SSC onto the
Linux audio subsystem. In this way, just let the dai know which ssc
channel it based on. The remap is just a simple way. Please take
following code as a reference.
---<8---
if (pdev->dev.of_node) {
struct device_node *np = pdev->dev.of_node;
struct device_node *dai_master_np;
dai_master_np = of_parse_phandle(np,
"atmel,dai-master", 0);
if (!dai_master_np) {
dev_err(&pdev->dev, "No SSC for atmel dai");
return -EINVAL;
}
id = of_alias_get_id(dai_master_np, "ssc");
} else {
id = to_platform_device(pdev->dev.parent)->id;
}
ssc = ssc_request(id);
if (IS_ERR(ssc)) {
dev_err(&pdev->dev, "Failed to request SSC %d\n", id);
return PTR_ERR(ssc);
}
ssc_info.ssc = ssc;
pdev->dev.parent = &(ssc->pdev->dev);
--->8---
If ssc connect to other devices, also need to remap to other subsystem.
> the machine driver should just directly reference the
> SSC and instantiate any devices required in Linux directly.
I am not fully understand this. So, which do you mean as the following
two method or any other else?
Our old method:
using audio machine driver (e.g: sam9g20_wm8731.c) call
atmel_ssc_set_audio function to allocate the platform device for
atmel-ssc-dai and atmel-pcm-audio and then add device.
Code as following:
---<8---
/* Allocate a dummy device for DMA if we don't have one already */
if (!dma_pdev) {
dma_pdev = platform_device_alloc("atmel-pcm-audio", -1);
if (!dma_pdev)
return -ENOMEM;
ret = platform_device_add(dma_pdev);
if (ret < 0) {
platform_device_put(dma_pdev);
dma_pdev = NULL;
return ret;
}
}
ssc_pdev = platform_device_alloc("atmel-ssc-dai", ssc_id);
if (!ssc_pdev)
return -ENOMEM;
/* If we can grab the SSC briefly to parent the DAI device off
it */
ssc = ssc_request(ssc_id);
if (IS_ERR(ssc))
pr_warn("Unable to parent ASoC SSC DAI on SSC: %ld\n",
PTR_ERR(ssc));
else {
ssc_pdev->dev.parent = &(ssc->pdev->dev);
ssc_free(ssc);
}
ret = platform_device_add(ssc_pdev);
--->8---
Other SoC do like this:
register i2s device, and then register dai, finally register
platform. So, only one device.
--------------------------------------------------------------------------
Best regards,
Bo Shen
^ 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