Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 83bb90fa authored by Jonas Gorski's avatar Jonas Gorski Committed by Ralf Baechle
Browse files

MIPS: BCM63XX: add HSSPI platform device and register it

parent fd034a1a
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
obj-y		+= clk.o cpu.o cs.o gpio.o irq.o nvram.o prom.o reset.o \
		   setup.o timer.o dev-dsp.o dev-enet.o dev-flash.o \
		   dev-pcmcia.o dev-rng.o dev-spi.o dev-uart.o dev-wdt.o \
		   dev-usb-usbd.o
		   dev-pcmcia.o dev-rng.o dev-spi.o dev-hsspi.o dev-uart.o \
		   dev-wdt.o dev-usb-usbd.o
obj-$(CONFIG_EARLY_PRINTK)	+= early_printk.o

obj-y		+= boards/
+3 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@
#include <bcm63xx_dev_enet.h>
#include <bcm63xx_dev_dsp.h>
#include <bcm63xx_dev_flash.h>
#include <bcm63xx_dev_hsspi.h>
#include <bcm63xx_dev_pcmcia.h>
#include <bcm63xx_dev_spi.h>
#include <bcm63xx_dev_usb_usbd.h>
@@ -915,6 +916,8 @@ int __init board_register_devices(void)

	bcm63xx_spi_register();

	bcm63xx_hsspi_register();

	bcm63xx_flash_register();

	bcm63xx_led_data.num_leds = ARRAY_SIZE(board.leds);
+47 −0
Original line number Diff line number Diff line
/*
 * This file is subject to the terms and conditions of the GNU General Public
 * License.  See the file "COPYING" in the main directory of this archive
 * for more details.
 *
 * Copyright (C) 2012 Jonas Gorski <jonas.gorski@gmail.com>
 */

#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/platform_device.h>

#include <bcm63xx_cpu.h>
#include <bcm63xx_dev_hsspi.h>
#include <bcm63xx_regs.h>

static struct resource spi_resources[] = {
	{
		.start		= -1, /* filled at runtime */
		.end		= -1, /* filled at runtime */
		.flags		= IORESOURCE_MEM,
	},
	{
		.start		= -1, /* filled at runtime */
		.flags		= IORESOURCE_IRQ,
	},
};

static struct platform_device bcm63xx_hsspi_device = {
	.name		= "bcm63xx-hsspi",
	.id		= 0,
	.num_resources	= ARRAY_SIZE(spi_resources),
	.resource	= spi_resources,
};

int __init bcm63xx_hsspi_register(void)
{
	if (!BCMCPU_IS_6328() && !BCMCPU_IS_6362())
		return -ENODEV;

	spi_resources[0].start = bcm63xx_regset_address(RSET_HSSPI);
	spi_resources[0].end = spi_resources[0].start;
	spi_resources[0].end += RSET_HSSPI_SIZE - 1;
	spi_resources[1].start = bcm63xx_get_irq_number(IRQ_HSSPI);

	return platform_device_register(&bcm63xx_hsspi_device);
}
+8 −0
Original line number Diff line number Diff line
#ifndef BCM63XX_DEV_HSSPI_H
#define BCM63XX_DEV_HSSPI_H

#include <linux/types.h>

int bcm63xx_hsspi_register(void);

#endif /* BCM63XX_DEV_HSSPI_H */