Skip to content

Commit

Permalink
Main bcm2708/bcm2709 linux port
Browse files Browse the repository at this point in the history
Signed-off-by: popcornmix <popcornmix@gmail.com>
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>

bcm2709: Drop platform smp and timer init code

irq-bcm2836 handles this through these functions:
bcm2835_init_local_timer_frequency()
bcm2836_arm_irqchip_smp_init()

Signed-off-by: Noralf Trønnes <noralf@tronnes.org>

bcm270x: Use watchdog for reboot/poweroff

The watchdog driver already has support for reboot/poweroff.
Make use of this and remove the code from the platform files.

Signed-off-by: Noralf Trønnes <noralf@tronnes.org>

board_bcm2835: Remove coherent dma pool increase - API has gone
  • Loading branch information
popcornmix committed Jan 14, 2020
1 parent f49b66d commit 786b37e
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 6 deletions.
1 change: 1 addition & 0 deletions arch/arm/mach-bcm/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,7 @@ config ARCH_BCM2835
select PINCTRL
select PINCTRL_BCM2835
select MFD_CORE
select MFD_SYSCON if ARCH_MULTI_V7
help
This enables support for the Broadcom BCM2711 and BCM283x SoCs.
This SoC is used in the Raspberry Pi and Roku 2 devices.
Expand Down
15 changes: 12 additions & 3 deletions arch/arm/mm/proc-v6.S
Original file line number Diff line number Diff line change
Expand Up @@ -70,10 +70,19 @@ ENDPROC(cpu_v6_reset)
*
* IRQs are already disabled.
*/

/* See jira SW-5991 for details of this workaround */
ENTRY(cpu_v6_do_idle)
mov r1, #0
mcr p15, 0, r1, c7, c10, 4 @ DWB - WFI may enter a low-power mode
mcr p15, 0, r1, c7, c0, 4 @ wait for interrupt
.align 5
mov r1, #2
1: subs r1, #1
nop
mcreq p15, 0, r1, c7, c10, 4 @ DWB - WFI may enter a low-power mode
mcreq p15, 0, r1, c7, c0, 4 @ wait for interrupt
nop
nop
nop
bne 1b
ret lr

ENTRY(cpu_v6_dcache_clean_area)
Expand Down
7 changes: 6 additions & 1 deletion drivers/irqchip/irq-bcm2835.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,9 @@
#include <linux/irqdomain.h>

#include <asm/exception.h>
#ifndef CONFIG_ARM64
#include <asm/mach/irq.h>
#endif

/* Put the bank and irq (32 bits) into the hwirq */
#define MAKE_HWIRQ(b, n) (((b) << 5) | (n))
Expand Down Expand Up @@ -71,6 +73,7 @@
#define NR_BANKS 3
#define IRQS_PER_BANK 32
#define NUMBER_IRQS MAKE_HWIRQ(NR_BANKS, 0)
#undef FIQ_START
#define FIQ_START (NR_IRQS_BANK0 + MAKE_HWIRQ(NR_BANKS - 1, 0))

static const int reg_pending[] __initconst = { 0x00, 0x04, 0x08 };
Expand Down Expand Up @@ -238,10 +241,12 @@ static int __init armctrl_of_init(struct device_node *node,
MAKE_HWIRQ(b, i) + NUMBER_IRQS);
BUG_ON(irq <= 0);
irq_set_chip(irq, &armctrl_chip);
set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
irq_set_probe(irq);
}
}
#ifndef CONFIG_ARM64
init_FIQ(FIQ_START);
#endif

return 0;
}
Expand Down
18 changes: 16 additions & 2 deletions drivers/mailbox/bcm2835-mailbox.c
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,15 @@
#define MAIL1_WRT (ARM_0_MAIL1 + 0x00)
#define MAIL1_STA (ARM_0_MAIL1 + 0x18)

/* On ARCH_BCM270x these come through <linux/interrupt.h> (arm_control.h ) */
#ifndef ARM_MS_FULL
/* Status register: FIFO state. */
#define ARM_MS_FULL BIT(31)
#define ARM_MS_EMPTY BIT(30)

/* Configuration register: Enable interrupts. */
#define ARM_MC_IHAVEDATAIRQEN BIT(0)
#endif

struct bcm2835_mbox {
void __iomem *regs;
Expand Down Expand Up @@ -145,7 +148,7 @@ static int bcm2835_mbox_probe(struct platform_device *pdev)
return -ENOMEM;
spin_lock_init(&mbox->lock);

ret = devm_request_irq(dev, irq_of_parse_and_map(dev->of_node, 0),
ret = devm_request_irq(dev, platform_get_irq(pdev, 0),
bcm2835_mbox_irq, 0, dev_name(dev), mbox);
if (ret) {
dev_err(dev, "Failed to register a mailbox IRQ handler: %d\n",
Expand Down Expand Up @@ -195,7 +198,18 @@ static struct platform_driver bcm2835_mbox_driver = {
},
.probe = bcm2835_mbox_probe,
};
module_platform_driver(bcm2835_mbox_driver);

static int __init bcm2835_mbox_init(void)
{
return platform_driver_register(&bcm2835_mbox_driver);
}
arch_initcall(bcm2835_mbox_init);

static void __init bcm2835_mbox_exit(void)
{
platform_driver_unregister(&bcm2835_mbox_driver);
}
module_exit(bcm2835_mbox_exit);

MODULE_AUTHOR("Lubomir Rintel <lkundrak@v3.sk>");
MODULE_DESCRIPTION("BCM2835 mailbox IPC driver");
Expand Down

0 comments on commit 786b37e

Please sign in to comment.