Index: sys/arm/conf/BEAGLEBONE =================================================================== --- sys/arm/conf/BEAGLEBONE (revision 278739) +++ sys/arm/conf/BEAGLEBONE (working copy) @@ -166,4 +166,12 @@ # Flattened Device Tree options FDT # Configure using FDT/DTB data options FDT_DTB_STATIC -makeoptions FDT_DTS_FILE=beaglebone.dts +makeoptions FDT_DTS_FILE=beaglebone-black.dts + +# Comment following lines for boot console on serial port +device vt + +device ums +device ukbd +device kbdmux + Index: sys/arm/ti/ti_gpio.c =================================================================== --- sys/arm/ti/ti_gpio.c (revision 278739) +++ sys/arm/ti/ti_gpio.c (working copy) @@ -704,7 +704,7 @@ { int pin; struct ti_gpio_softc *sc; - uint32_t flags, reg_oe, rev; + uint32_t flags, reg_oe, reg_clear, reg_set, rev; sc = device_get_softc(dev); @@ -730,12 +730,24 @@ /* Init OE register based on pads configuration. */ reg_oe = 0xffffffff; + reg_clear = 0x0; + reg_set = 0x0; for (pin = 0; pin < PINS_PER_BANK; pin++) { TI_GPIO_GET_FLAGS(dev, PINS_PER_BANK * bank + pin, &flags); - if (flags & GPIO_PIN_OUTPUT) + if (flags & GPIO_PIN_OUTPUT) { reg_oe &= ~(1UL << pin); + if (flags & GPIO_PIN_PULLDOWN) + reg_clear |= (1UL << pin); + if (flags & GPIO_PIN_PULLUP) + reg_set |= (1UL << pin); + } } + ti_gpio_write_4(sc, bank, TI_GPIO_OE, reg_oe); + if (reg_clear) + ti_gpio_write_4(sc, bank, TI_GPIO_CLEARDATAOUT, reg_clear); + if (reg_set) + ti_gpio_write_4(sc, bank, TI_GPIO_SETDATAOUT, reg_set); return (0); } Index: sys/boot/fdt/dts/arm/beaglebone-black.dts =================================================================== --- sys/boot/fdt/dts/arm/beaglebone-black.dts (revision 278739) +++ sys/boot/fdt/dts/arm/beaglebone-black.dts (working copy) @@ -110,19 +110,31 @@ "GPMC_BEn1", "gpio1_28", "input_pulldown", "GPMC_CSn0", "gpio1_29", "input_pulldown", "GPMC_CLK", "gpio2_1", "input_pulldown", - "LCD_DATA0", "gpio2_6", "input_pulldown", - "LCD_DATA1", "gpio2_7", "input_pulldown", - "LCD_DATA2", "gpio2_8", "input_pulldown", - "LCD_DATA3", "gpio2_9", "input_pulldown", - "LCD_DATA4", "gpio2_10", "input_pulldown", - "LCD_DATA5", "gpio2_11", "input_pulldown", - "LCD_DATA6", "gpio2_12", "input_pulldown", - "LCD_DATA7", "gpio2_13", "input_pulldown", - "LCD_VSYNC", "gpio2_22", "input_pulldown", - "LCD_HSYNC", "gpio2_23", "input_pulldown", - "LCD_PCLK", "gpio2_24", "input_pulldown", - "LCD_AC_BIAS_EN", "gpio2_25", "input_pulldown", - "MCASP0_FSR", "gpio3_19", "input_pulldown", + + /* HDMI */ + "LCD_DATA0", "lcd_data0", "output", + "LCD_DATA1", "lcd_data1", "output", + "LCD_DATA2", "lcd_data2", "output", + "LCD_DATA3", "lcd_data3", "output", + "LCD_DATA4", "lcd_data4", "output", + "LCD_DATA5", "lcd_data5", "output", + "LCD_DATA6", "lcd_data6", "output", + "LCD_DATA7", "lcd_data7", "output", + "LCD_DATA8", "lcd_data8", "output", + "LCD_DATA9", "lcd_data9", "output", + "LCD_DATA10", "lcd_data10", "output", + "LCD_DATA11", "lcd_data11", "output", + "LCD_DATA12", "lcd_data12", "output", + "LCD_DATA13", "lcd_data13", "output", + "LCD_DATA14", "lcd_data14", "output", + "LCD_DATA15", "lcd_data15", "output", + "LCD_VSYNC", "lcd_vsync", "output", + "LCD_HSYNC", "lcd_hsync", "output", + "LCD_PCLK", "lcd_pclk", "output", + "LCD_AC_BIAS_EN", "lcd_ac_bias_en", "output", + "XDMA_EVENT_INTR0", "clkout1", "output", + + "MCASP0_FSR", "gpio3_19", "output_pullup", "MCASP0_AHCLKX", "gpio3_21", "input_pulldown", /* TIMERs */ "GPMC_ADVn_ALE", "timer4", "output", @@ -133,12 +145,41 @@ "USB0_DRVVBUS", "USB0_DRVVBUS", "output", "USB1_DRVVBUS", "USB1_DRVVBUS", "output", /* PWM */ - "GPMC_A2", "ehrpwm1A", "output", + "GPMC_A2", "gpio1_18", "output_pullup", "GPMC_A3", "ehrpwm1B", "output", "GPMC_AD8", "ehrpwm2A", "output", "GPMC_AD9", "ehrpwm2B", "output"; }; + lcd@4830e000 { + + ac_bias = <255>; + ac_bias_intrpt = <0>; + dma_burst_sz = <16>; + sync_edge = <0>; + sync_ctrl = <1>; + bpp = <16>; + fdd = <128>; + raster_order = <0>; /* compatibity */ + + panel_width = <480>; + panel_height = <272>; + panel_hfp = <8>; + panel_hbp = <47>; + panel_hsw = <41>; + panel_vfp = <3>; + panel_vbp = <2>; + panel_vsw = <10>; + panel_pxl_clk = <9200000>; + panel_invert_pxl_clk = <1>; + panel_type = <1>; /* Active or passive, compatibility */ + panel_max_bpp = <32>; /* compatibility */ + panel_min_bpp = <32>; /* compatibility */ + panel_shade = <1>; /* compatibility */ + invert_line_clock = <1>; + invert_frm_clock = <1>; + }; + mmchs1@481D8000 { bus-width = <8>; status = "okay";