summaryrefslogtreecommitdiffstats
path: root/kernel/arch/arm/boot/dts/at91sam9g20ek_common.dtsi
blob: e9cc99b6353ad1e464bb0942c29e3cea6dc5d37e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
14
/*
 * at91sam9g20ek_common.dtsi - Device Tree file for Atmel at91sam9g20ek board
 *
 * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
 *
 * Licensed under GPLv2.
 */
#include "at91sam9g20.dtsi"

/ {

	chosen {
		bootargs = "mem=64M root=/dev/mtdblock5 rw rootfstype=ubifs";
		stdout-path = "serial0:115200n8";
	};

	memory {
		reg = <0x20000000 0x4000000>;
	};

	clocks {
		slow_xtal {
			clock-frequency = <32768>;
		};

		main_xtal {
			clock-frequency = <18432000>;
		};
	};

	ahb {
		apb {
			pinctrl@fffff400 {
				board {
					pinctrl_pck0_as_mck: pck0_as_mck {
						atmel,pins =
							<AT91_PIOC 1 AT91_PERIPH_B AT91_PINCTRL_NONE>;	/* PC1 periph B */
					};

				};

				mmc0_slot1 {
					pinctrl_board_mmc0_slot1: mmc0_slot1-board {
						atmel,pins =
							<AT91_PIOC 9 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;	/* PC9 gpio CD pin pull up and deglitch */
					};
				};
			};

			dbgu: serial@fffff200 {
				status = "okay";
			};

			usart0: serial@fffb0000 {
				pinctrl-0 =
					<&pinctrl_usart0
					 &pinctrl_usart0_rts
					 &pinctrl_usart0_cts
					 &pinctrl_usart0_dtr_dsr
					 &pinctrl_usart0_dcd
					 &pinctrl_usart0_ri>;
				status = "okay";
			};

			usart1: serial@fffb4000 {
				status = "okay";
			};

			macb0: ethernet@fffc4000 {
				phy-mode = "rmii";
				status = "okay";
			};

			usb1: gadget@fffa4000 {
				atmel,vbus-gpio = <&pioC 5 GPIO_ACTIVE_HIGH>;
				status = "okay";
			};

			mmc0: mmc@fffa8000 {
				pinctrl-0 = <
					&pinctrl_board_mmc0_slot1
					&pinctrl_mmc0_clk
					&pinctrl_mmc0_slot1_cmd_dat0
					&pinctrl_mmc0_slot1_dat1_3>;
				status = "okay";
				slot@1 {
					reg = <1>;
					bus-width = <4>;
					cd-gpios = <&pioC 9 GPIO_ACTIVE_HIGH>;
				};
			};

			ssc0: ssc@fffbc000 {
				status = "okay";
				pinctrl-0 = <&pinctrl_ssc0_tx>;
			};

			spi0: spi@fffc8000 {
				cs-gpios = <0>, <&pioC 11 0>, <0>, <0>;
				mtd_dataflash@0 {
					compatible = "atmel,at45", "atmel,dataflash";
					spi-max-frequency = <50000000>;
					reg = <1>;
				};
			};

			shdwc@fffffd10 {
				atmel,wakeup-counter = <10>;
				atmel,wakeup-rtt-timer;
			};

			rtc@fffffd20 {
				atmel,rtt-rtc-time-reg = <&gpbr 0x0>;
				status = "okay";
			};

			watchdog@fffffd40 {
				status = "okay";
			};

			gpbr: syscon@fffffd50 {
				status = "okay";
			};
		};

		nand0: nand@40000000 {
			nand-bus-width = <8>;
			nand-ecc-mode = "soft";
			nand-on-flash-bbt;
			status = "okay";

			at91bootstrap@0 {
				label = "at91bootstrap";
				reg = <0x0 0x20000>;
			};

			barebox@20000 {
				label = "barebox";
				reg = <0x20000 0x40000>;
			};

			bareboxenv@60000 {
				label = "bareboxenv";
				reg = <0x60000 0x20000>;
			};

			bareboxenv2@80000 {
				label = "bareboxenv2";
				reg = <0x80000 0x20000>;
			};

			oftree@80000 {
				label = "oftree";
				reg = <0xa0000 0x20000>;
			};

			kernel@a0000 {
				label = "kernel";
				reg = <0xc0000 0x400000>;
			};

			rootfs@4a0000 {
				label = "rootfs";
				reg = <0x4c0000 0x7800000>;
			};

			data@7ca0000 {
				label = "data";
				reg = <0x7cc0000 0x8340000>;
			};
		};

		usb0: ohci@00500000 {
			num-ports = <2>;
			status = "okay";
		};
	};

	i2c@0 {
		status = "okay";

		24c512@50 {
			compatible = "24c512";
			reg = <0x50>;
		};

		wm8731: wm8731@1b {
			compatible = "wm8731";
			reg = <0x1b>;
		};
	};

	gpio_keys {
		compatible = "gpio-keys";

		btn3 {
			label = "Button 3";
			gpios = <&pioA 30 GPIO_ACTIVE_LOW>;
			linux,code = <0x103>;
			wakeup-source;
		};

		btn4 {
			label = "Button 4";
			gpios = <&pioA 31 GPIO_ACTIVE_LOW>;
			linux,code = <0x104>;
			wakeup-source;
		};
	};

	sound {
		compatible = "atmel,at91sam9g20ek-wm8731-audio";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_pck0_as_mck>;

		atmel,model = "wm8731 @ AT91SAMG20EK";

		atmel,audio-routing =
			"Ext Spk", "LHPOUT",
			"Int Mic", "MICIN";

		atmel,ssc-controller = <&ssc0>;
		atmel,audio-codec = <&wm8731>;
	};
};
pan> xfer; struct cfspi_dev *dev; unsigned long state; struct work_struct work; struct workqueue_struct *wq; struct list_head list; int flow_off_sent; u32 qd_low_mark; u32 qd_high_mark; struct completion comp; wait_queue_head_t wait; spinlock_t lock; bool flow_stop; bool slave; bool slave_talked; #ifdef CONFIG_DEBUG_FS enum cfspi_state dbg_state; u16 pcmd; u16 tx_ppck_len; u16 rx_ppck_len; struct dentry *dbgfs_dir; struct dentry *dbgfs_state; struct dentry *dbgfs_frame; #endif /* CONFIG_DEBUG_FS */ }; extern int spi_frm_align; extern int spi_up_head_align; extern int spi_up_tail_align; extern int spi_down_head_align; extern int spi_down_tail_align; extern struct platform_driver cfspi_spi_driver; void cfspi_dbg_state(struct cfspi *cfspi, int state); int cfspi_xmitfrm(struct cfspi *cfspi, u8 *buf, size_t len); int cfspi_xmitlen(struct cfspi *cfspi); int cfspi_rxfrm(struct cfspi *cfspi, u8 *buf, size_t len); int cfspi_spi_remove(struct platform_device *pdev); int cfspi_spi_probe(struct platform_device *pdev); int cfspi_xmitfrm(struct cfspi *cfspi, u8 *buf, size_t len); int cfspi_xmitlen(struct cfspi *cfspi); int cfspi_rxfrm(struct cfspi *cfspi, u8 *buf, size_t len); void cfspi_xfer(struct work_struct *work); #endif /* CAIF_SPI_H_ */