- Pin configuration is a complete iomux register now and includes
drive strength, pull mode, mux mode, speed, etc. - Add i2c devices to the tree - Add IPG clock
This commit is contained in:
parent
f32801f42b
commit
ee270bbca3
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=262483
@ -164,6 +164,18 @@ struct clk {
|
||||
uint32_t sel_val;
|
||||
};
|
||||
|
||||
static struct clk ipg_clk = {
|
||||
.reg = CCM_CACRR,
|
||||
.enable_reg = 0,
|
||||
.div_mask = IPG_CLK_DIV_MASK,
|
||||
.div_shift = IPG_CLK_DIV_SHIFT,
|
||||
.div_val = 1, /* Divide by 2 */
|
||||
.sel_reg = 0,
|
||||
.sel_mask = 0,
|
||||
.sel_shift = 0,
|
||||
.sel_val = 0,
|
||||
};
|
||||
|
||||
/*
|
||||
PLL4 clock divider (before switching the clocks should be gated)
|
||||
000 Divide by 1 (only if PLL frequency less than or equal to 650 MHz)
|
||||
@ -310,6 +322,7 @@ struct clock_entry {
|
||||
};
|
||||
|
||||
static struct clock_entry clock_map[] = {
|
||||
{"ipg", &ipg_clk},
|
||||
{"pll4", &pll4_clk},
|
||||
{"sai3", &sai3_clk},
|
||||
{"cko1", &cko1_clk},
|
||||
|
@ -56,21 +56,42 @@ __FBSDID("$FreeBSD$");
|
||||
#include <arm/freescale/vybrid/vf_iomuxc.h>
|
||||
#include <arm/freescale/vybrid/vf_common.h>
|
||||
|
||||
#define IBE (1 << 0) /* Input Buffer Enable Field */
|
||||
#define OBE (1 << 1) /* Output Buffer Enable Field. */
|
||||
#define PUE (1 << 2) /* Pull / Keep Select Field. */
|
||||
#define PKE (1 << 3) /* Pull / Keep Enable Field. */
|
||||
#define PUS_MASK (3 << 4) /* Pull Up / Down Config Field. */
|
||||
#define DSE_MASK (7 << 6) /* Drive Strength Field. */
|
||||
#define HYS (1 << 9) /* Hysteresis Enable Field */
|
||||
|
||||
#define MUX_MODE_MASK 7
|
||||
#define MUX_MODE_SHIFT 20
|
||||
#define MUX_MODE_GPIO 0
|
||||
#define MUX_MODE_VBUS_EN_OTG 2
|
||||
|
||||
#define PUS_22_KOHM_PULL_UP (3 << 4)
|
||||
#define DSE_25_OHM (6 << 6)
|
||||
#define IBE (1 << 0) /* Input Buffer Enable Field */
|
||||
#define OBE (1 << 1) /* Output Buffer Enable Field. */
|
||||
#define PUE (1 << 2) /* Pull / Keep Select Field. */
|
||||
#define PKE (1 << 3) /* Pull / Keep Enable Field. */
|
||||
#define HYS (1 << 9) /* Hysteresis Enable Field */
|
||||
#define ODE (1 << 10) /* Open Drain Enable Field. */
|
||||
#define SRE (1 << 11) /* Slew Rate Field. */
|
||||
|
||||
#define SPEED_SHIFT 12
|
||||
#define SPEED_MASK 0x3
|
||||
#define SPEED_LOW 0 /* 50 MHz */
|
||||
#define SPEED_MEDIUM 0x1 /* 100 MHz */
|
||||
#define SPEED_HIGH 0x3 /* 200 MHz */
|
||||
|
||||
#define PUS_SHIFT 4 /* Pull Up / Down Config Field Shift */
|
||||
#define PUS_MASK 0x3
|
||||
#define PUS_100_KOHM_PULL_DOWN 0
|
||||
#define PUS_47_KOHM_PULL_UP 0x1
|
||||
#define PUS_100_KOHM_PULL_UP 0x2
|
||||
#define PUS_22_KOHM_PULL_UP 0x3
|
||||
|
||||
#define DSE_SHIFT 6 /* Drive Strength Field Shift */
|
||||
#define DSE_MASK 0x7
|
||||
#define DSE_DISABLED 0 /* Output driver disabled */
|
||||
#define DSE_150_OHM 0x1
|
||||
#define DSE_75_OHM 0x2
|
||||
#define DSE_50_OHM 0x3
|
||||
#define DSE_37_OHM 0x4
|
||||
#define DSE_30_OHM 0x5
|
||||
#define DSE_25_OHM 0x6
|
||||
#define DSE_20_OHM 0x7
|
||||
|
||||
#define MAX_MUX_LEN 1024
|
||||
|
||||
@ -100,19 +121,6 @@ iomuxc_probe(device_t dev)
|
||||
return (BUS_PROBE_DEFAULT);
|
||||
}
|
||||
|
||||
static int
|
||||
configure_pad(struct iomuxc_softc *sc, int pad, int mux_mode)
|
||||
{
|
||||
int reg;
|
||||
|
||||
reg = READ4(sc, pad);
|
||||
reg &= ~(MUX_MODE_MASK << MUX_MODE_SHIFT);
|
||||
reg |= (mux_mode << MUX_MODE_SHIFT);
|
||||
WRITE4(sc, pad, reg);
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
static int
|
||||
pinmux_set(struct iomuxc_softc *sc)
|
||||
{
|
||||
@ -121,7 +129,7 @@ pinmux_set(struct iomuxc_softc *sc)
|
||||
int len;
|
||||
int values;
|
||||
int pin;
|
||||
int mux_mode;
|
||||
int pin_cfg;
|
||||
int i;
|
||||
|
||||
root = OF_finddevice("/");
|
||||
@ -146,12 +154,12 @@ pinmux_set(struct iomuxc_softc *sc)
|
||||
values = len / (sizeof(uint32_t));
|
||||
for (i = 0; i < values; i += 2) {
|
||||
pin = fdt32_to_cpu(iomux_config[i]);
|
||||
mux_mode = fdt32_to_cpu(iomux_config[i+1]);
|
||||
pin_cfg = fdt32_to_cpu(iomux_config[i+1]);
|
||||
#if 0
|
||||
device_printf(sc->dev, "Set pin %d to ALT%d\n",
|
||||
pin, mux_mode);
|
||||
device_printf(sc->dev, "Set pin %d to 0x%08x\n",
|
||||
pin, pin_cfg);
|
||||
#endif
|
||||
configure_pad(sc, IOMUXC(pin), mux_mode);
|
||||
WRITE4(sc, IOMUXC(pin), pin_cfg);
|
||||
}
|
||||
}
|
||||
|
||||
@ -169,7 +177,6 @@ static int
|
||||
iomuxc_attach(device_t dev)
|
||||
{
|
||||
struct iomuxc_softc *sc;
|
||||
int reg;
|
||||
|
||||
sc = device_get_softc(dev);
|
||||
sc->dev = dev;
|
||||
@ -183,11 +190,6 @@ iomuxc_attach(device_t dev)
|
||||
sc->bst = rman_get_bustag(sc->tmr_res[0]);
|
||||
sc->bsh = rman_get_bushandle(sc->tmr_res[0]);
|
||||
|
||||
/* USB */
|
||||
configure_pad(sc, IOMUXC_PTA17, MUX_MODE_VBUS_EN_OTG);
|
||||
reg = (PKE | PUE | PUS_22_KOHM_PULL_UP | DSE_25_OHM | OBE);
|
||||
WRITE4(sc, IOMUXC_PTA7, reg);
|
||||
|
||||
pinmux_set(sc);
|
||||
|
||||
return (0);
|
||||
|
@ -45,17 +45,26 @@
|
||||
|
||||
fec1: ethernet@400D1000 {
|
||||
status = "okay";
|
||||
iomux_config = < 54 0x1 55 0x1
|
||||
56 0x1 57 0x1
|
||||
58 0x1 59 0x1
|
||||
60 0x1 61 0x1
|
||||
62 0x1 0 0x1 >;
|
||||
iomux_config = < 54 0x103192
|
||||
55 0x103193
|
||||
56 0x103191
|
||||
57 0x103191
|
||||
58 0x103191
|
||||
59 0x103191
|
||||
60 0x103192
|
||||
61 0x103192
|
||||
62 0x103192
|
||||
0 0x103191 >;
|
||||
};
|
||||
|
||||
sai3: sai@40032000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
i2c0: i2c@40066000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
adc0: adc@4003B000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
@ -45,11 +45,16 @@
|
||||
|
||||
fec1: ethernet@400D1000 {
|
||||
status = "okay";
|
||||
iomux_config = < 54 0x1 55 0x1
|
||||
56 0x1 57 0x1
|
||||
58 0x1 59 0x1
|
||||
60 0x1 61 0x1
|
||||
62 0x1 0 0x2 >;
|
||||
iomux_config = < 54 0x103192
|
||||
55 0x103193
|
||||
56 0x103191
|
||||
57 0x103191
|
||||
58 0x103191
|
||||
59 0x103191
|
||||
60 0x103192
|
||||
61 0x103192
|
||||
62 0x103192
|
||||
0 0x203191 >;
|
||||
};
|
||||
|
||||
esai: esai@40062000 {
|
||||
|
@ -45,11 +45,16 @@
|
||||
|
||||
fec1: ethernet@400D1000 {
|
||||
status = "okay";
|
||||
iomux_config = < 54 0x1 55 0x1
|
||||
56 0x1 57 0x1
|
||||
58 0x1 59 0x1
|
||||
60 0x1 61 0x1
|
||||
62 0x1 0 0x2 >;
|
||||
iomux_config = < 54 0x103192
|
||||
55 0x103193
|
||||
56 0x103191
|
||||
57 0x103191
|
||||
58 0x103191
|
||||
59 0x103191
|
||||
60 0x103192
|
||||
61 0x103192
|
||||
62 0x103192
|
||||
0 0x203191 >;
|
||||
};
|
||||
|
||||
edma1: edma@40098000 {
|
||||
|
@ -205,9 +205,12 @@
|
||||
clock-frequency = <50000000>;
|
||||
status = "disabled";
|
||||
clock_names = "esdhc1";
|
||||
iomux_config = < 14 0x5 15 0x5
|
||||
16 0x5 17 0x5
|
||||
18 0x5 19 0x5 >;
|
||||
iomux_config = < 14 0x500060
|
||||
15 0x500060
|
||||
16 0x500060
|
||||
17 0x500060
|
||||
18 0x500060
|
||||
19 0x500060 >;
|
||||
};
|
||||
|
||||
serial0: serial@40027000 {
|
||||
@ -237,6 +240,8 @@
|
||||
< 0x40050800 0x100 >; /* phy */
|
||||
interrupts = < 107 >;
|
||||
interrupt-parent = <&GIC>;
|
||||
iomux_config = < 134 0x0001be
|
||||
7 0x200060 >;
|
||||
};
|
||||
|
||||
usb@400b4000 {
|
||||
@ -246,6 +251,8 @@
|
||||
< 0x40050C00 0x100 >; /* phy */
|
||||
interrupts = < 108 >;
|
||||
interrupt-parent = <&GIC>;
|
||||
iomux_config = < 134 0x0001be
|
||||
7 0x200060 >;
|
||||
};
|
||||
|
||||
fec0: ethernet@400D0000 {
|
||||
@ -257,11 +264,15 @@
|
||||
phy-disable-preamble;
|
||||
status = "disabled";
|
||||
clock_names = "enet";
|
||||
iomux_config = < 45 0x1 46 0x1
|
||||
47 0x1 48 0x1
|
||||
49 0x1 50 0x1
|
||||
51 0x1 52 0x1
|
||||
53 0x1 >;
|
||||
iomux_config = < 45 0x100061
|
||||
46 0x100061
|
||||
47 0x100061
|
||||
48 0x100060
|
||||
49 0x100060
|
||||
50 0x100060
|
||||
51 0x100060
|
||||
52 0x100060
|
||||
53 0x100060 >;
|
||||
};
|
||||
|
||||
fec1: ethernet@400D1000 {
|
||||
@ -273,11 +284,15 @@
|
||||
phy-disable-preamble;
|
||||
status = "disabled";
|
||||
clock_names = "enet";
|
||||
iomux_config = < 54 0x1 55 0x1
|
||||
56 0x1 57 0x1
|
||||
58 0x1 59 0x1
|
||||
60 0x1 61 0x1
|
||||
62 0x1 >;
|
||||
iomux_config = < 54 0x103192
|
||||
55 0x103193
|
||||
56 0x103191
|
||||
57 0x103191
|
||||
58 0x103191
|
||||
59 0x103191
|
||||
60 0x103192
|
||||
61 0x103192
|
||||
62 0x103192 >;
|
||||
};
|
||||
|
||||
sai0: sai@4002F000 {
|
||||
@ -315,10 +330,10 @@
|
||||
edma-src-transmit = < 9 >;
|
||||
edma-mux-group = < 1 >;
|
||||
clock_names = "sai3", "cko1";
|
||||
iomux_config = < 16 0x2
|
||||
19 0x2
|
||||
21 0x2
|
||||
40 0x4 >; /* CKO1 */
|
||||
iomux_config = < 16 0x200060
|
||||
19 0x200060
|
||||
21 0x200060
|
||||
40 0x400061 >; /* CKO1 */
|
||||
};
|
||||
|
||||
esai: esai@40062000 {
|
||||
@ -328,11 +343,16 @@
|
||||
interrupt-parent = <&GIC>;
|
||||
status = "disabled";
|
||||
clock_names = "esai";
|
||||
iomux_config = < 45 0x4 46 0x4
|
||||
47 0x4 48 0x4
|
||||
49 0x4 50 0x4
|
||||
51 0x4 52 0x4
|
||||
78 0x3 40 0x4>;
|
||||
iomux_config = < 45 0x400061
|
||||
46 0x400061
|
||||
47 0x400061
|
||||
48 0x400060
|
||||
49 0x400060
|
||||
50 0x400060
|
||||
51 0x400060
|
||||
52 0x400060
|
||||
78 0x3038df
|
||||
40 0x400061 >;
|
||||
};
|
||||
|
||||
spi0: spi@4002C000 {
|
||||
@ -341,9 +361,11 @@
|
||||
interrupts = < 99 >;
|
||||
interrupt-parent = <&GIC>;
|
||||
status = "disabled";
|
||||
iomux_config = < 40 0x1 41 0x1
|
||||
42 0x1 43 0x1
|
||||
44 0x1 >;
|
||||
iomux_config = < 40 0x100061
|
||||
41 0x100061
|
||||
42 0x100060
|
||||
43 0x100060
|
||||
44 0x100061 >;
|
||||
};
|
||||
|
||||
spi1: spi@4002D000 {
|
||||
@ -370,6 +392,43 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c0: i2c@40066000 {
|
||||
compatible = "fsl,mvf600-i2c";
|
||||
reg = <0x40066000 0x1000>;
|
||||
interrupts = < 103 >;
|
||||
interrupt-parent = <&GIC>;
|
||||
status = "disabled";
|
||||
clock_names = "ipg";
|
||||
iomux_config = < 36 0x2034d3
|
||||
37 0x2034d3
|
||||
207 0x1
|
||||
208 0x1 >;
|
||||
};
|
||||
|
||||
i2c1: i2c@40067000 {
|
||||
compatible = "fsl,mvf600-i2c";
|
||||
reg = <0x40067000 0x1000>;
|
||||
interrupts = < 104 >;
|
||||
interrupt-parent = <&GIC>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c2: i2c@400E6000 {
|
||||
compatible = "fsl,mvf600-i2c";
|
||||
reg = <0x400E6000 0x1000>;
|
||||
interrupts = < 105 >;
|
||||
interrupt-parent = <&GIC>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c3: i2c@400E7000 {
|
||||
compatible = "fsl,mvf600-i2c";
|
||||
reg = <0x400E7000 0x1000>;
|
||||
interrupts = < 106 >;
|
||||
interrupt-parent = <&GIC>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
adc0: adc@4003B000 {
|
||||
compatible = "fsl,mvf600-adc";
|
||||
reg = <0x4003B000 0x1000>;
|
||||
@ -399,21 +458,35 @@
|
||||
interrupt-parent = <&GIC>;
|
||||
status = "disabled";
|
||||
clock_names = "dcu0";
|
||||
iomux_config = < 105 0x1 106 0x1
|
||||
107 0x1 108 0x1
|
||||
109 0x1 110 0x1
|
||||
111 0x1 112 0x1
|
||||
113 0x1 114 0x1
|
||||
115 0x1 116 0x1
|
||||
117 0x1 118 0x1
|
||||
119 0x1 120 0x1
|
||||
121 0x1 122 0x1
|
||||
123 0x1 124 0x1
|
||||
125 0x1 126 0x1
|
||||
127 0x1 128 0x1
|
||||
129 0x1 130 0x1
|
||||
131 0x1 132 0x1
|
||||
133 0x1 >;
|
||||
iomux_config = < 105 0x100044
|
||||
106 0x100044
|
||||
107 0x100060
|
||||
108 0x100060
|
||||
109 0x100060
|
||||
110 0x100060
|
||||
111 0x100060
|
||||
112 0x100060
|
||||
113 0x100060
|
||||
114 0x100060
|
||||
115 0x100060
|
||||
116 0x100060
|
||||
117 0x100060
|
||||
118 0x100060
|
||||
119 0x100060
|
||||
120 0x100060
|
||||
121 0x100060
|
||||
122 0x100060
|
||||
123 0x100060
|
||||
124 0x100060
|
||||
125 0x100060
|
||||
126 0x100060
|
||||
127 0x100060
|
||||
128 0x100060
|
||||
129 0x100060
|
||||
130 0x100060
|
||||
131 0x100060
|
||||
132 0x100060
|
||||
133 0x100060 >;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user