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.

AM3352: FT5x06 capacitive touchscreen issue

Part Number: AM3352

diff -ruN a/drivers/input/touchscreen/ft5x06_ts.c b/drivers/input/touchscreen/ft5x06_ts.c
--- a/drivers/input/touchscreen/ft5x06_ts.c	1969-12-31 16:00:00.000000000 -0800
+++ b/drivers/input/touchscreen/ft5x06_ts.c	2020-04-08 15:02:03.282245000 -0700
@@ -0,0 +1,646 @@
+/*
+ *   Boundary Devices FTx06 touch screen controller.
+ *
+ *   Copyright (c) by Boundary Devices <info@boundarydevices.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.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+ *
+ */
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/i2c.h>
+#include <linux/slab.h>
+#include <linux/interrupt.h>
+#include <linux/wait.h>
+#include <linux/io.h>
+#include <linux/gpio.h>
+#include <linux/of_gpio.h>
+#include <linux/proc_fs.h>
+#include <linux/delay.h>
+#include <linux/input.h>
+
+//#define DEBUG 1
+
+#ifdef CONFIG_TOUCHSCREEN_FT5X06_SINGLE_TOUCH
+#else
+#define USE_ABS_MT
+#endif
+
+static int calibration[7] = {
+	65536,0,0,
+	0,65536,0,
+	65536
+};
+module_param_array(calibration, int, NULL, S_IRUGO | S_IWUSR);
+
+static int screenres[2] = {1280, 800};
+module_param_array(screenres, int, NULL, S_IRUGO | S_IWUSR);
+
+#define MAX_TOUCHES 12
+
+static void translate(int *px, int *py)
+{
+	int x, y, x1, y1;
+	if (calibration[6]) {
+		x1 = *px;
+		y1 = *py;
+
+		x = calibration[0] * x1 +
+			calibration[1] * y1 +
+			calibration[2];
+		x /= calibration[6];
+		if (x < 0)
+			x = 0;
+		y = calibration[3] * x1 +
+			calibration[4] * y1 +
+			calibration[5];
+		y /= calibration[6];
+		if (y < 0)
+			y = 0;
+		*px = x ;
+		*py = y ;
+	}
+}
+
+struct point {
+	int	x;
+	int	y;
+	int	id;
+};
+
+struct ft5x06_ts {
+	struct i2c_client *client;
+	struct input_dev	*idev;
+	struct workqueue_struct *wq;
+	struct work_struct work;
+	struct delayed_work reenable_work;
+	int int_disabled;
+	struct semaphore	sem;
+	int			use_count;
+	int			bReady;
+	int			irq;
+	unsigned		gp;
+	int			buttons;
+	struct proc_dir_entry  *procentry;
+};
+static const char *client_name = "ft5x06";
+
+struct ft5x06_ts *gts;
+
+static char const procentryname[] = {
+   "ft5x06"
+};
+
+static int ts_startup(struct ft5x06_ts *ts);
+static void ts_shutdown(struct ft5x06_ts *ts);
+
+/*-----------------------------------------------------------------------*/
+static inline void ts_evt_add(struct ft5x06_ts *ts,
+			      unsigned buttons, struct point *p)
+{
+	struct input_dev *idev = ts->idev;
+	int i;
+	if (!buttons) {
+		/* send release to user space. */
+#ifdef USE_ABS_MT
+		input_event(idev, EV_ABS, ABS_MT_TOUCH_MAJOR, 0);
+		input_event(idev, EV_KEY, BTN_TOUCH, 0);
+		input_mt_sync(idev);
+#else
+		input_report_abs(idev, ABS_PRESSURE, 0);
+		input_report_key(idev, BTN_TOUCH, 0);
+		input_sync(idev);
+#endif
+	} else {
+		for (i = 0; i < buttons; i++) {
+			translate(&p[i].x, &p[i].y);
+#ifdef USE_ABS_MT
+			input_event(idev, EV_ABS, ABS_MT_POSITION_X, p[i].x);
+			input_event(idev, EV_ABS, ABS_MT_POSITION_Y, p[i].y);
+			input_event(idev, EV_ABS, ABS_MT_TRACKING_ID, p[i].id);
+			input_event(idev, EV_ABS, ABS_MT_TOUCH_MAJOR, 1);
+			input_mt_sync(idev);
+#else
+			input_report_abs(idev, ABS_X, p[i].x);
+			input_report_abs(idev, ABS_Y, p[i].y);
+			input_report_abs(idev, ABS_PRESSURE, 1);
+			input_report_key(idev, BTN_TOUCH, 1);
+			input_sync(idev);
+#endif
+		}
+		input_event(idev, EV_KEY, BTN_TOUCH, 1);
+	}
+#ifdef USE_ABS_MT
+	input_sync(idev);
+#endif
+}
+
+static int ts_open(struct input_dev *idev)
+{
+	struct ft5x06_ts *ts = input_get_drvdata(idev);
+	return ts_startup(ts);
+}
+
+static void ts_close(struct input_dev *idev)
+{
+	struct ft5x06_ts *ts = input_get_drvdata(idev);
+	ts_shutdown(ts);
+}
+
+static inline int ts_register(struct ft5x06_ts *ts)
+{
+	struct input_dev *idev;
+	idev = input_allocate_device();
+	if (idev == NULL)
+		return -ENOMEM;
+
+	ts->idev = idev;
+	idev->name      = procentryname ;
+	idev->id.product = ts->client->addr;
+	idev->open      = ts_open;
+	idev->close     = ts_close;
+
+	__set_bit(EV_ABS, idev->evbit);
+	__set_bit(EV_KEY, idev->evbit);
+	__set_bit(BTN_TOUCH, idev->keybit);
+
+#ifdef USE_ABS_MT
+	input_set_abs_params(idev, ABS_MT_POSITION_X, 0, screenres[0]-1, 0, 0);
+	input_set_abs_params(idev, ABS_MT_POSITION_Y, 0, screenres[1]-1, 0, 0);
+	input_set_abs_params(idev, ABS_MT_TRACKING_ID, 0, MAX_TOUCHES, 0, 0);
+	input_set_abs_params(idev, ABS_X, 0, screenres[0]-1, 0, 0);
+	input_set_abs_params(idev, ABS_Y, 0, screenres[1]-1, 0, 0);
+	input_set_abs_params(idev, ABS_MT_TOUCH_MAJOR, 0, 1, 0, 0);
+#else
+	__set_bit(EV_SYN, idev->evbit);
+	input_set_abs_params(idev, ABS_X, 0, screenres[0]-1, 0, 0);
+	input_set_abs_params(idev, ABS_Y, 0, screenres[1]-1, 0, 0);
+	input_set_abs_params(idev, ABS_PRESSURE, 0, 1, 0, 0);
+#endif
+
+	input_set_drvdata(idev, ts);
+	return input_register_device(idev);
+}
+
+static inline void ts_deregister(struct ft5x06_ts *ts)
+{
+	if (ts->idev) {
+		input_unregister_device(ts->idev);
+		input_free_device(ts->idev);
+		ts->idev = NULL;
+	}
+}
+
+#ifdef DEBUG
+static void printHex(u8 const *buf, unsigned len)
+{
+	char hex[512];
+	char *next = hex ;
+	char *end = hex+sizeof(hex);
+
+	while (len--) {
+		next += snprintf(next, end-next, "%02x", *buf++);
+		if (next >= end) {
+			hex[sizeof(hex)-1] = '\0' ;
+			break;
+		}
+	}
+	printk(KERN_ERR "%s\n", hex);
+}
+#endif
+
+static void write_reg(struct ft5x06_ts *ts, int regnum, int value)
+{
+	u8 regnval[] = {
+		regnum,
+		value
+	};
+	struct i2c_msg pkt = {
+		ts->client->addr, 0, sizeof(regnval), regnval
+	};
+	int ret = i2c_transfer(ts->client->adapter, &pkt, 1);
+	if (ret != 1)
+		printk(KERN_WARNING "%s: i2c_transfer failed\n", __func__);
+	else
+		printk(KERN_DEBUG "%s: set register 0x%02x to 0x%02x\n",
+		       __func__, regnum, value);
+}
+
+static void set_mode(struct ft5x06_ts *ts, int mode)
+{
+	write_reg(ts, 0, (mode&7)<<4);
+	printk(KERN_DEBUG "%s: changed mode to 0x%02x\n", __func__, mode);
+}
+
+#define WORK_MODE 0
+#define FACTORY_MODE 4
+
+static int proc_regnum = 0;
+static int ft5x06_proc_read
+	(struct file *f,
+	 char __user *ubuf,
+	 size_t count,
+	 loff_t *off)
+{
+	int ret;
+	unsigned char startch[1] = { (u8)proc_regnum };
+	unsigned char buf[1];
+	struct i2c_msg readpkt[2] = {
+		{gts->client->addr, 0, 1, startch},
+		{gts->client->addr, I2C_M_RD, sizeof(buf), buf}
+	};
+	ret = i2c_transfer(gts->client->adapter, readpkt,
+			   ARRAY_SIZE(readpkt));
+	if (ret != ARRAY_SIZE(readpkt)) {
+		printk(KERN_WARNING "%s: i2c_transfer failed\n",
+		       client_name);
+	} else {
+		printk (KERN_ERR "ft5x06[0x%02x] == 0x%02x\n", (u8)proc_regnum, buf[0]);
+	}
+	return 0 ;
+}
+
+static int
+ft5x06_proc_write
+	(struct file *file,
+	 const char __user *buffer,
+	 size_t count,
+	 loff_t *data)
+{
+	proc_regnum = simple_strtoul(buffer,0,0);
+	return count ;
+}
+
+struct file_operations proc_fops = {
+	.read = ft5x06_proc_read,
+	.write = ft5x06_proc_write,
+};
+
+/*-----------------------------------------------------------------------*/
+static void irq_reenable_work(struct work_struct *work)
+{
+	struct ft5x06_ts *ts = container_of(work, struct ft5x06_ts,
+			reenable_work.work);
+
+	if (ts->int_disabled) {
+		ts->int_disabled = 0;
+		enable_irq(ts->irq);
+	}
+}
+
+
+static void ts_work_func(struct work_struct *work)
+{
+	struct ft5x06_ts *ts = container_of(work,
+			struct ft5x06_ts, work);
+	int ret;
+	struct point points[MAX_TOUCHES];
+	unsigned char buf[3+(6*MAX_TOUCHES)];
+
+	unsigned char startch[1] = { 0 };
+	struct i2c_msg readpkt[2] = {
+		{ts->client->addr, 0, 1, startch},
+		{ts->client->addr, I2C_M_RD, sizeof(buf), buf}
+	};
+	int loop_max = 10;
+	int buttons = 0 ;
+
+	do {
+		ts->bReady = 0;
+		ret = i2c_transfer(ts->client->adapter, readpkt,
+				   ARRAY_SIZE(readpkt));
+		if (ret != ARRAY_SIZE(readpkt)) {
+			printk(KERN_WARNING "%s: i2c_transfer failed\n",
+			       client_name);
+			msleep(1000);
+		} else {
+			int i;
+			unsigned char *p = buf+3;
+#ifdef DEBUG
+			printHex(buf, sizeof(buf));
+#endif
+			buttons = buf[2];
+			if (buttons > MAX_TOUCHES) {
+				printk(KERN_ERR
+				       "%s: invalid button count %02x\n",
+				       __func__, buttons);
+				buttons = MAX_TOUCHES;
+			} else {
+				for (i = 0; i < buttons; i++) {
+					points[i].x = (((p[0] & 0x0f) << 8)
+						       | p[1]) & 0x7ff;
+					points[i].id = (p[2]>>4);
+					points[i].y = (((p[2] & 0x0f) << 8)
+						       | p[3]) & 0x7ff;
+					p += 6;
+				}
+			}
+		}
+
+#ifdef DEBUG
+		printk(KERN_ERR "%s: buttons = %d, "
+				"points[0].x = %d, "
+				"points[0].y = %d\n",
+		       client_name, buttons, points[0].x, points[0].y);
+#endif
+		ts_evt_add(ts, buttons, points);
+		if (--loop_max == 0)
+			goto error;
+	} while (ts->gp == -1 ? 0 : 0 == gpio_get_value(ts->gp));
+	ts->int_disabled = 0;
+	ts->buttons = buttons;
+	enable_irq(ts->irq);
+	return;
+error:
+	schedule_delayed_work(&ts->reenable_work, 100);
+	return;
+}
+
+/*
+ * We only detect samples ready with this interrupt
+ * handler, and even then we just schedule our task.
+ */
+static irqreturn_t ts_interrupt(int irq, void *id)
+{
+	struct ft5x06_ts *ts = id;
+
+	disable_irq_nosync(ts->client->irq);
+	ts->int_disabled = 1;
+	queue_work(ts->wq, &ts->work);
+	return IRQ_HANDLED;
+}
+
+#define ID_G_THGROUP		0x80
+#define ID_G_PERIODMONITOR	0x89
+#define FT5X0X_REG_HEIGHT_B	0x8a
+#define FT5X0X_REG_MAX_FRAME	0x8b
+#define FT5X0X_REG_FEG_FRAME	0x8e
+#define FT5X0X_REG_LEFT_RIGHT_OFFSET	0x92
+#define FT5X0X_REG_UP_DOWN_OFFSET	0x93
+#define FT5X0X_REG_DISTANCE_LEFT_RIGHT	0x94
+#define FT5X0X_REG_DISTANCE_UP_DOWN	0x95
+#define FT5X0X_REG_MAX_X_HIGH		0x98
+#define FT5X0X_REG_MAX_X_LOW		0x99
+#define FT5X0X_REG_MAX_Y_HIGH		0x9a
+#define FT5X0X_REG_MAX_Y_LOW		0x9b
+#define FT5X0X_REG_K_X_HIGH		0x9c
+#define FT5X0X_REG_K_X_LOW		0x9d
+#define FT5X0X_REG_K_Y_HIGH		0x9e
+#define FT5X0X_REG_K_Y_LOW		0x9f
+
+#define ID_G_AUTO_CLB	0xa0
+#define ID_G_B_AREA_TH	0xae
+
+#ifdef DEBUG
+static void dumpRegs(struct ft5x06_ts *ts, unsigned start, unsigned end)
+{
+	u8 regbuf[512];
+	unsigned char startch[1] = { start };
+	int ret ;
+	struct i2c_msg readpkt[2] = {
+		{ts->client->addr, 0, 1, startch},
+		{ts->client->addr, I2C_M_RD, end-start+1, regbuf}
+	};
+	ret = i2c_transfer(ts->client->adapter, readpkt, ARRAY_SIZE(readpkt));
+	if (ret != ARRAY_SIZE(readpkt)) {
+		printk(KERN_WARNING "%s: i2c_transfer failed\n", client_name);
+	} else {
+		printk(KERN_ERR "registers %02x..%02x\n", start, end);
+		printHex(regbuf, end-start+1);
+	}
+}
+#endif
+
+static int ts_startup(struct ft5x06_ts *ts)
+{
+	int ret = 0;
+	if (ts == NULL)
+		return -EIO;
+
+	if (down_interruptible(&ts->sem))
+		return -EINTR;
+
+	if (ts->use_count++ != 0)
+		goto out;
+
+	ret = request_irq(ts->irq, &ts_interrupt, IRQF_TRIGGER_FALLING,
+			  client_name, ts);
+	if (ret) {
+		printk(KERN_ERR "%s: request_irq failed, irq:%i\n",
+		       client_name, ts->irq);
+		goto out;
+	}
+
+#ifdef DEBUG
+	set_mode(ts, FACTORY_MODE);
+	dumpRegs(ts, 0x4c, 0x4C);
+	write_reg(ts, 0x4C, 0x05);
+	dumpRegs(ts, 0, 0x4C);
+#endif
+	set_mode(ts, WORK_MODE);
+#ifdef DEBUG
+	dumpRegs(ts, 0x3b, 0x3b);
+	dumpRegs(ts, 0x6a, 0x6a);
+	dumpRegs(ts, ID_G_THGROUP, ID_G_PERIODMONITOR);
+	dumpRegs(ts, FT5X0X_REG_HEIGHT_B, FT5X0X_REG_K_Y_LOW);
+	dumpRegs(ts, ID_G_AUTO_CLB, ID_G_B_AREA_TH);
+#endif
+	set_mode(ts, WORK_MODE);
+
+ out:
+	if (ret)
+		ts->use_count--;
+	up(&ts->sem);
+	return ret;
+}
+
+/*
+ * Release touchscreen resources.  Disable IRQs.
+ */
+static void ts_shutdown(struct ft5x06_ts *ts)
+{
+	if (ts) {
+		down(&ts->sem);
+		if (--ts->use_count == 0) {
+			cancel_work_sync(&ts->work);
+			cancel_delayed_work_sync(&ts->reenable_work);
+			free_irq(ts->irq, ts);
+		}
+		up(&ts->sem);
+	}
+}
+/*-----------------------------------------------------------------------*/
+
+/* Return 0 if detection is successful, -ENODEV otherwise */
+static int detect_ft5x06(struct i2c_client *client)
+{
+	struct i2c_adapter *adapter = client->adapter;
+	char buffer;
+	struct i2c_msg pkt = {
+		client->addr,
+		I2C_M_RD,
+		sizeof(buffer),
+		&buffer
+	};
+	if (!i2c_check_functionality(adapter, I2C_FUNC_I2C))
+		return -ENODEV;
+	if (i2c_transfer(adapter, &pkt, 1) != 1)
+		return -ENODEV;
+	return 0;
+}
+
+/* Return 0 if detection is successful, -ENODEV otherwise */
+static int ts_detect(struct i2c_client *client,
+			  struct i2c_board_info *info)
+{
+	int err = detect_ft5x06(client);
+	if (!err)
+		strlcpy(info->type, "ft5x06-ts", I2C_NAME_SIZE);
+	return err;
+}
+
+static int ts_probe(struct i2c_client *client, const struct i2c_device_id *id)
+{
+	int err = 0;
+	struct ft5x06_ts *ts;
+	struct device *dev = &client->dev;
+        struct device_node *np = client->dev.of_node;
+	if (gts) {
+		printk(KERN_ERR "%s: Error gts is already allocated\n",
+		       client_name);
+		return -ENOMEM;
+	}
+	if (detect_ft5x06(client) != 0) {
+		dev_err(dev, "%s: Could not detect touch screen.\n",
+			client_name);
+		return -ENODEV;
+	}
+	ts = kzalloc(sizeof(struct ft5x06_ts), GFP_KERNEL);
+	if (!ts) {
+		dev_err(dev, "Couldn't allocate memory for %s\n", client_name);
+		return -ENOMEM;
+	}
+	sema_init(&ts->sem, 1);
+	ts->client = client;
+	ts->irq = client->irq ;
+
+	ts->gp = of_get_named_gpio(np, "wakeup-gpios", 0);
+	if (gpio_is_valid(ts->gp)) {
+		err = gpio_request(ts->gp, "ft5x06_irq");
+		if (err < 0) {
+			dev_err(&client->dev,
+				"request gpio failed, cannot wake up controller: %d\n",
+				err);
+			return err;
+		}
+	} else {
+		ts->gp = -1;
+	}
+
+	ts->wq = create_singlethread_workqueue("ft5x06_wq");
+	if (!ts->wq) {
+		pr_err("%s: create workqueue failed\n", __func__);
+		err = -ENOMEM;
+		goto err_create_wq_failed;
+	}
+	INIT_WORK(&ts->work, ts_work_func);
+	INIT_DELAYED_WORK(&ts->reenable_work, irq_reenable_work);
+
+	printk(KERN_INFO "%s: %s touchscreen irq=%i, gp=%i\n", __func__,
+	       client_name, ts->irq, ts->gp);
+	i2c_set_clientdata(client, ts);
+	err = ts_register(ts);
+	if (err == 0) {
+		gts = ts;
+		ts->procentry = proc_create(procentryname, 0x660, NULL,
+					    &proc_fops);
+		return 0;
+	}
+err_create_wq_failed:
+	printk(KERN_WARNING "%s: ts_register failed\n", client_name);
+	ts_deregister(ts);
+	kfree(ts);
+	return err;
+}
+
+static int ts_remove(struct i2c_client *client)
+{
+	struct ft5x06_ts *ts = i2c_get_clientdata(client);
+	remove_proc_entry(procentryname, 0);
+	if (ts == gts) {
+		gts = NULL;
+		if (ts->gp != -1)
+			gpio_free(ts->gp);
+		ts_deregister(ts);
+	} else {
+		printk(KERN_ERR "%s: Error ts!=gts\n", client_name);
+	}
+	if (ts->wq)
+		destroy_workqueue(ts->wq);
+	kfree(ts);
+	return 0;
+}
+
+
+/*-----------------------------------------------------------------------*/
+
+static const struct i2c_device_id ts_idtable[] = {
+	{ "ft5x06-ts", 0 },
+	{ }
+};
+
+static const struct of_device_id ft5x06_dt_ids[] = {
+       {
+               .compatible = "ft5x06,ft5x06-touch",
+       }, {
+               /* sentinel */
+       }
+};
+MODULE_DEVICE_TABLE(of, ft5x06_dt_ids);
+
+static struct i2c_driver ts_driver = {
+	.driver = {
+		.owner		= THIS_MODULE,
+		.name		= "ft5x06-ts",
+		.of_match_table = ft5x06_dt_ids,
+	},
+	.id_table	= ts_idtable,
+	.probe		= ts_probe,
+	.remove		= ts_remove,
+	.detect		= ts_detect,
+};
+
+static int __init ts_init(void)
+{
+	int res = i2c_add_driver(&ts_driver);
+	if (res) {
+		printk(KERN_WARNING "%s: i2c_add_driver failed\n", client_name);
+		return res;
+	}
+	//printk(KERN_INFO "%s: " __DATE__ "\n", client_name);
+	return 0;
+}
+
+static void __exit ts_exit(void)
+{
+	i2c_del_driver(&ts_driver);
+}
+
+MODULE_AUTHOR("Boundary Devices <info@boundarydevices.com>");
+MODULE_DESCRIPTION("I2C interface for FocalTech ft5x06 touch screen controller.");
+MODULE_LICENSE("GPL");
+
+module_init(ts_init)
+module_exit(ts_exit)
diff -ruN a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
--- a/drivers/input/touchscreen/Kconfig	2016-02-15 12:46:24.000000000 -0800
+++ b/drivers/input/touchscreen/Kconfig	2020-04-08 16:01:38.106232287 -0700
@@ -582,6 +582,21 @@
 
 	  To compile this driver as a module, choose M here: the
 	  module will be called edt-ft5x06.
