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.

TPS65910 RTC probe problem..in AM335XEVM

Other Parts Discussed in Thread: TPS65910, TPS65218, TPS65912

Hi.. everyone

please help me !!..

i have problems about TPS65910 RTC function add in AM335XEVM . i use  board-am335xevm.c board file.

i used rtc driver with  ds1339. but now closed ds1339. but we have to use TPS65910 for power regulator in board.

so i decided use the device tps65910 for rtc func . 

and i added rtc_tps65910.c  file in  driver/rtc .

but it occur kernel panic when it booting sequence. what's the problem...

i attached errlog file and board file.

please help me. anyone...

/*
* rtc-tps65910.c -- TPS65910 Real Time Clock interface
*
* Copyright (c) 2012, NVIDIA CORPORATION.  All rights reserved.
* Author: Venu Byravarasu <vbyravarasu@nvidia.com>
*
* Based on original TI driver rtc-twl.c
*   Copyright (C) 2007 MontaVista Software, Inc
*   Author: Alexandre Rusev <source@mvista.com>
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version
 * 2 of the License, or (at your option) any later version.
 */

#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/types.h>
#include <linux/rtc.h>
#include <linux/bcd.h>
#include <linux/platform_device.h>
#include <linux/interrupt.h>
#include <linux/mfd/tps65910.h>
#include <linux/regmap.h>			//asj 20150811
struct tps65910_rtc {
	struct rtc_device	*rtc;
	/* To store the list of enabled interrupts */
	u32 irqstat;
};

/* Total number of RTC registers needed to set time*/
#define NUM_TIME_REGS	(TPS65910_YEARS - TPS65910_SECONDS + 1)

static int tps65910_rtc_alarm_irq_enable(struct device *dev, unsigned enabled)
{
	struct tps65910 *tps = dev_get_drvdata(dev->parent);
	u8 val = 0;

	if (enabled)
		val = TPS65910_RTC_INTERRUPTS_IT_ALARM;

	return regmap_write(tps->regmap, TPS65910_RTC_INTERRUPTS, val);
}

/*
 * Gets current tps65910 RTC time and date parameters.
 *
 * The RTC's time/alarm representation is not what gmtime(3) requires
 * Linux to use:
 *
 *  - Months are 1..12 vs Linux 0-11
 *  - Years are 0..99 vs Linux 1900..N (we assume 21st century)
 */
static int tps65910_rtc_read_time(struct device *dev, struct rtc_time *tm)
{
	unsigned char rtc_data[NUM_TIME_REGS];
	struct tps65910 *tps = dev_get_drvdata(dev->parent);
	int ret;

	/* Copy RTC counting registers to static registers or latches */
	ret = regmap_update_bits(tps->regmap, TPS65910_RTC_CTRL,
		TPS65910_RTC_CTRL_GET_TIME, TPS65910_RTC_CTRL_GET_TIME);
	if (ret < 0) {
		dev_err(dev, "RTC CTRL reg update failed with err:%d\n", ret);
		return ret;
	}

	ret = regmap_bulk_read(tps->regmap, TPS65910_SECONDS, rtc_data,
		NUM_TIME_REGS);
	if (ret < 0) {
		dev_err(dev, "reading from RTC failed with err:%d\n", ret);
		return ret;
	}

	tm->tm_sec = bcd2bin(rtc_data[0]);
	tm->tm_min = bcd2bin(rtc_data[1]);
	tm->tm_hour = bcd2bin(rtc_data[2]);
	tm->tm_mday = bcd2bin(rtc_data[3]);
	tm->tm_mon = bcd2bin(rtc_data[4]) - 1;
	tm->tm_year = bcd2bin(rtc_data[5]) + 100;

	return ret;
}

static int tps65910_rtc_set_time(struct device *dev, struct rtc_time *tm)
{
	unsigned char rtc_data[NUM_TIME_REGS];
	struct tps65910 *tps = dev_get_drvdata(dev->parent);
	int ret;

	rtc_data[0] = bin2bcd(tm->tm_sec);
	rtc_data[1] = bin2bcd(tm->tm_min);
	rtc_data[2] = bin2bcd(tm->tm_hour);
	rtc_data[3] = bin2bcd(tm->tm_mday);
	rtc_data[4] = bin2bcd(tm->tm_mon + 1);
	rtc_data[5] = bin2bcd(tm->tm_year - 100);

	/* Stop RTC while updating the RTC time registers */
	ret = regmap_update_bits(tps->regmap, TPS65910_RTC_CTRL,
		TPS65910_RTC_CTRL_STOP_RTC, 0);
	if (ret < 0) {
		dev_err(dev, "RTC stop failed with err:%d\n", ret);
		return ret;
	}

	/* update all the time registers in one shot */
	ret = regmap_bulk_write(tps->regmap, TPS65910_SECONDS, rtc_data,
		NUM_TIME_REGS);
	if (ret < 0) {
		dev_err(dev, "rtc_set_time error %d\n", ret);
		return ret;
	}

	/* Start back RTC */
	ret = regmap_update_bits(tps->regmap, TPS65910_RTC_CTRL,
		TPS65910_RTC_CTRL_STOP_RTC, 1);
	if (ret < 0)
		dev_err(dev, "RTC start failed with err:%d\n", ret);

	return ret;
}

/*
 * Gets current tps65910 RTC alarm time.
 */
