bus: brcmstb_gisb: use gdev_{read, write} in suspend/resume paths
PATCH 1/1 bus: brcmstb_gisb: use gdev_{read, write} in suspend/resume paths
This patch fixes a small merge issue between:
Commit 2b53eadcea05 ("bus: brcmstb_gisb: Introduce wrapper functions for MMIO accesses") and 203bb85ed605 ("bus: brcmstb_gisb: save and restore GISB timeout"), the former introducing wrapper I/O accessors to be decoupled from the register offsets and use table, while the latter had not been converted to using these wrapper.
---
Arnd, Olof,
This applies on top of your arm-soc/for-next branch as of 921caee4a849443bcda286f903b6ec01c5aa7fd8 ("arm-soc: document merges")
Thanks!
drivers/bus/brcmstb_gisb.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/bus/brcmstb_gisb.c +2 -2
@@ -359,7 +359,7 @@ static int brcmstb_gisb_arb_suspend(struct device *dev)struct platform_device *pdev =to_platform_device (dev);struct brcmstb_gisb_arb_device *gdev =platform_get_drvdata (pdev); - gdev->saved_timeout =ioread32 (gdev->base +ARB_TIMER ); + gdev->saved_timeout =gisb_read (gdev,ARB_TIMER );return 0 ; }
@@ -372,7 +372,7 @@ static int brcmstb_gisb_arb_resume_noirq(struct device *dev)struct platform_device *pdev =to_platform_device (dev);struct brcmstb_gisb_arb_device *gdev =platform_get_drvdata (pdev); -iowrite32 (gdev->saved_timeout, gdev->base +ARB_TIMER ); +gisb_write (gdev, gdev->saved_timeout,ARB_TIMER );return 0 ; }
Signature · 1 line
2.1.0
PATCH 1/1 bus: brcmstb_gisb: use gdev_{read, write} in suspend/resume paths
Quoted 7 lines · On Friday 05 December 2014 11:15:43 Florian Fainelli wrote:
This patch fixes a small merge issue between:
Commit2b53eadcea05("bus:brcmstb_gisb: Introduce wrapper functions for MMIO accesses") and203bb85ed605("bus:brcmstb_gisb: save and restore GISB timeout"), the former introducing wrapper I/O accessors to be decoupled from the register offsets and use table, while the latter had not been converted to using these wrapper.
Quoted 6 lines
Signed-off-by Florian Fainelli <[email protected]>---
Arnd, Olof,This applies on top of your arm-soc/for-next branch as of
921caee4a849443bcda286f903b6ec01c5aa7fd8("arm-soc: document merges")
I've resolved this now by merging the brcm/stb-smp-uart branch that we already had in next/soc into next/drivers as well, which also saves Linus from having to do the same merge.
I have folded both Olof's fixup and your patch into the merge.
commit 7135466151f0560604c2bfc4c27ff9cc2a40f8cd
Merge: 6b34df9e30c8 203bb85ed605
Author: Arnd Bergmann <[email protected]>
Date: Mon Dec 8 17:16:03 2014 +0100
Merge branch 'brcm/stb-smp-uart' into next/drivers
This resolves a nonobvious merge conflict that I got wrong the first time.
* brcm/stb-smp-uart:
bus: brcmstb_gisb: save and restore GISB timeout
bus: brcmstb_gisb: register the fault code hook
ARM: brcmstb: Kconfig: drop unneeded symbol selections
ARM: brcmstb: reintroduce SMP support
ARM: brcmstb: add debug UART for earlyprintk support
Conflicts:
drivers/bus/brcmstb_gisb.c
drivers/bus/brcmstb_gisb.c +0 -0
@@@ -23,13 -23,18 +23,14 @@@#include <linux/list.h> #include <linux/of.h> #include <linux/bitops.h> +#include <linux/pm.h> +#ifdef CONFIG_ARM#include <asm/bug.h> #include <asm/signal.h> +#endif -#define ARB_TIMER 0x008 -#define ARB_ERR_CAP_CLR 0x7e4#define ARB_ERR_CAP_CLEAR (1 << 0) -#define ARB_ERR_CAP_HI_ADDR 0x7e8 -#define ARB_ERR_CAP_ADDR 0x7ec -#define ARB_ERR_CAP_DATA 0x7f0 -#define ARB_ERR_CAP_STATUS 0x7f4#define ARB_ERR_CAP_STATUS_TIMEOUT (1 << 12)#define ARB_ERR_CAP_STATUS_TEA (1 << 11)#define ARB_ERR_CAP_STATUS_BS_SHIFT (1 << 2)return ret; } - -void __init brcmstb_hook_fault_code (void ) - { -hook_fault_code (22 , brcmstb_bus_error_handler,SIGBUS ,0 , -"imprecise external abort" ); - } +#endifstatic irqreturn_t brcmstb_gisb_timeout_handler (int irq,void *dev_id) {list_add_tail (&gdev->next, &brcmstb_gisb_arb_device_list); ++#ifdef CONFIG_ARM +hook_fault_code (22 , brcmstb_bus_error_handler,SIGBUS ,0 , +"imprecise external abort" ); ++#endif +dev_info (&pdev->dev,"registered mem: %p, irqs: %d, %d\n" , gdev->base, timeout_irq, tea_irq);return 0 ; } +#ifdef CONFIG_PM_SLEEP +static int brcmstb_gisb_arb_suspend (struct device *dev) + { +struct platform_device *pdev =to_platform_device (dev); +struct brcmstb_gisb_arb_device *gdev =platform_get_drvdata (pdev); + - gdev->saved_timeout =ioread32 (gdev->base +ARB_TIMER ); ++ gdev->saved_timeout =gisb_read (gdev,ARB_TIMER ); + +return 0 ; + } + +/* Make sure we provide the same timeout value that was configured before, and +* do this before the GISB timeout interrupt handler has any chance to run. +*/ +static int brcmstb_gisb_arb_resume_noirq (struct device *dev) + { +struct platform_device *pdev =to_platform_device (dev); +struct brcmstb_gisb_arb_device *gdev =platform_get_drvdata (pdev); + -iowrite32 (gdev->saved_timeout, gdev->base +ARB_TIMER ); ++gisb_write (gdev, gdev->saved_timeout,ARB_TIMER ); + +return 0 ; + } +#else +#define brcmstb_gisb_arb_suspend NULL +#define brcmstb_gisb_arb_resume_noirq NULL +#endif + +static const struct dev_pm_ops brcmstb_gisb_arb_pm_ops = { + .suspend = brcmstb_gisb_arb_suspend, + .resume_noirq = brcmstb_gisb_arb_resume_noirq, + }; + -static const struct of_device_id brcmstb_gisb_arb_of_match[] = { - { .compatible = "brcm,gisb-arb" }, - { }, -}; - static struct platform_driver brcmstb_gisb_arb_driver = { - .probe = brcmstb_gisb_arb_probe, .driver = { .name ="brcm-gisb-arb" , .owner =THIS_MODULE ,