+config TOUCHSCREEN_FT5X06
+	tristate "Focaltech FT5X06 5 point touchscreen"
+	select I2C
+	help
+	  If you say yes here you get touchscreen support through
+	  FocalTech's FT5X06 controller.
+
+config TOUCHSCREEN_FT5X06_SINGLE_TOUCH
+	bool "FT5X06 touchscreen as single-touch"
+	default N
+	depends on TOUCHSCREEN_FT5X06
+	help
+	  If you say yes here you get single-touch touchscreen support
+	  on the FT5X06 I2C controller.
+	  If you say "no", you'll get the normal 5-finger goodness.
 
 config TOUCHSCREEN_MIGOR
 	tristate "Renesas MIGO-R touchscreen"
diff -ruN a/drivers/input/touchscreen/Makefile b/drivers/input/touchscreen/Makefile
--- a/drivers/input/touchscreen/Makefile	2016-02-15 12:46:24.000000000 -0800
+++ b/drivers/input/touchscreen/Makefile	2020-04-08 16:02:51.086232008 -0700
@@ -29,6 +29,7 @@
 obj-$(CONFIG_TOUCHSCREEN_DA9052)	+= da9052_tsi.o
 obj-$(CONFIG_TOUCHSCREEN_DYNAPRO)	+= dynapro.o
 obj-$(CONFIG_TOUCHSCREEN_EDT_FT5X06)	+= edt-ft5x06.o
+obj-$(CONFIG_TOUCHSCREEN_FT5X06)	+= ft5x06_ts.o
 obj-$(CONFIG_TOUCHSCREEN_HAMPSHIRE)	+= hampshire.o
 obj-$(CONFIG_TOUCHSCREEN_GUNZE)		+= gunze.o
 obj-$(CONFIG_TOUCHSCREEN_EETI)		+= eeti_ts.o
/dts-v1/;