static int tps65910_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alm)
{
	unsigned char alarm_data[NUM_TIME_REGS];
	u32 int_val;
	struct tps65910 *tps = dev_get_drvdata(dev->parent);
	int ret;

	ret = regmap_bulk_read(tps->regmap, TPS65910_SECONDS, alarm_data,
		NUM_TIME_REGS);
	if (ret < 0) {
		dev_err(dev, "rtc_read_alarm error %d\n", ret);
		return ret;
	}

	alm->time.tm_sec = bcd2bin(alarm_data[0]);
	alm->time.tm_min = bcd2bin(alarm_data[1]);
	alm->time.tm_hour = bcd2bin(alarm_data[2]);
	alm->time.tm_mday = bcd2bin(alarm_data[3]);
	alm->time.tm_mon = bcd2bin(alarm_data[4]) - 1;
	alm->time.tm_year = bcd2bin(alarm_data[5]) + 100;

	ret = regmap_read(tps->regmap, TPS65910_RTC_INTERRUPTS, &int_val);
	if (ret < 0)
		return ret;

	if (int_val & TPS65910_RTC_INTERRUPTS_IT_ALARM)
		alm->enabled = 1;

	return ret;
}

static int tps65910_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alm)
{
	unsigned char alarm_data[NUM_TIME_REGS];
	struct tps65910 *tps = dev_get_drvdata(dev->parent);
	int ret;

	ret = tps65910_rtc_alarm_irq_enable(dev, 0);
	if (ret)
		return ret;

	alarm_data[0] = bin2bcd(alm->time.tm_sec);
	alarm_data[1] = bin2bcd(alm->time.tm_min);
	alarm_data[2] = bin2bcd(alm->time.tm_hour);
	alarm_data[3] = bin2bcd(alm->time.tm_mday);
	alarm_data[4] = bin2bcd(alm->time.tm_mon + 1);
	alarm_data[5] = bin2bcd(alm->time.tm_year - 100);

	/* update all the alarm registers in one shot */
	ret = regmap_bulk_write(tps->regmap, TPS65910_ALARM_SECONDS,
		alarm_data, NUM_TIME_REGS);
	if (ret) {
		dev_err(dev, "rtc_set_alarm error %d\n", ret);
		return ret;
	}

	if (alm->enabled)
		ret = tps65910_rtc_alarm_irq_enable(dev, 1);

	return ret;
}

static irqreturn_t tps65910_rtc_interrupt(int irq, void *rtc)
{
	struct device *dev = rtc;
	unsigned long events = 0;
	struct tps65910 *tps = dev_get_drvdata(dev->parent);
	struct tps65910_rtc *tps_rtc = dev_get_drvdata(dev);
	int ret;
	u32 rtc_reg;

	ret = regmap_read(tps->regmap, TPS65910_RTC_STATUS, &rtc_reg);
	if (ret)
		return IRQ_NONE;

	if (rtc_reg & TPS65910_RTC_STATUS_ALARM)
		events = RTC_IRQF | RTC_AF;

	ret = regmap_write(tps->regmap, TPS65910_RTC_STATUS, rtc_reg);
	if (ret)
		return IRQ_NONE;

	/* Notify RTC core on event */
	rtc_update_irq(tps_rtc->rtc, 1, events);

	return IRQ_HANDLED;
}

static struct rtc_class_ops tps65910_rtc_ops = {
	.read_time	= tps65910_rtc_read_time,
	.set_time	= tps65910_rtc_set_time,
	.read_alarm	= tps65910_rtc_read_alarm,
	.set_alarm	= tps65910_rtc_set_alarm,
	.alarm_irq_enable = tps65910_rtc_alarm_irq_enable,
};

static int __devinit tps65910_rtc_probe(struct platform_device *pdev)
{
	struct tps65910 *tps65910 = NULL;
	struct tps65910_rtc *tps_rtc = NULL;
	struct tps65910_board *pmic_plat_data;
	int ret = -EINVAL;
	int irq = 0;
	u32 rtc_reg;

	dev_dbg(&pdev->dev, "tps65910_rtc_probe1.\n");

	tps65910 = dev_get_drvdata(pdev->dev.parent);

	dev_dbg(&pdev->dev, "tps65910_rtc_probe2.\n");

	tps_rtc = devm_kzalloc(&pdev->dev, sizeof(struct tps65910_rtc),
			GFP_KERNEL);
	dev_dbg(&pdev->dev, "tps65910_rtc_probe3.\n");
	if (!tps_rtc)
		return -ENOMEM;

	/* Clear pending interrupts */
	ret = regmap_read(tps65910->regmap, TPS65910_RTC_STATUS, &rtc_reg);
	if (ret < 0)
		return ret;

	ret = regmap_write(tps65910->regmap, TPS65910_RTC_STATUS, rtc_reg);
	if (ret < 0)
		return ret;

	dev_dbg(&pdev->dev, "Enabling tps65910-RTC.\n");
	rtc_reg = TPS65910_RTC_CTRL_STOP_RTC;
	ret = regmap_write(tps65910->regmap, TPS65910_RTC_CTRL, rtc_reg);
	if (ret < 0)
		return ret;

	pmic_plat_data = dev_get_platdata(tps65910->dev);
	irq = pmic_plat_data->irq_base;
	if (irq <= 0) {
		dev_warn(&pdev->dev, "Wake up is not possible as irq = %d\n",
			irq);
		return ret;
	}

	irq += TPS65910_IRQ_RTC_ALARM;
	ret = devm_request_threaded_irq(&pdev->dev, irq, NULL,
		tps65910_rtc_interrupt, IRQF_TRIGGER_LOW,
		dev_name(&tps_rtc->rtc->dev), &pdev->dev);
	if (ret < 0) {
		dev_err(&pdev->dev, "IRQ is not free.\n");
		return ret;
	}
	device_init_wakeup(&pdev->dev, 1);

	tps_rtc->rtc = rtc_device_register(pdev->name, &pdev->dev,
		&tps65910_rtc_ops, THIS_MODULE);
	if (IS_ERR(tps_rtc->rtc)) {
		ret = PTR_ERR(tps_rtc->rtc);
		dev_err(&pdev->dev, "RTC device register: err %d\n", ret);
		return ret;
	}

	platform_set_drvdata(pdev, tps_rtc);

	return 0;
}

