I'm using a Beaglebone Green and trying to interface with both an LCD7 (4DCAPE-70T) <http://cdn.sparkfun.com/datasheets/Dev/Beagle/4DCAPE-70T_datasheet_R_1_1.pdf> which is based off of the BB-BONE-LCD7-01:00A3 revision and the CAN Cape ( TT3201-001:05 <http://www.towertech.it/en/products/hardware/tt3201-can-cape/manual/> revision).
The LCD cape comes with an expansion header (all the pins that aren't used by the LCD cape are ported to the header -- look at the data sheet linked above to get the idea). Both capes work perfectly individually, but when I try to use them together, I get the following output. root@beaglebone:~# dmesg | grep cape [ 0.000000] Kernel command line: console=ttyO0,115200n8 root=UUID=5df5404c-a947-481b-8730-2a4bb771d33e ro rootfstype=ext4 rootwait coherent_pool=1M quiet cape_universal=enable [ 3.925280] bone_capemgr bone_capemgr: Baseboard: 'A335BNLT,BBG1,BBG116044309' [ 3.925315] bone_capemgr bone_capemgr: compatible-baseboard=ti,beaglebone-black - #slots=4 [ 3.967132] bone_capemgr bone_capemgr: slot #0: '4D 7.0 LCD CAPE- 4DCAPE-70T ,00A3,4D SYSTEMS ,BB-BONE-LCD7-01' [ 4.023037] bone_capemgr bone_capemgr: slot #1: No cape found [ 4.082948] bone_capemgr bone_capemgr: slot #2: No cape found [ 4.112954] bone_capemgr bone_capemgr: slot #3: 'TT3201 CAN Bus Cape,05,TowerTech,TT3201-001' [ 4.113486] bone_capemgr bone_capemgr: initialized OK. [ 4.130310] bone_capemgr bone_capemgr: slot #3: TT3201-001 conflict P9.27 (#0:BB-BONE-LCD7-01) [ 4.139161] bone_capemgr bone_capemgr: slot #3: Failed verification [ 4.154974] bone_capemgr bone_capemgr: slot #3: TT3201-001 conflict P9.27 (#0:BB-BONE-LCD7-01) [ 4.165624] bone_capemgr bone_capemgr: slot #0: dtbo 'BB-BONE-LCD7-01-00A3.dtbo' loaded; overlay id #0 [ 4.170778] bone_capemgr bone_capemgr: slot #3: Failed verification [ 4.183178] bone_capemgr bone_capemgr: loader: failed to load slot-3 TT3201-001:05 (prio 0) [ 14.366425] bone_capemgr bone_capemgr: part_number 'GPIO-Test', version 'N/A' [ 14.366464] bone_capemgr bone_capemgr: slot #4: override [ 14.366482] bone_capemgr bone_capemgr: Using override eeprom data at slot 4 [ 14.366499] bone_capemgr bone_capemgr: slot #4: 'Override Board Name,00A0,Override Manuf,GPIO-Test' I'm using Debian with the following kernel: root@beaglebone:~# uname -r 4.1.15-ti-rt-r43 I've tried doing the obvious thing by taking the conflict pin (P9_27) entirely out of the LCD .dts file by changing it to P9_11 (which isn't used by either) (then compiled and put the .dtbo in /lib/firmware) but that doesn't work. This is the .dts file for BB-BONE-LCD7-01-00A3 /* * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ /dts-v1/; /plugin/; #include </dt-bindings/board/am335x-bbw-bbb-base.h> #include </dt-bindings/gpio/gpio.h> #include </dt-bindings/pinctrl/am33xx.h> / { compatible = "ti,beaglebone", "ti,beaglebone-black", "ti,beaglebone-green"; /* identification */ part-number = "BB-BONE-LCD7-01"; version = "00A3"; /* state the resources this cape uses */ exclusive-use = /* the pin header uses */ "P8.45", /* lcd: lcd_data0 */ "P8.46", /* lcd: lcd_data1 */ "P8.43", /* lcd: lcd_data2 */ "P8.44", /* lcd: lcd_data3 */ "P8.41", /* lcd: lcd_data4 */ "P8.42", /* lcd: lcd_data5 */ "P8.39", /* lcd: lcd_data6 */ "P8.40", /* lcd: lcd_data7 */ "P8.37", /* lcd: lcd_data8 */ "P8.38", /* lcd: lcd_data9 */ "P8.36", /* lcd: lcd_data10 */ "P8.34", /* lcd: lcd_data11 */ "P8.35", /* lcd: lcd_data12 */ "P8.33", /* lcd: lcd_data13 */ "P8.31", /* lcd: lcd_data14 */ "P8.32", /* lcd: lcd_data15 */ "P8.27", /* lcd: lcd_vsync */ "P8.29", /* lcd: lcd_hsync */ "P8.28", /* lcd: lcd_pclk */ "P8.30", /* lcd: lcd_ac_bias_en */ "P9.11", /* lcd: gpio3_19 DISPEN */ "P9.12", /* led: gpio1_28 LED */ "P9.14", /* pwm: ehrpwm1a PWM_BL */ "P9.15", /* keys: gpio1_16 LEFT */ "P9.23", /* keys: gpio1_17 RIGHT */ "P9.16", /* keys: gpio1_19 UP */ "P9.30", /* keys: gpio3_16 DOWN */ "P9.21", /* keys: gpio0_3 ENTER */ "ehrpwm1a", "gpio0_30", /* DISPEN */ "gpio1_28", /* LED */ "gpio1_16", /* LEFT */ "gpio1_17", /* RIGHT */ "gpio1_19", /* UP */ "gpio3_16", /* DOWN */ "gpio0_3", /* ENTER */ "lcdc", "tscadc"; fragment@0 { target = <&am33xx_pinmux>; __overlay__ { bb_lcd_led_pins: pinmux_bb_lcd_led_pins { pinctrl-single,pins = < BONE_P9_12 (PIN_INPUT | MUX_MODE7) /* gpmc_ben1.gpio1_28, INPUT | PULLDIS | MODE7 */ >; }; bb_lcd_pwm_backlight_pins: pinmux_bb_lcd_pwm_backlight_pins { pinctrl-single,pins = < BONE_P9_14 (PIN_OUTPUT_PULLDOWN | MUX_MODE6) /* gpmc_a2.ehrpwm1a */ >; }; bb_lcd_lcd_pins: pinmux_bb_lcd_lcd_pins { pinctrl-single,pins = < BONE_P9_11 (PIN_OUTPUT_PULLUP | MUX_MODE7) /* mcasp0_fsr.gpio3_19 */ BONE_P8_45 (PIN_OUTPUT | MUX_MODE0) /* lcd_data0.lcd_data0 */ BONE_P8_46 (PIN_OUTPUT | MUX_MODE0) /* lcd_data1.lcd_data1 */ BONE_P8_43 (PIN_OUTPUT | MUX_MODE0) /* lcd_data2.lcd_data2 */ BONE_P8_44 (PIN_OUTPUT | MUX_MODE0) /* lcd_data3.lcd_data3 */ BONE_P8_41 (PIN_OUTPUT | MUX_MODE0) /* lcd_data4.lcd_data4 */ BONE_P8_42 (PIN_OUTPUT | MUX_MODE0) /* lcd_data5.lcd_data5 */ BONE_P8_39 (PIN_OUTPUT | MUX_MODE0) /* lcd_data6.lcd_data6 */ BONE_P8_40 (PIN_OUTPUT | MUX_MODE0) /* lcd_data7.lcd_data7 */ BONE_P8_37 (PIN_OUTPUT | MUX_MODE0) /* lcd_data8.lcd_data8 */ BONE_P8_38 (PIN_OUTPUT | MUX_MODE0) /* lcd_data9.lcd_data9 */ BONE_P8_36 (PIN_OUTPUT | MUX_MODE0) /* lcd_data10.lcd_data10 */ BONE_P8_34 (PIN_OUTPUT | MUX_MODE0) /* lcd_data11.lcd_data11 */ BONE_P8_35 (PIN_OUTPUT | MUX_MODE0) /* lcd_data12.lcd_data12 */ BONE_P8_33 (PIN_OUTPUT | MUX_MODE0) /* lcd_data13.lcd_data13 */ BONE_P8_31 (PIN_OUTPUT | MUX_MODE0) /* lcd_data14.lcd_data14 */ BONE_P8_32 (PIN_OUTPUT | MUX_MODE0) /* lcd_data15.lcd_data15 */ BONE_P8_27 (PIN_OUTPUT | MUX_MODE0) /* lcd_vsync.lcd_vsync */ BONE_P8_29 (PIN_OUTPUT | MUX_MODE0) /* lcd_hsync.lcd_hsync */ BONE_P8_28 (PIN_OUTPUT | MUX_MODE0) /* lcd_pclk.lcd_pclk */ BONE_P8_30 (PIN_OUTPUT | MUX_MODE0) /* lcd_ac_bias_en.lcd_ac_bias_en */ >; }; bb_lcd_keymap_pins: pinmux_bb_lcd_keymap_pins { pinctrl-single,pins = < BONE_P9_15 (PIN_INPUT | MUX_MODE7) /* gpmc_a0.gpio1_16 */ BONE_P9_23 (PIN_INPUT | MUX_MODE7) /* gpmc_a1.gpio1_17 */ BONE_P9_16 (PIN_INPUT | MUX_MODE7) /* gpmc_a3.gpio1_19 */ BONE_P9_30 (PIN_INPUT | MUX_MODE7) /* mcasp0_axr0.gpio3_16 */ BONE_P9_21 (PIN_INPUT | MUX_MODE7) /* spi0_d0.gpio0_3 */ >; }; }; }; fragment@1 { target = <&epwmss1>; __overlay__ { status = "okay"; }; }; fragment@2 { target = <&ehrpwm1>; __overlay__ { pinctrl-names = "default"; pinctrl-0 = <&bb_lcd_pwm_backlight_pins>; status = "okay"; }; }; fragment@3 { target = <&lcdc>; __overlay__ { status = "okay"; }; }; fragment@4 { target = <&tscadc>; __overlay__ { status = "okay"; tsc { ti,wires = <4>; ti,x-plate-resistance = <200>; ti,coordinate-readouts = <5>; ti,wire-config = <0x00 0x11 0x22 0x33>; }; adc { ti,adc-channels = <4 5 6 7>; }; }; }; fragment@5 { target-path="/"; __overlay__ { /* avoid stupid warning */ #address-cells = <1>; #size-cells = <1>; backlight { status = "okay"; compatible = "pwm-backlight"; pwms = <&ehrpwm1 0 500000 0>; brightness-levels = < 0 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 >; default-brightness-level = <100>; }; gpio-leds-cape-lcd { compatible = "gpio-leds"; pinctrl-names = "default"; pinctrl-0 = <&bb_lcd_led_pins>; lcd-led0 { label = "lcd:green:usr0"; gpios = <&gpio1 28 0>; linux,default-trigger = "heartbeat"; default-state = "off"; }; }; gpio_keys { compatible = "gpio-keys"; pinctrl-names = "default"; pinctrl-0 = <&bb_lcd_keymap_pins>; #address-cells = <1>; #size-cells = <0>; button@1 { debounce_interval = <50>; linux,code = <105>; label = "left"; gpios = <&gpio1 16 0x1>; gpio-key,wakeup; autorepeat; }; button@2 { debounce_interval = <50>; linux,code = <106>; label = "right"; gpios = <&gpio1 17 0x1>; gpio-key,wakeup; autorepeat; }; button@3 { debounce_interval = <50>; linux,code = <103>; label = "up"; gpios = <&gpio1 19 0x1>; gpio-key,wakeup; autorepeat; }; button@4 { debounce_interval = <50>; linux,code = <108>; label = "down"; gpios = <&gpio3 16 0x1>; gpio-key,wakeup; autorepeat; }; button@5 { debounce_interval = <50>; linux,code = <28>; label = "enter"; gpios = <&gpio0 3 0x1>; gpio-key,wakeup; }; }; panel { status = "okay"; compatible = "ti,tilcdc,panel"; pinctrl-names = "default"; pinctrl-0 = <&bb_lcd_lcd_pins>; panel-info { ac-bias = <255>; ac-bias-intrpt = <0>; dma-burst-sz = <16>; bpp = <16>; fdd = <0x80>; sync-edge = <0>; sync-ctrl = <1>; raster-order = <0>; fifo-th = <0>; }; display-timings { native-mode = <&timing0>; /* Settings for ThreeFive S9700RTWV35TR / LCD7 cape: */ timing0: 800x480 { clock-frequency = <30000000>; hactive = <800>; vactive = <480>; hfront-porch = <40>; hback-porch = <40>; hsync-len = <48>; vback-porch = <30>; vfront-porch = <13>; vsync-len = <3>; hsync-active = <0>; vsync-active = <0>; de-active = <1>; pixelclk-active = <0>; }; }; }; }; }; }; I also tried modifying the TT3201 CAN cape .dts file to the following (changing the p9-27 to p9-11) /* * Copyright (C) 2013 Tower Technologies * Written by Alessandro Zummo <a.zu...@towertech.it> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ /dts-v1/; /plugin/; / { compatible = "ti,beaglebone", "ti,beaglebone-black"; part-number = "TT3201-001"; version = "01"; /* state the resources this cape uses */ exclusive-use = /* the pin header uses */ "P9.11", /* spi irq: gpio0_30 */ "P9.23", /* spi irq: gpio1_17 */ "P9.31", /* spi: spi1_sclk */ "P9.29", /* spi: spi1_d0 */ "P9.30", /* spi: spi1_d1 */ "P9.28", /* spi: spi1_cs0 */ "P9.42", /* spi: spi1_cs1 */ "P9.26", /* dcan1: dcan1_tx */ "P9.24", /* dcan1: dcan1_rx */ /* the hardware IP uses */ "gpio0_30", "gpio1_17", "spi1", "dcan1"; fragment@0 { target = <&am33xx_pinmux>; __overlay__ { bone_tt3201_dcan1_pins: bone_tt3201_dcan1_pins { pinctrl-single,pins = < 0x180 0x02 /* uart1_rxd.d_can1_tx", OUTPUT | MODE2 */ 0x184 0x32 /* uart1_txd.d_can1_rx", INPUT_PULLUP | MODE2 */ >; }; bone_tt3201_spi1_pins: pinmux_bone_tt3201_spi1_pins { pinctrl-single,pins = < 0x190 0x33 /* mcasp0_aclkx.spi1_sclk, RX_ENABLED | PULLUP | MODE3 */ 0x194 0x33 /* mcasp0_fsx.spi1_d0, RX_ENABLED | PULLUP | MODE3 */ 0x198 0x13 /* mcasp0_axr0.spi1_d1, OUTPUT_PULLUP | MODE3 */ 0x19c 0x13 /* mcasp0_ahclkr.spi1_cs0, OUTPUT_PULLUP | MODE3 */ 0x164 0x12 /* ecap0_in_pwm0_out.spi1_cs1, OUTPUT_PULLUP | MODE2 */ >; }; bone_tt3201_mcp2515_0_pins: pinmux_bone_tt3201_0_mcp2515_pins { pinctrl-single,pins = < 0x1a4 0x37 /* mcasp0_fsr.gpio3_19, RX_ENABLED | PULLUP | MODE7 */ >; }; bone_tt3201_mcp2515_1_pins: pinmux_bone_tt3201_1_mcp2515_pins { pinctrl-single,pins = < 0x044 0x37 /* gpmc_a1.gpio1_17, RX_ENABLED | PULLUP | MODE7 */ >; }; }; }; fragment@1 { target = <&spi1>; __overlay__ { #address-cells = <1>; #size-cells = <0>; status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&bone_tt3201_spi1_pins>; cs-gpios = <&gpio4 17 0>, <&gpio1 7 0>; mcp2515@0 { compatible = "microchip,mcp2515"; reg = <1>; /* cs1 */ mode = <0>; spi-max-frequency = <10000000>; pinctrl-names = "default"; pinctrl-0 = <&bone_tt3201_mcp2515_1_pins>; interrupt-parent = <&gpio2>; interrupts = <17>; mcp251x,oscillator-frequency = <16000000>; mcp251x,irq-gpios = <&gpio2 17 0>; mcp251x,stay-awake = <1>; }; mcp2515@1 { compatible = "microchip,mcp2515"; reg = <0>; /* cs0 */ mode = <0>; spi-max-frequency = <10000000>; pinctrl-names = "default"; pinctrl-0 = <&bone_tt3201_mcp2515_0_pins>; interrupt-parent = <&gpio1>; interrupts = <30>; mcp251x,oscillator-frequency = <16000000>; mcp251x,irq-gpios = <&gpio1 30 0>; mcp251x,stay-awake = <1>; mcp251x,enable-clkout = <1>; }; }; }; fragment@2 { target = <&dcan1>; __overlay__ { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&bone_tt3201_dcan1_pins>; }; }; }; so currently, P9-27 isn't in either of the .dtbo files, in both I've changed it to P9_11 but I'm still getting the same conflict error for P9-27. >From what I understand, the conflict occurs before either of the overlay files are loaded so that might be running the error. I figured that I would have to modify the EEPROM file of the LCD cape to disable the P9-27 pin but I'm unable to access the EEPROM. In fact, it doesn't even exist in /sys/bus/i2c/drivers/at24/2-0054 and when I try to create an EEPROM file it says "permission denied". This is odd because I was able to view/modify it a few days ago. I have shorted the WP pins on the LCD Cape already. root@beaglebone:~# cd /sys/bus/i2c/drivers/at24/ root@beaglebone:/sys/bus/i2c/drivers/at24# ls 0-0050 2-0054 2-0055 2-0056 2-0057 bind uevent unbind root@beaglebone:/sys/bus/i2c/drivers/at24# cd 2-0054 root@beaglebone:/sys/bus/i2c/drivers/at24/2-0054# ls at24-1 driver modalias name of_node power subsystem uevent How do I solve this conflict error? -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to beagleboard+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/beagleboard/80dda54f-46e1-4982-882e-754f1667bbb0%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.