/ {
	#address-cells = <0x1>;
	#size-cells = <0x1>;
	compatible = "ti,am335x-bone-black", "ti,am335x-bone", "ti,am33xx";
	interrupt-parent = <0x1>;
	model = "TI AM335x BeagleBone Black";

	chosen {
	};

	aliases {
		i2c0 = "/ocp/i2c@44e0b000";
		i2c1 = "/ocp/i2c@4802a000";
		i2c2 = "/ocp/i2c@4819c000";
		serial0 = "/ocp/serial@44e09000";
		serial1 = "/ocp/serial@48022000";
		serial2 = "/ocp/serial@48024000";
		serial3 = "/ocp/serial@481a6000";
		serial4 = "/ocp/serial@481a8000";
		serial5 = "/ocp/serial@481aa000";
		d_can0 = "/ocp/can@481cc000";
		d_can1 = "/ocp/can@481d0000";
		usb0 = "/ocp/usb@47400000/usb@47401000";
		usb1 = "/ocp/usb@47400000/usb@47401800";
		phy0 = "/ocp/usb@47400000/usb-phy@47401300";
		phy1 = "/ocp/usb@47400000/usb-phy@47401b00";
		ethernet0 = "/ocp/ethernet@4a100000/slave@4a100200";
		ethernet1 = "/ocp/ethernet@4a100000/slave@4a100300";
		ecap2 = "/ocp/epwmss@48304000/ecap@48304100";
		mcasp0 = "/ocp/mcasp@48038000";
		mmc1 = "/ocp/mmc@48060000";
		mmc2 = "/ocp/mmc@481d8000";
		spi1 = "/ocp/spi@481a0000";
		rtc = "/ocp/rtc@44e3e000";
	};

	memory {
		device_type = "memory";
		reg = <0x80000000 0x10000000>;
	};

	cpus {
		#address-cells = <0x1>;
		#size-cells = <0x0>;

		cpu@0 {
			compatible = "arm,cortex-a8";
			device_type = "cpu";
			reg = <0x0>;
			voltage-tolerance = <0x2>;
			clocks = <0x2>;
			clock-names = "cpu";
			clock-latency = <0x493e0>;
			cpu0-supply = <0x3>;
		};
	};

	pmu {
		compatible = "arm,cortex-a8-pmu";
		interrupts = <0x3>;
	};

	soc {
		compatible = "ti,omap-infra";

		mpu {
			compatible = "ti,omap3-mpu";
			ti,hwmods = "mpu";
			sram = <0x4>;
		};
	};

	ocp {
		compatible = "simple-bus";
		#address-cells = <0x1>;
		#size-cells = <0x1>;
		ranges;
		ti,hwmods = "l3_main";

		l4_wkup@44c00000 {
			compatible = "ti,am3-l4-wkup", "simple-bus";
			#address-cells = <0x1>;
			#size-cells = <0x1>;
			ranges = <0x0 0x44c00000 0x280000>;

			wkup_m3@100000 {
				compatible = "ti,am3352-wkup-m3";
				reg = <0x100000 0x4000 0x180000 0x2000>;
				reg-names = "umem", "dmem";
				ti,hwmods = "wkup_m3";
				ti,pm-firmware = "am335x-pm-firmware.elf";
				linux,phandle = <0x27>;
				phandle = <0x27>;
			};

			prcm@200000 {
				compatible = "ti,am3-prcm";
				reg = <0x200000 0x4000>;

				clocks {
					#address-cells = <0x1>;
					#size-cells = <0x0>;

					clk_32768_ck {
						#clock-cells = <0x0>;
						compatible = "fixed-clock";
						clock-frequency = <0x8000>;
						linux,phandle = <0x15>;
						phandle = <0x15>;
					};

					clk_rc32k_ck {
						#clock-cells = <0x0>;
						compatible = "fixed-clock";
						clock-frequency = <0x7d00>;
						linux,phandle = <0x14>;
						phandle = <0x14>;
					};

					virt_19200000_ck {
						#clock-cells = <0x0>;
						compatible = "fixed-clock";
						clock-frequency = <0x124f800>;
						linux,phandle = <0x22>;
						phandle = <0x22>;
					};

					virt_24000000_ck {
						#clock-cells = <0x0>;
						compatible = "fixed-clock";
						clock-frequency = <0x16e3600>;
						linux,phandle = <0x23>;
						phandle = <0x23>;
					};

					virt_25000000_ck {
						#clock-cells = <0x0>;
						compatible = "fixed-clock";
						clock-frequency = <0x17d7840>;
						linux,phandle = <0x24>;
						phandle = <0x24>;
					};

					virt_26000000_ck {
						#clock-cells = <0x0>;
						compatible = "fixed-clock";
						clock-frequency = <0x18cba80>;
						linux,phandle = <0x25>;
						phandle = <0x25>;
					};

					tclkin_ck {
						#clock-cells = <0x0>;
						compatible = "fixed-clock";
						clock-frequency = <0xb71b00>;
						linux,phandle = <0x13>;
						phandle = <0x13>;
					};

					dpll_core_ck {
						#clock-cells = <0x0>;
						compatible = "ti,am3-dpll-core-clock";
						clocks = <0x5 0x5>;
						reg = <0x490 0x45c 0x468>;
						linux,phandle = <0x6>;
						phandle = <0x6>;
					};

					dpll_core_x2_ck {
						#clock-cells = <0x0>;
						compatible = "ti,am3-dpll-x2-clock";
						clocks = <0x6>;
						linux,phandle = <0x7>;
						phandle = <0x7>;
					};

					dpll_core_m4_ck {
						#clock-cells = <0x0>;
						compatible = "ti,divider-clock";
						clocks = <0x7>;
						ti,max-div = <0x1f>;
						reg = <0x480>;
						ti,index-starts-at-one;
						linux,phandle = <0xf>;
						phandle = <0xf>;
					};

					dpll_core_m5_ck {
						#clock-cells = <0x0>;
						compatible = "ti,divider-clock";
						clocks = <0x7>;
						ti,max-div = <0x1f>;
						reg = <0x484>;
						ti,index-starts-at-one;
						linux,phandle = <0x17>;
						phandle = <0x17>;
					};

					dpll_core_m6_ck {
						#clock-cells = <0x0>;
						compatible = "ti,divider-clock";
						clocks = <0x7>;
						ti,max-div = <0x1f>;
						reg = <0x4d8>;
						ti,index-starts-at-one;
					};

					dpll_mpu_ck {
						#clock-cells = <0x0>;
						compatible = "ti,am3-dpll-clock";
						clocks = <0x5 0x5>;
						reg = <0x488 0x420 0x42c>;
						linux,phandle = <0x2>;
						phandle = <0x2>;
					};

					dpll_mpu_m2_ck {
						#clock-cells = <0x0>;
						compatible = "ti,divider-clock";
						clocks = <0x2>;
						ti,max-div = <0x1f>;
						reg = <0x4a8>;
						ti,index-starts-at-one;
					};

					dpll_ddr_ck {
						#clock-cells = <0x0>;
						compatible = "ti,am3-dpll-no-gate-clock";
						clocks = <0x5 0x5>;
						reg = <0x494 0x434 0x440>;
						linux,phandle = <0x8>;
						phandle = <0x8>;
					};

					dpll_ddr_m2_ck {
						#clock-cells = <0x0>;
						compatible = "ti,divider-clock";
						clocks = <0x8>;
						ti,max-div = <0x1f>;
						reg = <0x4a0>;
						ti,index-starts-at-one;
						linux,phandle = <0x9>;
						phandle = <0x9>;
					};

					dpll_ddr_m2_div2_ck {
						#clock-cells = <0x0>;
						compatible = "fixed-factor-clock";
						clocks = <0x9>;
						clock-mult = <0x1>;
						clock-div = <0x2>;
					};

					dpll_disp_ck {
						#clock-cells = <0x0>;
						compatible = "ti,am3-dpll-no-gate-clock";
						clocks = <0x5 0x5>;
						reg = <0x498 0x448 0x454>;
						linux,phandle = <0xa>;
						phandle = <0xa>;
					};

					dpll_disp_m2_ck {
						#clock-cells = <0x0>;
						compatible = "ti,divider-clock";
						clocks = <0xa>;
						ti,max-div = <0x1f>;
						reg = <0x4a4>;
						ti,index-starts-at-one;
						ti,set-rate-parent;
						linux,phandle = <0x11>;
						phandle = <0x11>;
					};

					dpll_per_ck {
						#clock-cells = <0x0>;
						compatible = "ti,am3-dpll-no-gate-j-type-clock";
						clocks = <0x5 0x5>;
						reg = <0x48c 0x470 0x49c>;
						linux,phandle = <0xb>;
						phandle = <0xb>;
					};

					dpll_per_m2_ck {
						#clock-cells = <0x0>;
						compatible = "ti,divider-clock";
						clocks = <0xb>;
						ti,max-div = <0x1f>;
						reg = <0x4ac>;
						ti,index-starts-at-one;
						linux,phandle = <0xc>;
						phandle = <0xc>;
					};

					dpll_per_m2_div4_wkupdm_ck {
						#clock-cells = <0x0>;
						compatible = "fixed-factor-clock";
						clocks = <0xc>;
						clock-mult = <0x1>;
						clock-div = <0x4>;
					};

					dpll_per_m2_div4_ck {
						#clock-cells = <0x0>;
						compatible = "fixed-factor-clock";
						clocks = <0xc>;
						clock-mult = <0x1>;
						clock-div = <0x4>;
					};

					cefuse_fck {
						#clock-cells = <0x0>;
						compatible = "ti,gate-clock";
						clocks = <0x5>;
						ti,bit-shift = <0x1>;
						reg = <0xa20>;
					};

					clk_24mhz {
						#clock-cells = <0x0>;
						compatible = "fixed-factor-clock";
						clocks = <0xc>;
						clock-mult = <0x1>;
						clock-div = <0x8>;
						linux,phandle = <0xd>;
						phandle = <0xd>;
					};

					clkdiv32k_ck {
						#clock-cells = <0x0>;
						compatible = "fixed-factor-clock";
						clocks = <0xd>;
						clock-mult = <0x1>;
						clock-div = <0x2dc>;
						linux,phandle = <0xe>;
						phandle = <0xe>;
					};

					clkdiv32k_ick {
						#clock-cells = <0x0>;
						compatible = "ti,gate-clock";
						clocks = <0xe>;
						ti,bit-shift = <0x1>;
						reg = <0x14c>;
						linux,phandle = <0x12>;
						phandle = <0x12>;
					};

					l3_gclk {
						#clock-cells = <0x0>;
						compatible = "fixed-factor-clock";
						clocks = <0xf>;
						clock-mult = <0x1>;
						clock-div = <0x1>;
						linux,phandle = <0x10>;
						phandle = <0x10>;
					};

					pruss_ocp_gclk {
						#clock-cells = <0x0>;
						compatible = "ti,mux-clock";
						clocks = <0x10 0x11>;
						reg = <0x530>;
					};

					mmu_fck {
						#clock-cells = <0x0>;
						compatible = "ti,gate-clock";
						clocks = <0xf>;
						ti,bit-shift = <0x1>;
						reg = <0x914>;
					};

					timer1_fck {
						#clock-cells = <0x0>;
						compatible = "ti,mux-clock";
						clocks = <0x5 0x12 0x13 0x14 0x15>;
						reg = <0x528>;
					};

					timer2_fck {
						#clock-cells = <0x0>;
						compatible = "ti,mux-clock";
						clocks = <0x13 0x5 0x12>;
						reg = <0x508>;
					};

					timer3_fck {
						#clock-cells = <0x0>;
						compatible = "ti,mux-clock";
						clocks = <0x13 0x5 0x12>;
						reg = <0x50c>;
					};

					timer4_fck {
						#clock-cells = <0x0>;
						compatible = "ti,mux-clock";
						clocks = <0x13 0x5 0x12>;
						reg = <0x510>;
					};

					timer5_fck {
						#clock-cells = <0x0>;
						compatible = "ti,mux-clock";
						clocks = <0x13 0x5 0x12>;
						reg = <0x518>;
					};

					timer6_fck {
						#clock-cells = <0x0>;
						compatible = "ti,mux-clock";
						clocks = <0x13 0x5 0x12>;
						reg = <0x51c>;
					};

					timer7_fck {
						#clock-cells = <0x0>;
						compatible = "ti,mux-clock";
						clocks = <0x13 0x5 0x12>;
						reg = <0x504>;
					};

					usbotg_fck {
						#clock-cells = <0x0>;
						compatible = "ti,gate-clock";
						clocks = <0xb>;
						ti,bit-shift = <0x8>;
						reg = <0x47c>;
					};

					dpll_core_m4_div2_ck {
						#clock-cells = <0x0>;
						compatible = "fixed-factor-clock";
						clocks = <0xf>;
						clock-mult = <0x1>;
						clock-div = <0x2>;
						linux,phandle = <0x16>;
						phandle = <0x16>;
					};

					ieee5000_fck {
						#clock-cells = <0x0>;
						compatible = "ti,gate-clock";
						clocks = <0x16>;
						ti,bit-shift = <0x1>;
						reg = <0xe4>;
					};

					wdt1_fck {
						#clock-cells = <0x0>;
						compatible = "ti,mux-clock";
						clocks = <0x14 0x12>;
						reg = <0x538>;
					};

					l4_rtc_gclk {
						#clock-cells = <0x0>;
						compatible = "fixed-factor-clock";
						clocks = <0xf>;
						clock-mult = <0x1>;
						clock-div = <0x2>;
					};

					l4hs_gclk {
						#clock-cells = <0x0>;
						compatible = "fixed-factor-clock";
						clocks = <0xf>;
						clock-mult = <0x1>;
						clock-div = <0x1>;
					};

					l3s_gclk {
						#clock-cells = <0x0>;
						compatible = "fixed-factor-clock";
						clocks = <0x16>;
						clock-mult = <0x1>;
						clock-div = <0x1>;
					};

					l4fw_gclk {
						#clock-cells = <0x0>;
						compatible = "fixed-factor-clock";
						clocks = <0x16>;
						clock-mult = <0x1>;
						clock-div = <0x1>;
					};

					l4ls_gclk {
						#clock-cells = <0x0>;
						compatible = "fixed-factor-clock";
						clocks = <0x16>;
						clock-mult = <0x1>;
						clock-div = <0x1>;
						linux,phandle = <0x26>;
						phandle = <0x26>;
					};

					sysclk_div_ck {
						#clock-cells = <0x0>;
						compatible = "fixed-factor-clock";
						clocks = <0xf>;
						clock-mult = <0x1>;
						clock-div = <0x1>;
					};

					cpsw_125mhz_gclk {
						#clock-cells = <0x0>;
						compatible = "fixed-factor-clock";
						clocks = <0x17>;
						clock-mult = <0x1>;
						clock-div = <0x2>;
						linux,phandle = <0x46>;
						phandle = <0x46>;
					};

					cpsw_cpts_rft_clk {
						#clock-cells = <0x0>;
						compatible = "ti,mux-clock";
						clocks = <0x17 0xf>;
						reg = <0x520>;
						linux,phandle = <0x47>;
						phandle = <0x47>;
					};

					gpio0_dbclk_mux_ck {
						#clock-cells = <0x0>;
						compatible = "ti,mux-clock";
						clocks = <0x14 0x15 0x12>;
						reg = <0x53c>;
						linux,phandle = <0x18>;
						phandle = <0x18>;
					};

					gpio0_dbclk {
						#clock-cells = <0x0>;
						compatible = "ti,gate-clock";
						clocks = <0x18>;
						ti,bit-shift = <0x12>;
						reg = <0x408>;
					};

					gpio1_dbclk {
						#clock-cells = <0x0>;
						compatible = "ti,gate-clock";
						clocks = <0x12>;
						ti,bit-shift = <0x12>;
						reg = <0xac>;
					};

					gpio2_dbclk {
						#clock-cells = <0x0>;
						compatible = "ti,gate-clock";
						clocks = <0x12>;
						ti,bit-shift = <0x12>;
						reg = <0xb0>;
					};

					gpio3_dbclk {
						#clock-cells = <0x0>;
						compatible = "ti,gate-clock";
						clocks = <0x12>;
						ti,bit-shift = <0x12>;
						reg = <0xb4>;
					};

					lcd_gclk {
						#clock-cells = <0x0>;
						compatible = "ti,mux-clock";
						clocks = <0x11 0x17 0xc>;
						reg = <0x534>;
						ti,set-rate-parent;
						linux,phandle = <0x1a>;
						phandle = <0x1a>;
					};

					mmc_clk {
						#clock-cells = <0x0>;
						compatible = "fixed-factor-clock";
						clocks = <0xc>;
						clock-mult = <0x1>;
						clock-div = <0x2>;
					};

					gfx_fclk_clksel_ck {
						#clock-cells = <0x0>;
						compatible = "ti,mux-clock";
						clocks = <0xf 0xc>;
						ti,bit-shift = <0x1>;
						reg = <0x52c>;
						linux,phandle = <0x19>;
						phandle = <0x19>;
					};

					gfx_fck_div_ck {
						#clock-cells = <0x0>;
						compatible = "ti,divider-clock";
						clocks = <0x19>;
						reg = <0x52c>;
						ti,max-div = <0x2>;
					};

					sysclkout_pre_ck {
						#clock-cells = <0x0>;
						compatible = "ti,mux-clock";
						clocks = <0x15 0x10 0x9 0xc 0x1a>;
						reg = <0x700>;
						linux,phandle = <0x1b>;
						phandle = <0x1b>;
					};

					clkout2_div_ck {
						#clock-cells = <0x0>;
						compatible = "ti,divider-clock";
						clocks = <0x1b>;
						ti,bit-shift = <0x3>;
						ti,max-div = <0x8>;
						reg = <0x700>;
						linux,phandle = <0x20>;
						phandle = <0x20>;
					};

					dbg_sysclk_ck {
						#clock-cells = <0x0>;
						compatible = "ti,gate-clock";
						clocks = <0x5>;
						ti,bit-shift = <0x13>;
						reg = <0x414>;
						linux,phandle = <0x1c>;
						phandle = <0x1c>;
					};

					dbg_clka_ck {
						#clock-cells = <0x0>;
						compatible = "ti,gate-clock";
						clocks = <0xf>;
						ti,bit-shift = <0x1e>;
						reg = <0x414>;
						linux,phandle = <0x1d>;
						phandle = <0x1d>;
					};

					stm_pmd_clock_mux_ck {
						#clock-cells = <0x0>;
						compatible = "ti,mux-clock";
						clocks = <0x1c 0x1d>;
						ti,bit-shift = <0x16>;
						reg = <0x414>;
						linux,phandle = <0x1e>;
						phandle = <0x1e>;
					};

					trace_pmd_clk_mux_ck {
						#clock-cells = <0x0>;
						compatible = "ti,mux-clock";
						clocks = <0x1c 0x1d>;
						ti,bit-shift = <0x14>;
						reg = <0x414>;
						linux,phandle = <0x1f>;
						phandle = <0x1f>;
					};

					stm_clk_div_ck {
						#clock-cells = <0x0>;
						compatible = "ti,divider-clock";
						clocks = <0x1e>;
						ti,bit-shift = <0x1b>;
						ti,max-div = <0x40>;
						reg = <0x414>;
						ti,index-power-of-two;
					};

					trace_clk_div_ck {
						#clock-cells = <0x0>;
						compatible = "ti,divider-clock";
						clocks = <0x1f>;
						ti,bit-shift = <0x18>;
						ti,max-div = <0x40>;
						reg = <0x414>;
						ti,index-power-of-two;
					};

					clkout2_ck {
						#clock-cells = <0x0>;
						compatible = "ti,gate-clock";
						clocks = <0x20>;
						ti,bit-shift = <0x7>;
						reg = <0x700>;
					};
				};

				clockdomains {

					clk_24mhz_clkdm {
						compatible = "ti,clockdomain";
						clocks = <0x12>;
					};
				};
			};

			scm@210000 {
				compatible = "ti,am3-scm", "simple-bus";
				reg = <0x210000 0x2000>;
				#address-cells = <0x1>;
				#size-cells = <0x1>;
				#pinctrl-cells = <0x1>;
				ranges = <0x0 0x210000 0x2000>;

				pinmux@800 {
					compatible = "pinctrl-single";
					reg = <0x800 0x238>;
					#address-cells = <0x1>;
					#size-cells = <0x0>;
					#pinctrl-cells = <0x1>;
					pinctrl-single,register-width = <0x20>;
					pinctrl-single,function-mask = <0x7f>;
					pinctrl-names = "default";
					pinctrl-0 = <0x21>;

					pinmux_uart0_pins {
						pinctrl-single,pins = <0x170 0x30 0x174 0x0>;
						linux,phandle = <0x2e>;
						phandle = <0x2e>;
					};

					pinmux_clkout2_pin {
						pinctrl-single,pins = <0x1b4 0x3>;
						linux,phandle = <0x21>;
						phandle = <0x21>;
					};

					davinci_mdio_default {
						pinctrl-single,pins = <0x148 0x30 0x14c 0x10>;
						linux,phandle = <0x4a>;
						phandle = <0x4a>;
					};

					davinci_mdio_sleep {
						pinctrl-single,pins = <0x148 0x27 0x14c 0x27>;
						linux,phandle = <0x4b>;
						phandle = <0x4b>;
					};

					pinmux_i2c0_pins {
						pinctrl-single,pins = <0x188 0x30 0x18c 0x30>;
						linux,phandle = <0x32>;
						phandle = <0x32>;
					};

					pinmux_bone_lcd4_cape_lcd_pins {
						pinctrl-single,pins = <0xa0 0x8 0xa4 0x8 0xa8 0x8 0xac 0x8 0xb0 0x8 0xb4 0x8 0xb8 0x8 0xbc 0x8 0xc0 0x8 0xc4 0x8 0xc8 0x8 0xcc 0x8 0xd0 0x8 0xd4 0x8 0xd8 0x8 0xdc 0x8 0xe0 0x0 0xe4 0x0 0xe8 0x0 0xec 0x0 0x1a4 0x17>;
						linux,phandle = <0x52>;
						phandle = <0x52>;
					};

					user_leds_s0 {
						pinctrl-single,pins = <0x54 0x7 0x58 0x17 0x5c 0x7>;
					};

					gpio_keys_s0 {
						pinctrl-single,pins = <0x28 0x2f>;
						linux,phandle = <0x51>;
						phandle = <0x51>;
					};

					cpsw_default {
						pinctrl-single,pins = <0x110 0x30 0x114 0x0 0x118 0x30 0x11c 0x0 0x120 0x0 0x124 0x0 0x128 0x0 0x12c 0x30 0x130 0x30 0x134 0x30 0x138 0x30 0x13c 0x30 0x140 0x30>;
						linux,phandle = <0x48>;
						phandle = <0x48>;
					};

					cpsw_sleep {
						pinctrl-single,pins = <0x110 0x27 0x114 0x27 0x118 0x27 0x11c 0x27 0x120 0x27 0x124 0x27 0x128 0x27 0x12c 0x27 0x130 0x27 0x134 0x27 0x138 0x27 0x13c 0x27 0x140 0x27>;
						linux,phandle = <0x49>;
						phandle = <0x49>;
					};

					mmc1_pins {
						pinctrl-single,pins = <0xf0 0x30 0xf4 0x30 0xf8 0x30 0xfc 0x30 0x100 0x30 0x104 0x30 0x1a0 0x37 0x160 0x2f>;
						linux,phandle = <0x39>;
						phandle = <0x39>;
					};

					mmc1_pins_sleep {
						pinctrl-single,pins = <0xf0 0x27 0xf4 0x27 0xf8 0x27 0xfc 0x27 0x100 0x27 0x104 0x27 0x1a0 0x27 0x160 0x27>;
						linux,phandle = <0x3a>;
						phandle = <0x3a>;
					};

					pinmux_mmc2_pins {
						pinctrl-single,pins = <0x80 0x32 0x84 0x32 0x0 0x31 0x4 0x31 0x8 0x31 0xc 0x31 0x10 0x31 0x14 0x31 0x18 0x31 0x1c 0x31>;
						linux,phandle = <0x3b>;
						phandle = <0x3b>;
					};

					pinmux_wl12xx_gpio {
						pinctrl-single,pins = <0x7c 0x17>;
					};

					pinmux_backlight_pin_0 {
						pinctrl-single,pins = <0x19c 0x4>;
						linux,phandle = <0x44>;
						phandle = <0x44>;
					};

					pinmux_backlight_pin_sleep {
						pinctrl-single,pins = <0x19c 0x7>;
						linux,phandle = <0x45>;
						phandle = <0x45>;
					};

					pinmux_i2c1_pins {
						pinctrl-single,pins = <0x158 0x72 0x15c 0x72 0x3c 0x2f>;
						linux,phandle = <0x33>;
						phandle = <0x33>;
					};

					pinmux_i2c2_pins {
						pinctrl-single,pins = <0x178 0x33 0x17c 0x33>;
						linux,phandle = <0x35>;
						phandle = <0x35>;
					};

					pinmux_bb_spi1_pins {
						pinctrl-single,pins = <0x190 0x33 0x194 0x33 0x198 0x13 0x164 0x12>;
						linux,phandle = <0x3f>;
						phandle = <0x3f>;
					};

					pinmux_uart1_pins {
						pinctrl-single,pins = <0x180 0x30 0x184 0x0>;
						linux,phandle = <0x2f>;
						phandle = <0x2f>;
					};

					pinmux_uart2_pins {
						pinctrl-single,pins = <0x150 0x31 0x154 0x1>;
						linux,phandle = <0x30>;
						phandle = <0x30>;
					};

					pinmux_uart4_pins {
						pinctrl-single,pins = <0x70 0x36 0x74 0x6>;
						linux,phandle = <0x31>;
						phandle = <0x31>;
					};

					mcasp0_pins {
						pinctrl-single,pins = <0x1ac 0x30 0x19c 0x2 0x194 0x10 0x190 0x0 0x6c 0x7>;
						linux,phandle = <0x4f>;
						phandle = <0x4f>;
					};

					mcasp0_pins_sleep {
						pinctrl-single,pins = <0x1ac 0x27 0x19c 0x27 0x194 0x27 0x190 0x27 0x6c 0x27>;
						linux,phandle = <0x50>;
						phandle = <0x50>;
					};
				};

				scm_conf@0 {
					compatible = "syscon";
					reg = <0x0 0x800>;
					#address-cells = <0x1>;
					#size-cells = <0x1>;
					linux,phandle = <0x3d>;
					phandle = <0x3d>;

					clocks {
						#address-cells = <0x1>;
						#size-cells = <0x0>;

						sys_clkin_ck {
							#clock-cells = <0x0>;
							compatible = "ti,mux-clock";
							clocks = <0x22 0x23 0x24 0x25>;
							ti,bit-shift = <0x16>;
							reg = <0x40>;
							linux,phandle = <0x5>;
							phandle = <0x5>;
						};

						adc_tsc_fck {
							#clock-cells = <0x0>;
							compatible = "fixed-factor-clock";
							clocks = <0x5>;
							clock-mult = <0x1>;
							clock-div = <0x1>;
						};

						dcan0_fck {
							#clock-cells = <0x0>;
							compatible = "fixed-factor-clock";
							clocks = <0x5>;
							clock-mult = <0x1>;
							clock-div = <0x1>;
							linux,phandle = <0x3c>;
							phandle = <0x3c>;
						};

						dcan1_fck {
							#clock-cells = <0x0>;
							compatible = "fixed-factor-clock";
							clocks = <0x5>;
							clock-mult = <0x1>;
							clock-div = <0x1>;
							linux,phandle = <0x3e>;
							phandle = <0x3e>;
						};

						mcasp0_fck {
							#clock-cells = <0x0>;
							compatible = "fixed-factor-clock";
							clocks = <0x5>;
							clock-mult = <0x1>;
							clock-div = <0x1>;
						};

						mcasp1_fck {
							#clock-cells = <0x0>;
							compatible = "fixed-factor-clock";
							clocks = <0x5>;
							clock-mult = <0x1>;
							clock-div = <0x1>;
						};

						smartreflex0_fck {
							#clock-cells = <0x0>;
							compatible = "fixed-factor-clock";
							clocks = <0x5>;
							clock-mult = <0x1>;
							clock-div = <0x1>;
						};

						smartreflex1_fck {
							#clock-cells = <0x0>;
							compatible = "fixed-factor-clock";
							clocks = <0x5>;
							clock-mult = <0x1>;
							clock-div = <0x1>;
						};

						sha0_fck {
							#clock-cells = <0x0>;
							compatible = "fixed-factor-clock";
							clocks = <0x5>;
							clock-mult = <0x1>;
							clock-div = <0x1>;
						};

						aes0_fck {
							#clock-cells = <0x0>;
							compatible = "fixed-factor-clock";
							clocks = <0x5>;
							clock-mult = <0x1>;
							clock-div = <0x1>;
						};

						rng_fck {
							#clock-cells = <0x0>;
							compatible = "fixed-factor-clock";
							clocks = <0x5>;
							clock-mult = <0x1>;
							clock-div = <0x1>;
						};

						ehrpwm0_tbclk@44e10664 {
							#clock-cells = <0x0>;
							compatible = "ti,gate-clock";
							clocks = <0x26>;
							ti,bit-shift = <0x0>;
							reg = <0x664>;
						};

						ehrpwm1_tbclk@44e10664 {
							#clock-cells = <0x0>;
							compatible = "ti,gate-clock";
							clocks = <0x26>;
							ti,bit-shift = <0x1>;
							reg = <0x664>;
						};

						ehrpwm2_tbclk@44e10664 {
							#clock-cells = <0x0>;
							compatible = "ti,gate-clock";
							clocks = <0x26>;
							ti,bit-shift = <0x2>;
							reg = <0x664>;
						};
					};
				};

				wkup_m3_ipc@1324 {
					compatible = "ti,am3352-wkup-m3-ipc";
					reg = <0x1324 0x24>;
					interrupts = <0x4e>;
					ti,rproc = <0x27>;
					mboxes = <0x28 0x29>;
				};

				dma-router@f90 {
					compatible = "ti,am335x-edma-crossbar";
					reg = <0xf90 0x40>;
					#dma-cells = <0x3>;
					dma-requests = <0x20>;
					dma-masters = <0x2a>;
					linux,phandle = <0x37>;
					phandle = <0x37>;
				};

				clockdomains {
				};
			};
		};

		interrupt-controller@48200000 {
			compatible = "ti,am33xx-intc";
			interrupt-controller;
			#interrupt-cells = <0x1>;
			reg = <0x48200000 0x1000>;
			linux,phandle = <0x1>;
			phandle = <0x1>;
		};

		edma@49000000 {
			compatible = "ti,edma3-tpcc";
			ti,hwmods = "tpcc";
			reg = <0x49000000 0x10000>;
			reg-names = "edma3_cc";
			interrupts = <0xc 0xd 0xe>;
			interrupt-names = "edma3_ccint", "edma3_mperr", "edma3_ccerrint";
			dma-requests = <0x40>;
			#dma-cells = <0x2>;
			ti,tptcs = <0x2b 0x7 0x2c 0x5 0x2d 0x0>;
			ti,edma-memcpy-channels = <0x14 0x15>;
			linux,phandle = <0x2a>;
			phandle = <0x2a>;
		};

		tptc@49800000 {
			compatible = "ti,edma3-tptc";
			ti,hwmods = "tptc0";
			reg = <0x49800000 0x100000>;
			interrupts = <0x70>;
			interrupt-names = "edma3_tcerrint";
			linux,phandle = <0x2b>;
			phandle = <0x2b>;
		};

		tptc@49900000 {
			compatible = "ti,edma3-tptc";
			ti,hwmods = "tptc1";
			reg = <0x49900000 0x100000>;
			interrupts = <0x71>;
			interrupt-names = "edma3_tcerrint";
			linux,phandle = <0x2c>;
			phandle = <0x2c>;
		};

		tptc@49a00000 {
			compatible = "ti,edma3-tptc";
			ti,hwmods = "tptc2";
			reg = <0x49a00000 0x100000>;
			interrupts = <0x72>;
			interrupt-names = "edma3_tcerrint";
			linux,phandle = <0x2d>;
			phandle = <0x2d>;
		};

		emif@4c000000 {
			compatible = "ti,emif-am3352";
			reg = <0x4c000000 0x1000>;
			sram = <0x4>;
		};

		gpio@44e07000 {
			compatible = "ti,omap4-gpio";
			ti,hwmods = "gpio1";
			gpio-controller;
			#gpio-cells = <0x2>;
			interrupt-controller;
			#interrupt-cells = <0x2>;
			reg = <0x44e07000 0x1000>;
			interrupts = <0x60>;
			linux,phandle = <0x36>;
			phandle = <0x36>;
		};

		gpio@4804c000 {
			compatible = "ti,omap4-gpio";
			ti,hwmods = "gpio2";
			gpio-controller;
			#gpio-cells = <0x2>;
			interrupt-controller;
			#interrupt-cells = <0x2>;
			reg = <0x4804c000 0x1000>;
			interrupts = <0x62>;
			linux,phandle = <0x34>;
			phandle = <0x34>;
		};

		gpio@481ac000 {
			compatible = "ti,omap4-gpio";
			ti,hwmods = "gpio3";
			gpio-controller;
			#gpio-cells = <0x2>;
			interrupt-controller;
			#interrupt-cells = <0x2>;
			reg = <0x481ac000 0x1000>;
			interrupts = <0x20>;
		};

		gpio@481ae000 {
			compatible = "ti,omap4-gpio";
			ti,hwmods = "gpio4";
			gpio-controller;
			#gpio-cells = <0x2>;
			interrupt-controller;
			#interrupt-cells = <0x2>;
			reg = <0x481ae000 0x1000>;
			interrupts = <0x3e>;
		};

		serial@44e09000 {
			compatible = "ti,am3352-uart", "ti,omap3-uart";
			ti,hwmods = "uart1";
			clock-frequency = <0x2dc6c00>;
			reg = <0x44e09000 0x2000>;
			interrupts = <0x48>;
			status = "okay";
			dmas = <0x2a 0x1a 0x0 0x2a 0x1b 0x0>;
			dma-names = "tx", "rx";
			pinctrl-names = "default";
			pinctrl-0 = <0x2e>;
		};

		serial@48022000 {
			compatible = "ti,am3352-uart", "ti,omap3-uart";
			ti,hwmods = "uart2";
			clock-frequency = <0x2dc6c00>;
			reg = <0x48022000 0x2000>;
			interrupts = <0x49>;
			status = "okay";
			dmas = <0x2a 0x1c 0x0 0x2a 0x1d 0x0>;
			dma-names = "tx", "rx";
			pinctrl-names = "default";
			pinctrl-0 = <0x2f>;
		};

		serial@48024000 {
			compatible = "ti,am3352-uart", "ti,omap3-uart";
			ti,hwmods = "uart3";
			clock-frequency = <0x2dc6c00>;
			reg = <0x48024000 0x2000>;
			interrupts = <0x4a>;
			status = "okay";
			dmas = <0x2a 0x1e 0x0 0x2a 0x1f 0x0>;
			dma-names = "tx", "rx";
			pinctrl-names = "default";
			pinctrl-0 = <0x30>;
		};

		serial@481a6000 {
			compatible = "ti,omap3-uart";
			ti,hwmods = "uart4";
			clock-frequency = <0x2dc6c00>;
			reg = <0x481a6000 0x2000>;
			interrupts = <0x2c>;
			status = "disabled";
		};

		serial@481a8000 {
			compatible = "ti,omap3-uart";
			ti,hwmods = "uart5";
			clock-frequency = <0x2dc6c00>;
			reg = <0x481a8000 0x2000>;
			interrupts = <0x2d>;
			status = "okay";
			pinctrl-names = "default";
			pinctrl-0 = <0x31>;
		};

		serial@481aa000 {
			compatible = "ti,omap3-uart";
			ti,hwmods = "uart6";
			clock-frequency = <0x2dc6c00>;
			reg = <0x481aa000 0x2000>;
			interrupts = <0x2e>;
			status = "disabled";
		};

		i2c@44e0b000 {
			compatible = "ti,omap4-i2c";
			#address-cells = <0x1>;
			#size-cells = <0x0>;
			ti,hwmods = "i2c1";
			reg = <0x44e0b000 0x1000>;
			interrupts = <0x46>;
			status = "okay";
			pinctrl-names = "default";
			pinctrl-0 = <0x32>;
			clock-frequency = <0x61a80>;

			tps@24 {
				compatible = "ti,tps65217";
				reg = <0x24>;
				ti,pmic-shutdown-controller;

				regulators {
					#address-cells = <0x1>;
					#size-cells = <0x0>;

					regulator@0 {
						reg = <0x0>;
						regulator-compatible = "dcdc1";
						regulator-name = "vdds_dpr";
						regulator-always-on;
					};

					regulator@1 {
						reg = <0x1>;
						regulator-compatible = "dcdc2";
						regulator-name = "vdd_mpu";
						regulator-min-microvolt = <0xe1d48>;
						regulator-max-microvolt = <0x1437c8>;
						regulator-boot-on;
						regulator-always-on;
						linux,phandle = <0x3>;
						phandle = <0x3>;
					};

					regulator@2 {
						reg = <0x2>;
						regulator-compatible = "dcdc3";
						regulator-name = "vdd_core";
						regulator-min-microvolt = <0xe1d48>;
						regulator-max-microvolt = <0x118c30>;
						regulator-boot-on;
						regulator-always-on;
					};

					regulator@3 {
						reg = <0x3>;
						regulator-compatible = "ldo1";
						regulator-name = "vio,vrtc,vdds";
						regulator-always-on;
					};

					regulator@4 {
						reg = <0x4>;
						regulator-compatible = "ldo2";
						regulator-name = "vdd_3v3aux";
						regulator-always-on;
					};

					regulator@5 {
						reg = <0x5>;
						regulator-compatible = "ldo3";
						regulator-name = "vdd_1v8";
						regulator-always-on;
						regulator-min-microvolt = <0x1b7740>;
						regulator-max-microvolt = <0x1b7740>;
					};

					regulator@6 {
						reg = <0x6>;
						regulator-compatible = "ldo4";
						regulator-name = "vdd_3v3a";
						regulator-always-on;
					};
				};
			};
		};

		i2c@4802a000 {
			compatible = "ti,omap4-i2c";
			#address-cells = <0x1>;
			#size-cells = <0x0>;
			ti,hwmods = "i2c2";
			reg = <0x4802a000 0x1000>;
			interrupts = <0x47>;
			status = "okay";
			pinctrl-names = "default";
			pinctrl-0 = <0x33>;
			clock-frequency = <0x186a0>;

			tca8418@34 {
				compatible = "ti,tca8418";
				reg = <0x34>;
				interrupt-parent = <0x34>;
				interrupts = <0xf 0x1>;
				irq-gpio = <0x34 0xf 0x1>;
				keypad,num-rows = <0x8>;
				keypad,num-columns = <0xa>;
				linux,keymap = <0x2001a 0x3001b 0x40027 0x50028 0x6004e 0x606000c 0x607000d 0x1000002 0x1010003 0x1020004 0x1030005 0x1040006 0x1050007 0x1060008 0x2000009 0x201000a 0x202000b 0x2030010 0x2040011 0x2050012 0x2060013 0x3000014 0x3010015 0x3020016 0x3030017 0x3040018 0x3050019 0x306001e 0x400001f 0x4010020 0x4020021 0x4030022 0x4040023 0x4050024 0x4060025 0x5000026 0x5010039 0x502002c 0x503002d 0x504002e 0x505002f 0x5060030 0x1070031 0x2070032 0x307000e 0x407000f 0x507003a 0x6000038 0x6010069 0x6020067 0x603006c 0x604006a 0x605001c 0x7000001 0x7010029 0x702002a 0x7030033 0x7040034 0x7050035 0x706001a 0x707001b>;
			};
		};

		i2c@4819c000 {
			compatible = "ti,omap4-i2c";
			#address-cells = <0x1>;
			#size-cells = <0x0>;
			ti,hwmods = "i2c3";
			reg = <0x4819c000 0x1000>;
			interrupts = <0x1e>;
			status = "okay";
			pinctrl-names = "default";
			pinctrl-0 = <0x35>;
			clock-frequency = <0x186a0>;

			tca6416@20 {
				compatible = "ti,tca6416";
				gpio-controller;
				reg = <0x20>;
			};

			ft5506@38 {
				status = "okay";
				compatible = "edt,edt-ft5406", "edt,edt-ft5x06", "ft5x06,ft5x06-touch";
				reg = <0x38>;
				interrupt-parent = <0x36>;
				interrupts = <0x1b 0x0>;
				irq-gpio = <0x36 0x1b 0x0>;
			};

			pcf8563@51 {
				compatible = "nxp,pcf8563";
				reg = <0x51>;
			};

			eeprom@50 {
				compatible = "at,24c256";
				reg = <0x50>;
			};

			cape_eeprom0@54 {
				compatible = "at,24c256";
				reg = <0x54>;
				#address-cells = <0x1>;
				#size-cells = <0x1>;

				cape_data@0 {
					reg = <0x0 0x100>;
				};
			};

			cape_eeprom1@55 {
				compatible = "at,24c256";
				reg = <0x55>;
				#address-cells = <0x1>;
				#size-cells = <0x1>;

				cape_data@0 {
					reg = <0x0 0x100>;
				};
			};

			cape_eeprom2@56 {
				compatible = "at,24c256";
				reg = <0x56>;
				#address-cells = <0x1>;
				#size-cells = <0x1>;

				cape_data@0 {
					reg = <0x0 0x100>;
				};
			};

			cape_eeprom3@57 {
				compatible = "at,24c256";
				reg = <0x57>;
				#address-cells = <0x1>;
				#size-cells = <0x1>;

				cape_data@0 {
					reg = <0x0 0x100>;
				};
			};
		};

		mmc@48060000 {
			compatible = "ti,omap4-hsmmc";
			ti,hwmods = "mmc1";
			ti,dual-volt;
			ti,needs-special-reset;
			ti,needs-special-hs-handling;
			dmas = <0x37 0x18 0x0 0x0 0x37 0x19 0x0 0x0>;
			dma-names = "tx", "rx";
			interrupts = <0x40>;
			interrupt-parent = <0x1>;
			reg = <0x48060000 0x1000>;
			status = "okay";
			bus-width = <0x4>;
			vmmc-supply = <0x38>;
			pinctrl-names = "default", "sleep";
			pinctrl-0 = <0x39>;
			pinctrl-1 = <0x3a>;
			cd-gpios = <0x36 0x6 0x0>;
			cd-inverted;
		};

		mmc@481d8000 {
			compatible = "ti,omap4-hsmmc";
			ti,hwmods = "mmc2";
			ti,needs-special-reset;
			dmas = <0x2a 0x2 0x0 0x2a 0x3 0x0>;
			dma-names = "tx", "rx";
			interrupts = <0x1c>;
			interrupt-parent = <0x1>;
			reg = <0x481d8000 0x1000>;
			status = "okay";
			vmmc-supply = <0x38>;
			bus-width = <0x8>;
			pinctrl-names = "default";
			pinctrl-0 = <0x3b>;
		};

		mmc@47810000 {
			compatible = "ti,omap4-hsmmc";
			ti,hwmods = "mmc3";
			ti,needs-special-reset;
			interrupts = <0x1d>;
			interrupt-parent = <0x1>;
			reg = <0x47810000 0x1000>;
			status = "disabled";
		};

		spinlock@480ca000 {
			compatible = "ti,omap4-hwspinlock";
			reg = <0x480ca000 0x1000>;
			ti,hwmods = "spinlock";
			#hwlock-cells = <0x1>;
		};

		wdt@44e35000 {
			compatible = "ti,omap3-wdt";
			ti,hwmods = "wd_timer2";
			reg = <0x44e35000 0x1000>;
			interrupts = <0x5b>;
		};

		can@481cc000 {
			compatible = "ti,am3352-d_can";
			ti,hwmods = "d_can0";
			reg = <0x481cc000 0x2000>;
			clocks = <0x3c>;
			clock-names = "fck";
			syscon-raminit = <0x3d 0x644 0x0>;
			interrupts = <0x34>;
			status = "disabled";
		};

		can@481d0000 {
			compatible = "ti,am3352-d_can";
			ti,hwmods = "d_can1";
			reg = <0x481d0000 0x2000>;
			clocks = <0x3e>;
			clock-names = "fck";
			syscon-raminit = <0x3d 0x644 0x1>;
			interrupts = <0x37>;
			status = "disabled";
		};

		mailbox@480C8000 {
			compatible = "ti,omap4-mailbox";
			reg = <0x480c8000 0x200>;
			interrupts = <0x4d>;
			ti,hwmods = "mailbox";
			#mbox-cells = <0x1>;
			ti,mbox-num-users = <0x4>;
			ti,mbox-num-fifos = <0x8>;
			linux,phandle = <0x28>;
			phandle = <0x28>;

			wkup_m3 {
				ti,mbox-send-noirq;
				ti,mbox-tx = <0x0 0x0 0x0>;
				ti,mbox-rx = <0x0 0x0 0x3>;
				linux,phandle = <0x29>;
				phandle = <0x29>;
			};

			mbox_pru0 {
				ti,mbox-tx = <0x2 0x0 0x0>;
				ti,mbox-rx = <0x3 0x0 0x0>;
				linux,phandle = <0x4d>;
				phandle = <0x4d>;
			};

			mbox_pru1 {
				ti,mbox-tx = <0x4 0x0 0x0>;
				ti,mbox-rx = <0x5 0x0 0x0>;
				linux,phandle = <0x4e>;
				phandle = <0x4e>;
			};
		};

		timer@44e31000 {
			compatible = "ti,am335x-timer-1ms";
			reg = <0x44e31000 0x400>;
			interrupts = <0x43>;
			ti,hwmods = "timer1";
			ti,timer-alwon;
		};

		timer@48040000 {
			compatible = "ti,am335x-timer";
			reg = <0x48040000 0x400>;
			interrupts = <0x44>;
			ti,hwmods = "timer2";
		};

		timer@48042000 {
			compatible = "ti,am335x-timer";
			reg = <0x48042000 0x400>;
			interrupts = <0x45>;
			ti,hwmods = "timer3";
		};

		timer@48044000 {
			compatible = "ti,am335x-timer";
			reg = <0x48044000 0x400>;
			interrupts = <0x5c>;
			ti,hwmods = "timer4";
			ti,timer-pwm;
		};

		timer@48046000 {
			compatible = "ti,am335x-timer";
			reg = <0x48046000 0x400>;
			interrupts = <0x5d>;
			ti,hwmods = "timer5";
			ti,timer-pwm;
		};

		timer@48048000 {
			compatible = "ti,am335x-timer";
			reg = <0x48048000 0x400>;
			interrupts = <0x5e>;
			ti,hwmods = "timer6";
			ti,timer-pwm;
		};

		timer@4804a000 {
			compatible = "ti,am335x-timer";
			reg = <0x4804a000 0x400>;
			interrupts = <0x5f>;
			ti,hwmods = "timer7";
			ti,timer-pwm;
		};

		rtc@44e3e000 {
			compatible = "nxp,pcf8563", "ti,am3352-rtc";
			reg = <0x44e3e000 0x1000>;
			interrupts = <0x4b 0x4c>;
			ti,hwmods = "rtc";
			system-power-controller;
		};

		spi@48030000 {
			compatible = "ti,omap4-mcspi";
			#address-cells = <0x1>;
			#size-cells = <0x0>;
			reg = <0x48030000 0x400>;
			interrupts = <0x41>;
			ti,spi-num-cs = <0x2>;
			ti,hwmods = "spi0";
			dmas = <0x2a 0x10 0x0 0x2a 0x11 0x0 0x2a 0x12 0x0 0x2a 0x13 0x0>;
			dma-names = "tx0", "rx0", "tx1", "rx1";
			status = "disabled";
		};

		spi@481a0000 {
			compatible = "ti,omap4-mcspi";
			#address-cells = <0x1>;
			#size-cells = <0x0>;
			reg = <0x481a0000 0x400>;
			interrupts = <0x7d>;
			ti,spi-num-cs = <0x2>;
			ti,hwmods = "spi1";
			dmas = <0x2a 0x2a 0x0 0x2a 0x2b 0x0 0x2a 0x2c 0x0 0x2a 0x2d 0x0>;
			dma-names = "tx0", "rx0", "tx1", "rx1";
			status = "okay";
			pinctrl-names = "default";
			pinctrl-0 = <0x3f>;

			channel@1 {
				#address-cells = <0x1>;
				#size-cells = <0x0>;
				compatible = "linux,spidev";
				reg = <0x1>;
				spi-max-frequency = <0xf42400>;
			};
		};

		usb@47400000 {
			compatible = "ti,am33xx-usb";
			reg = <0x47400000 0x1000>;
			ranges;
			#address-cells = <0x1>;
			#size-cells = <0x1>;
			ti,hwmods = "usb_otg_hs";
			status = "okay";

			control@44e10620 {
				compatible = "ti,am335x-usb-ctrl-module";
				reg = <0x44e10620 0x10 0x44e10648 0x4>;
				reg-names = "phy_ctrl", "wakeup";
				status = "okay";
				linux,phandle = <0x40>;
				phandle = <0x40>;
			};

			usb-phy@47401300 {
				compatible = "ti,am335x-usb-phy";
				reg = <0x47401300 0x100>;
				reg-names = "phy";
				status = "okay";
				ti,ctrl_mod = <0x40>;
				linux,phandle = <0x41>;
				phandle = <0x41>;
			};

			usb@47401000 {
				compatible = "ti,musb-am33xx";
				status = "okay";
				reg = <0x47401400 0x400 0x47401000 0x200>;
				reg-names = "mc", "control";
				interrupts = <0x12>;
				interrupt-names = "mc";
				dr_mode = "otg";
				mentor,multipoint = <0x1>;
				mentor,num-eps = <0x10>;
				mentor,ram-bits = <0xc>;
				mentor,power = <0x1f4>;
				phys = <0x41>;
				dmas = <0x42 0x0 0x0 0x42 0x1 0x0 0x42 0x2 0x0 0x42 0x3 0x0 0x42 0x4 0x0 0x42 0x5 0x0 0x42 0x6 0x0 0x42 0x7 0x0 0x42 0x8 0x0 0x42 0x9 0x0 0x42 0xa 0x0 0x42 0xb 0x0 0x42 0xc 0x0 0x42 0xd 0x0 0x42 0xe 0x0 0x42 0x0 0x1 0x42 0x1 0x1 0x42 0x2 0x1 0x42 0x3 0x1 0x42 0x4 0x1 0x42 0x5 0x1 0x42 0x6 0x1 0x42 0x7 0x1 0x42 0x8 0x1 0x42 0x9 0x1 0x42 0xa 0x1 0x42 0xb 0x1 0x42 0xc 0x1 0x42 0xd 0x1 0x42 0xe 0x1>;
				dma-names = "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", "rx8", "rx9", "rx10", "rx11", "rx12", "rx13", "rx14", "rx15", "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7", "tx8", "tx9", "tx10", "tx11", "tx12", "tx13", "tx14", "tx15";
			};

			usb-phy@47401b00 {
				compatible = "ti,am335x-usb-phy";
				reg = <0x47401b00 0x100>;
				reg-names = "phy";
				status = "okay";
				ti,ctrl_mod = <0x40>;
				linux,phandle = <0x43>;
				phandle = <0x43>;
			};

			usb@47401800 {
				compatible = "ti,musb-am33xx";
				status = "okay";
				reg = <0x47401c00 0x400 0x47401800 0x200>;
				reg-names = "mc", "control";
				interrupts = <0x13>;
				interrupt-names = "mc";
				dr_mode = "host";
				mentor,multipoint = <0x1>;
				mentor,num-eps = <0x10>;
				mentor,ram-bits = <0xc>;
				mentor,power = <0x1f4>;
				phys = <0x43>;
				dmas = <0x42 0xf 0x0 0x42 0x10 0x0 0x42 0x11 0x0 0x42 0x12 0x0 0x42 0x13 0x0 0x42 0x14 0x0 0x42 0x15 0x0 0x42 0x16 0x0 0x42 0x17 0x0 0x42 0x18 0x0 0x42 0x19 0x0 0x42 0x1a 0x0 0x42 0x1b 0x0 0x42 0x1c 0x0 0x42 0x1d 0x0 0x42 0xf 0x1 0x42 0x10 0x1 0x42 0x11 0x1 0x42 0x12 0x1 0x42 0x13 0x1 0x42 0x14 0x1 0x42 0x15 0x1 0x42 0x16 0x1 0x42 0x17 0x1 0x42 0x18 0x1 0x42 0x19 0x1 0x42 0x1a 0x1 0x42 0x1b 0x1 0x42 0x1c 0x1 0x42 0x1d 0x1>;
				dma-names = "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", "rx8", "rx9", "rx10", "rx11", "rx12", "rx13", "rx14", "rx15", "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7", "tx8", "tx9", "tx10", "tx11", "tx12", "tx13", "tx14", "tx15";
			};

			dma-controller@47402000 {
				compatible = "ti,am3359-cppi41";
				reg = <0x47400000 0x1000 0x47402000 0x1000 0x47403000 0x1000 0x47404000 0x4000>;
				reg-names = "glue", "controller", "scheduler", "queuemgr";
				interrupts = <0x11>;
				interrupt-names = "glue";
				#dma-cells = <0x2>;
				#dma-channels = <0x1e>;
				#dma-requests = <0x100>;
				status = "okay";
				linux,phandle = <0x42>;
				phandle = <0x42>;
			};
		};

		epwmss@48300000 {
			compatible = "ti,am33xx-pwmss";
			reg = <0x48300000 0x10>;
			ti,hwmods = "epwmss0";
			#address-cells = <0x1>;
			#size-cells = <0x1>;
			status = "disabled";
			ranges = <0x48300100 0x48300100 0x80 0x48300180 0x48300180 0x80 0x48300200 0x48300200 0x80>;

			ecap@48300100 {
				compatible = "ti,am33xx-ecap";
				#pwm-cells = <0x3>;
				reg = <0x48300100 0x80>;
				interrupts = <0x1f>;
				interrupt-names = "ecap0";
				ti,hwmods = "ecap0";
				status = "disabled";
			};

			ehrpwm@48300200 {
				compatible = "ti,am33xx-ehrpwm";
				#pwm-cells = <0x3>;
				reg = <0x48300200 0x80>;
				ti,hwmods = "ehrpwm0";
				status = "disabled";
			};
		};

		epwmss@48302000 {
			compatible = "ti,am33xx-pwmss";
			reg = <0x48302000 0x10>;
			ti,hwmods = "epwmss1";
			#address-cells = <0x1>;
			#size-cells = <0x1>;
			status = "disabled";
			ranges = <0x48302100 0x48302100 0x80 0x48302180 0x48302180 0x80 0x48302200 0x48302200 0x80>;

			ecap@48302100 {
				compatible = "ti,am33xx-ecap";
				#pwm-cells = <0x3>;
				reg = <0x48302100 0x80>;
				interrupts = <0x2f>;
				interrupt-names = "ecap1";
				ti,hwmods = "ecap1";
				status = "disabled";
			};

			ehrpwm@48302200 {
				compatible = "ti,am33xx-ehrpwm";
				#pwm-cells = <0x3>;
				reg = <0x48302200 0x80>;
				ti,hwmods = "ehrpwm1";
				status = "disabled";
			};
		};

		epwmss@48304000 {
			compatible = "ti,am33xx-pwmss";
			reg = <0x48304000 0x10>;
			ti,hwmods = "epwmss2";
			#address-cells = <0x1>;
			#size-cells = <0x1>;
			status = "okay";
			ranges = <0x48304100 0x48304100 0x80 0x48304180 0x48304180 0x80 0x48304200 0x48304200 0x80>;

			ecap@48304100 {
				compatible = "ti,am33xx-ecap";
				#pwm-cells = <0x3>;
				reg = <0x48304100 0x80>;
				interrupts = <0x3d>;
				interrupt-names = "ecap2";
				ti,hwmods = "ecap2";
				status = "okay";
				pinctrl-names = "default", "sleep";
				pinctrl-0 = <0x44>;
				pinctrl-1 = <0x45>;
				linux,phandle = <0x54>;
				phandle = <0x54>;
			};

			ehrpwm@48304200 {
				compatible = "ti,am33xx-ehrpwm";
				#pwm-cells = <0x3>;
				reg = <0x48304200 0x80>;
				ti,hwmods = "ehrpwm2";
				status = "disabled";
			};
		};

		ethernet@4a100000 {
			compatible = "ti,cpsw";
			ti,hwmods = "cpgmac0";
			clocks = <0x46 0x47>;
			clock-names = "fck", "cpts";
			cpdma_channels = <0x8>;
			ale_entries = <0x400>;
			bd_ram_size = <0x2000>;
			no_bd_ram = <0x0>;
			rx_descs = <0x40>;
			mac_control = <0x20>;
			slaves = <0x2>;
			active_slave = <0x0>;
			cpts_clock_mult = <0x80000000>;
			cpts_clock_shift = <0x1d>;
			reg = <0x4a100000 0x800 0x4a101200 0x100>;
			#address-cells = <0x1>;
			#size-cells = <0x1>;
			interrupt-parent = <0x1>;
			interrupts = <0x28 0x29 0x2a 0x2b>;
			ranges;
			syscon = <0x3d>;
			status = "okay";
			pinctrl-names = "default", "sleep";
			pinctrl-0 = <0x48>;
			pinctrl-1 = <0x49>;

			mdio@4a101000 {
				compatible = "ti,davinci_mdio";
				#address-cells = <0x1>;
				#size-cells = <0x0>;
				ti,hwmods = "davinci_mdio";
				bus_freq = <0xf4240>;
				reg = <0x4a101000 0x100>;
				status = "okay";
				pinctrl-names = "default", "sleep";
				pinctrl-0 = <0x4a>;
				pinctrl-1 = <0x4b>;
				linux,phandle = <0x4c>;
				phandle = <0x4c>;
			};

			slave@4a100200 {
				mac-address = [00 00 00 00 00 00];
				phy_id = <0x4c 0x0>;
				phy-mode = "mii";
			};

			slave@4a100300 {
				mac-address = [00 00 00 00 00 00];
				phy_id = <0x4c 0x1>;
				phy-mode = "mii";
			};

			cpsw-phy-sel@44e10650 {
				compatible = "ti,am3352-cpsw-phy-sel";
				reg = <0x44e10650 0x4>;
				reg-names = "gmii-sel";
			};
		};

		ocmcram@40300000 {
			compatible = "mmio-sram";
			reg = <0x40300000 0x10000>;
			map-exec;
			linux,phandle = <0x4>;
			phandle = <0x4>;
		};

		pruss@4a300000 {
			compatible = "ti,am335x-pruss";
			ti,hwmods = "pruss";
			reg = <0x4a300000 0x2000 0x4a302000 0x2000 0x4a310000 0x3000 0x4a320000 0x2000 0x4a326000 0x2000>;
			reg-names = "dram0", "dram1", "shrdram2", "intc", "cfg";
			interrupts = <0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b>;
			#address-cells = <0x1>;
			#size-cells = <0x1>;
			ranges;

			pru@4a334000 {
				compatible = "ti,pru-rproc", "ti,am3352-pru-rproc";
				reg = <0x4a334000 0x2000 0x4a322000 0x400 0x4a322400 0x100>;
				reg-names = "iram", "control", "debug";
				mboxes = <0x28 0x4d>;
			};

			pru@4a338000 {
				compatible = "ti,pru-rproc", "ti,am3352-pru-rproc";
				reg = <0x4a338000 0x2000 0x4a324000 0x400 0x4a324400 0x100>;
				reg-names = "iram", "control", "debug";
				mboxes = <0x28 0x4e>;
			};
		};

		elm@48080000 {
			compatible = "ti,am3352-elm";
			reg = <0x48080000 0x2000>;
			interrupts = <0x4>;
			ti,hwmods = "elm";
			status = "disabled";
		};

		lcdc@4830e000 {
			compatible = "ti,am33xx-tilcdc";
			reg = <0x4830e000 0x1000>;
			interrupt-parent = <0x1>;
			interrupts = <0x24>;
			ti,hwmods = "lcdc";
			status = "disabled";
		};

		tscadc@44e0d000 {
			compatible = "ti,am3359-tscadc";
			reg = <0x44e0d000 0x1000>;
			interrupt-parent = <0x1>;
			interrupts = <0x10>;
			ti,hwmods = "adc_tsc";
			status = "okay";
			dmas = <0x2a 0x35 0x0 0x2a 0x39 0x0>;

			tsc {
				compatible = "ti,am3359-tsc";
				ti,wires = <0x4>;
				ti,x-plate-resistance = <0xc8>;
				ti,coordinate-readouts = <0x5>;
				ti,wire-config = <0x0 0x11 0x22 0x33>;
			};

			adc {
				#io-channel-cells = <0x1>;
				compatible = "ti,am3359-adc";
				ti,adc-channels = <0x4 0x5 0x6 0x7>;
			};
		};

		gpmc@50000000 {
			compatible = "ti,am3352-gpmc";
			ti,hwmods = "gpmc";
			ti,no-idle-on-init;
			reg = <0x50000000 0x2000>;
			interrupts = <0x64>;
			dmas = <0x2a 0x34 0x0>;
			gpmc,num-cs = <0x7>;
			gpmc,num-waitpins = <0x2>;
			#address-cells = <0x2>;
			#size-cells = <0x1>;
			status = "disabled";
		};

		sham@53100000 {
			compatible = "ti,omap4-sham";
			ti,hwmods = "sham";
			reg = <0x53100000 0x200>;
			interrupts = <0x6d>;
			dmas = <0x2a 0x24 0x0>;
			dma-names = "rx";
			status = "okay";
		};

		aes@53500000 {
			compatible = "ti,omap4-aes";
			ti,hwmods = "aes";
			reg = <0x53500000 0xa0>;
			interrupts = <0x67>;
			dmas = <0x2a 0x6 0x0 0x2a 0x5 0x0>;
			dma-names = "tx", "rx";
			status = "okay";
		};

		mcasp@48038000 {
			compatible = "ti,am33xx-mcasp-audio";
			ti,hwmods = "mcasp0";
			reg = <0x48038000 0x2000 0x46000000 0x400000>;
			reg-names = "mpu", "dat";
			interrupts = <0x50 0x51>;
			interrupt-names = "tx", "rx";
			status = "okay";
			dmas = <0x2a 0x8 0x2 0x2a 0x9 0x2>;
			dma-names = "tx", "rx";
			pinctrl-names = "default", "sleep";
			pinctrl-0 = <0x4f>;
			pinctrl-1 = <0x50>;
			op-mode = <0x0>;
			tdm-slots = <0x2>;
			serial-dir = <0x0 0x0 0x1 0x0>;
			tx-num-evt = <0x1>;
			rx-num-evt = <0x1>;
		};

		mcasp@4803C000 {
			compatible = "ti,am33xx-mcasp-audio";
			ti,hwmods = "mcasp1";
			reg = <0x4803c000 0x2000 0x46400000 0x400000>;
			reg-names = "mpu", "dat";
			interrupts = <0x52 0x53>;
			interrupt-names = "tx", "rx";
			status = "disabled";
			dmas = <0x2a 0xa 0x2 0x2a 0xb 0x2>;
			dma-names = "tx", "rx";
		};

		rng@48310000 {
			compatible = "ti,omap4-rng";
			ti,hwmods = "rng";
			reg = <0x48310000 0x2000>;
			interrupts = <0x6f>;
		};

		sgx@0x56000000 {
			compatible = "ti,am3352-sgx530", "img,sgx530";
			ti,hwmods = "gfx";
			reg = <0x56000000 0x1000000>;
			interrupts = <0x25>;
			status = "okay";
		};
	};

	fixedregulator@0 {
		compatible = "regulator-fixed";
		regulator-name = "vmmcsd_fixed";
		regulator-min-microvolt = <0x325aa0>;
		regulator-max-microvolt = <0x325aa0>;
		linux,phandle = <0x38>;
		phandle = <0x38>;
	};

	gpio_buttons@0 {
		status = "okay";
		compatible = "gpio-keys";
		pinctrl-names = "default";
		pinctrl-0 = <0x51>;
		#address-cells = <0x1>;
		#size-cells = <0x0>;

		switch@3 {
			label = "wake";
			linux,code = <0x103>;
			gpios = <0x36 0x1a 0x0>;
			gpio-key,wakeup;
		};
	};

	panel {
		compatible = "ti,tilcdc,panel";
		pinctrl-names = "default";
		pinctrl-0 = <0x52>;

		panel-info {
			ac-bias = <0xff>;
			ac-bias-intrpt = <0x0>;
			dma-burst-sz = <0x10>;
			bpp = <0x10>;
			fdd = <0x80>;
			tft-alt-mode = <0x0>;
			stn-565-mode = <0x0>;
			mono-8bit-mode = <0x0>;
			sync-edge = <0x0>;
			sync-ctrl = <0x1>;
			raster-order = <0x0>;
			fifo-th = <0x0>;
		};

		display-timings {
			native-mode = <0x53>;

			time {
				hactive = <0x140>;
				vactive = <0x1e0>;
				hback-porch = <0xa>;
				hfront-porch = <0x14>;
				hsync-len = <0x19>;
				vback-porch = <0x2>;
				vfront-porch = <0x2>;
				vsync-len = <0x19>;
				clock-frequency = <0x989680>;
				hsync-active = <0x0>;
				vsync-active = <0x0>;
				de-active = <0x1>;
				pixelclk-active = <0x0>;
				linux,phandle = <0x53>;
				phandle = <0x53>;
			};
		};
	};

	backlight {
		compatible = "pwm-backlight";
		pwms = <0x54 0x0 0xc350 0x0>;
		brightness-levels = <0x0 0xfa 0x104 0x10e 0x118 0x12c>;
		default-brightness-level = <0x5>;
	};

	fb {
		compatible = "ti,am33xx-tilcdc";
		reg = <0x4830e000 0x1000>;
		interrupt-parent = <0x1>;
		interrupts = <0x24>;
		ti,hwmods = "lcdc";
		status = "okay";
	};

	clk_mcasp0_fixed {
		#clock-cells = <0x0>;
		compatible = "fixed-clock";
		clock-frequency = <0x1770000>;
		linux,phandle = <0x55>;
		phandle = <0x55>;
	};

	clk_mcasp0 {
		#clock-cells = <0x0>;
		compatible = "gpio-gate-clock";
		clocks = <0x55>;
		enable-gpios = <0x34 0x1b 0x1>;
	};
};
root@beaglebone:~# i2cdetect -r 2
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-2 using read byte commands.
I will probe address range 0x03-0x77.
Continue? [Y/n] 
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: UU UU -- -- UU UU UU UU -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         
root@beaglebone:~# cat /proc/bus/input/devices
I: Bus=0018 Vendor=0001 Product=0001 Version=0001
N: Name="tca8418"
P: Phys=
S: Sysfs=/devices/platform/ocp/4802a000.i2c/i2c-1/1-0034/input/input0
U: Uniq=
H: Handlers=sysrq kbd event0 
B: PROP=0
B: EV=13
B: KEY=1680 4000 73ff7ff dffffffe
B: MSC=10