/*
 * Disable tps65910 RTC interrupts.
 * Sets status flag to free.
 */
static int tps65910_rtc_remove(struct platform_device *pdev)
{
	tps65910_rtc_alarm_irq_enable(&pdev->dev, 0);

	return 0;
}

#ifdef CONFIG_PM_SLEEP
static int tps65910_rtc_suspend(struct device *dev)
{
	struct tps65910_rtc *tps_rtc = dev_get_drvdata(dev);

	if (device_may_wakeup(dev))
		enable_irq_wake(tps_rtc->irqstat);
	return 0;
}

static int tps65910_rtc_resume(struct device *dev)
{
	struct tps65910_rtc *tps_rtc = dev_get_drvdata(dev);

	if (device_may_wakeup(dev))
		disable_irq_wake(tps_rtc->irqstat);
	return 0;
}
#endif

static SIMPLE_DEV_PM_OPS(tps65910_rtc_pm_ops, tps65910_rtc_suspend,
			tps65910_rtc_resume);

static struct platform_driver tps65910_rtc_driver = {
	.probe		= tps65910_rtc_probe,
	.remove		= tps65910_rtc_remove,
	.driver		= {
		.name	= "tps65910-rtc",
		.pm	= &tps65910_rtc_pm_ops,
	},
};

module_platform_driver(tps65910_rtc_driver);
MODULE_ALIAS("platform:rtc-tps65910");
MODULE_AUTHOR("Venu Byravarasu <vbyravarasu@nvidia.com>");
MODULE_LICENSE("GPL");

NAND read: device 0 offset 0x280000, size 0x500000
 5242880 bytes read: OK
## Booting kernel from Legacy Image at 80200000 ...
   Image Name:   Linux-3.2.0
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3264056 Bytes = 3.1 MiB
   Load Address: 80008000
   Entry Point:  80008000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK
OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
[    0.000000] Linux version 3.2.0 (jsw@ubuntu) (gcc version 4.7.3 20130226 (prerelease) (crosstool-NG linaro-1.13.1-4.7-2013.03-20130313 - Linaro GCC 2013.03) ) #113 Thu Aug 13 08:32:57 PDT 2015
[    0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c53c7d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] Machine: am335xevm
[    0.000000] Memory policy: ECC disabled, Data cache writeback
[    0.000000] AM335X ES1.0 (sgx neon )
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 65024
[    0.000000] Kernel command line: console=ttyO0,115200n8 root=ubi0:rootfs rw ubi.mtd=7,2048 rootfstype=ubifs rootwait=1
[    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: 256MB = 256MB total
[    0.000000] Memory: 253124k/253124k available, 9020k reserved, 0K highmem
[    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]     modules : 0xbf000000 - 0xc0000000   (  16 MB)
[    0.000000]       .text : 0xc0008000 - 0xc05b9000   (5828 kB)
[    0.000000]       .init : 0xc05b9000 - 0xc05f5000   ( 240 kB)
[    0.000000]       .data : 0xc05f6000 - 0xc0662dd0   ( 436 kB)
[    0.000000]        .bss : 0xc0662df4 - 0xc0692048   ( 189 kB)
[    0.000000] NR_IRQS:396
[    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: GPTIMER2 at 24000000 Hz
[    0.000000] OMAP clocksource: GPTIMER1 at 32768 Hz
[    0.000000] sched_clock: 32 bits at 32kHz, resolution 30517ns, wraps every 131071999ms
[    0.000000] Console: colour dummy device 80x30
[    0.000122] Calibrating delay loop... 718.02 BogoMIPS (lpj=3590144)
[    0.058929] pid_max: default: 32768 minimum: 301
[    0.059082] Security Framework initialized
[    0.059173] Mount-cache hash table entries: 512
[    0.059539] CPU: Testing write buffer coherency: ok
[    0.080078] omap_hwmod: pruss: failed to hardreset
[    0.081237] print_constraints: dummy: 
[    0.081604] NET: Registered protocol family 16
[    0.083770] OMAP GPIO hardware version 0.1
[    0.086395] omap_mux_init: Add partition: #1: core, flags: 0
[    0.088348]  omap_i2c.1: alias fck already exists
[    0.089294]  omap2_mcspi.1: alias fck already exists
[    0.089538]  omap2_mcspi.2: alias fck already exists
[    0.090484]  edma.0: alias fck already exists
[    0.090515]  edma.0: alias fck already exists
[    0.090545]  edma.0: alias fck already exists
[    0.118103] bio: create slab <bio-0> at 0
[    0.120391] SCSI subsystem initialized
[    0.122009] usbcore: registered new interface driver usbfs
[    0.122314] usbcore: registered new interface driver hub
[    0.122528] usbcore: registered new device driver usb
[    0.122680] musb-ti81xx musb-ti81xx: musb0, board_mode=0x11, plat_mode=0x1
[    0.122955] musb-ti81xx musb-ti81xx: musb1, board_mode=0x11, plat_mode=0x1
[    0.139007] omap_i2c omap_i2c.1: bus 1 rev2.4.0 at 100 kHz
[    0.140930] tps65910 1-002d: JTAGREVNUM 0x0
[    0.143341] print_constraints: VRTC: 
[    0.144775] print_constraints: VIO: at 1800 mV 
[    0.147094] print_constraints: VDD1: 600 <--> 1500 mV at 1262 mV normal 
[    0.149414] print_constraints: VDD2: 600 <--> 1500 mV at 1137 mV normal 
[    0.150421] print_constraints: VDD3: 5000 mV 
[    0.151824] print_constraints: VDIG1: at 1800 mV 
[    0.153259] print_constraints: VDIG2: at 1800 mV 
[    0.154693] print_constraints: VPLL: at 1800 mV 
[    0.156097] print_constraints: VDAC: at 1800 mV 
[    0.157531] print_constraints: VAUX1: at 1800 mV 
[    0.158966] print_constraints: VAUX2: at 3300 mV 
[    0.160400] print_constraints: VAUX33: at 3300 mV 
[    0.161804] print_constraints: VMMC: at 3300 mV 
[    0.162322] tps65910 1-002d: No interrupt support, no core IRQ
[    0.163757] Advanced Linux Sound Architecture Driver Version 1.0.24.
[    0.164916] Switching to clocksource gp timer
[    0.180389] musb-hdrc: version 6.0, ?dma?, otg (peripheral+host)
[    0.180572] musb-hdrc musb-hdrc.0: dma type: pio
[    0.180908] MUSB0 controller's USBSS revision = 4ea20800
[    0.181091] musb-hdrc musb-hdrc.0: MUSB HDRC host driver
[    0.181182] musb-hdrc musb-hdrc.0: new USB bus registered, assigned bus number 1
[    0.181335] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    0.181335] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.181365] usb usb1: Product: MUSB HDRC host driver
[    0.181365] usb usb1: Manufacturer: Linux 3.2.0 musb-hcd
[    0.181365] usb usb1: SerialNumber: musb-hdrc.0
[    0.182159] hub 1-0:1.0: USB hub found
[    0.182189] hub 1-0:1.0: 1 port detected
[    0.182739] musb-hdrc musb-hdrc.0: USB Host mode controller at d083c000 using PIO, IRQ 18
[    0.182922] musb-hdrc musb-hdrc.1: dma type: pio
[    0.183227] MUSB1 controller's USBSS revision = 4ea20800
[    0.183410] musb-hdrc musb-hdrc.1: MUSB HDRC host driver
[    0.183441] musb-hdrc musb-hdrc.1: new USB bus registered, assigned bus number 2
[    0.183563] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002
[    0.183563] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.183593] usb usb2: Product: MUSB HDRC host driver
[    0.183593] usb usb2: Manufacturer: Linux 3.2.0 musb-hcd
[    0.183593] usb usb2: SerialNumber: musb-hdrc.1
[    0.184326] hub 2-0:1.0: USB hub found
[    0.184356] hub 2-0:1.0: 1 port detected
[    0.184906] musb-hdrc musb-hdrc.1: USB Host mode controller at d083e800 using PIO, IRQ 19
[    0.185394] NET: Registered protocol family 2
[    0.185607] IP route cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.185913] TCP established hash table entries: 8192 (order: 4, 65536 bytes)
[    0.186065] TCP bind hash table entries: 8192 (order: 3, 32768 bytes)
[    0.186157] TCP: Hash tables configured (established 8192 bind 8192)
[    0.186157] TCP reno registered
[    0.186187] UDP hash table entries: 256 (order: 0, 4096 bytes)
[    0.186218] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[    0.186401] NET: Registered protocol family 1
[    0.186676] RPC: Registered named UNIX socket transport module.
[    0.186676] RPC: Registered udp transport module.
[    0.186706] RPC: Registered tcp transport module.
[    0.186706] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.186950] NetWinder Floating Point Emulator V0.97 (double precision)
[    0.199005] VFS: Disk quotas dquot_6.5.2
[    0.199066] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    0.199615] msgmni has been set to 494
[    0.202789] alg: No test for stdrng (krng)
[    0.203491] io scheduler noop registered
[    0.203521] io scheduler deadline registered
[    0.203582] io scheduler cfq registered (default)
[    0.204772] Could not set LED4 to fully on
[    0.226043] omap_uart.0: ttyO0 at MMIO 0x44e09000 (irq = 72) is a OMAP UART0
[    0.903198] console [ttyO0] enabled
[    0.907501] omap_uart.1: ttyO1 at MMIO 0x48022000 (irq = 73) is a OMAP UART1
[    0.915313] omap_uart.2: ttyO2 at MMIO 0x48024000 (irq = 74) is a OMAP UART2
[    0.923126] omap_uart.3: ttyO3 at MMIO 0x481a6000 (irq = 44) is a OMAP UART3
[    0.930908] omap_uart.4: ttyO4 at MMIO 0x481a8000 (irq = 45) is a OMAP UART4
[    0.938690] omap_uart.5: ttyO5 at MMIO 0x481aa000 (irq = 46) is a OMAP UART5
[    0.946960] omap4_rng omap4_rng: OMAP4 Random Number Generator ver. 2.00
[    0.963348] brd: module loaded
[    0.971405] loop: module loaded
[    0.974884] i2c-core: driver [tsl2550] using legacy suspend method
[    0.981384] i2c-core: driver [tsl2550] using legacy resume method
[    0.987854] at24 1-0051: 32768 byte 24c256 EEPROM, writable, 64 bytes/write
[    1.045654] No daughter card found
[    1.049255] at24 1-0050: 32768 byte 24c256 EEPROM, writable, 64 bytes/write
[    1.115661] The board is general purpose EVM in profile 0
[    1.122222] omap-gpmc omap-gpmc: GPMC revision 6.0
[    1.127288] Registering NAND on CS0
[    1.131896]  omap_hsmmc.0: alias fck already exists
[    1.138366] 
[    1.139923] am33xx_cpsw_init: mode => 0 
[    1.144012] am33xx_cpsw_init: 1: slaves[0] => BC:6A:29:CB:83:FE
[    1.150207] am33xx_cpsw_init: 3: slaves[1] => BC:6A:29:CB:83:FF
[    1.158935] mtdoops: mtd device (mtddev=name/number) must be supplied
[    1.166259] omap2-nand driver initializing
[    1.170867] ONFI flash detected
[    1.174255] ONFI param page 0 valid
[    1.177947] NAND device: Manufacturer ID: 0x01, Chip ID: 0xda (AMD S34ML02G2)
[    1.185607] Creating 8 MTD partitions on "omap2-nand.0":
[    1.191162] 0x000000000000-0x000000020000 : "SPL"
[    1.197570] 0x000000020000-0x000000040000 : "SPL.backup1"
[    1.204498] 0x000000040000-0x000000060000 : "SPL.backup2"
[    1.211395] 0x000000060000-0x000000080000 : "SPL.backup3"
[    1.218322] 0x000000080000-0x000000260000 : "U-Boot"
[    1.225463] 0x000000260000-0x000000280000 : "U-Boot Env"
[    1.232330] 0x000000280000-0x000000780000 : "Kernel"
[    1.240814] 0x000000780000-0x000010000000 : "File System"
[    1.350891] OneNAND driver initializing
[    1.355651] UBI: attaching mtd7 to ubi0
[    1.359680] UBI: physical eraseblock size:   131072 bytes (128 KiB)
[    1.366210] UBI: logical eraseblock size:    126976 bytes
[    1.371856] UBI: smallest flash I/O unit:    2048
[    1.376770] UBI: VID header offset:          2048 (aligned 2048)
[    1.383026] UBI: data offset:                4096
[    3.502929] UBI: max. sequence number:       279
[    3.523101] UBI: attached mtd7 to ubi0
[    3.527069] UBI: MTD device name:            "File System"
[    3.532775] UBI: MTD device size:            248 MiB
[    3.537963] UBI: number of good PEBs:        1988
[    3.542877] UBI: number of bad PEBs:         0
[    3.547515] UBI: number of corrupted PEBs:   0
[    3.552124] UBI: max. allowed volumes:       128
[    3.556945] UBI: wear-leveling threshold:    4096
[    3.561859] UBI: number of internal volumes: 1
[    3.566497] UBI: number of user volumes:     1
[    3.571105] UBI: available PEBs:             0
[    3.575744] UBI: total number of reserved PEBs: 1988
[    3.580932] UBI: number of PEBs reserved for bad PEB handling: 19
[    3.587280] UBI: max/mean erase counter: 2/1
[    3.591735] UBI: image sequence number:  629668755
[    3.596862] UBI: background thread "ubi_bgt0d" started, PID 598
[    3.604034] tun: Universal TUN/TAP device driver, 1.6
[    3.609313] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
[    3.616027] CAN device driver interface
[    3.620025] CAN bus driver for Bosch D_CAN controller 1.0
[    3.675598] davinci_mdio davinci_mdio.0: davinci mdio revision 1.6
[    3.682037] davinci_mdio davinci_mdio.0: detected phy mask f00fff80
[    3.696868] davinci_mdio.0: probed
[    3.700408] davinci_mdio davinci_mdio.0: phy[00]: id(0x02430D80), if(2), (0:00), drv(ICPlus IP175C)
[    3.709899] davinci_mdio davinci_mdio.0: phy[01]: id(0x02430D80), if(2), (0:01), drv(ICPlus IP175C)
[    3.719329] davinci_mdio davinci_mdio.0: phy[02]: id(0x02430D80), if(2), (0:02), drv(ICPlus IP175C)
[    3.728790] davinci_mdio davinci_mdio.0: phy[03]: id(0x02430D80), if(2), (0:03), drv(ICPlus IP175C)
[    3.738220] davinci_mdio davinci_mdio.0: phy[04]: id(0x02430D80), if(2), (0:04), drv(ICPlus IP175C)
[    3.747680] davinci_mdio davinci_mdio.0: phy[05]: id(0x00000000), if(2), (0:05), drv(unknown)
[    3.756591] davinci_mdio davinci_mdio.0: phy[06]: id(0x00000000), if(2), (0:06), drv(unknown)
[    3.765472] davinci_mdio davinci_mdio.0: phy[20]: id(0x00000000), if(2), (0:14), drv(unknown)
[    3.774383] davinci_mdio davinci_mdio.0: phy[21]: id(0xFF61B7F5), if(2), (0:15), drv(unknown)
[    3.783294] davinci_mdio davinci_mdio.0: phy[22]: id(0x00008100), if(2), (0:16), drv(unknown)
[    3.792205] davinci_mdio davinci_mdio.0: phy[23]: id(0x3F3F0000), if(2), (0:17), drv(unknown)
[    3.801116] davinci_mdio davinci_mdio.0: phy[24]: id(0x3F3F3F3F), if(2), (0:18), drv(unknown)
[    3.810028] davinci_mdio davinci_mdio.0: phy[25]: id(0x00000000), if(2), (0:19), drv(unknown)
[    3.818908] davinci_mdio davinci_mdio.0: phy[26]: id(0x00000000), if(2), (0:1a), drv(unknown)
[    3.827819] davinci_mdio davinci_mdio.0: phy[27]: id(0x261E3E1E), if(2), (0:1b), drv(unknown)
[    3.836730] davinci_mdio_probe end 
[    3.840362] 
[    3.842041] PPP generic driver version 2.4.2
[    3.847076] usbcore: registered new interface driver zd1201
[    3.853088] usbcore: registered new interface driver cdc_ether
[    3.859375] usbcore: registered new interface driver cdc_eem
[    3.865417] usbcore: registered new interface driver dm9601
[    3.871276] cdc_ncm: 04-Aug-2011
[    3.874816] usbcore: registered new interface driver cdc_ncm
[    3.880920] usbcore: registered new interface driver cdc_acm
[    3.886840] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
[    3.895172] Initializing USB Mass Storage driver...
[    3.900512] usbcore: registered new interface driver usb-storage
[    3.906799] USB Mass Storage support registered.
[    3.911987] usbcore: registered new interface driver usbserial
[    3.918212] USB Serial support registered for generic
[    3.923645] usbcore: registered new interface driver usbserial_generic
[    3.930480] usbserial: USB Serial Driver core
[    3.935150] USB Serial support registered for FTDI USB Serial Device
[    3.942108] usbcore: registered new interface driver ftdi_sio
[    3.948089] ftdi_sio: v1.6.0:USB FTDI Serial Converters Driver
[    3.954620] mousedev: PS/2 mouse device common for all mice
[    3.961486] Unable to handle kernel NULL pointer dereference at virtual address 00000000
[    3.969970] pgd = c0004000
[    3.972778] [00000000] *pgd=00000000
[    3.976531] Internal error: Oops: 5 [#1]
[    3.980621] Modules linked in:
[    3.983795] CPU: 0    Not tainted  (3.2.0 #113)
[    3.988525] PC is at mutex_lock+0xc/0x28
[    3.992645] LR is at regmap_update_bits+0x24/0x78
[    3.997558] pc : [<c0432dc8>]    lr : [<c022bc98>]    psr: 60000013
[    3.997558] sp : cf01ddf8  ip : cf01de08  fp : cf01de04
[    4.009521] r10: c05dc2e4  r9 : 00000000  r8 : 00000000
[    4.014984] r7 : 00000040  r6 : cf0c5c08  r5 : 0000003f  r4 : 00000000
[    4.021789] r3 : 00000000  r2 : 00000040  r1 : 0000003f  r0 : 00000000
[    4.028594] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
[    4.036224] Control: 10c5387d  Table: 80004019  DAC: 00000015
[    4.042205] Process swapper (pid: 1, stack limit = 0xcf01c2f0)
[    4.048278] Stack: (0xcf01ddf8 to 0xcf01e000)
[    4.052825] dde0:                                                       cf01de34 cf01de08
[    4.061370] de00: c022bc98 c0432dc8 cf01de34 cf01de18 c0222ca4 c0660778 cf0c5c00 cf0c5c08
[    4.069885] de20: cf276250 cf0b2d40 cf01de6c cf01de38 c02d320c c022bc80 00000000 c05dc2e4
[    4.078430] de40: cf01de5c cf01de50 c00fc5f4 cf0c5c08 c0686e40 c065ccc8 c0647e60 00000000
[    4.086975] de60: cf01de7c cf01de70 c0221458 c02d3190 cf01deac cf01de80 c021fe6c c0221448
[    4.095489] de80: cf01deac cf01de90 c0221cec cf0c5c08 c0647e60 cf0c5c3c cf2792c0 00000000
[    4.104034] dea0: cf01decc cf01deb0 c022010c c021fdc4 c0220078 00000000 c0647e60 c0220078
[    4.112548] dec0: cf01def4 cf01ded0 c021ebc8 c0220084 cf006ef8 cf0c3bf0 c01c3b34 c0647e60
[    4.121093] dee0: c0647e60 c0638348 cf01df04 cf01def8 c021fa94 c021eb88 cf01df34 cf01df08
[    4.129638] df00: c021f6e8 c021fa7c c054bcf0 cf01df18 c0647e60 c05f43f4 c0662e00 cf01c000
[    4.138153] df20: 00000000 c05dc2e4 cf01df5c cf01df38 c0220628 c021f56c c05f425c c05f43f4
[    4.146697] df40: c0662e00 cf01c000 00000000 c05dc2e4 cf01df6c cf01df60 c0221808 c02205b4
[    4.155242] df60: cf01df7c cf01df70 c05dc2f8 c02217c8 cf01dfd4 cf01df80 c000876c c05dc2f0
[    4.163757] df80: c0074fa4 c00f3aa8 0000007f 00000000 cf01dfb4 32316c20 00000037 00000000
[    4.172302] dfa0: cf01dfbc 0000018c c0625660 c05f425c c05f43f4 c004101c 00000013 00000000
[    4.180847] dfc0: 00000000 00000000 cf01dff4 cf01dfd8 c05b988c c0008650 00000000 00000000
[    4.189361] dfe0: 00000000 c05b9808 00000000 cf01dff8 c004101c c05b9814 bfffeffa feffcfee
[    4.197906] Backtrace: 
[    4.200469] [<c0432dbc>] (mutex_lock+0x0/0x28) from [<c022bc98>] (regmap_update_bits+0x24/0x78)
[    4.209533] [<c022bc74>] (regmap_update_bits+0x0/0x78) from [<c02d320c>] (tps65910_rtc_probe+0x88/0x210)
[    4.219421]  r8:cf0b2d40 r7:cf276250 r6:cf0c5c08 r5:cf0c5c00 r4:c0660778
[    4.226470] [<c02d3184>] (tps65910_rtc_probe+0x0/0x210) from [<c0221458>] (platform_drv_probe+0x1c/0x20)
[    4.236358]  r8:00000000 r7:c0647e60 r6:c065ccc8 r5:c0686e40 r4:cf0c5c08
[    4.243377] [<c022143c>] (platform_drv_probe+0x0/0x20) from [<c021fe6c>] (driver_probe_device+0xb4/0x2c0)
[    4.253356] [<c021fdb8>] (driver_probe_device+0x0/0x2c0) from [<c022010c>] (__driver_attach+0x94/0x98)
[    4.263061]  r8:00000000 r7:cf2792c0 r6:cf0c5c3c r5:c0647e60 r4:cf0c5c08
[    4.270080] [<c0220078>] (__driver_attach+0x0/0x98) from [<c021ebc8>] (bus_for_each_dev+0x4c/0x94)
[    4.279418]  r6:c0220078 r5:c0647e60 r4:00000000 r3:c0220078
[    4.285339] [<c021eb7c>] (bus_for_each_dev+0x0/0x94) from [<c021fa94>] (driver_attach+0x24/0x28)
[    4.294494]  r6:c0638348 r5:c0647e60 r4:c0647e60
[    4.299316] [<c021fa70>] (driver_attach+0x0/0x28) from [<c021f6e8>] (bus_add_driver+0x188/0x270)
[    4.308502] [<c021f560>] (bus_add_driver+0x0/0x270) from [<c0220628>] (driver_register+0x80/0x144)
[    4.317840] [<c02205a8>] (driver_register+0x0/0x144) from [<c0221808>] (platform_driver_register+0x4c/0x60)
[    4.328033] [<c02217bc>] (platform_driver_register+0x0/0x60) from [<c05dc2f8>] (tps65910_rtc_driver_init+0x14/0x1c)
[    4.338928] [<c05dc2e4>] (tps65910_rtc_driver_init+0x0/0x1c) from [<c000876c>] (do_one_initcall+0x128/0x1a8)
[    4.349182] [<c0008644>] (do_one_initcall+0x0/0x1a8) from [<c05b988c>] (kernel_init+0x84/0x120)
[    4.358276] [<c05b9808>] (kernel_init+0x0/0x120) from [<c004101c>] (do_exit+0x0/0x65c)
[    4.366516]  r5:c05b9808 r4:00000000
[    4.370269] Code: e89da9f0 e1a0c00d e92dd800 e24cb004 (e1903f9f) 
[    4.376678] ---[ end trace b5832d27640abec6 ]---
[    4.381500] Kernel panic - not syncing: Attempted to kill init!
[    4.387695] Backtrace: 
[    4.390258] [<c0017dbc>] (dump_backtrace+0x0/0x10c) from [<c042e2c0>] (dump_stack+0x18/0x1c)
[    4.399078]  r6:cf01bc00 r5:c0524fb8 r4:c0665ac8 r3:c061894c
[    4.404998] [<c042e2a8>] (dump_stack+0x0/0x1c) from [<c042e4bc>] (panic+0x64/0x194)
[    4.412994] [<c042e458>] (panic+0x0/0x194) from [<c00415cc>] (do_exit+0x5b0/0x65c)
[    4.420898]  r3:cf01bc00 r2:cf01dbf8 r1:cf01dbf8 r0:c0524fb8
[    4.426818]  r7:00000001
[    4.429473] [<c004101c>] (do_exit+0x0/0x65c) from [<c0018098>] (die+0x11c/0x2c8)
[    4.437194]  r7:00000001
[    4.439849] [<c0017f7c>] (die+0x0/0x2c8) from [<c042e320>] (__do_kernel_fault.part.4+0x5c/0x7c)
[    4.448944] [<c042e2c4>] (__do_kernel_fault.part.4+0x0/0x7c) from [<c001a830>] (do_page_fault+0x1e8/0x1f8)
[    4.459014]  r7:cf01bc00 r3:cf01ddb0
[    4.462738] [<c001a648>] (do_page_fault+0x0/0x1f8) from [<c001a96c>] (do_translation_fault+0xa0/0xa8)
[    4.472381] [<c001a8cc>] (do_translation_fault+0x0/0xa8) from [<c00083b0>] (do_DataAbort+0x3c/0xa4)
[    4.481811]  r7:00000000 r6:c05fc97c r5:c001a8cc r4:00000005
[    4.487762] [<c0008374>] (do_DataAbort+0x0/0xa4) from [<c0014318>] (__dabt_svc+0x38/0x60)
[    4.496307] Exception stack(0xcf01ddb0 to 0xcf01ddf8)
[    4.501586] dda0:                                     00000000 0000003f 00000040 00000000
[    4.510101] ddc0: 00000000 0000003f cf0c5c08 00000040 00000000 00000000 c05dc2e4 cf01de04
[    4.518646] dde0: cf01de08 cf01ddf8 c022bc98 c0432dc8 60000013 ffffffff
[    4.525543]  r8:00000000 r7:cf01dde4 r6:ffffffff r5:60000013 r4:c0432dc8
[    4.532562] [<c0432dbc>] (mutex_lock+0x0/0x28) from [<c022bc98>] (regmap_update_bits+0x24/0x78)
[    4.541656] [<c022bc74>] (regmap_update_bits+0x0/0x78) from [<c02d320c>] (tps65910_rtc_probe+0x88/0x210)
[    4.551574]  r8:cf0b2d40 r7:cf276250 r6:cf0c5c08 r5:cf0c5c00 r4:c0660778
[    4.558593] [<c02d3184>] (tps65910_rtc_probe+0x0/0x210) from [<c0221458>] (platform_drv_probe+0x1c/0x20)
[    4.568481]  r8:00000000 r7:c0647e60 r6:c065ccc8 r5:c0686e40 r4:cf0c5c08
[    4.575500] [<c022143c>] (platform_drv_probe+0x0/0x20) from [<c021fe6c>] (driver_probe_device+0xb4/0x2c0)
[    4.585510] [<c021fdb8>] (driver_probe_device+0x0/0x2c0) from [<c022010c>] (__driver_attach+0x94/0x98)
[    4.595214]  r8:00000000 r7:cf2792c0 r6:cf0c5c3c r5:c0647e60 r4:cf0c5c08
[    4.602233] [<c0220078>] (__driver_attach+0x0/0x98) from [<c021ebc8>] (bus_for_each_dev+0x4c/0x94)
[    4.611572]  r6:c0220078 r5:c0647e60 r4:00000000 r3:c0220078
[    4.617523] [<c021eb7c>] (bus_for_each_dev+0x0/0x94) from [<c021fa94>] (driver_attach+0x24/0x28)
[    4.626678]  r6:c0638348 r5:c0647e60 r4:c0647e60
[    4.631530] [<c021fa70>] (driver_attach+0x0/0x28) from [<c021f6e8>] (bus_add_driver+0x188/0x270)
[    4.640686] [<c021f560>] (bus_add_driver+0x0/0x270) from [<c0220628>] (driver_register+0x80/0x144)
[    4.650054] [<c02205a8>] (driver_register+0x0/0x144) from [<c0221808>] (platform_driver_register+0x4c/0x60)
[    4.660247] [<c02217bc>] (platform_driver_register+0x0/0x60) from [<c05dc2f8>] (tps65910_rtc_driver_init+0x14/0x1c)
[    4.671142] [<c05dc2e4>] (tps65910_rtc_driver_init+0x0/0x1c) from [<c000876c>] (do_one_initcall+0x128/0x1a8)
[    4.681396] [<c0008644>] (do_one_initcall+0x0/0x1a8) from [<c05b988c>] (kernel_init+0x84/0x120)
[    4.690490] [<c05b9808>] (kernel_init+0x0/0x120) from [<c004101c>] (do_exit+0x0/0x65c)
[    4.698760]  r5:c05b9808 r4:00000000
board-am335xevm.c

  • Hi,

    I will ask the SW team to look at this.
  • Hello Sunjong,

    I would to note you that TPS65910 PMIC is a MFD with RTC as one of the device. Please add  CONFIG_RTC_DRV_TPS65910 in .confing file.

    I suggest you using this patch http://patchwork.ozlabs.org/patch/174391/

    board-support/linux/.config:
    2154 #
    2155 CONFIG_GPIO_PALMAS=y
    2156: # CONFIG_GPIO_TPS65910 is not set
    2157 # CONFIG_GPIO_BCM_KONA is not set
    2158
    ....
    2455 CONFIG_MFD_TPS65218=y
    2456 # CONFIG_MFD_TPS6586X is not set
    2457: CONFIG_MFD_TPS65910=y
    2458 # CONFIG_MFD_TPS65912 is not set
    2459 # CONFIG_MFD_TPS65912_I2C is not set
    ....
    2515 CONFIG_REGULATOR_TPS65218=y
    2516 # CONFIG_REGULATOR_TPS6524X is not set
    2517: CONFIG_REGULATOR_TPS65910=y
    2518 CONFIG_REGULATOR_TWL4030=y
    2519 CONFIG_MEDIA_SUPPORT=y
    ....
    3680 CONFIG_RTC_DRV_TWL92330=y
    3681 CONFIG_RTC_DRV_TWL4030=y
    3682: # CONFIG_RTC_DRV_TPS65910 is not set

    Best regards,

    Yanko