socsvn commit: r239956 - in soc2012/aleek/beaglexm-armv6/sys:
arm/conf arm/ti arm/ti/am37x arm/ti/usb boot/fdt/dts
aleek at FreeBSD.org
aleek at FreeBSD.org
Tue Jul 31 15:47:53 UTC 2012
Author: aleek
Date: Tue Jul 31 15:47:50 2012
New Revision: 239956
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=239956
Log:
cleanup of ti_gpio and ti_ehci driver. Added i2c to the board
Modified:
soc2012/aleek/beaglexm-armv6/sys/arm/conf/BEAGLEBOARD-XM
soc2012/aleek/beaglexm-armv6/sys/arm/ti/am37x/am37x_prcm.c
soc2012/aleek/beaglexm-armv6/sys/arm/ti/am37x/am37x_scm_padconf.c
soc2012/aleek/beaglexm-armv6/sys/arm/ti/ti_gpio.c
soc2012/aleek/beaglexm-armv6/sys/arm/ti/ti_i2c.c
soc2012/aleek/beaglexm-armv6/sys/arm/ti/ti_machdep.c
soc2012/aleek/beaglexm-armv6/sys/arm/ti/usb/omap_ehci.c
soc2012/aleek/beaglexm-armv6/sys/boot/fdt/dts/beagleboardxm.dts
Modified: soc2012/aleek/beaglexm-armv6/sys/arm/conf/BEAGLEBOARD-XM
==============================================================================
--- soc2012/aleek/beaglexm-armv6/sys/arm/conf/BEAGLEBOARD-XM Tue Jul 31 13:11:20 2012 (r239955)
+++ soc2012/aleek/beaglexm-armv6/sys/arm/conf/BEAGLEBOARD-XM Tue Jul 31 15:47:50 2012 (r239956)
@@ -48,19 +48,19 @@
options PREEMPTION
# Debugging
-#makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols
+makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols
#makeoptions WERROR="-Werror"
#makeoptions WERROR=""
options BREAK_TO_DEBUGGER
-#options VERBOSE_SYSINIT #Enable verbose sysinit messages
+#options VERBOSE_SYSINIT #Enable verbose sysinit messages
options KDB
options DDB #Enable the kernel debugger
-options INVARIANTS #Enable calls of extra sanity checking
-options INVARIANT_SUPPORT #Extra sanity checks of internal structures, required by INVARIANTS
-#options WITNESS #Enable checks to detect deadlocks and cycles
-#options WITNESS_SKIPSPIN #Don't run witness on spinlocks for speed
-options DIAGNOSTIC
-options DEBUG
+#options INVARIANTS #Enable calls of extra sanity checking
+#options INVARIANT_SUPPORT #Extra sanity checks of internal structures, required by INVARIANTS
+#options WITNESS #Enable checks to detect deadlocks and cycles
+#options WITNESS_SKIPSPIN #Don't run witness on spinlocks for speed
+#options DIAGNOSTIC
+#options DEBUG
# NFS support
@@ -94,9 +94,9 @@
device random # Entropy device
# I2C support
-#device iicbus
-#device iic
-#device ti_i2c
+device iicbus
+device iic
+device ti_i2c
#device am37x_pmic # AM335x Power Management IC (TPC65217)
# GPIO
@@ -115,14 +115,13 @@
# Ethernet
device loop
-#device ether
-#device mii
-#device smcphy
+device ether
+device mii
+device smcphy
# USB ethernet support, requires miibus
-#device miibus
-#device cpsw
-#device axe # ASIX Electronics USB Ethernet
+device miibus
+device smsc
# Flattened Device Tree
options FDT
Modified: soc2012/aleek/beaglexm-armv6/sys/arm/ti/am37x/am37x_prcm.c
==============================================================================
--- soc2012/aleek/beaglexm-armv6/sys/arm/ti/am37x/am37x_prcm.c Tue Jul 31 13:11:20 2012 (r239955)
+++ soc2012/aleek/beaglexm-armv6/sys/arm/ti/am37x/am37x_prcm.c Tue Jul 31 15:47:50 2012 (r239956)
@@ -312,13 +312,12 @@
OMAP3_GENERIC_CLOCK_DEV(GPIO4_CLK),
OMAP3_GENERIC_CLOCK_DEV(GPIO5_CLK),
OMAP3_GENERIC_CLOCK_DEV(GPIO6_CLK),
-#if 0
+
/* I2C */
OMAP3_GENERIC_CLOCK_DEV(I2C1_CLK),
OMAP3_GENERIC_CLOCK_DEV(I2C2_CLK),
OMAP3_GENERIC_CLOCK_DEV(I2C3_CLK),
-#endif
/* sDMA */
OMAP3_ALWAYSON_CLOCK_DEV(SDMA_CLK),
{ INVALID_CLK_IDENT, NULL, NULL, NULL, NULL }
@@ -409,7 +408,6 @@
OMAP3_GENERIC_CLOCK_DETAILS(USBHSHOST_CLK, -1, USBHOST_CM_OFFSET,
0x00, 0x10, 0x20, 1),
-#if 0
/* GPIO modules */
OMAP3_GENERIC_CLOCK_DETAILS(GPIO1_CLK, -1, WKUP_CM_OFFSET,
0x00, 0x10, 0x20, 3),
@@ -431,7 +429,7 @@
0x00, 0x10, 0x20, 16),
OMAP3_GENERIC_CLOCK_DETAILS(I2C3_CLK, -1, CORE_CM_OFFSET,
0x00, 0x10, 0x20, 17),
-#endif
+
{ INVALID_CLK_IDENT, 0, 0, 0, 0 },
};
Modified: soc2012/aleek/beaglexm-armv6/sys/arm/ti/am37x/am37x_scm_padconf.c
==============================================================================
--- soc2012/aleek/beaglexm-armv6/sys/arm/ti/am37x/am37x_scm_padconf.c Tue Jul 31 13:11:20 2012 (r239955)
+++ soc2012/aleek/beaglexm-armv6/sys/arm/ti/am37x/am37x_scm_padconf.c Tue Jul 31 15:47:50 2012 (r239956)
@@ -193,14 +193,19 @@
_PIN(0x01b8, "v26", 191, 4, "hsusb0_data7", NULL, NULL, NULL, "gpio_191", NULL, NULL, "safe_mode"),
_PIN(0x01a6, "r28", 122, 4, "hsusb0_dir", NULL, NULL, NULL, "gpio_122", NULL, NULL, "safe_mode"),
_PIN(0x01a8, "t26", 124, 4, "hsusb0_nxt", NULL, NULL, NULL, "gpio_124", NULL, NULL, "safe_mode"),
- _PIN(0x01a4, "t25", 121, 4, "hsusb0_stp", NULL, NULL, NULL, "gpio_121", NULL, NULL, "safe_mode"),
- _PIN(0x01be, "af15", 168, 4, "i2c2_scl", NULL, NULL, NULL, "gpio_168", NULL, NULL, "safe_mode"),
- _PIN(0x01c0, "ae15", 183, 4, "i2c2_sda", NULL, NULL, NULL, "gpio_183", NULL, NULL, "safe_mode"),
- _PIN(0x01c2, "af14", 184, 4, "i2c3_scl", NULL, NULL, NULL, "gpio_184", NULL, NULL, "safe_mode"),
- _PIN(0x01c4, "ag14", 185, 4, "i2c3_sda", NULL, NULL, NULL, "gpio_185", NULL, NULL, "safe_mode"),
- _PIN(0x0a00, "ad26", 0, 0, "i2c4_scl", "sys_nvmode1", NULL, NULL, NULL, NULL, NULL, "safe_mode"),
- _PIN(0x0a02, "ae26", 0, 0, "i2c4_sda", "sys_nvmode2", NULL, NULL, NULL, NULL, NULL, "safe_mode"),
- _PIN(0x0a24, "aa11", 11, 4, "jtag_emu0", NULL, NULL, NULL, "gpio_11", NULL, NULL, "safe_mode"),
+
+ /* yes, this beautiful tabbing was because I am a little bit pedantic :D aleek */
+ _PIN(0x01a4, "t25", 121, 4, "hsusb0_stp", NULL, NULL, NULL, "gpio_121", NULL, NULL, "safe_mode"),
+ _PIN(0x01ba, "ic11", 191, 4, "i2c1_scl", NULL, NULL, NULL, NULL, NULL, NULL, NULL ),
+ _PIN(0x01bc, "ic12", 191, 4, "i2c1_sda", NULL, NULL, NULL, NULL, NULL, NULL, NULL ),
+ _PIN(0x01be, "af15", 168, 4, "i2c2_scl", NULL, NULL, NULL, "gpio_168", NULL, NULL, "safe_mode"),
+ _PIN(0x01c0, "ae15", 183, 4, "i2c2_sda", NULL, NULL, NULL, "gpio_183", NULL, NULL, "safe_mode"),
+ _PIN(0x01c2, "af14", 184, 4, "i2c3_scl", NULL, NULL, NULL, "gpio_184", NULL, NULL, "safe_mode"),
+ _PIN(0x01c4, "ag14", 185, 4, "i2c3_sda", NULL, NULL, NULL, "gpio_185", NULL, NULL, "safe_mode"),
+ _PIN(0x0a00, "ad26", 0, 0, "i2c4_scl", "sys_nvmode1", NULL, NULL, NULL, NULL, NULL, "safe_mode"),
+ _PIN(0x0a02, "ae26", 0, 0, "i2c4_sda", "sys_nvmode2", NULL, NULL, NULL, NULL, NULL, "safe_mode"),
+ _PIN(0x0a24, "aa11", 11, 4, "jtag_emu0", NULL, NULL, NULL, "gpio_11", NULL, NULL, "safe_mode"),
+
_PIN(0x0a26, "aa10", 31, 4, "jtag_emu1", NULL, NULL, NULL, "gpio_31", NULL, NULL, "safe_mode"),
_PIN(0x018c, "y21", 156, 4, "mcbsp1_clkr", "mcspi4_clk", NULL, NULL, "gpio_156", NULL, NULL, "safe_mode"),
_PIN(0x0198, "w21", 162, 4, "mcbsp1_clkx", NULL, "mcbsp3_clkx", NULL, "gpio_162", NULL, NULL, "safe_mode"),
Modified: soc2012/aleek/beaglexm-armv6/sys/arm/ti/ti_gpio.c
==============================================================================
--- soc2012/aleek/beaglexm-armv6/sys/arm/ti/ti_gpio.c Tue Jul 31 13:11:20 2012 (r239955)
+++ soc2012/aleek/beaglexm-armv6/sys/arm/ti/ti_gpio.c Tue Jul 31 15:47:50 2012 (r239956)
@@ -448,10 +448,7 @@
return (EINVAL);
- device_printf( sc->sc_dev, "locking mutex\n" );
- device_printf( sc->sc_dev, "adres mutexa: %p\n", &sc->sc_mtx );
TI_GPIO_LOCK(sc);
- device_printf( sc->sc_dev, "mutex locked!!\n" );
/* Sanity check the pin number is valid */
if ((bank > MAX_GPIO_BANKS) || (sc->sc_mem_res[bank] == NULL)) {
@@ -668,10 +665,8 @@
sc->sc_dev = dev;
- device_printf(dev, "Inicjalizacja mutexa gpio\n");
TI_GPIO_LOCK_INIT(sc);
- device_printf( dev, "Address do softc struct: %p\n", sc );
/* There are up to 6 different GPIO register sets located in different
Modified: soc2012/aleek/beaglexm-armv6/sys/arm/ti/ti_i2c.c
==============================================================================
--- soc2012/aleek/beaglexm-armv6/sys/arm/ti/ti_i2c.c Tue Jul 31 13:11:20 2012 (r239955)
+++ soc2012/aleek/beaglexm-armv6/sys/arm/ti/ti_i2c.c Tue Jul 31 15:47:50 2012 (r239956)
@@ -116,6 +116,10 @@
{ IIC_SLOW, 100000, 3, 53, 55, 0, 0},
{ IIC_FAST, 400000, 3, 8, 10, 0, 0},
{ IIC_FASTEST, 400000, 3, 8, 10, 0, 0}, /* This might be higher */
+#elif defined(SOC_OMAP3) || defined(SOC_TI_AM37X)
+ { IIC_SLOW, 100000, 23, 13, 15, 0, 0},
+ { IIC_FAST, 400000, 9, 5, 7, 0, 0},
+ { IIC_FASTEST, 3400000, 4, 113, 115, 7, 10},
#else
#error "TI I2C driver is not supported on this SoC"
#endif
Modified: soc2012/aleek/beaglexm-armv6/sys/arm/ti/ti_machdep.c
==============================================================================
--- soc2012/aleek/beaglexm-armv6/sys/arm/ti/ti_machdep.c Tue Jul 31 13:11:20 2012 (r239955)
+++ soc2012/aleek/beaglexm-armv6/sys/arm/ti/ti_machdep.c Tue Jul 31 15:47:50 2012 (r239956)
@@ -527,8 +527,8 @@
DOMAIN_CLIENT);
pmap_pa = kernel_l1pt.pv_pa;
- arm_early_puts( "Dumping memory layout!\n" );
- dump_l1pagetable( kernel_l1pt.pv_pa );
+ //arm_early_puts( "Dumping memory layout!\n" );
+ //dump_l1pagetable( kernel_l1pt.pv_pa );
setttb(kernel_l1pt.pv_pa);
cpu_tlb_flushID();
Modified: soc2012/aleek/beaglexm-armv6/sys/arm/ti/usb/omap_ehci.c
==============================================================================
--- soc2012/aleek/beaglexm-armv6/sys/arm/ti/usb/omap_ehci.c Tue Jul 31 13:11:20 2012 (r239955)
+++ soc2012/aleek/beaglexm-armv6/sys/arm/ti/usb/omap_ehci.c Tue Jul 31 15:47:50 2012 (r239956)
@@ -125,7 +125,6 @@
int port_mode[3];
int phy_reset[3];
int reset_gpio_pin[3];
- struct mtx mtx;
};
static device_attach_t omap_ehci_attach;
@@ -350,36 +349,28 @@
int i;
device_printf(isc->sc_dev, "Starting TI EHCI USB Controller\n");
- device_printf( isc->sc_dev, "%s:%d\n", __FUNCTION__, __LINE__ );
/* Enable Clocks for high speed USBHOST */
ti_prcm_clk_enable(USBHSHOST_CLK);
- device_printf( isc->sc_dev, "%s:%d\n", __FUNCTION__, __LINE__ );
/* Hold the PHY in reset while configuring */
for (int i = 0; i < 3; i++) {
if (isc->phy_reset[i]) {
- device_printf( isc->sc_dev, "%s:%d\n", __FUNCTION__, __LINE__ );
/* Configure the GPIO to drive low (hold in reset) */
if ((isc->reset_gpio_pin[i] != -1) && (isc->sc_gpio_dev != NULL)) {
- device_printf( isc->sc_dev, "%s:%d\n", __FUNCTION__, __LINE__ );
GPIO_PIN_SETFLAGS(isc->sc_gpio_dev, isc->reset_gpio_pin[i],
GPIO_PIN_OUTPUT);
- device_printf( isc->sc_dev, "%s:%d\n", __FUNCTION__, __LINE__ );
GPIO_PIN_SET(isc->sc_gpio_dev, isc->reset_gpio_pin[i],
GPIO_PIN_LOW);
- device_printf( isc->sc_dev, "%s:%d\n", __FUNCTION__, __LINE__ );
reset_performed = 1;
}
}
}
- device_printf( isc->sc_dev, "%s:%d\n", __FUNCTION__, __LINE__ );
/* Hold the PHY in RESET for enough time till DIR is high */
if (reset_performed)
DELAY(10);
- device_printf( isc->sc_dev, "%s:%d\n", __FUNCTION__, __LINE__ );
/* Read the UHH revision */
isc->ehci_rev = omap_uhh_read_4(isc, OMAP_USBHOST_UHH_REVISION);
@@ -788,13 +779,6 @@
int len, tuple_size;
int i;
- memset( &isc->mtx, 0, sizeof( struct mtx) );
-
- device_printf( dev, "%s:%d\n", __FUNCTION__, __LINE__ );
-
- mtx_init(&isc->mtx, "habababa", "ti_ehci_testowy", MTX_DEF);
- device_printf( dev, "%s:%d\n", __FUNCTION__, __LINE__ );
-
/* initialise some bus fields */
sc->sc_bus.parent = dev;
sc->sc_bus.devices = sc->sc_devices;
@@ -803,17 +787,11 @@
/* save the device */
isc->sc_dev = dev;
- device_printf( dev, "%s:%d\n", __FUNCTION__, __LINE__ );
/* get all DMA memory */
if (usb_bus_mem_alloc_all(&sc->sc_bus, USB_GET_DMA_TAG(dev),
&ehci_iterate_hw_softc)) {
return (ENOMEM);
}
- device_printf( dev, "%s:%d\n", __FUNCTION__, __LINE__ );
- mtx_lock( &isc->mtx );
- device_printf( dev, "%s:%d\n", __FUNCTION__, __LINE__ );
- mtx_unlock( &isc->mtx );
- device_printf( dev, "%s:%d\n", __FUNCTION__, __LINE__ );
/* When the EHCI driver is added to the tree it is expected that 3
* memory resources and 1 interrupt resource is assigned. The memory
* resources should be:
@@ -824,7 +802,6 @@
* The interrupt resource is just the single interupt for the controller.
*/
- device_printf( dev, "%s:%d\n", __FUNCTION__, __LINE__ );
/* Allocate resource for the EHCI register set */
rid = 0;
sc->sc_io_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, RF_ACTIVE);
@@ -832,7 +809,6 @@
device_printf(dev, "Error: Could not map EHCI memory\n");
goto error;
}
- device_printf( dev, "%s:%d\n", __FUNCTION__, __LINE__ );
/* Request an interrupt resource */
rid = 0;
sc->sc_irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid, RF_ACTIVE);
@@ -840,7 +816,6 @@
device_printf(dev, "Error: could not allocate irq\n");
goto error;
}
- device_printf( dev, "%s:%d\n", __FUNCTION__, __LINE__ );
/* Allocate resource for the UHH register set */
rid = 1;
@@ -849,7 +824,6 @@
device_printf(dev, "Error: Could not map UHH memory\n");
goto error;
}
- device_printf( dev, "%s:%d\n", __FUNCTION__, __LINE__ );
/* Allocate resource for the TLL register set */
rid = 2;
isc->tll_mem_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, RF_ACTIVE);
@@ -857,7 +831,6 @@
device_printf(dev, "Error: Could not map TLL memory\n");
goto error;
}
- device_printf( dev, "%s:%d\n", __FUNCTION__, __LINE__ );
/* Add this device as a child of the USBus device */
sc->sc_bus.bdev = device_add_child(dev, "usbus", -1);
@@ -865,7 +838,6 @@
device_printf(dev, "Error: could not add USB device\n");
goto error;
}
- device_printf( dev, "%s:%d\n", __FUNCTION__, __LINE__ );
device_set_ivars(sc->sc_bus.bdev, &sc->sc_bus);
device_set_desc(sc->sc_bus.bdev, OMAP_EHCI_HC_DEVSTR);
@@ -889,7 +861,6 @@
isc->reset_gpio_pin[i] = -1;
}
- device_printf( dev, "%s:%d\n", __FUNCTION__, __LINE__ );
tuple_size = sizeof(pcell_t) * 3;
node = ofw_bus_get_node(dev);
@@ -910,7 +881,6 @@
}
}
- device_printf( dev, "%s:%d\n", __FUNCTION__, __LINE__ );
/* Initialise the ECHI registers */
err = omap_ehci_init(isc);
if (err) {
@@ -919,14 +889,12 @@
}
- device_printf( dev, "%s:%d\n", __FUNCTION__, __LINE__ );
/* Set the tag and size of the register set in the EHCI context */
sc->sc_io_hdl = rman_get_bushandle(sc->sc_io_res);
sc->sc_io_tag = rman_get_bustag(sc->sc_io_res);
sc->sc_io_size = rman_get_size(sc->sc_io_res);
- device_printf( dev, "%s:%d\n", __FUNCTION__, __LINE__ );
/* Setup the interrupt */
err = bus_setup_intr(dev, sc->sc_irq_res, INTR_TYPE_BIO | INTR_MPSAFE,
NULL, (driver_intr_t *)ehci_interrupt, sc, &sc->sc_intr_hdl);
@@ -936,11 +904,9 @@
goto error;
}
- device_printf( dev, "%s:%d\n", __FUNCTION__, __LINE__ );
/* Finally we are ready to kick off the ECHI host controller */
err = ehci_init(sc);
- device_printf( dev, "%s:%d\n", __FUNCTION__, __LINE__ );
if (err == 0) {
err = device_probe_and_attach(sc->sc_bus.bdev);
}
Modified: soc2012/aleek/beaglexm-armv6/sys/boot/fdt/dts/beagleboardxm.dts
==============================================================================
--- soc2012/aleek/beaglexm-armv6/sys/boot/fdt/dts/beagleboardxm.dts Tue Jul 31 13:11:20 2012 (r239955)
+++ soc2012/aleek/beaglexm-armv6/sys/boot/fdt/dts/beagleboardxm.dts Tue Jul 31 15:47:50 2012 (r239956)
@@ -94,7 +94,11 @@
"ad25", "gpio_147", "output",
"ae7", "hsusb2_clk", "output",
- "r8", "gpio_56", "output";
+ "r8", "gpio_56", "output",
+
+ /* i2c */
+ "ic11", "i2c1_scl", "output",
+ "ic12", "i2c1_sda", "output";
};
@@ -173,7 +177,7 @@
interrupts = < 12 13 14 15 >;
interrupt-parent = <&AINTC>;
};
-/*
+
mmchs at 4809c000 {
compatible = "ti,mmchs";
reg =<0x4809c000 0x1000 >;
@@ -181,20 +185,20 @@
interrupt-parent = <&AINTC>;
mmchs-device-id = <1>;
};
-*/
- i2c0: i2c at 48070000 {
+
+ i2c1: i2c at 48070000 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "ti,i2c";
reg =< 0x48070000 0x1000 >;
interrupts = <56>;
interrupt-parent = <&AINTC>;
- i2c-device-id = <0>;
- pmic at 24 {
+ i2c-device-id = <1>;
+ /*pmic at 24 {
compatible = "ti,am37x-pmic";
reg = <0x24>;
- };
+ };*/
};
ehci at 48064800 {
@@ -211,7 +215,7 @@
* gpio_pin - GPIO pin that is used to perform reset
*/
phy-config = < 1 0 0
- 1 1 56
+ 1 1 147
0 0 0>;
reg = < 0x48064800 0x400 /* EHCI */
0x48064000 0x400 /* UHH */
More information about the svn-soc-all
mailing list