I: Bus=0019 Vendor=0001 Product=0001 Version=0100
N: Name="gpio_buttons@0"
P: Phys=gpio-keys/input0
S: Sysfs=/devices/platform/gpio_buttons@0/input/input1
U: Uniq=
H: Handlers=event1 
B: PROP=0
B: EV=3
B: KEY=8 0 0 0 0 0 0 0 0

^Z
[1]+  Stopped(SIGTSTP)        evtest /dev/input/event2
root@beaglebone:~# 
root@beaglebone:~# 
root@beaglebone:~# 
root@beaglebone:~# cat /etc/p
pango/             passwd-            ppp/               profile.d/
passwd             pointercal.xinput  profile            protocols
root@beaglebone:~# cat /etc/pointercal.xinput 
xinput set-int-prop "ft5x06" "Evdev Axis Calibration" 32 302 1 463 9; xinput set-int-prop "ft5x06" "Evdev Axes Swap" 8 0;
root@beaglebone:~# 


I: Bus=0000 Vendor=0000 Product=0038 Version=0000
N: Name="ft5x06"
P: Phys=
S: Sysfs=/devices/virtual/input/input2
U: Uniq=
H: Handlers=event2 
B: PROP=0
B: EV=b
B: KEY=400 0 0 0 0 0 0 0 0 0 0
B: ABS=1000003

