This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Custom Board :: Changing 12C0 to I2C1 for EEPROM and PMIC

Other Parts Discussed in Thread: TPS65910

Hello, 

          We have a custom board in which the EEPROM and PMIC is connected to I2C1 unlike in Evaluation Board it is connected to I2C0. 

So when I try to boot  U-boot and linux the boot is stuck with the blow logs.

U-Boot SPL 2014.07-00107-gd28f2b9-dirty (Apr 09 2015 - 18:30:38)
Could not probe the EEPROM; something fundamentally wrong on the I2C bus.
Could not get board ID.
Could not probe the EEPROM; something fundamentally wrong on the I2C bus.
Could not get board ID.
Unknown board, cannot configure pinmux.### ERROR ### Please RESET the board ###

Please let me know if there a safe way to switch from I2c0 to I2c1. where in configuration I should change this. ??

Regards,

Sanju.

  • Hi Sanju,

    You have a big problem. While it's comparatively easy to change the I2C of the EEPROM, you will have huge difficulties to make the PMIC run properly. AM335X PMIC must be connected to I2C0. This is how the Linux SDK is written too. You will need to go practically through the whole Linux kernel to change this. I'm afraid that noone can help you there.

  • Hello Biser,
    Thanks for the scary reply :)
    I changed the PMIC configuration to I2C1. Now I am able to progress a bit more on Linux bootup. I would like to share you the logs and expecting any clues and hits to proceed further. :)

    U-Boot 2014.07-00107-gd28f2b9-dirty (Apr 10 2015 - 15:43:47)

    I2C: ready
    DRAM: 256 MiB
    NAND: 256 MiB
    MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
    reading uboot.env

    ** Unable to read "uboot.env" from mmc0:1 **
    Using default environment

    Net: <ethaddr> not set. Validating first E-fuse MAC
    Phy not found
    cpsw, usb_ether
    Hit any key to stop autoboot: 0
    switch to partitions #0, OK
    mmc0 is current device
    SD/MMC found on device 0
    reading uEnv.txt
    ** Unable to read file uEnv.txt **
    4294840 bytes read in 614 ms (6.7 MiB/s)
    36341 bytes read in 53 ms (668.9 KiB/s)
    Kernel image @ 0x82000000 [ 0x000000 - 0x4188b8 ]
    ## Flattened Device Tree blob at 88000000
    Booting using the fdt blob at 0x88000000
    Loading Device Tree to 8e713000, end 8e71edf4 ... OK

    Starting kernel ...

    [ 0.000000] Booting Linux on physical CPU 0x0
    [ 0.000000] Linux version 3.14.26-g2489c02-dirty (root@cyient-Latitude-E5420) (gcc version 4.7.3 20130226 (prerelease) (crosstool-NG linaro5
    [ 0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d
    [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
    [ 0.000000] Machine model: TI AM335x EVM-SK
    [ 0.000000] cma: CMA: reserved 24 MiB at 8c800000
    [ 0.000000] Memory policy: Data cache writeback
    [ 0.000000] CPU: All CPU(s) started in SVC mode.
    [ 0.000000] AM335X ES2.1 (neon )
    [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 64512
    [ 0.000000] Kernel command line: console=ttyO0,115200n8 root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait
    [ 0.000000] PID hash table entries: 1024 (order: 0, 4096 bytes)
    [ 0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
    [ 0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
    [ 0.000000] Memory: 224316K/260096K available (5803K kernel code, 316K rwdata, 2100K rodata, 269K init, 232K bss, 35780K reserved, 0K highm)
    [ 0.000000] Virtual kernel memory layout:
    [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
    [ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
    [ 0.000000] vmalloc : 0xd0800000 - 0xff000000 ( 744 MB)
    [ 0.000000] lowmem : 0xc0000000 - 0xd0000000 ( 256 MB)
    [ 0.000000] pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB)
    [ 0.000000] modules : 0xbf000000 - 0xbfe00000 ( 14 MB)
    [ 0.000000] .text : 0xc0008000 - 0xc07c0054 (7905 kB)
    [ 0.000000] .init : 0xc07c1000 - 0xc08046e4 ( 270 kB)
    [ 0.000000] .data : 0xc0806000 - 0xc08551e0 ( 317 kB)
    [ 0.000000] .bss : 0xc08551e0 - 0xc088f1f8 ( 233 kB)
    [ 0.000000] NR_IRQS:16 nr_irqs:16 16
    [ 0.000000] IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts
    [ 0.000000] Total of 128 interrupts on 1 active controller
    [ 0.000000] OMAP clockevent source: timer2 at 24000000 Hz
    [ 0.000026] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956969942ns
    [ 0.000071] OMAP clocksource: timer1 at 24000000 Hz
    [ 0.000672] Console: colour dummy device 80x30
    [ 0.000736] Calibrating delay loop... 298.59 BogoMIPS (lpj=1492992)
    [ 0.068458] pid_max: default: 32768 minimum: 301
    [ 0.068682] Security Framework initialized
    [ 0.068797] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
    [ 0.068825] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
    [ 0.087053] CPU: Testing write buffer coherency: ok
    [ 0.087781] Setting up static identity map for 0x805b11e0 - 0x805b1238
    [ 0.089979] devtmpfs: initialized
    [ 0.094282] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
    [ 0.112878] omap_hwmod: tptc0 using broken dt data from edma
    [ 0.113095] omap_hwmod: tptc1 using broken dt data from edma
    [ 0.113283] omap_hwmod: tptc2 using broken dt data from edma
    [ 0.119772] omap_hwmod: debugss: _wait_target_disable failed
    [ 0.189830] pinctrl core: initialized pinctrl subsystem
    [ 0.192123] regulator-dummy: no parameters
    [ 0.196983] NET: Registered protocol family 16
    [ 0.201923] DMA: preallocated 256 KiB pool for atomic coherent allocations
    [ 0.208005] cpuidle: using governor ladder
    [ 0.208041] cpuidle: using governor menu
    [ 0.225110] syscon 44e10000.control_module: regmap [mem 0x44e10000-0x44e107fb] registered
    [ 0.228755] platform 49000000.edma: alias fck already exists
    [ 0.228811] platform 49000000.edma: alias fck already exists
    [ 0.228848] platform 49000000.edma: alias fck already exists
    [ 0.231570] OMAP GPIO hardware version 0.1
    [ 0.266489] No ATAGs?
    [ 0.266538] hw-breakpoint: debug architecture 0x4 unsupported.
    [ 0.332565] bio: create slab <bio-0> at 0
    [ 0.372323] edma-dma-engine edma-dma-engine.0: TI EDMA DMA engine driver
    [ 0.374619] vbat: 5000 mV
    [ 0.375567] lis3_reg: no parameters
    [ 0.375805] reg-fixed-voltage fixedregulator.6: could not find pctldev for node /pinmux@44e10800/pinmux_wl12xx_gpio, deferring probe
    [ 0.375859] platform fixedregulator.6: Driver reg-fixed-voltage requests probe deferral
    [ 0.376840] vtt: 1500 mV
    [ 0.384612] vgaarb: loaded
    [ 0.385870] i2c-core: driver [palmas] using legacy suspend method
    [ 0.385897] i2c-core: driver [palmas] using legacy resume method
    [ 0.387620] SCSI subsystem initialized
    [ 0.391357] usbcore: registered new interface driver usbfs
    [ 0.391823] usbcore: registered new interface driver hub
    [ 0.392308] usbcore: registered new device driver usb
    [ 0.394585] omap_i2c 4802a000.i2c: could not find pctldev for node /pinmux@44e10800/pinmux_i2c1_pins, deferring probe
    [ 0.394653] platform 4802a000.i2c: Driver omap_i2c requests probe deferral
    [ 0.395622] pps_core: LinuxPPS API ver. 1 registered
    [ 0.395650] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [ 0.395980] PTP clock support registered
    [ 0.400856] omap-mailbox 480c8000.mailbox: omap mailbox rev 0x400
    [ 0.402913] Advanced Linux Sound Architecture Driver Initialized.
    [ 0.406569] Switched to clocksource timer1
    [ 0.455677] NET: Registered protocol family 2
    [ 0.457799] TCP established hash table entries: 2048 (order: 1, 8192 bytes)
    [ 0.457886] TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
    [ 0.457959] TCP: Hash tables configured (established 2048 bind 2048)
    [ 0.458105] TCP: reno registered
    [ 0.458139] UDP hash table entries: 256 (order: 0, 4096 bytes)
    [ 0.458188] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
    [ 0.458627] NET: Registered protocol family 1
    [ 0.459429] RPC: Registered named UNIX socket transport module.
    [ 0.459460] RPC: Registered udp transport module.
    [ 0.459476] RPC: Registered tcp transport module.
    [ 0.459494] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [ 0.461739] hw perfevents: enabled with ARMv7 Cortex-A8 PMU driver, 5 counters available
    [ 0.468369] futex hash table entries: 256 (order: -1, 3072 bytes)
    [ 0.906487] VFS: Disk quotas dquot_6.5.2
    [ 0.906767] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
    [ 0.907921] NFS: Registering the id_resolver key type
    [ 0.908089] Key type id_resolver registered
    [ 0.908111] Key type id_legacy registered
    [ 0.908200] jffs2: version 2.2. (NAND) (SUMMARY) �© 2001-2006 Red Hat, Inc.
    [ 0.908601] msgmni has been set to 486
    [ 0.912160] NET: Registered protocol family 38
    [ 0.912250] io scheduler noop registered
    [ 0.912271] io scheduler deadline registered
    [ 0.912321] io scheduler cfq registered (default)
    [ 0.916250] pinctrl-single 44e10800.pinmux: 142 pins at pa f9e10800 size 568
    [ 0.924105] backlight.10 supply power not found, using dummy regulator
    [ 0.932667] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
    [ 0.940210] omap_uart 44e09000.serial: no wakeirq for uart0
    [ 0.940554] 44e09000.serial: ttyO0 at MMIO 0x44e09000 (irq = 88, base_baud = 3000000) is a OMAP UART0
    [ 1.615090] console [ttyO0] enabled
    [ 1.622062] omap_rng 48310000.rng: OMAP Random Number Generator ver. 20
    [ 1.630065] [drm] Initialized drm 1.1.0 20060810
    [ 1.662072] brd: module loaded
    [ 1.679134] loop: module loaded
    [ 1.683277] (hci_tty): inside hci_tty_init
    [ 1.688769] (hci_tty): allocated 249, 0
    [ 1.701653] mtdoops: mtd device (mtddev=name/number) must be supplied
    [ 1.718028] usbcore: registered new interface driver asix
    [ 1.724239] usbcore: registered new interface driver ax88179_178a
    [ 1.731091] usbcore: registered new interface driver cdc_ether
    [ 1.737763] usbcore: registered new interface driver smsc95xx
    [ 1.744261] usbcore: registered new interface driver net1080
    [ 1.750610] usbcore: registered new interface driver cdc_subset
    [ 1.757291] usbcore: registered new interface driver zaurus
    [ 1.763777] usbcore: registered new interface driver cdc_ncm
    [ 1.770913] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
    [ 1.777851] ehci-pci: EHCI PCI platform driver
    [ 1.783017] ehci-omap: OMAP-EHCI Host Controller driver
    [ 1.789679] usbcore: registered new interface driver cdc_wdm
    [ 1.796197] usbcore: registered new interface driver usb-storage
    [ 1.803466] usbcore: registered new interface driver usbserial
    [ 1.810064] usbcore: registered new interface driver usbserial_generic
    [ 1.817361] usbserial: USB Serial support registered for generic
    [ 1.824115] usbcore: registered new interface driver cp210x
    [ 1.830331] usbserial: USB Serial support registered for cp210x
    [ 1.837010] usbcore: registered new interface driver usb_serial_simple
    [ 1.844298] usbserial: USB Serial support registered for zio
    [ 1.850601] usbserial: USB Serial support registered for funsoft
    [ 1.857343] usbserial: USB Serial support registered for flashloader
    [ 1.864452] usbserial: USB Serial support registered for vivopay
    [ 1.871115] usbserial: USB Serial support registered for moto_modem
    [ 1.878118] usbserial: USB Serial support registered for hp4x
    [ 1.884586] usbserial: USB Serial support registered for suunto
    [ 1.891162] usbserial: USB Serial support registered for siemens_mpi
    [ 1.900557] mousedev: PS/2 mouse device common for all mice
    [ 1.909499] TI-am335x-tsc TI-am335x-tsc: ti,charge-delay not specified
    [ 1.917567] input: ti-tsc as /devices/ocp.3/44e0d000.tscadc/TI-am335x-tsc/input/input0
    [ 1.929331] i2c-core: driver [rtc-ds1307] using legacy suspend method
    [ 1.936110] i2c-core: driver [rtc-ds1307] using legacy resume method
    [ 1.944479] omap_rtc 44e3e000.rtc: rtc core: registered 44e3e000.rtc as rtc0
    [ 1.953971] i2c /dev entries driver
    [ 1.958105] Driver for 1-wire Dallas network protocol.
    [ 1.968248] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
    [ 1.979930] omap_hsmmc 48060000.mmc: unable to get vmmc regulator -517
    [ 1.987317] platform 48060000.mmc: Driver omap_hsmmc requests probe deferral
    [ 1.995439] omap_hsmmc 481d8000.mmc: unable to get vmmc regulator -517
    [ 2.002512] platform 481d8000.mmc: Driver omap_hsmmc requests probe deferral
    [ 2.014896] ledtrig-cpu: registered to indicate activity on CPUs
    [ 2.022037] omap-aes 53500000.aes: OMAP AES hw accel rev: 3.2
    [ 2.030881] omap-sham 53100000.sham: hw accel on OMAP rev 4.3
    [ 2.040599] usbcore: registered new interface driver usbhid
    [ 2.046469] usbhid: USB HID core driver
    [ 2.051451] platform 44d00000.wkup_m3: Driver wkup_m3 requests probe deferral
    [ 2.066377] oprofile: using arm/armv7
    [ 2.071116] TCP: cubic registered
    [ 2.074613] Initializing XFRM netlink socket
    [ 2.079212] NET: Registered protocol family 17
    [ 2.083966] NET: Registered protocol family 15
    [ 2.088919] Key type dns_resolver registered
    [ 2.094932] cpu cpu0: of_pm_voltdm_notifier_register: Failed to get cpu0 regulator/voltdm: -517
    [ 2.104221] cpu cpu0: cpu0 clock notifier not ready, retry
    [ 2.110232] platform cpufreq-cpu0.0: Driver cpufreq-cpu0 requests probe deferral
    [ 2.119393] PM: bootloader does not support rtc-only!
    [ 2.124727] ThumbEE CPU extension supported.
    [ 2.129501] Registering SWP/SWPB emulation handler
    [ 2.138014] lis3_reg: disabling
    [ 2.141346] vbat: disabling
    [ 2.144283] regulator-dummy: disabling
    [ 2.155666] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
    [ 2.162749] [drm] No driver support for vblank timestamp query.
    [ 2.232505] Console: switching to colour frame buffer device 60x34
    [ 2.244697] tilcdc 4830e000.lcdc: fb0: frame buffer device
    [ 2.250594] tilcdc 4830e000.lcdc: registered panic notifier
    [ 2.256475] [drm] Initialized tilcdc 1.0.0 20121205 on minor 0
    [ 2.265017] vwl1271: 1800 mV
    [ 2.272509] tps65910 1-002d: No interrupt support, no core IRQ
    [ 2.285212] vrtc: 1800 mV
    [ 2.288601] vrtc: supplied by vbat
    [ 2.294767] vio: at 1500 mV
    [ 2.298050] vio: supplied by vbat
    [ 2.304368] vdd_mpu: 912 <--> 1375 mV at 1100 mV
    [ 2.309542] vdd_mpu: supplied by vbat
    [ 2.316027] vdd_core: 912 <--> 1150 mV at 1100 mV
    [ 2.321305] vdd_core: supplied by vbat
    [ 2.327584] vdd3: 5000 mV
    [ 2.332704] vdig1: at 1800 mV
    [ 2.336104] vdig1: supplied by vbat
    [ 2.342068] vdig2: at 1800 mV
    [ 2.345458] vdig2: supplied by vbat
    [ 2.351422] vpll: at 1800 mV
    [ 2.354717] vpll: supplied by vbat
    [ 2.360583] vdac: at 1800 mV
    [ 2.363882] vdac: supplied by vbat
    [ 2.369635] vaux1: at 1800 mV
    [ 2.373035] vaux1: supplied by vbat
    [ 2.378987] vaux2: at 3300 mV
    [ 2.382386] vaux2: supplied by vbat
    [ 2.388370] vaux33: at 3300 mV
    [ 2.391875] vaux33: supplied by vbat
    [ 2.397873] vmmc: 1800 <--> 3300 mV at 3300 mV
    [ 2.402808] vmmc: supplied by vbat
    [ 2.410522] omap_i2c 4802a000.i2c: bus 1 rev0.11 at 400 kHz
    [ 2.494052] mmc0: host does not support reading read-only switch. assuming write-enable.
    [ 2.504642] mmc0: new high speed SDHC card at address 59b4
    [ 2.511808] mmcblk0: mmc0:59b4 SD 3.70 GiB
    [ 2.519151] mmcblk0: p1 p2
    [ 2.578067] remoteproc0: wkup_m3 is available
  • Hi,

    Your kernel getting stuck at [ 2.578067] remoteproc0: wkup_m3 is available means that your kernel cannot load the am335x-pm-firmware.
    I guess you've changed the
    &i2c0 {
    pinctrl-names = "default";
    pinctrl-0 = <&i2c0_pins>;

    status = "okay";
    clock-frequency = <400000>;

    tps: tps@2d {
    reg = <0x2d>;
    };
    ...............
    ...............
    }
    device node accordingly to &i2c1 in your board's DTS (along with i2c1 pinmuxing) ...

    Other files that you need to check (in regard to changing the i2c) are:
    arch/arm/mach-omap2/omap_hwmod.c
    arch/arm/mach-omap2/omap_hwmod_33xx_data.c
    arch/arm/mach-omap2/pm33xx.c
    And your PMIC driver in drivers/mfd folder.

    Hope this helps.

    Best Regards,
    Yordan
  • Thanks Yordan,
    yes, we had some I2C1 configuration issue and one hardware pic configuration. Now Linux is booting completly and working fine. We can close this discussion.