Skip to content

Commit

Permalink
Add SMI driver
Browse files Browse the repository at this point in the history
Signed-off-by: Luke Wren <wren6991@gmail.com>
  • Loading branch information
Wren6991 authored and popcornmix committed Mar 16, 2016
1 parent 1ee3b49 commit e19c303
Show file tree
Hide file tree
Showing 9 changed files with 1,861 additions and 1 deletion.
17 changes: 17 additions & 0 deletions Documentation/devicetree/bindings/misc/brcm,bcm2835-smi-dev.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
* Broadcom BCM2835 SMI character device driver.

SMI or secondary memory interface is a peripheral specific to certain Broadcom
SOCs, and is helpful for talking to things like parallel-interface displays
and NAND flashes (in fact, most things with a parallel register interface).

This driver adds a character device which provides a user-space interface to
an instance of the SMI driver.

Required properties:
- compatible: "brcm,bcm2835-smi-dev"
- smi_handle: a phandle to the smi node.

Optional properties:
- None.


48 changes: 48 additions & 0 deletions Documentation/devicetree/bindings/misc/brcm,bcm2835-smi.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
* Broadcom BCM2835 SMI driver.

SMI or secondary memory interface is a peripheral specific to certain Broadcom
SOCs, and is helpful for talking to things like parallel-interface displays
and NAND flashes (in fact, most things with a parallel register interface).

Required properties:
- compatible: "brcm,bcm2835-smi"
- reg: Should contain location and length of SMI registers and SMI clkman regs
- interrupts: *the* SMI interrupt.
- pinctrl-names: should be "default".
- pinctrl-0: the phandle of the gpio pin node.
- brcm,smi-clock-source: the clock source for clkman
- brcm,smi-clock-divisor: the integer clock divisor for clkman
- dmas: the dma controller phandle and the DREQ number (4 on a 2835)
- dma-names: the name used by the driver to request its channel.
Should be "rx-tx".

Optional properties:
- None.

Examples:

8 data pin configuration:

smi: smi@7e600000 {
compatible = "brcm,bcm2835-smi";
reg = <0x7e600000 0x44>, <0x7e1010b0 0x8>;
interrupts = <2 16>;
pinctrl-names = "default";
pinctrl-0 = <&smi_pins>;
brcm,smi-clock-source = <6>;
brcm,smi-clock-divisor = <4>;
dmas = <&dma 4>;
dma-names = "rx-tx";

status = "okay";
};

smi_pins: smi_pins {
brcm,pins = <2 3 4 5 6 7 8 9 10 11 12 13 14 15>;
/* Alt 1: SMI */
brcm,function = <5 5 5 5 5 5 5 5 5 5 5 5 5 5>;
/* /CS, /WE and /OE are pulled high, as they are
generally active low signals */
brcm,pull = <2 2 2 2 2 2 0 0 0 0 0 0 0 0>;
};

8 changes: 8 additions & 0 deletions drivers/char/broadcom/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,11 @@ config BCM2835_DEVGPIOMEM
on the 2835. Calling mmap(/dev/gpiomem) will map the GPIO
register page to the user's pointer.

config BCM2835_SMI_DEV
tristate "Character device driver for BCM2835 Secondary Memory Interface"
depends on (MACH_BCM2708 || MACH_BCM2709 || ARCH_BCM2835) && BCM2835_SMI
default m
help
This driver provides a character device interface (ioctl + read/write) to
Broadcom's Secondary Memory interface. The low-level functionality is provided
by the SMI driver itself.
2 changes: 1 addition & 1 deletion drivers/char/broadcom/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ obj-$(CONFIG_BCM2708_VCMEM) += vc_mem.o
obj-$(CONFIG_BCM_VC_SM) += vc_sm/

obj-$(CONFIG_BCM2835_DEVGPIOMEM)+= bcm2835-gpiomem.o

obj-$(CONFIG_BCM2835_SMI_DEV) += bcm2835_smi_dev.o

0 comments on commit e19c303

Please sign in to comment.