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