root@beaglebone:~# cat /proc/interrupt
cat: /proc/interrupt: No such file or directory
root@beaglebone:~# evtest /dev/i
i2c-0        i2c-1        i2c-2        iio:device0  initctl      input/
root@beaglebone:~# evtest /dev/in
initctl  input/   
root@beaglebone:~# evtest /dev/input/
by-path/      event0        event1        event2        touchscreen0
root@beaglebone:~# evtest /dev/input/event2 
Input driver version is 1.0.1
Input device ID: bus 0x0 vendor 0x0 product 0x38 version 0x0
Input device name: "ft5x06"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 330 (BTN_TOUCH)
  Event type 3 (EV_ABS)
    Event code 0 (ABS_X)
      Value      0
      Min        0
      Max     1279
    Event code 1 (ABS_Y)
      Value      0
      Min        0
      Max      799
    Event code 24 (ABS_PRESSURE)
      Value      0
      Min        0
      Max        1
Properties:
Testing ... (interrupt to exit)

^Z
[1]+  Stopped(SIGTSTP)        evtest /dev/input/event2
root@beaglebone:~#
root@beaglebone:~# dmesg
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 4.1.18-g6b41ca0b94 (siva@ubuntu) (gcc version 4.9.2 (GCC) ) #1 SMP Sat Apr 11 22:18:44 IST 2020
[    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 BeagleBone Black
[    0.000000] cma: Reserved 16 MiB at 0x9f000000
[    0.000000] Memory policy: Data cache writeback
[    0.000000] On node 0 totalpages: 131072
[    0.000000] free_area_init_node: node 0, pgdat c08a70c0, node_mem_map deb71000
[    0.000000]   Normal zone: 1152 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 131072 pages, LIFO batch:31
[    0.000000] CPU: All CPU(s) started in SVC mode.
[    0.000000] AM335X ES2.1 (neon )
[    0.000000] PERCPU: Embedded 13 pages/cpu @deb3b000 s22848 r8192 d22208 u53248
[    0.000000] pcpu-alloc: s22848 r8192 d22208 u53248 alloc=13*4096
[    0.000000] pcpu-alloc: [0] 0 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 129920
[    0.000000] Kernel command line: console=ttyO0,115200n8 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait fixrtc fixrtc coherent_pool=10M
[    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
[    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.000000] Memory: 485536K/524288K available (5812K kernel code, 392K rwdata, 2304K rodata, 336K init, 8181K bss, 22368K reserved, 16384K )
[    0.000000] Virtual kernel memory layout:
                   vector  : 0xffff0000 - 0xffff1000   (   4 kB)
                   fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
                   vmalloc : 0xe0800000 - 0xff000000   ( 488 MB)
                   lowmem  : 0xc0000000 - 0xe0000000   ( 512 MB)
                   pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
                   modules : 0xbf000000 - 0xbfe00000   (  14 MB)
                     .text : 0xc0008000 - 0xc07f54ac   (8118 kB)
                     .init : 0xc07f6000 - 0xc084a000   ( 336 kB)
                     .data : 0xc084a000 - 0xc08ac3d8   ( 393 kB)
                      .bss : 0xc08af000 - 0xc10ac5b4   (8182 kB)
[    0.000000] Running RCU self tests
[    0.000000] Hierarchical RCU implementation.
[    0.000000]  RCU lockdep checking is enabled.
[    0.000000]  Additional per-CPU info printed with stalls.
[    0.000000]  RCU restricting CPUs from NR_CPUS=2 to nr_cpu_ids=1.
[    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
[    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] OMAP clockevent source: timer2 at 24000000 Hz
[    0.000022] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
[    0.000058] clocksource timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
[    0.000131] OMAP clocksource: timer1 at 24000000 Hz
[    0.001513] Console: colour dummy device 80x30
[    0.001605] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar
[    0.001621] ... MAX_LOCKDEP_SUBCLASSES:  8
[    0.001635] ... MAX_LOCK_DEPTH:          48
[    0.001648] ... MAX_LOCKDEP_KEYS:        8191
[    0.001661] ... CLASSHASH_SIZE:          4096
[    0.001674] ... MAX_LOCKDEP_ENTRIES:     32768
[    0.001688] ... MAX_LOCKDEP_CHAINS:      65536
[    0.001701] ... CHAINHASH_SIZE:          32768
[    0.001714]  memory used by lock dependency info: 5167 kB
[    0.001728]  per task-struct memory footprint: 1152 bytes
[    0.001767] Calibrating delay loop... 545.58 BogoMIPS (lpj=2727936)
[    0.097450] pid_max: default: 32768 minimum: 301
[    0.098054] Security Framework initialized
[    0.098329] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.098357] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.103358] Initializing cgroup subsys blkio
[    0.103423] Initializing cgroup subsys memory
[    0.103572] Initializing cgroup subsys devices
[    0.103718] Initializing cgroup subsys freezer
[    0.103926] Initializing cgroup subsys perf_event
[    0.104030] CPU: Testing write buffer coherency: ok
[    0.106291] CPU0: thread -1, cpu 0, socket -1, mpidr 0
[    0.106450] Setting up static identity map for 0x80008280 - 0x800082f0
[    0.113274] Brought up 1 CPUs
[    0.113312] SMP: Total of 1 processors activated (545.58 BogoMIPS).
[    0.113329] CPU: All CPU(s) started in SVC mode.
[    0.119030] devtmpfs: initialized
[    0.183738] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
[    0.291421] omap_hwmod: debugss: _wait_target_disable failed
[    0.350459] clocksource jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.354171] pinctrl core: initialized pinctrl subsystem
[    0.363315] NET: Registered protocol family 16
[    0.391961] DMA: preallocated 10240 KiB pool for atomic coherent allocations
[    0.395500] cpuidle: using governor ladder
[    0.395548] cpuidle: using governor menu
[    0.414369] gpiochip_add: registered GPIOs 0 to 31 on device: gpio
[    0.416459] OMAP GPIO hardware version 0.1
[    0.418887] gpiochip_add: registered GPIOs 32 to 63 on device: gpio
[    0.422906] gpiochip_add: registered GPIOs 64 to 95 on device: gpio
[    0.426652] gpiochip_add: registered GPIOs 96 to 127 on device: gpio
[    0.463590] No ATAGs?
[    0.463641] hw-breakpoint: debug architecture 0x4 unsupported.
[    0.536434] edma 49000000.edma: TI EDMA DMA engine driver
[    0.538422] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator@0[0]'
[    0.544634] SCSI subsystem initialized
[    0.545869] libata version 3.00 loaded.
[    0.547178] usbcore: registered new interface driver usbfs
[    0.547458] usbcore: registered new interface driver hub
[    0.547850] usbcore: registered new device driver usb
[    0.549739] omap_i2c 44e0b000.i2c: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_i2c0_pins, deferring e
[    0.549923] omap_i2c 4802a000.i2c: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_i2c1_pins, deferring e
[    0.550070] omap_i2c 4819c000.i2c: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_i2c2_pins, deferring e
[    0.550519] media: Linux media interface: v0.10
[    0.550759] Linux video capture interface: v2.00
[    0.550943] pps_core: LinuxPPS API ver. 1 registered
[    0.550962] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.551053] PTP clock support registered
[    0.554555] omap-mailbox 480c8000.mailbox: omap mailbox rev 0x400
[    0.555851] Advanced Linux Sound Architecture Driver Initialized.
[    0.562035] Switched to clocksource timer1
[    0.780022] NET: Registered protocol family 2
[    0.783432] TCP established hash table entries: 4096 (order: 2, 16384 bytes)
[    0.783738] TCP bind hash table entries: 4096 (order: 5, 147456 bytes)
[    0.785917] TCP: Hash tables configured (established 4096 bind 4096)
[    0.786279] UDP hash table entries: 256 (order: 2, 20480 bytes)
[    0.786596] UDP-Lite hash table entries: 256 (order: 2, 20480 bytes)
[    0.788019] NET: Registered protocol family 1
[    0.790524] CPU PMU: Failed to parse /pmu/interrupt-affinity[0]
[    0.790673] hw perfevents: enabled with armv7_cortex_a8 PMU driver, 5 counters available
[    0.799001] futex hash table entries: 256 (order: 2, 16384 bytes)
[    0.799377] audit: initializing netlink subsys (disabled)
[    0.799937] audit: type=2000 audit(0.790:1): initialized
[    0.807761] VFS: Disk quotas dquot_6.6.0
[    0.808206] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    0.822200] io scheduler noop registered
[    0.822256] io scheduler deadline registered
[    0.822348] io scheduler cfq registered (default)
[    0.826490] pinctrl-single 44e10800.pinmux: 142 pins at pa f9e10800 size 568
[    0.834210] pwm-backlight backlight: GPIO lookup for consumer enable
[    0.834248] pwm-backlight backlight: using device tree for GPIO lookup
[    0.834279] of_get_named_gpiod_flags: can't parse 'enable-gpios' property of node '/backlight[0]'
[    0.834302] of_get_named_gpiod_flags: can't parse 'enable-gpio' property of node '/backlight[0]'
[    0.834322] pwm-backlight backlight: using lookup tables for GPIO lookup
[    0.834545] pwm-backlight backlight: lookup for GPIO enable failed
[    0.834590] backlight supply power not found, using dummy regulator
[    0.839679] wkup_m3_ipc 44e11324.wkup_m3_ipc: could not get rproc handle
[    0.844050] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    0.854398] omap_uart 44e09000.serial: no wakeirq for uart0
[    0.854444] of_get_named_gpiod_flags: can't parse 'rts-gpio' property of node '/ocp/serial@44e09000[0]'
[    0.855352] 44e09000.serial: ttyO0 at MMIO 0x44e09000 (irq = 158, base_baud = 3000000) is a OMAP UART0
[    1.593223] console [ttyO0] enabled
[    1.599915] omap_uart 48022000.serial: no wakeirq for uart1
[    1.605890] of_get_named_gpiod_flags: can't parse 'rts-gpio' property of node '/ocp/serial@48022000[0]'
[    1.606428] 48022000.serial: ttyO1 at MMIO 0x48022000 (irq = 159, base_baud = 3000000) is a OMAP UART1
[    1.618444] omap_uart 48024000.serial: no wakeirq for uart2
[    1.624394] of_get_named_gpiod_flags: can't parse 'rts-gpio' property of node '/ocp/serial@48024000[0]'
[    1.624888] 48024000.serial: ttyO2 at MMIO 0x48024000 (irq = 160, base_baud = 3000000) is a OMAP UART2
[    1.636844] omap_uart 481a8000.serial: no wakeirq for uart4
[    1.642796] of_get_named_gpiod_flags: can't parse 'rts-gpio' property of node '/ocp/serial@481a8000[0]'
[    1.643271] 481a8000.serial: ttyO4 at MMIO 0x481a8000 (irq = 161, base_baud = 3000000) is a OMAP UART4
[    1.655352] [drm] Initialized drm 1.1.0 20060810
[    1.662153] panel panel: GPIO lookup for consumer enable
[    1.662181] panel panel: using device tree for GPIO lookup
[    1.662209] of_get_named_gpiod_flags: can't parse 'enable-gpios' property of node '/panel[0]'
[    1.662232] of_get_named_gpiod_flags: can't parse 'enable-gpio' property of node '/panel[0]'
[    1.662251] panel panel: using lookup tables for GPIO lookup
[    1.662278] panel panel: lookup for GPIO enable failed
[    1.673188] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[    1.680140] [drm] No driver support for vblank timestamp query.
[    1.705859] Console: switching to colour frame buffer device 40x30
[    1.714615] tilcdc 4830e000.fb: fb0:  frame buffer device
[    1.720281] tilcdc 4830e000.fb: registered panic notifier
[    1.726160] [drm] Initialized tilcdc 1.0.0 20121205 on minor 0
[    1.783857] brd: module loaded
[    1.816823] loop: module loaded
[    1.829875] omap2_mcspi 481a0000.spi: registered master spi1
[    1.831705] spi spi1.1: setup: speed 16000000, sample leading edge, clk normal
[    1.831939] spi spi1.1: setup mode 0, 8 bits/w, 16000000 Hz max --> 0
[    1.836113] omap2_mcspi 481a0000.spi: registered child spi1.1
[    1.901901] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6
[    1.908315] davinci_mdio 4a101000.mdio: detected phy mask fffffffe
[    1.920030] libphy: 4a101000.mdio: probed
[    1.924448] davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver SMSC LAN8710/LAN8720
[    1.936222] cpsw 4a100000.ethernet: Detected MACID = 0c:ae:7d:56:18:8a
[    1.948014] PPP generic driver version 2.4.2
[    1.954375] PPP BSD Compression module registered
[    1.959340] PPP Deflate Compression module registered
[    1.964825] PPP MPPE Compression module registered
[    1.969875] NET: Registered protocol family 24
[    1.976282] usbcore: registered new interface driver usb-storage
[    1.983213] usbcore: registered new interface driver usbserial
[    1.989489] usbcore: registered new interface driver ftdi_sio
[    1.996319] usbserial: USB Serial support registered for FTDI USB Serial Device
[    2.004290] usbcore: registered new interface driver option
[    2.010338] usbserial: USB Serial support registered for GSM modem (1-port)
[    2.022813] am335x-phy-driver 47401300.usb-phy: GPIO lookup for consumer reset
[    2.022848] am335x-phy-driver 47401300.usb-phy: using device tree for GPIO lookup
[    2.022879] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/usb@47400000/usb-phy@47401300[0]'
[    2.022905] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/usb@47400000/usb-phy@47401300[0]'
[    2.022925] am335x-phy-driver 47401300.usb-phy: using lookup tables for GPIO lookup
[    2.022955] am335x-phy-driver 47401300.usb-phy: lookup for GPIO reset failed
[    2.022981] am335x-phy-driver 47401300.usb-phy: GPIO lookup for consumer vbus-detect
[    2.023000] am335x-phy-driver 47401300.usb-phy: using device tree for GPIO lookup
[    2.023025] of_get_named_gpiod_flags: can't parse 'vbus-detect-gpios' property of node '/ocp/usb@47400000/usb-phy@47401300[0]'
[    2.023048] of_get_named_gpiod_flags: can't parse 'vbus-detect-gpio' property of node '/ocp/usb@47400000/usb-phy@47401300[0]'
[    2.023068] am335x-phy-driver 47401300.usb-phy: using lookup tables for GPIO lookup
[    2.023092] am335x-phy-driver 47401300.usb-phy: lookup for GPIO vbus-detect failed
[    2.023212] 47401300.usb-phy supply vcc not found, using dummy regulator
[    2.036807] musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
[    2.036844] musb-hdrc: MHDRC RTL version 2.0 
[    2.036861] musb-hdrc: setup fifo_mode 4
[    2.036893] musb-hdrc: 28/31 max ep, 16384/16384 memory
[    2.038031] musb-hdrc musb-hdrc.0.auto: MUSB HDRC host driver
[    2.045591] musb-hdrc musb-hdrc.0.auto: new USB bus registered, assigned bus number 1
[    2.057625] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    2.064966] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.072633] usb usb1: Product: MUSB HDRC host driver
[    2.077843] usb usb1: Manufacturer: Linux 4.1.18-g6b41ca0b94 musb-hcd
[    2.084633] usb usb1: SerialNumber: musb-hdrc.0.auto
[    2.097381] hub 1-0:1.0: USB hub found
[    2.102004] hub 1-0:1.0: 1 port detected
[    2.117779] am335x-phy-driver 47401b00.usb-phy: GPIO lookup for consumer reset
[    2.117818] am335x-phy-driver 47401b00.usb-phy: using device tree for GPIO lookup
[    2.117851] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/usb@47400000/usb-phy@47401b00[0]'
[    2.117876] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/usb@47400000/usb-phy@47401b00[0]'
[    2.117897] am335x-phy-driver 47401b00.usb-phy: using lookup tables for GPIO lookup
[    2.117924] am335x-phy-driver 47401b00.usb-phy: lookup for GPIO reset failed
[    2.117949] am335x-phy-driver 47401b00.usb-phy: GPIO lookup for consumer vbus-detect
[    2.117968] am335x-phy-driver 47401b00.usb-phy: using device tree for GPIO lookup
[    2.117993] of_get_named_gpiod_flags: can't parse 'vbus-detect-gpios' property of node '/ocp/usb@47400000/usb-phy@47401b00[0]'
[    2.118016] of_get_named_gpiod_flags: can't parse 'vbus-detect-gpio' property of node '/ocp/usb@47400000/usb-phy@47401b00[0]'
[    2.118036] am335x-phy-driver 47401b00.usb-phy: using lookup tables for GPIO lookup
[    2.118060] am335x-phy-driver 47401b00.usb-phy: lookup for GPIO vbus-detect failed
[    2.118161] 47401b00.usb-phy supply vcc not found, using dummy regulator
[    2.130178] musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
[    2.130211] musb-hdrc: MHDRC RTL version 2.0 
[    2.130230] musb-hdrc: setup fifo_mode 4
[    2.130259] musb-hdrc: 28/31 max ep, 16384/16384 memory
[    2.130842] musb-hdrc musb-hdrc.1.auto: MUSB HDRC host driver
[    2.137112] musb-hdrc musb-hdrc.1.auto: new USB bus registered, assigned bus number 2
[    2.147307] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002
[    2.154574] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.162232] usb usb2: Product: MUSB HDRC host driver
[    2.167442] usb usb2: Manufacturer: Linux 4.1.18-g6b41ca0b94 musb-hcd
[    2.174232] usb usb2: SerialNumber: musb-hdrc.1.auto
[    2.183509] hub 2-0:1.0: USB hub found
[    2.187676] hub 2-0:1.0: 1 port detected
[    2.229787] omap_rtc 44e3e000.rtc: already running
[    2.240895] omap_rtc 44e3e000.rtc: rtc core: registered 44e3e000.rtc as rtc0
[    2.249423] i2c /dev entries driver
[    2.256170] omap_hsmmc 48060000.mmc: GPIO lookup for consumer cd
[    2.256207] omap_hsmmc 48060000.mmc: using device tree for GPIO lookup
[    2.256278] of_get_named_gpiod_flags: parsed 'cd-gpios' property of node '/ocp/mmc@48060000[0]' - status (0)
[    2.256434] omap_hsmmc 48060000.mmc: Got CD GPIO
[    2.261399] omap_hsmmc 48060000.mmc: GPIO lookup for consumer wp
[    2.261422] omap_hsmmc 48060000.mmc: using device tree for GPIO lookup
[    2.261449] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/mmc@48060000[0]'
[    2.261472] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/mmc@48060000[0]'
[    2.261491] omap_hsmmc 48060000.mmc: using lookup tables for GPIO lookup
[    2.261519] omap_hsmmc 48060000.mmc: lookup for GPIO wp failed
[    2.304089] omap_hsmmc 481d8000.mmc: GPIO lookup for consumer cd
[    2.304126] omap_hsmmc 481d8000.mmc: using device tree for GPIO lookup
[    2.304156] of_get_named_gpiod_flags: can't parse 'cd-gpios' property of node '/ocp/mmc@481d8000[0]'
[    2.304181] of_get_named_gpiod_flags: can't parse 'cd-gpio' property of node '/ocp/mmc@481d8000[0]'
[    2.304200] omap_hsmmc 481d8000.mmc: using lookup tables for GPIO lookup
[    2.304226] omap_hsmmc 481d8000.mmc: lookup for GPIO cd failed
[    2.304255] omap_hsmmc 481d8000.mmc: GPIO lookup for consumer wp
[    2.304274] omap_hsmmc 481d8000.mmc: using device tree for GPIO lookup
[    2.304296] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/mmc@481d8000[0]'
[    2.304318] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/mmc@481d8000[0]'
[    2.304337] omap_hsmmc 481d8000.mmc: using lookup tables for GPIO lookup
[    2.304360] omap_hsmmc 481d8000.mmc: lookup for GPIO wp failed
[    2.343400] usbcore: registered new interface driver usbkbd
[    2.349524] usbcore: registered new interface driver usbmouse
[    2.357187]  remoteproc0: wkup_m3 is available
[    2.361976]  remoteproc0: Note: remoteproc is still under development and considered experimental.
[    2.371363]  remoteproc0: THE BINARY FORMAT IS NOT YET FINALIZED, and backward compatibility isn't yet guaranteed.
[    2.396283] oprofile: using arm/armv7
[    2.401454] Initializing XFRM netlink socket
[    2.406467] NET: Registered protocol family 17
[    2.411334] NET: Registered protocol family 15
[    2.416970] Key type dns_resolver registered
[    2.422454] omap_voltage_late_init: Voltage driver support not added
[    2.432103] PM: bootloader does not support rtc-only!
[    2.438924] ThumbEE CPU extension supported.
[    2.443648] Registering SWP/SWPB emulation handler
[    2.473578] mmc0: host does not support reading read-only switch, assuming write-enable
[    2.489081] mmc0: new high speed SDHC card at address aaaa
[    2.499380] mmcblk0: mmc0:aaaa SC16G 14.8 GiB 
[    2.514939]  mmcblk0: p1 p2
[    2.550882] tps65217 0-0024: TPS65217 ID 0xe version 1.2
[    2.556829] omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz
[    2.580495] mmc1: MAN_BKOPS_EN bit is not set
[    2.588029] mmc1: new high speed MMC card at address 0001
[    2.596413] mmcblk1: mmc1:0001 4FPD3R 3.64 GiB 
[    2.605330] input: tca8418 as /devices/platform/ocp/4802a000.i2c/i2c-1/1-0034/input/input0
[    2.617239] mmcblk1boot0: mmc1:0001 4FPD3R partition 1 4.00 MiB
[    2.624854] mmcblk1boot1: mmc1:0001 4FPD3R partition 2 4.00 MiB
[    2.633638] omap_i2c 4802a000.i2c: bus 1 rev0.11 at 100 kHz
[    2.644709]  mmcblk1: p1 p2
[    2.664033] gpiochip_find_base: found new base at 496
[    2.665368] gpiochip_add: registered GPIOs 496 to 511 on device: tca6416
[    2.666953] rtc-pcf8563 2-0051: chip found, driver version 0.4.3
[    2.682668] rtc-pcf8563 2-0051: rtc core: registered rtc-pcf8563 as rtc1
[    2.690660] at24 2-0050: 32768 byte 24c256 EEPROM, writable, 1 bytes/write
[    2.698947] at24 2-0054: 32768 byte 24c256 EEPROM, writable, 1 bytes/write
[    2.707142] at24 2-0055: 32768 byte 24c256 EEPROM, writable, 1 bytes/write
[    2.715307] at24 2-0056: 32768 byte 24c256 EEPROM, writable, 1 bytes/write
[    2.723422] at24 2-0057: 32768 byte 24c256 EEPROM, writable, 1 bytes/write
[    2.730725] omap_i2c 4819c000.i2c: bus 2 rev0.11 at 100 kHz
[    2.739288]  remoteproc0: powering up wkup_m3
[    2.744049]  remoteproc0: rproc_boot failed
[    2.750085] of_get_named_gpiod_flags: parsed 'gpios' property of node '/gpio_buttons@0/switch@3[0]' - status (0)
[    2.751661] input: gpio_buttons@0 as /devices/platform/gpio_buttons@0/input/input1
[    2.764372] rtc-pcf8563 2-0051: setting system clock to 2020-04-11 21:19:02 UTC (1586639942)
[    2.808086] ALSA device list:
[    2.811265]   No soundcards found.
[    2.854646] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[    2.863536] VFS: Mounted root (ext4 filesystem) on device 179:2.
[    2.884766] devtmpfs: mounted
[    2.888935] Freeing unused kernel memory: 336K (c07f6000 - c084a000)
[    3.248565] systemd[1]: Inserted module 'autofs4'
[    3.310598] NET: Registered protocol family 10
[    3.322860] systemd[1]: Inserted module 'ipv6'
[    3.389988] random: systemd urandom read with 16 bits of entropy available
[    3.474255] systemd[1]: systemd 219 running in system mode. (-PAM -AUDIT -SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP -LIBCRYPTSETUP -GCR)
[    3.494602] systemd[1]: Detected architecture arm.
[    3.527053] systemd[1]: Set hostname to <beaglebone>.
[    3.900615] systemd-sysv-generator[69]: Overwriting existing symlink /run/systemd/generator.late/apmd.service with real service
[    3.914706] systemd-sysv-generator[69]: Overwriting existing symlink /run/systemd/generator.late/iodeamon.service with real service
[    4.362501] systemd[1]: Reached target Swap.
[    4.367183] systemd[1]: Starting Swap.
[    4.374008] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[    4.382860] systemd[1]: Starting Dispatch Password Requests to Console Directory Watch.
[    4.412415] systemd[1]: Created slice Root Slice.
[    4.417677] systemd[1]: Starting Root Slice.
[    4.442463] systemd[1]: Created slice User and Session Slice.
[    4.448679] systemd[1]: Starting User and Session Slice.
[    4.472411] systemd[1]: Listening on udev Kernel Socket.
[    4.478160] systemd[1]: Starting udev Kernel Socket.
[    4.502415] systemd[1]: Listening on Journal Socket (/dev/log).
[    4.508803] systemd[1]: Starting Journal Socket (/dev/log).
[    4.532408] systemd[1]: Listening on Journal Audit Socket.
[    4.538334] systemd[1]: Starting Journal Audit Socket.
[    4.562386] systemd[1]: Listening on Syslog Socket.
[    4.567813] systemd[1]: Starting Syslog Socket.
[    4.592428] systemd[1]: Created slice System Slice.
[    4.597786] systemd[1]: Starting System Slice.
[    4.622364] systemd[1]: Reached target Slices.
[    4.627304] systemd[1]: Starting Slices.
[    4.652420] systemd[1]: Created slice system-getty.slice.
[    4.658274] systemd[1]: Starting system-getty.slice.
[    4.682390] systemd[1]: Listening on Journal Socket.
[    4.687823] systemd[1]: Starting Journal Socket.
[    4.708533] systemd[1]: Starting Create list of required static device nodes for the current kernel...
[    4.759279] systemd[1]: Started Load Kernel Modules.
[    4.776975] systemd[1]: Started File System Check on Root Device.
[    4.816425] systemd[1]: Starting Remount Root and Kernel File Systems...
[    4.863023] systemd[1]: Mounted FUSE Control File System.
[    4.899883] systemd[1]: Mounting Debug File System...
[    5.033467] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
[    5.064941] systemd[1]: Mounting Temporary Directory...
[    5.123982] systemd[1]: Mounted Huge Pages File System.
[    5.182920] systemd[1]: Starting Apply Kernel Variables...
[    5.257492] systemd[1]: Mounting POSIX Message Queue File System...
[    5.331078] systemd[1]: Created slice system-serial\x2dgetty.slice.
[    5.343722] systemd[1]: Starting system-serial\x2dgetty.slice.
[    5.392570] systemd[1]: Listening on udev Control Socket.
[    5.398437] systemd[1]: Starting udev Control Socket.
[    5.418304] systemd[1]: Starting udev Coldplug all Devices...
[    5.482611] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe.
[    5.496447] systemd[1]: Starting /dev/initctl Compatibility Named Pipe.
[    5.536451] systemd[1]: Starting Journal Service...
[    5.574461] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[    5.592646] systemd[1]: Starting Forward Password Requests to Wall Directory Watch.
[    5.642638] systemd[1]: Reached target Paths.
[    5.647415] systemd[1]: Starting Paths.
[    5.692832] systemd[1]: Listening on Delayed Shutdown Socket.
[    5.699072] systemd[1]: Starting Delayed Shutdown Socket.
[    5.765436] systemd[1]: Mounting Configuration File System...
[    5.893132] systemd[1]: Mounted Debug File System.
[    5.962601] systemd[1]: Mounted POSIX Message Queue File System.
[    5.982409] systemd[1]: Mounted Temporary Directory.
[    6.043564] systemd[1]: Mounted Configuration File System.
[    6.102594] systemd[1]: Started Create list of required static device nodes for the current kernel.
[    6.162522] systemd[1]: Started Remount Root and Kernel File Systems.
[    6.222979] systemd[1]: Started Apply Kernel Variables.
[    6.722774] systemd[1]: Started Journal Service.
[    7.213992] systemd-journald[88]: Received request to flush runtime journal from PID 1
[    9.610125] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
[   11.153131] omap_rng 48310000.rng: OMAP Random Number Generator ver. 20
[   19.246032] random: nonblocking pool is initialized
[   21.749516] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Opts: (null)
[   22.208131] FAT-fs (mmcblk1p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
[   24.776656] net eth0: initializing cpsw version 1.12 (0)
[   24.785251] net eth0: phy found : id is : 0x7c0f1
[   24.790459] libphy: PHY 4a101000.mdio:01 not found
[   24.795575] net eth0: phy 4a101000.mdio:01 not found on slave 1
[   24.971349] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[   25.262260] systemd[1]: Couldn't stat device /dev/pts/ptmx
[   33.262443] systemd-udevd[370]: failed to execute '/lib/systemd/systemd-vconsole-setup' '/lib/systemd/systemd-vconsole-setup': No such filey
[   33.302406] systemd-udevd[368]: failed to execute '/lib/systemd/systemd-vconsole-setup' '/lib/systemd/systemd-vconsole-setup': No such filey
[ 2508.467366] of_get_named_gpiod_flags: can't parse 'wakeup-gpios' property of node '/ocp/i2c@4819c000/ft5506@38[0]'
[ 2508.470704] ts_probe: ft5x06 touchscreen irq=54, gp=-1
[ 2508.478719] input: ft5x06 as /devices/virtual/input/input2
[ 2508.577766] write_reg: set register 0x00 to 0x00
[ 2508.577806] set_mode: changed mode to 0x00
[ 2508.578341] write_reg: set register 0x00 to 0x00
[ 2508.578364] set_mode: changed mode to 0x00
[ 2508.619490] write_reg: set register 0x00 to 0x00
[ 2508.619531] set_mode: changed mode to 0x00
[ 2508.620009] write_reg: set register 0x00 to 0x00
[ 2508.620032] set_mode: changed mode to 0x00