From 0940ed184a0a982ed02b2122c3ae11e8b21a3d4d Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Sun, 5 Jan 2014 14:45:11 -0800 Subject: [PATCH] add reneasa patches and fix up the zynq patches. --- ...0-merge-support-for-si570-clock-generator.patch | 662 --------------------- ...zynq-Migrate-platform-to-clock-controller.patch | 50 +- ...039-clk-add-CLK_SET_RATE_NO_REPARENT-flag.patch | 35 +- ...t-zynq-Add-support-for-the-zc706-platform.patch | 2 +- series | 287 ++++++++- 5 files changed, 316 insertions(+), 720 deletions(-) delete mode 100644 patches.zynq/0002-i2c-si570-merge-support-for-si570-clock-generator.patch diff --git a/patches.zynq/0002-i2c-si570-merge-support-for-si570-clock-generator.patch b/patches.zynq/0002-i2c-si570-merge-support-for-si570-clock-generator.patch deleted file mode 100644 index 19e78b8..0000000 --- a/patches.zynq/0002-i2c-si570-merge-support-for-si570-clock-generator.patch +++ /dev/null @@ -1,662 +0,0 @@ -From 2fd63c1e6eab20cbaa637da81fcf988b23f91d66 Mon Sep 17 00:00:00 2001 -From: Rob Armstrong -Date: Tue, 24 Dec 2013 09:31:54 +0900 -Subject: i2c: si570: merge support for si570 clock generator - -This merges support for the si5790 clock generator from the Xilinx -repository (commit efc27505715e64526653f35274717c0fc56491e3 from -master branch). - -Signed-off-by: Daniel Sangorrin -Signed-off-by: Yoshitake Kobayashi ---- - drivers/misc/Kconfig | 10 - drivers/misc/Makefile | 1 - drivers/misc/si570.c | 576 ++++++++++++++++++++++++++++++++++++++++++++++ - include/linux/i2c/si570.h | 31 ++ - 4 files changed, 618 insertions(+) - create mode 100644 drivers/misc/si570.c - create mode 100644 include/linux/i2c/si570.h - ---- a/drivers/misc/Kconfig -+++ b/drivers/misc/Kconfig -@@ -507,6 +507,16 @@ config USB_SWITCH_FSA9480 - stereo and mono audio, video, microphone and UART data to use - a common connector port. - -+config SI570 -+ tristate "Silicon Labs Si570 Clock Generator" -+ depends on I2C && SYSFS -+ help -+ If you say yes here you get support for the Silicon Labs Si570 -+ digital clock generator. -+ -+ To compile this driver as a module, choose M here: the module -+ will be called si570 -+ - config LATTICE_ECP3_CONFIG - tristate "Lattice ECP3 FPGA bitstream configuration via SPI" - depends on SPI && SYSFS ---- a/drivers/misc/Makefile -+++ b/drivers/misc/Makefile -@@ -50,6 +50,7 @@ obj-y += carma/ - obj-$(CONFIG_USB_SWITCH_FSA9480) += fsa9480.o - obj-$(CONFIG_ALTERA_STAPL) +=altera-stapl/ - obj-$(CONFIG_INTEL_MEI) += mei/ -+obj-$(CONFIG_SI570) += si570.o - obj-$(CONFIG_VMWARE_VMCI) += vmw_vmci/ - obj-$(CONFIG_LATTICE_ECP3_CONFIG) += lattice-ecp3-config.o - obj-$(CONFIG_SRAM) += sram.o ---- /dev/null -+++ b/drivers/misc/si570.c -@@ -0,0 +1,576 @@ -+/* -+ * Driver for Silicon Labs Si570/Si571 Programmable XO/VCXO -+ * -+ * Copyright (C) 2010, 2011 Ericsson AB. -+ * Copyright (C) 2011 Guenter Roeck. -+ * -+ * Author: Guenter Roeck -+ * -+ * 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. -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+/* Si570 registers */ -+#define SI570_REG_HS_N1 7 -+#define SI570_REG_N1_RFREQ0 8 -+#define SI570_REG_RFREQ1 9 -+#define SI570_REG_RFREQ2 10 -+#define SI570_REG_RFREQ3 11 -+#define SI570_REG_RFREQ4 12 -+#define SI570_REG_CONTROL 135 -+#define SI570_REG_FREEZE_DCO 137 -+ -+#define HS_DIV_SHIFT 5 -+#define HS_DIV_MASK 0xe0 -+#define HS_DIV_OFFSET 4 -+#define N1_6_2_MASK 0x1f -+#define N1_1_0_MASK 0xc0 -+#define RFREQ_37_32_MASK 0x3f -+ -+#define SI570_FOUT_FACTORY_DFLT 156250000LL -+#define SI598_FOUT_FACTORY_DFLT 10000000LL -+ -+#define SI570_MIN_FREQ 10000000L -+#define SI570_MAX_FREQ 1417500000L -+#define SI598_MAX_FREQ 525000000L -+ -+#define FDCO_MIN 4850000000LL -+#define FDCO_MAX 5670000000LL -+#define FDCO_CENTER ((FDCO_MIN + FDCO_MAX) / 2) -+ -+#define SI570_CNTRL_RECALL (1 << 0) -+#define SI570_CNTRL_FREEZE_ADC (1 << 4) -+#define SI570_CNTRL_FREEZE_M (1 << 5) -+#define SI570_CNTRL_NEWFREQ (1 << 6) -+#define SI570_CNTRL_RESET (1 << 7) -+ -+#define SI570_FREEZE_DCO (1 << 4) -+#define SI570_UNFREEZE_DCO 0xEF -+ -+struct si570_data { -+ struct attribute_group attrs; -+ struct mutex lock; -+ u64 max_freq; -+ u64 fout; /* Factory default frequency */ -+ u64 fxtal; /* Factory xtal frequency */ -+ unsigned int n1; -+ unsigned int hs_div; -+ u64 rfreq; -+ u64 frequency; -+}; -+ -+ -+static struct i2c_client *si570_client; -+ -+ -+static int si570_get_defaults(struct i2c_client *client) -+{ -+ struct si570_data *data = i2c_get_clientdata(client); -+ int reg1, reg2, reg3, reg4, reg5, reg6; -+ u64 fdco; -+ -+ i2c_smbus_write_byte_data(client, SI570_REG_CONTROL, -+ SI570_CNTRL_RECALL); -+ -+ reg1 = i2c_smbus_read_byte_data(client, SI570_REG_HS_N1); -+ if (reg1 < 0) -+ return reg1; -+ reg2 = i2c_smbus_read_byte_data(client, SI570_REG_N1_RFREQ0); -+ if (reg2 < 0) -+ return reg2; -+ reg3 = i2c_smbus_read_byte_data(client, SI570_REG_RFREQ1); -+ if (reg3 < 0) -+ return reg3; -+ reg4 = i2c_smbus_read_byte_data(client, SI570_REG_RFREQ2); -+ if (reg4 < 0) -+ return reg4; -+ reg5 = i2c_smbus_read_byte_data(client, SI570_REG_RFREQ3); -+ if (reg5 < 0) -+ return reg5; -+ reg6 = i2c_smbus_read_byte_data(client, SI570_REG_RFREQ4); -+ if (reg6 < 0) -+ return reg6; -+ -+ data->hs_div = ((reg1 & HS_DIV_MASK) >> HS_DIV_SHIFT) + HS_DIV_OFFSET; -+ data->n1 = ((reg1 & N1_6_2_MASK) << 2) + ((reg2 & N1_1_0_MASK) >> 6) -+ + 1; -+ /* Handle invalid cases */ -+ if (data->n1 > 1) -+ data->n1 &= ~1; -+ -+ data->rfreq = reg2 & RFREQ_37_32_MASK; -+ data->rfreq = (data->rfreq << 8) + reg3; -+ data->rfreq = (data->rfreq << 8) + reg4; -+ data->rfreq = (data->rfreq << 8) + reg5; -+ data->rfreq = (data->rfreq << 8) + reg6; -+ -+ /* -+ * Accept optional precision loss to avoid arithmetic overflows. -+ * Acceptable per Silicon Labs Application Note AN334. -+ */ -+ fdco = data->fout * data->n1 * data->hs_div; -+ if (fdco >= (1LL << 36)) -+ data->fxtal = div64_u64((fdco << 24), (data->rfreq >> 4)); -+ else -+ data->fxtal = div64_u64((fdco << 28), data->rfreq); -+ -+ data->frequency = data->fout; -+ -+ return 0; -+} -+ -+/* -+ * Update rfreq registers -+ * This function must be called with update mutex lock held. -+ */ -+static void si570_update_rfreq(struct i2c_client *client, -+ struct si570_data *data) -+{ -+ int status; -+ status = i2c_smbus_write_byte_data(client, SI570_REG_N1_RFREQ0, -+ ((data->n1 - 1) << 6) -+ | ((data->rfreq >> 32) & RFREQ_37_32_MASK)); -+ if (status < 0) -+ dev_err(&client->dev, -+ "unable to write 0x%llX to REG_N1_RFREQ0: %d\n", -+ (((data->n1 - 1) << 6) | ((data->rfreq >> 32) & -+ RFREQ_37_32_MASK)) & 0xff, status); -+ status = i2c_smbus_write_byte_data(client, SI570_REG_RFREQ1, -+ (data->rfreq >> 24) & 0xff); -+ if (status < 0) -+ dev_err(&client->dev, -+ "unable to write 0x%llX to REG_RFREQ1: %d\n", -+ (data->rfreq >> 24) & 0xff, status); -+ status = i2c_smbus_write_byte_data(client, SI570_REG_RFREQ2, -+ (data->rfreq >> 16) & 0xff); -+ if (status < 0) -+ dev_err(&client->dev, -+ "unable to write 0x%llX to REG_RFREQ2: %d\n", -+ (data->rfreq >> 16) & 0xff, status); -+ status = i2c_smbus_write_byte_data(client, SI570_REG_RFREQ3, -+ (data->rfreq >> 8) & 0xff); -+ if (status < 0) -+ dev_err(&client->dev, -+ "unable to write 0x%llX to REG_RFREQ3: %d\n", -+ (data->rfreq >> 8) & 0xff, status); -+ status = i2c_smbus_write_byte_data(client, SI570_REG_RFREQ4, -+ data->rfreq & 0xff); -+ if (status < 0) -+ dev_err(&client->dev, -+ "unable to write 0x%llX to REG_RFREQ4: %d\n", -+ data->rfreq & 0xff, status); -+} -+ -+/* -+ * Update si570 frequency for small frequency changes (< 3,500 ppm) -+ * This function must be called with update mutex lock held. -+ */ -+static int si570_set_frequency_small(struct i2c_client *client, -+ struct si570_data *data, -+ unsigned long frequency) -+{ -+ data->frequency = frequency; -+ /* This is a re-implementation of DIV_ROUND_CLOSEST -+ * using the div64_u64 function lieu of letting the compiler -+ * insert EABI calls -+ */ -+ data->rfreq = div64_u64((data->rfreq * frequency) + -+ div64_u64(data->frequency, 2), data->frequency); -+ i2c_smbus_write_byte_data(client, SI570_REG_CONTROL, -+ SI570_CNTRL_FREEZE_M); -+ si570_update_rfreq(client, data); -+ i2c_smbus_write_byte_data(client, SI570_REG_CONTROL, 0); -+ -+ return 0; -+} -+ -+static const uint8_t si570_hs_div_values[] = { 11, 9, 7, 6, 5, 4 }; -+ -+/* -+ * Set si570 frequency. -+ * This function must be called with update mutex lock held. -+ */ -+static int si570_set_frequency(struct i2c_client *client, -+ struct si570_data *data, -+ unsigned long frequency) -+{ -+ int i, n1, hs_div; -+ u64 fdco, best_fdco = ULLONG_MAX; -+ -+ for (i = 0; i < ARRAY_SIZE(si570_hs_div_values); i++) { -+ hs_div = si570_hs_div_values[i]; -+ /* Calculate lowest possible value for n1 */ -+ n1 = div64_u64(div64_u64(FDCO_MIN, (u64)hs_div), -+ (u64)frequency); -+ if (!n1 || (n1 & 1)) -+ n1++; -+ while (n1 <= 128) { -+ fdco = (u64)frequency * (u64)hs_div * (u64)n1; -+ if (fdco > FDCO_MAX) -+ break; -+ if (fdco >= FDCO_MIN && fdco < best_fdco) { -+ data->n1 = n1; -+ data->hs_div = hs_div; -+ data->frequency = frequency; -+ data->rfreq = div64_u64((fdco << 28), -+ data->fxtal); -+ best_fdco = fdco; -+ } -+ n1 += (n1 == 1 ? 1 : 2); -+ } -+ } -+ if (best_fdco == ULLONG_MAX) { -+ dev_err(&client->dev, "error - best FDCO is out of range\n"); -+ return -EINVAL; -+ } -+ -+ /* The DCO reg should be accessed with a read-modify-write operation -+ * per AN334 -+ */ -+ i2c_smbus_write_byte_data(client, SI570_REG_FREEZE_DCO, -+ SI570_FREEZE_DCO); -+ i2c_smbus_write_byte_data(client, SI570_REG_HS_N1, -+ ((data->hs_div - HS_DIV_OFFSET) << -+ HS_DIV_SHIFT) -+ | (((data->n1 - 1) >> 2) & N1_6_2_MASK)); -+ si570_update_rfreq(client, data); -+ i2c_smbus_write_byte_data(client, SI570_REG_FREEZE_DCO, -+ 0); -+ i2c_smbus_write_byte_data(client, SI570_REG_CONTROL, -+ SI570_CNTRL_NEWFREQ); -+ return 0; -+} -+ -+/* -+ * Reset chip. -+ * This function must be called with update mutex lock held. -+ */ -+static int si570_reset(struct i2c_client *client, struct si570_data *data) -+{ -+ i2c_smbus_write_byte_data(client, SI570_REG_CONTROL, -+ SI570_CNTRL_RESET); -+ usleep_range(1000, 5000); -+ return si570_set_frequency(client, data, data->frequency); -+} -+ -+static ssize_t show_frequency_attr(struct device *dev, -+ struct device_attribute *devattr, -+ char *buf) -+{ -+ struct i2c_client *client = to_i2c_client(dev); -+ struct si570_data *data = i2c_get_clientdata(client); -+ -+ return sprintf(buf, "%llu\n", data->frequency); -+} -+ -+int get_frequency_si570(struct device *dev, unsigned long *freq) -+{ -+ int err; -+ char buf[10+1]; -+ -+ if ((!dev) || (to_i2c_client(dev) != si570_client)) -+ return -EINVAL; -+ -+ show_frequency_attr(dev, NULL, buf); -+ -+ err = kstrtoul(buf, 10, freq); -+ if (err) -+ return err; -+ -+ return 0; -+} -+EXPORT_SYMBOL(get_frequency_si570); -+ -+static ssize_t set_frequency_attr(struct device *dev, -+ struct device_attribute *attr, -+ const char *buf, size_t count) -+{ -+ struct i2c_client *client = to_i2c_client(dev); -+ struct si570_data *data = i2c_get_clientdata(client); -+ unsigned long val; -+ int err; -+ -+ err = kstrtoul(buf, 10, &val); -+ if (err) -+ return err; -+ -+ if (val < SI570_MIN_FREQ || val > data->max_freq) { -+ dev_err(&client->dev, -+ "requested frequency %lu Hz is out of range\n", val); -+ return -EINVAL; -+ } -+ -+ mutex_lock(&data->lock); -+ -+ if (div64_u64(abs(val - data->frequency) * 10000LL, -+ data->frequency) < 35) -+ err = si570_set_frequency_small(client, data, val); -+ else -+ err = si570_set_frequency(client, data, val); -+ mutex_unlock(&data->lock); -+ if (err) { -+ dev_warn(&client->dev, -+ "unable to set output frequency %lu Hz: %d\n", -+ val, err); -+ return err; -+ } -+ -+ dev_info(&client->dev, -+ "set new output frequency %lu Hz\n", val); -+ -+ return count; -+} -+ -+int set_frequency_si570(struct device *dev, unsigned long freq) -+{ -+ char buf[10+1]; -+ -+ if ((!dev) || (to_i2c_client(dev) != si570_client)) -+ return -EINVAL; -+ -+ sprintf(buf, "%lu", freq); -+ -+ return set_frequency_attr(dev, NULL, buf, 0); -+} -+EXPORT_SYMBOL(set_frequency_si570); -+ -+static ssize_t show_reset_attr(struct device *dev, -+ struct device_attribute *devattr, -+ char *buf) -+{ -+ return sprintf(buf, "%d\n", 0); -+} -+ -+static ssize_t set_reset_attr(struct device *dev, -+ struct device_attribute *attr, -+ const char *buf, size_t count) -+{ -+ struct i2c_client *client = to_i2c_client(dev); -+ struct si570_data *data = i2c_get_clientdata(client); -+ unsigned long val; -+ int err; -+ -+ err = kstrtoul(buf, 10, &val); -+ if (err) -+ return err; -+ if (val == 0) -+ goto done; -+ -+ mutex_lock(&data->lock); -+ err = si570_reset(client, data); -+ mutex_unlock(&data->lock); -+ if (err) -+ return err; -+done: -+ return count; -+} -+ -+int reset_si570(struct device *dev, int id) -+{ -+ char buf[4]; -+ -+ if ((!dev) || (to_i2c_client(dev) != si570_client)) -+ return -EINVAL; -+ -+ sprintf(buf, "%lu", (unsigned long)id); -+ return set_reset_attr(dev, NULL, buf, 0); -+} -+EXPORT_SYMBOL(reset_si570); -+ -+struct i2c_client *get_i2c_client_si570(void) -+{ -+ return si570_client; -+} -+EXPORT_SYMBOL(get_i2c_client_si570); -+ -+static DEVICE_ATTR(frequency, S_IWUSR | S_IRUGO, show_frequency_attr, -+ set_frequency_attr); -+static DEVICE_ATTR(reset, S_IWUSR | S_IRUGO, show_reset_attr, set_reset_attr); -+ -+static struct attribute *si570_attr[] = { -+ &dev_attr_frequency.attr, -+ &dev_attr_reset.attr, -+ NULL -+}; -+ -+static const struct i2c_device_id si570_id[] = { -+ { "si570", 0 }, -+ { "si571", 0 }, -+ { "si598", 1 }, -+ { "si599", 1 }, -+ { } -+}; -+MODULE_DEVICE_TABLE(i2c, si570_id); -+ -+static int si570_probe(struct i2c_client *client, -+ const struct i2c_device_id *id) -+{ -+ struct si570_platform_data *pdata = client->dev.platform_data; -+ struct si570_data *data; -+ int err; -+ unsigned long initial_fout; -+ u32 tmp = SI570_FOUT_FACTORY_DFLT; -+ -+ data = kzalloc(sizeof(struct si570_data), GFP_KERNEL); -+ if (!data) { -+ err = -ENOMEM; -+ goto exit; -+ } -+ -+ if (id->driver_data) { -+ data->fout = SI598_FOUT_FACTORY_DFLT; -+ data->max_freq = SI598_MAX_FREQ; -+ } else { -+ data->fout = SI570_FOUT_FACTORY_DFLT; -+ data->max_freq = SI570_MAX_FREQ; -+ } -+ -+ if (pdata && pdata->factory_fout) -+ data->fout = pdata->factory_fout; -+ -+ if (client->dev.of_node && -+ (of_property_read_u32(client->dev.of_node, "factory-fout", -+ &tmp) < 0)) -+ dev_warn(&client->dev, -+ "DTS does not contain factory-fout, using default\n"); -+ else -+ data->fout = tmp; -+ -+ i2c_set_clientdata(client, data); -+ err = si570_get_defaults(client); -+ if (err < 0) -+ goto exit_free; -+ -+ mutex_init(&data->lock); -+ -+ /* Register sysfs hooks */ -+ data->attrs.attrs = si570_attr; -+ err = sysfs_create_group(&client->dev.kobj, &data->attrs); -+ if (err) -+ goto exit_free; -+ -+ /* Display a message indicating that we've successfully registered */ -+ dev_info(&client->dev, -+ "registered %s with default frequency %llu Hz\n", -+ id->name, data->fout); -+ -+ /* Read the requested initial fout from either platform data or the -+ * device tree -+ */ -+ initial_fout = 0; -+ if (pdata && pdata->initial_fout) -+ initial_fout = pdata->initial_fout; -+ if (client->dev.of_node) { -+ of_property_read_u32(client->dev.of_node, "initial-fout", -+ (u32 *)&initial_fout); -+ if (pdata && pdata->initial_fout && -+ (pdata->initial_fout != initial_fout)) { -+ dev_warn(&client->dev, -+ "OF initial fout %lu overrides platform data fout %lu\n", -+ initial_fout, -+ pdata->initial_fout); -+ } -+ } -+ -+ if (initial_fout != 0) { -+ if (initial_fout < SI570_MIN_FREQ || -+ initial_fout > data->max_freq) { -+ dev_err(&client->dev, -+ "requested initial frequency %lu is out of range, using default\n", -+ initial_fout); -+ return 0; -+ } -+ -+ mutex_lock(&data->lock); -+ -+ if (div64_u64(abs(initial_fout - data->frequency) * -+ 10000LL, data->frequency) < 35) -+ err = si570_set_frequency_small(client, data, -+ initial_fout); -+ else -+ err = si570_set_frequency(client, data, -+ initial_fout); -+ mutex_unlock(&data->lock); -+ if (err) { -+ dev_warn(&client->dev, -+ "unable to set initial output frequency %lu: %d\n", -+ initial_fout, err); -+ return err; -+ } -+ -+ dev_info(&client->dev, -+ "set initial output frequency %lu Hz\n", -+ initial_fout); -+ } -+ -+ si570_client = client; -+ -+ return 0; -+ -+exit_free: -+ kfree(data); -+exit: -+ return err; -+} -+ -+static int si570_remove(struct i2c_client *client) -+{ -+ struct si570_data *data = i2c_get_clientdata(client); -+ -+ sysfs_remove_group(&client->dev.kobj, &data->attrs); -+ kfree(data); -+ return 0; -+} -+ -+#ifdef CONFIG_OF -+static const struct of_device_id i2c_si570_of_match[] = { -+ { .compatible = "si570" }, -+ { }, -+}; -+MODULE_DEVICE_TABLE(of, i2c_si570_of_match); -+#endif -+ -+static struct i2c_driver si570_driver = { -+ .driver = { -+ .name = "si570", -+ .of_match_table = of_match_ptr(i2c_si570_of_match), -+ }, -+ .probe = si570_probe, -+ .remove = si570_remove, -+ .id_table = si570_id, -+}; -+ -+static int __init si570_init(void) -+{ -+ return i2c_add_driver(&si570_driver); -+} -+ -+static void __exit si570_exit(void) -+{ -+ i2c_del_driver(&si570_driver); -+} -+ -+MODULE_AUTHOR("Guenter Roeck "); -+MODULE_DESCRIPTION("Si570 driver"); -+MODULE_LICENSE("GPL"); -+ -+module_init(si570_init); -+module_exit(si570_exit); ---- /dev/null -+++ b/include/linux/i2c/si570.h -@@ -0,0 +1,31 @@ -+/* -+ * si570.h - Configuration for si570 misc driver. -+ * -+ * 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 (version 2 of the License only). -+ * -+ * 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. -+ */ -+ -+#ifndef __LINUX_SI570_H -+#define __LINUX_SI570_H -+ -+#include -+#include -+#include -+ -+struct si570_platform_data { -+ u64 factory_fout; /* Factory default output frequency */ -+ unsigned long initial_fout; /* Requested initial frequency */ -+}; -+ -+int get_frequency_si570(struct device *dev, unsigned long *freq); -+int set_frequency_si570(struct device *dev, unsigned long freq); -+int reset_si570(struct device *dev, int id); -+struct i2c_client *get_i2c_client_si570(void); -+ -+#endif /* __LINUX_SI570_H */ diff --git a/patches.zynq/0014-arm-zynq-Migrate-platform-to-clock-controller.patch b/patches.zynq/0014-arm-zynq-Migrate-platform-to-clock-controller.patch index 5787407..fb6ebca 100644 --- a/patches.zynq/0014-arm-zynq-Migrate-platform-to-clock-controller.patch +++ b/patches.zynq/0014-arm-zynq-Migrate-platform-to-clock-controller.patch @@ -18,19 +18,17 @@ Acked-by: Mike Turquette Signed-off-by: Daniel Sangorrin Signed-off-by: Yoshitake Kobayashi --- - arch/arm/boot/dts/zynq-7000.dtsi | 71 ++++++++------------------- - arch/arm/boot/dts/zynq-zc702.dts | 4 -- - arch/arm/mach-zynq/slcr.c | 2 +- - drivers/clk/Makefile | 2 +- - drivers/clk/zynq/Makefile | 3 ++ - drivers/clocksource/cadence_ttc_timer.c | 23 +++++++-- - drivers/tty/serial/xilinx_uartps.c | 85 ++++++++++++++++++++++++++------- - include/linux/clk/zynq.h | 8 +++- + arch/arm/boot/dts/zynq-7000.dtsi | 71 +++++++------------------- + arch/arm/boot/dts/zynq-zc702.dts | 4 - + arch/arm/mach-zynq/slcr.c | 2 + drivers/clk/Makefile | 2 + drivers/clk/zynq/Makefile | 3 + + drivers/clocksource/cadence_ttc_timer.c | 23 ++++++-- + drivers/tty/serial/xilinx_uartps.c | 85 +++++++++++++++++++++++++------- + include/linux/clk/zynq.h | 8 ++- 8 files changed, 118 insertions(+), 80 deletions(-) create mode 100644 drivers/clk/zynq/Makefile -diff --git a/arch/arm/boot/dts/zynq-7000.dtsi b/arch/arm/boot/dts/zynq-7000.dtsi -index 4265b0fd1e20..952b61d39b0a 100644 --- a/arch/arm/boot/dts/zynq-7000.dtsi +++ b/arch/arm/boot/dts/zynq-7000.dtsi @@ -49,16 +49,18 @@ @@ -150,8 +148,6 @@ index 4265b0fd1e20..952b61d39b0a 100644 } ; }; }; -diff --git a/arch/arm/boot/dts/zynq-zc702.dts b/arch/arm/boot/dts/zynq-zc702.dts -index 86f44d5b0265..e25a307438ad 100644 --- a/arch/arm/boot/dts/zynq-zc702.dts +++ b/arch/arm/boot/dts/zynq-zc702.dts @@ -28,7 +28,3 @@ @@ -162,8 +158,6 @@ index 86f44d5b0265..e25a307438ad 100644 -&ps_clk { - clock-frequency = <33333330>; -}; -diff --git a/arch/arm/mach-zynq/slcr.c b/arch/arm/mach-zynq/slcr.c -index 884dace227d5..1836d5a34606 100644 --- a/arch/arm/mach-zynq/slcr.c +++ b/arch/arm/mach-zynq/slcr.c @@ -106,7 +106,7 @@ int __init zynq_slcr_init(void) @@ -175,11 +169,9 @@ index 884dace227d5..1836d5a34606 100644 of_node_put(np); -diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile -index 137d3e730f86..fa435bcf9f1a 100644 --- a/drivers/clk/Makefile +++ b/drivers/clk/Makefile -@@ -27,7 +27,7 @@ obj-$(CONFIG_MACH_LOONGSON1) += clk-ls1x.o +@@ -27,7 +27,7 @@ obj-$(CONFIG_MACH_LOONGSON1) += clk-ls1x obj-$(CONFIG_ARCH_SUNXI) += sunxi/ obj-$(CONFIG_ARCH_U8500) += ux500/ obj-$(CONFIG_ARCH_VT8500) += clk-vt8500.o @@ -187,18 +179,13 @@ index 137d3e730f86..fa435bcf9f1a 100644 +obj-$(CONFIG_ARCH_ZYNQ) += zynq/ obj-$(CONFIG_ARCH_TEGRA) += tegra/ obj-$(CONFIG_PLAT_SAMSUNG) += samsung/ - -diff --git a/drivers/clk/zynq/Makefile b/drivers/clk/zynq/Makefile -new file mode 100644 -index 000000000000..156d923f4fa9 + obj-$(CONFIG_ARCH_SHMOBILE_MULTI) += shmobile/ --- /dev/null +++ b/drivers/clk/zynq/Makefile @@ -0,0 +1,3 @@ +# Zynq clock specific Makefile + +obj-$(CONFIG_ARCH_ZYNQ) += clkc.o pll.o -diff --git a/drivers/clocksource/cadence_ttc_timer.c b/drivers/clocksource/cadence_ttc_timer.c -index 685bc60e210a..4cbe28c74631 100644 --- a/drivers/clocksource/cadence_ttc_timer.c +++ b/drivers/clocksource/cadence_ttc_timer.c @@ -51,6 +51,8 @@ @@ -210,7 +197,7 @@ index 685bc60e210a..4cbe28c74631 100644 /* * Setup the timers to use pre-scaling, using a fixed value for now that will * work across most input frequency, but it may need to be more dynamic -@@ -396,8 +398,9 @@ static void __init ttc_timer_init(struct device_node *timer) +@@ -396,8 +398,9 @@ static void __init ttc_timer_init(struct { unsigned int irq; void __iomem *timer_baseaddr; @@ -221,7 +208,7 @@ index 685bc60e210a..4cbe28c74631 100644 if (initialized) return; -@@ -421,14 +424,24 @@ static void __init ttc_timer_init(struct device_node *timer) +@@ -421,14 +424,24 @@ static void __init ttc_timer_init(struct BUG(); } @@ -250,8 +237,6 @@ index 685bc60e210a..4cbe28c74631 100644 pr_info("%s #0 at %p, irq=%d\n", timer->name, timer_baseaddr, irq); } -diff --git a/drivers/tty/serial/xilinx_uartps.c b/drivers/tty/serial/xilinx_uartps.c -index b5f655d10098..916305a573b8 100644 --- a/drivers/tty/serial/xilinx_uartps.c +++ b/drivers/tty/serial/xilinx_uartps.c @@ -14,6 +14,7 @@ @@ -279,7 +264,7 @@ index b5f655d10098..916305a573b8 100644 * xuartps_isr - Interrupt handler * @irq: Irq number * @dev_id: Id of the port -@@ -936,34 +947,55 @@ static int xuartps_probe(struct platform_device *pdev) +@@ -936,34 +947,55 @@ static int xuartps_probe(struct platform int rc; struct uart_port *port; struct resource *res, *res2; @@ -348,7 +333,7 @@ index b5f655d10098..916305a573b8 100644 } else { /* Register the port. * This function also registers this device with the tty layer -@@ -972,18 +1004,31 @@ static int xuartps_probe(struct platform_device *pdev) +@@ -972,18 +1004,31 @@ static int xuartps_probe(struct platform port->mapbase = res->start; port->irq = res2->start; port->dev = &pdev->dev; @@ -383,7 +368,7 @@ index b5f655d10098..916305a573b8 100644 } /** -@@ -995,14 +1040,18 @@ static int xuartps_probe(struct platform_device *pdev) +@@ -995,14 +1040,18 @@ static int xuartps_probe(struct platform static int xuartps_remove(struct platform_device *pdev) { struct uart_port *port = dev_get_drvdata(&pdev->dev); @@ -404,8 +389,6 @@ index b5f655d10098..916305a573b8 100644 return rc; } -diff --git a/include/linux/clk/zynq.h b/include/linux/clk/zynq.h -index 56be7cd9aa8b..e062d317ccce 100644 --- a/include/linux/clk/zynq.h +++ b/include/linux/clk/zynq.h @@ -1,4 +1,5 @@ @@ -427,6 +410,3 @@ index 56be7cd9aa8b..e062d317ccce 100644 + void __iomem *pll_ctrl, void __iomem *pll_status, u8 lock_index, + spinlock_t *lock); #endif --- -1.8.5.rc3 - diff --git a/patches.zynq/0039-clk-add-CLK_SET_RATE_NO_REPARENT-flag.patch b/patches.zynq/0039-clk-add-CLK_SET_RATE_NO_REPARENT-flag.patch index 27ab3158..ec8840b 100644 --- a/patches.zynq/0039-clk-add-CLK_SET_RATE_NO_REPARENT-flag.patch +++ b/patches.zynq/0039-clk-add-CLK_SET_RATE_NO_REPARENT-flag.patch @@ -52,15 +52,13 @@ Signed-off-by: Mike Turquette Signed-off-by: Daniel Sangorrin Signed-off-by: Yoshitake Kobayashi --- - drivers/clk/zynq/clkc.c | 80 +++++++++++++++++++++++++------------------- - include/linux/clk-provider.h | 1 + + drivers/clk/zynq/clkc.c | 80 ++++++++++++++++++++++++------------------- + include/linux/clk-provider.h | 1 2 files changed, 47 insertions(+), 34 deletions(-) -diff --git a/drivers/clk/zynq/clkc.c b/drivers/clk/zynq/clkc.c -index 089d3e30e221..6169d56fb6f1 100644 --- a/drivers/clk/zynq/clkc.c +++ b/drivers/clk/zynq/clkc.c -@@ -125,8 +125,9 @@ static void __init zynq_clk_register_fclk(enum zynq_clk fclk, +@@ -125,8 +125,9 @@ static void __init zynq_clk_register_fcl div0_name = kasprintf(GFP_KERNEL, "%s_div0", clk_name); div1_name = kasprintf(GFP_KERNEL, "%s_div1", clk_name); @@ -72,7 +70,7 @@ index 089d3e30e221..6169d56fb6f1 100644 clk = clk_register_divider(NULL, div0_name, mux_name, 0, fclk_ctrl_reg, 8, 6, CLK_DIVIDER_ONE_BASED | -@@ -168,8 +169,8 @@ static void __init zynq_clk_register_periph_clk(enum zynq_clk clk0, +@@ -168,8 +169,8 @@ static void __init zynq_clk_register_per mux_name = kasprintf(GFP_KERNEL, "%s_mux", clk_name0); div_name = kasprintf(GFP_KERNEL, "%s_div", clk_name0); @@ -83,7 +81,7 @@ index 089d3e30e221..6169d56fb6f1 100644 clk = clk_register_divider(NULL, div_name, mux_name, 0, clk_ctrl, 8, 6, CLK_DIVIDER_ONE_BASED | CLK_DIVIDER_ALLOW_ZERO, lock); -@@ -236,25 +237,26 @@ static void __init zynq_clk_setup(struct device_node *np) +@@ -236,25 +237,26 @@ static void __init zynq_clk_setup(struct clk = clk_register_zynq_pll("armpll_int", "ps_clk", SLCR_ARMPLL_CTRL, SLCR_PLL_STATUS, 0, &armpll_lock); clks[armpll] = clk_register_mux(NULL, clk_output_name[armpll], @@ -118,7 +116,7 @@ index 089d3e30e221..6169d56fb6f1 100644 clk = clk_register_divider(NULL, "cpu_div", "cpu_mux", 0, SLCR_ARM_CLK_CTRL, 8, 6, CLK_DIVIDER_ONE_BASED | CLK_DIVIDER_ALLOW_ZERO, &armclk_lock); -@@ -293,8 +295,9 @@ static void __init zynq_clk_setup(struct device_node *np) +@@ -293,8 +295,9 @@ static void __init zynq_clk_setup(struct swdt_ext_clk_mux_parents[i + 1] = dummy_nm; } clks[swdt] = clk_register_mux(NULL, clk_output_name[swdt], @@ -130,7 +128,7 @@ index 089d3e30e221..6169d56fb6f1 100644 /* DDR clocks */ clk = clk_register_divider(NULL, "ddr2x_div", "ddrpll", 0, -@@ -356,8 +359,9 @@ static void __init zynq_clk_setup(struct device_node *np) +@@ -356,8 +359,9 @@ static void __init zynq_clk_setup(struct gem0_mux_parents[i + 1] = of_clk_get_parent_name(np, idx); } @@ -142,7 +140,7 @@ index 089d3e30e221..6169d56fb6f1 100644 clk = clk_register_divider(NULL, "gem0_div0", "gem0_mux", 0, SLCR_GEM0_CLK_CTRL, 8, 6, CLK_DIVIDER_ONE_BASED | CLK_DIVIDER_ALLOW_ZERO, &gem0clk_lock); -@@ -366,7 +370,7 @@ static void __init zynq_clk_setup(struct device_node *np) +@@ -366,7 +370,7 @@ static void __init zynq_clk_setup(struct CLK_DIVIDER_ONE_BASED | CLK_DIVIDER_ALLOW_ZERO, &gem0clk_lock); clk = clk_register_mux(NULL, "gem0_emio_mux", gem0_mux_parents, 2, @@ -151,7 +149,7 @@ index 089d3e30e221..6169d56fb6f1 100644 &gem0clk_lock); clks[gem0] = clk_register_gate(NULL, clk_output_name[gem0], "gem0_emio_mux", CLK_SET_RATE_PARENT, -@@ -379,8 +383,9 @@ static void __init zynq_clk_setup(struct device_node *np) +@@ -379,8 +383,9 @@ static void __init zynq_clk_setup(struct gem1_mux_parents[i + 1] = of_clk_get_parent_name(np, idx); } @@ -163,7 +161,7 @@ index 089d3e30e221..6169d56fb6f1 100644 clk = clk_register_divider(NULL, "gem1_div0", "gem1_mux", 0, SLCR_GEM1_CLK_CTRL, 8, 6, CLK_DIVIDER_ONE_BASED | CLK_DIVIDER_ALLOW_ZERO, &gem1clk_lock); -@@ -389,7 +394,7 @@ static void __init zynq_clk_setup(struct device_node *np) +@@ -389,7 +394,7 @@ static void __init zynq_clk_setup(struct CLK_DIVIDER_ONE_BASED | CLK_DIVIDER_ALLOW_ZERO, &gem1clk_lock); clk = clk_register_mux(NULL, "gem1_emio_mux", gem1_mux_parents, 2, @@ -172,7 +170,7 @@ index 089d3e30e221..6169d56fb6f1 100644 &gem1clk_lock); clks[gem1] = clk_register_gate(NULL, clk_output_name[gem1], "gem1_emio_mux", CLK_SET_RATE_PARENT, -@@ -409,8 +414,9 @@ static void __init zynq_clk_setup(struct device_node *np) +@@ -409,8 +414,9 @@ static void __init zynq_clk_setup(struct can_mio_mux_parents[i] = dummy_nm; } kfree(clk_name); @@ -184,7 +182,7 @@ index 089d3e30e221..6169d56fb6f1 100644 clk = clk_register_divider(NULL, "can_div0", "can_mux", 0, SLCR_CAN_CLK_CTRL, 8, 6, CLK_DIVIDER_ONE_BASED | CLK_DIVIDER_ALLOW_ZERO, &canclk_lock); -@@ -425,17 +431,21 @@ static void __init zynq_clk_setup(struct device_node *np) +@@ -425,17 +431,21 @@ static void __init zynq_clk_setup(struct CLK_SET_RATE_PARENT, SLCR_CAN_CLK_CTRL, 1, 0, &canclk_lock); clk = clk_register_mux(NULL, "can0_mio_mux", @@ -214,7 +212,7 @@ index 089d3e30e221..6169d56fb6f1 100644 for (i = 0; i < ARRAY_SIZE(dbgtrc_emio_input_names); i++) { int idx = of_property_match_string(np, "clock-names", -@@ -444,13 +454,15 @@ static void __init zynq_clk_setup(struct device_node *np) +@@ -444,13 +454,15 @@ static void __init zynq_clk_setup(struct dbg_emio_mux_parents[i + 1] = of_clk_get_parent_name(np, idx); } @@ -234,11 +232,9 @@ index 089d3e30e221..6169d56fb6f1 100644 clks[dbg_trc] = clk_register_gate(NULL, clk_output_name[dbg_trc], "dbg_emio_mux", CLK_SET_RATE_PARENT, SLCR_DBG_CLK_CTRL, 0, 0, &dbgclk_lock); -diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h -index 11860985fecb..de4c2fc08c35 100644 --- a/include/linux/clk-provider.h +++ b/include/linux/clk-provider.h -@@ -27,6 +27,7 @@ +@@ -28,6 +28,7 @@ #define CLK_IS_ROOT BIT(4) /* root clk, has no parent */ #define CLK_IS_BASIC BIT(5) /* Basic clk, can't do a to_clk_foo() */ #define CLK_GET_RATE_NOCACHE BIT(6) /* do not use the cached clk rate */ @@ -246,6 +242,3 @@ index 11860985fecb..de4c2fc08c35 100644 struct clk_hw; --- -1.8.5.rc3 - diff --git a/patches.zynq/0070-arm-dt-zynq-Add-support-for-the-zc706-platform.patch b/patches.zynq/0070-arm-dt-zynq-Add-support-for-the-zc706-platform.patch index 0754279..adaaeca 100644 --- a/patches.zynq/0070-arm-dt-zynq-Add-support-for-the-zc706-platform.patch +++ b/patches.zynq/0070-arm-dt-zynq-Add-support-for-the-zc706-platform.patch @@ -20,7 +20,7 @@ Signed-off-by: Yoshitake Kobayashi --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile -@@ -216,7 +216,8 @@ dtb-$(CONFIG_ARCH_VT8500) += vt8500-bv07 +@@ -219,7 +219,8 @@ dtb-$(CONFIG_ARCH_VT8500) += vt8500-bv07 wm8505-ref.dtb \ wm8650-mid.dtb \ wm8850-w70v2.dtb diff --git a/series b/series index a2d6c59..934421b9 100644 --- a/series +++ b/series @@ -879,6 +879,292 @@ patches.renesas/0234-clocksource-sh_tmu-Release-clock-when-sh_tmu_registe.patch patches.renesas/0235-clocksource-sh_tmu-Add-clk_prepare-unprepare-support.patch patches.renesas/0236-irqchip-Gic-fix-boot-for-chained-gics.patch patches.renesas/0237-ASoC-rcar-select-REGMAP.patch +patches.renesas/0001-clocksource-sh_cmt-32-bit-control-register-support.patch +patches.renesas/0002-emev2-GPIOLIB-Enable-support-for-OF.patch +patches.renesas/0003-gpio-em-drop-references-to-virtual-IRQ.patch +patches.renesas/0004-micrel-add-support-for-KSZ8041RNLI.patch +patches.renesas/0005-clk-shmobile-Add-R-Car-Gen2-clocks-support.patch +patches.renesas/0006-clk-shmobile-Add-DIV6-clock-support.patch +patches.renesas/0007-clk-shmobile-Add-MSTP-clock-support.patch +patches.renesas/0008-clocksource-sh_cmt-Add-clk_prepare-unprepare-support.patch +patches.renesas/0009-gpio-rcar-Support-both-edge-trigger-with-DT.patch +patches.renesas/0010-gpio-rcar-Use-lazy-disable.patch +patches.renesas/0011-gpio-rcar-Enable-mask-on-suspend.patch +patches.renesas/0012-gpio-em-Use-lazy-disable.patch +patches.renesas/0013-gpio-em-Enable-mask-on-suspend.patch +patches.renesas/0014-serial-sh-sci-Fix-warnings-due-to-improper-casts-and.patch +patches.renesas/0015-serial-sh-sci-Don-t-enable-disable-port-from-within-.patch +patches.renesas/0016-serial-sh-sci-Convert-to-clk_prepare-unprepare.patch +patches.renesas/0017-serial-sh-sci-Sort-headers-alphabetically.patch +patches.renesas/0018-serial-sh-sci-Remove-baud-rate-calculation-algorithm.patch +patches.renesas/0019-serial-sh-sci-Simplify-baud-rate-calculation-algorit.patch +patches.renesas/0020-serial-sh-sci-Remove-duplicate-interrupt-check-in-ve.patch +patches.renesas/0021-serial-sh-sci-Set-the-UPF_FIXED_PORT-flag.patch +patches.renesas/0022-serial-sh-sci-Don-t-check-IRQ-in-verify-port-operati.patch +patches.renesas/0023-serial-sh-sci-Support-resources-passed-through-platf.patch +patches.renesas/0024-serial-sh-sci-Move-overrun_bit-and-error_mask-fields.patch +patches.renesas/0025-serial-sh-sci-Remove-unused-GPIO-request-code.patch +patches.renesas/0026-serial-sh-sci-Compute-overrun_bit-without-using-baud.patch +patches.renesas/0027-serial-sh-sci-Rework-baud-rate-calculation.patch +patches.renesas/0028-serial-sh-sci-Remove-platform-data-scbrr_algo_id-fie.patch +patches.renesas/0029-serial-sh-sci-Remove-platform-data-mapbase-and-irqs-.patch +patches.renesas/0030-serial-sh-sci-Add-OF-support.patch +patches.renesas/0031-sh-Declare-SCIF-register-base-and-IRQ-as-resources.patch +patches.renesas/0032-sh-sh772-34-Set-serial-port-sampling-rate-to-8-for-S.patch +patches.renesas/0033-sh-Don-t-set-plat_sci_port-scbrr_algo_id-field.patch +patches.renesas/0034-irqchip-renesas-irqc-Use-lazy-disable.patch +patches.renesas/0035-irqchip-renesas-irqc-Enable-mask-on-suspend.patch +patches.renesas/0036-clk-wrap-I-O-access-for-improved-portability.patch +patches.renesas/0037-include-dt-binding-input-create-a-DT-header-defining.patch +patches.renesas/0038-ARM-shmobile-Genmai-defconfig.patch +patches.renesas/0039-ARM-shmobile-bockw-enable-CONFIG_REGULATOR.patch +patches.renesas/0040-ARM-shmobile-bockw-Do-not-set-command-line-in-defcon.patch +patches.renesas/0041-ARM-shmobile-marzen-Do-not-set-command-line-in-defco.patch +patches.renesas/0042-ARM-shmobile-bockw-Do-not-disable-CONFIG_INOTIFY_USE.patch +patches.renesas/0043-ARM-shmobile-marzen-Do-not-disable-CONFIG_INOTIFY_US.patch +patches.renesas/0044-ARM-shmobile-bockw-Enable-CONFIG_VFP-in-defconfig.patch +patches.renesas/0045-ARM-shmobile-marzen-Enable-CONFIG_VFP-in-defconfig.patch +patches.renesas/0046-ARM-shmobile-bockw-Do-not-enable-CONFIG_DEVTMPFS-def.patch +patches.renesas/0047-ARM-shmobile-marzen-Do-not-enable-CONFIG_DEVTMPFS-de.patch +patches.renesas/0048-ARM-shmobile-bockw-Enable-CONFIG_PACKET-in-defconfig.patch +patches.renesas/0049-ARM-shmobile-marzen-Enable-CONFIG_PACKET-in-defconfi.patch +patches.renesas/0050-ARM-shmobile-marzen-Do-not-enable-CONFIG_SMC911X-in-.patch +patches.renesas/0051-ARM-shmobile-marzen-enable-HPB-DMAC-in-defconfig.patch +patches.renesas/0052-ARM-shmobile-bockw-enable-HPB-DMAC-in-defconfig.patch +patches.renesas/0053-ARM-shmobile-kzm9d-Enable-AUTO_ZRELADDR-in-defconfig.patch +patches.renesas/0054-ARM-shmobile-ape6evm-don-t-use-named-resource-for-MM.patch +patches.renesas/0055-ARM-shmobile-ape6evm-don-t-use-named-resource-for-SD.patch +patches.renesas/0056-ARM-shmobile-lager-don-t-use-named-resource-for-MMCI.patch +patches.renesas/0057-ARM-shmobile-sh73a0-don-t-use-named-resource-for-TMU.patch +patches.renesas/0058-ARM-shmobile-sh73a0-don-t-use-named-resource-for-I2C.patch +patches.renesas/0059-ARM-shmobile-sh73a0-don-t-use-named-resource-for-IPM.patch +patches.renesas/0060-ARM-shmobile-bockw-header-cleanup.patch +patches.renesas/0061-ARM-shmobile-r8a7779-cleanup-registration-of-VIN.patch +patches.renesas/0062-ARM-shmobile-Cosmetic-update-of-Lager-DT-Reference.patch +patches.renesas/0063-ARM-shmobile-Add-r8a7790_register_pfc-function.patch +patches.renesas/0064-ARM-shmobile-r8a7779-camera-rcar-header-cleanup.patch +patches.renesas/0065-ARM-shmobile-r8a7790-Correct-typo-in-clocks.patch +patches.renesas/0066-ARM-shmobile-r8a7779-cleanup-registration-of-sh_eth.patch +patches.renesas/0067-ARM-shmobile-sh73a0-tidyup-clock-table-order.patch +patches.renesas/0068-ARM-shmobile-r7s72100-tidyup-clock-table-order.patch +patches.renesas/0069-ARM-shmobile-sh7372-tidyup-clock-table-order.patch +patches.renesas/0070-ARM-shmobile-lager-phy-fixup-needs-CONFIG_PHYLIB.patch +patches.renesas/0071-ARM-shmobile-r8a7790-Fix-GPIO-resources-in-DTS.patch +patches.renesas/0072-ARM-shmobile-r8a7778-add-I2C-clock-for-DT.patch +patches.renesas/0073-ARM-shmobile-r8a7779-add-I2C-clock-for-DT.patch +patches.renesas/0074-ARM-shmobile-Select-IRQC-in-case-of-the-r8a7791-SoC.patch +patches.renesas/0075-ARM-shmobile-r8a7791-PFC-platform-device-support.patch +patches.renesas/0076-ARM-shmobile-Select-GPIO-in-case-of-the-r8a7791-SoC.patch +patches.renesas/0077-ARM-shmobile-r8a7791-GPIO-platform-device-support.patch +patches.renesas/0078-ARM-shmobile-r8a73a4-don-t-use-named-irq-for-DMAEngi.patch +patches.renesas/0079-ARM-shmobile-Select-GPIO-in-case-of-the-r7s72100-SoC.patch +patches.renesas/0080-ARM-shmobile-r8a7778-add-MMCIF-clock-support-for-DT.patch +patches.renesas/0081-ARM-shmobile-r8a7778-add-SDHI-clock-support-for-DT.patch +patches.renesas/0082-ARM-shmobile-r8a7779-add-SDHI-clock-support-for-DT.patch +patches.renesas/0083-ARM-shmobile-r8a7790-Add-USBHS-clock-support.patch +patches.renesas/0084-ARM-shmobile-r8a7790-add-QSPI-support.patch +patches.renesas/0085-ARM-shmobile-Enable-MTU2-on-r7s72100.patch +patches.renesas/0086-ARM-shmobile-Add-shared-EMEV2-code-for-init_machine.patch +patches.renesas/0087-ARM-shmobile-Use-init_late-in-shared-EMEV2-case.patch +patches.renesas/0088-ARM-shmobile-Remove-legacy-KZM9D-board-code.patch +patches.renesas/0089-ARM-shmobile-Remove-legacy-platform-devices-from-EME.patch +patches.renesas/0090-ARM-shmobile-r8a7778-add-HSPI-clock-support-for-DT.patch +patches.renesas/0091-ARM-shmobile-Select-USE_OF-on-EMEV2.patch +patches.renesas/0092-ARM-shmobile-r8a7791-Add-DU-and-LVDS-clocks.patch +patches.renesas/0093-ARM-Rename-ARCH_SHMOBILE-to-ARCH_SHMOBILE_LEGACY.patch +patches.renesas/0094-ARM-shmobile-Add-r8a7790-clocks-for-thermal-devices.patch +patches.renesas/0095-ARM-shmobile-Add-r8a7791-thermal-platform-device.patch +patches.renesas/0096-ARM-shmobile-Add-r8a7791-clocks-for-thermal-devices.patch +patches.renesas/0097-ARM-shmobile-r8a7790-care-EXTAL-divider-settings.patch +patches.renesas/0098-ARM-shmobile-r8a7790-fixup-I2C-clock-source.patch +patches.renesas/0099-ARM-shmobile-r8a7790-tidyup-clock-table-order.patch +patches.renesas/0100-ARM-shmobile-Select-AUTO_ZRELADDR-for-EMEV2.patch +patches.renesas/0101-ARM-shmobile-r8a7778-add-HPBIFx-DMAEngine-support.patch +patches.renesas/0102-ARM-shmobile-r8a7790-add-SSI-MSTP-clocks.patch +patches.renesas/0103-ARM-shmobile-r8a7740-add-FSI-clock-support-for-DT.patch +patches.renesas/0104-ARM-shmobile-r8a7779-add-HSPI-clock-support-for-DT.patch +patches.renesas/0105-ARM-shmobile-r8a7778-add-I2C-support-on-DTSI.patch +patches.renesas/0106-ARM-shmobile-r8a7779-tidyup-I2C-driver-name-on-DTSI.patch +patches.renesas/0107-ARM-shmobile-lager-add-default-PFC-settings-on-DTS.patch +patches.renesas/0108-ARM-shmobile-lager-add-MMCIF-support-on-DTS.patch +patches.renesas/0109-ARM-shmobile-r8a7791-PFC-device-tree-node.patch +patches.renesas/0110-ARM-shmobile-r8a7791-GPIO-device-tree-node.patch +patches.renesas/0111-ARM-shmobile-r8a7791-Koelsch-DT-reference-DTS-bits.patch +patches.renesas/0112-ARM-shmobile-r8a7778-Fix-pin-control-device-address-.patch +patches.renesas/0113-ARM-shmobile-bockw-add-default-PFC-settings-on-DTS.patch +patches.renesas/0114-ARM-shmobile-bockw-remove-manual-PFC-settings-on-ref.patch +patches.renesas/0115-ARM-shmobile-r8a7778-add-MMCIF-support-on-DTSI.patch +patches.renesas/0116-ARM-shmobile-bockw-add-MMCIF-support-on-DTS.patch +patches.renesas/0117-ARM-shmobile-bockw-fixup-MMC-pin-conflict-on-DTS.patch +patches.renesas/0118-ARM-shmobile-r8a7778-add-SDHI-support-on-DTSI.patch +patches.renesas/0119-ARM-shmobile-bockw-add-SDHI-support-on-DTS.patch +patches.renesas/0120-ARM-shmobile-r8a7779-add-SDHI-support-on-DTSI.patch +patches.renesas/0121-ARM-shmobile-marzen-add-SDHI-support-on-DTS.patch +patches.renesas/0122-ARM-shmobile-r8a7740-tidyup-DT-node-naming.patch +patches.renesas/0123-ARM-shmobile-r8a73a4-tidyup-DT-node-naming.patch +patches.renesas/0124-ARM-shmobile-r8a7778-tidyup-DT-node-naming.patch +patches.renesas/0125-ARM-shmobile-r8a7779-tidyup-DT-node-naming.patch +patches.renesas/0126-ARM-shmobile-r8a7790-tidyup-DT-node-naming.patch +patches.renesas/0127-ARM-shmobile-sh73a0-tidyup-DT-node-naming.patch +patches.renesas/0128-ARM-shmobile-armadillo-tidyup-DT-node-naming.patch +patches.renesas/0129-ARM-shmobile-ape6evm-tidyup-DT-node-naming.patch +patches.renesas/0130-ARM-shmobile-kzm9g-tidyup-DT-node-naming.patch +patches.renesas/0131-ARM-shmobile-bockw-tidyup-DT-node-naming.patch +patches.renesas/0132-ARM-shmobile-marzen-tidyup-DT-node-naming.patch +patches.renesas/0133-ARM-shmobile-lager-tidyup-DT-node-naming.patch +patches.renesas/0134-ARM-shmobile-emev2-Add-clock-tree-description-in-DT.patch +patches.renesas/0135-ARM-shmobile-r8a7778-add-I2C-support-on-DTSI.patch +patches.renesas/0136-ARM-shmobile-r8a7778-add-HSPI-suppport-on-DTSI.patch +patches.renesas/0137-ARM-shmobile-bockw-enable-HSPI0-on-DTS.patch +patches.renesas/0138-ARM-shmobile-Use-include-in-device-tree-sources.patch +patches.renesas/0139-ARM-shmobile-Use-interrupt-macros-in-SoC-DT-files.patch +patches.renesas/0140-ARM-shmobile-Use-interrupt-macros-in-board-DT-files.patch +patches.renesas/0141-ARM-shmobile-marzen-reference-Use-falling-edge-IRQ-f.patch +patches.renesas/0142-ARM-shmobile-bockw-reference-Use-falling-edge-IRQ-fo.patch +patches.renesas/0143-ARM-shmobile-kzm9g-reference-Use-falling-edge-IRQ-fo.patch +patches.renesas/0144-ARM-shmobile-marzen-remove-SDHI0-WP-pin-setting-from.patch +patches.renesas/0145-ARM-shmobile-marzen-remove-SDHI0-WP-pin-setting.patch +patches.renesas/0146-ARM-shmobile-sh73a0-fixup-sdhi-compatible-name.patch +patches.renesas/0147-ARM-shmobile-Use-r8a7791-suffix-for-IRQC-compat-stri.patch +patches.renesas/0148-ARM-shmobile-Configure-r8a7791-PFC-on-Koelsch-via-DT.patch +patches.renesas/0149-ARM-shmobile-Add-r8a7790-thermal-device-node-to-DTS.patch +patches.renesas/0150-ARM-shmobile-Add-r8a7791-thermal-device-node-to-DTS.patch +patches.renesas/0151-ARM-shmobile-Use-r8a7790-suffix-for-MMCIF-compat-str.patch +patches.renesas/0152-ARM-shmobile-Use-r8a7790-suffix-for-IRQC-compat-stri.patch +patches.renesas/0153-ARM-shmobile-armadillo-reference-Use-low-level-IRQ-f.patch +patches.renesas/0154-ARM-shmobile-Enable-DSW2-with-gpio-keys-on-KZM9D.patch +patches.renesas/0155-ARM-shmobile-Koelsch-DT-reference-GPIO-LED-support.patch +patches.renesas/0156-ARM-shmobile-kzm9g-reference-Add-PCF8575-GPIO-extend.patch +patches.renesas/0157-ARM-shmobile-kzm9g-reference-Add-GPIO-keys-to-DT.patch +patches.renesas/0158-ARM-shmobile-Include-all-2-GiB-of-memory-on-APE6EVM-.patch +patches.renesas/0159-ARM-shmobile-Include-all-2-GiB-of-memory-on-APE6EVM.patch +patches.renesas/0160-ARM-shmobile-Include-all-4-GiB-of-memory-on-Lager.patch +patches.renesas/0161-ARM-shmobile-Include-all-4-GiB-of-memory-on-Lager-DT.patch +patches.renesas/0162-ARM-shmobile-Fix-r8a7791-GPIO-resources-in-DTS.patch +patches.renesas/0163-ARM-shmobile-Use-interrupt-macros-in-r8a73a4-and-r8a.patch +patches.renesas/0164-ARM-shmobile-emev2-Use-interrupt-macros-in-DT-files.patch +patches.renesas/0165-ARM-shmobile-emev2-Setup-internal-peripheral-interru.patch +patches.renesas/0166-ARM-shmobile-r8a7740-add-FSI-support-via-DTSI.patch +patches.renesas/0167-ARM-shmobile-armadillo-add-FSI-support-for-DTS.patch +patches.renesas/0168-ARM-shmobile-Use-sh73a0-suffix-for-INTC-compat-strin.patch +patches.renesas/0169-ARM-shmobile-Use-r8a7740-suffix-for-INTC-compat-stri.patch +patches.renesas/0170-ARM-shmobile-Use-r8a7778-suffix-for-INTC-compat-stri.patch +patches.renesas/0171-ARM-shmobile-Use-r8a7779-suffix-for-INTC-compat-stri.patch +patches.renesas/0172-ARM-shmobile-r8a7779-add-HSPI-support-to-DTSI.patch +patches.renesas/0173-ARM-shmobile-marzen-enable-HSPI0-in-DTS.patch +patches.renesas/0174-ARM-shmobile-r8a7790-Add-clock-index-macros-for-DT-s.patch +patches.renesas/0175-ARM-shmobile-r8a7791-Add-clock-index-macros-for-DT-s.patch +patches.renesas/0176-ARM-shmobile-lager-add-gpio-regulator-support-on-def.patch +patches.renesas/0177-ARM-shmobile-lager-fixup-I2C-device-on-defconfig.patch +patches.renesas/0178-ARM-shmobile-genmai-Rename-ARCH_SHMOBILE-to-ARCH_SHM.patch +patches.renesas/0179-ARM-shmobile-bockw-use-regulator-for-MMCIF.patch +patches.renesas/0180-ARM-shmobile-Enable-PFC-GPIO-on-the-Koelsch-board.patch +patches.renesas/0181-ARM-shmobile-Add-Koelsch-LED6-LED7-and-LED8-support.patch +patches.renesas/0182-ARM-shmobile-Add-Koelsch-SW2-support.patch +patches.renesas/0183-ARM-shmobile-r8a7791-Koelsch-DT-reference-C-bits.patch +patches.renesas/0184-ARM-shmobile-bockw-fixup-FPGA-ioremap-area.patch +patches.renesas/0185-ARM-shmobile-bockw-add-pin-pull-up-setting-for-SDHI.patch +patches.renesas/0186-ARM-shmobile-lager-set-.debounce_interval.patch +patches.renesas/0187-ARM-shmobile-koelsch-set-.debounce_interval.patch +patches.renesas/0188-ARM-shmobile-Initial-r8a7791-and-Koelsch-multiplatfo.patch +patches.renesas/0189-ARM-shmobile-r7s72100-Genmai-DT-reference-C-bits.patch +patches.renesas/0190-ARM-shmobile-r7s72100-Genmai-Multiplatform.patch +patches.renesas/0191-ARM-shmobile-lager-mark-GPIO-keys-as-wake-up-sources.patch +patches.renesas/0192-ARM-shmobile-Use-init_late-on-Koelsch.patch +patches.renesas/0193-ARM-shmobile-koelsch-mark-GPIO-keys-as-wake-up-sourc.patch +patches.renesas/0194-ARM-shmobile-Hook-up-SW30-SW36-on-Koelsch.patch +patches.renesas/0195-ARM-shmobile-Use-init_late-on-Lager.patch +patches.renesas/0196-ARM-shmobile-Add-pinctrl_register_mappings-for-Koels.patch +patches.renesas/0197-ARM-shmobile-mackerel-clk_round_rate-can-return-a-ze.patch +patches.renesas/0198-ARM-shmobile-Lager-add-SPI-FLASH-support-on-QSPI.patch +patches.renesas/0199-ARM-shmobile-mackerel-Use-pinconf-API-to-configure-p.patch +patches.renesas/0200-ARM-Kconfig-Mention-Renesas-ARM-SoCs-instead-of-SH-M.patch +patches.renesas/0201-ARM-shmobile-armadillo-fixup-FSI-address-size.patch +patches.renesas/0202-ARM-shmobile-bockw-remove-unused-RSND_SSI_CLK_FROM_A.patch +patches.renesas/0203-ARM-shmobile-lager-add-gpio-fixed-regulator-for-SDHI.patch +patches.renesas/0204-ARM-shmobile-r8a7778-add-SSIx-DMAEngine-support.patch +patches.renesas/0205-ARM-shmobile-r8a7790-add-I2C-support.patch +patches.renesas/0206-ARM-shmobile-sh73a0-add-FSI-clock-support-for-DT.patch +patches.renesas/0207-ARM-shmobile-sh73a0-add-FSI-support-via-DTSI.patch +patches.renesas/0208-ARM-shmobile-kzm9g-add-FSI-support-for-DTS.patch +patches.renesas/0209-ARM-shmobile-r8a7778-camera-rcar-header-cleanup.patch +patches.renesas/0210-ARM-shmobile-r8a7791-add-Ether-clock.patch +patches.renesas/0211-ARM-shmobile-Koelsch-enable-Ether-in-defconfig.patch +patches.renesas/0212-ARM-shmobile-remove-unnecessary-platform_device-as-h.patch +patches.renesas/0213-ARM-rcar-gen2-Do-not-setup-timer-in-non-secure-mode.patch +patches.renesas/0214-ARM-shmobile-r8a7778-add-USB-Func-DMAEngine-support.patch +patches.renesas/0215-ARM-shmobile-koelsch-dts-Add-gpio-keys-device.patch +patches.renesas/0216-ARM-shmobile-Add-select-MIGHT_HAVE_PCI-for-PCI-AHB-b.patch +patches.renesas/0217-ARM-shmobile-armadillo800eva-Enable-backlight-contro.patch +patches.renesas/0218-ARM-shmobile-armadillo-Add-PWM-backlight-power-suppl.patch +patches.renesas/0219-ARM-shmobile-rcar-gen2-Initialize-CCF-before-clock-s.patch +patches.renesas/0220-ARM-shmobile-koelsch-Conditionally-select-MICREL_PHY.patch +patches.renesas/0221-ARM-shmobile-koelsch-Enable-CONFIG_PACKET-in-defconf.patch +patches.renesas/0222-ARM-shmobile-koelsch-Do-not-disable-CONFIG_-INOTIFY_.patch +patches.renesas/0223-ARM-shmobile-bockw-fixup-DMA-mask.patch +patches.renesas/0224-ARM-shmobile-r8a7790-fix-shdi-resource-sizes.patch +patches.renesas/0225-arm-shmobile-clks-remove-duplicated-clock-from-r7s72.patch +patches.renesas/0226-ARM-shmobile-koelsch-Add-DU-device.patch +patches.renesas/0227-ARM-shmobile-Koelsch-add-Ether-support.patch +patches.renesas/0228-ARM-shmobile-armadillo-Set-backlight-enable-GPIO.patch +patches.renesas/0229-ARM-shmobile-lager-reference-Enable-multiplaform-ker.patch +patches.renesas/0230-ARM-shmobile-koelsch-reference-Remove-duplicate-CCF-.patch +patches.renesas/0231-ARM-shmobile-lager-reference-Instantiate-clkdevs-for.patch +patches.renesas/0232-ARM-shmobile-koelsch-reference-Instantiate-clkdevs-f.patch +patches.renesas/0233-ARM-shmobile-Remove-non-multiplatform-Lager-referenc.patch +patches.renesas/0234-ARM-shmobile-Remove-non-multiplatform-Koelsch-refere.patch +patches.renesas/0235-ARM-shmobile-Let-Lager-multiplatform-boot-with-Lager.patch +patches.renesas/0236-ARM-shmobile-Let-Koelsch-multiplatform-boot-with-Koe.patch +patches.renesas/0237-ARM-shmobile-mackerel-Fix-USBHS-pinconf-entry.patch +patches.renesas/0238-ARM-shmobile-armadillo-dts-Add-PWM-backlight-power-s.patch +patches.renesas/0239-ARM-shmobile-armadillo-dts-Add-PWM-backlight-enable-.patch +patches.renesas/0240-ARM-shmobile-r8a73a4-Specify-PFC-interrupts-in-DT.patch +patches.renesas/0241-ARM-shmobile-r8a7740-Specify-PFC-interrupts-in-DT.patch +patches.renesas/0242-ARM-shmobile-sh73a0-Specify-PFC-interrupts-in-DT.patch +patches.renesas/0243-ARM-shmobile-armadillo-dts-Add-gpio-keys-device.patch +patches.renesas/0244-ARM-shmobile-r8a7790-Add-clocks.patch +patches.renesas/0245-ARM-shmobile-r8a7790-Reference-clocks.patch +patches.renesas/0246-ARM-shmobile-r8a7791-Add-clocks.patch +patches.renesas/0247-ARM-shmobile-Sync-Lager-DTS-with-Lager-reference-DTS.patch +patches.renesas/0248-ARM-shmobile-Sync-Koelsch-DTS-with-Koelsch-reference.patch +patches.renesas/0249-ARM-shmobile-lager-Specify-external-clock-frequency-.patch +patches.renesas/0250-ARM-shmobile-koelsch-Specify-external-clock-frequenc.patch +patches.renesas/0251-ARM-shmobile-Remove-Lager-reference-DTS.patch +patches.renesas/0252-ARM-shmobile-Lager-conditionally-select-CONFIG_MICRE.patch +patches.renesas/0253-ARM-shmobile-r8a7778-add-sound-SCU-clock-support.patch +patches.renesas/0254-ARM-shmobile-sh7372-Use-macros-to-declare-SCIF-devic.patch +patches.renesas/0255-ARM-shmobile-sh73a0-Use-macros-to-declare-SCIF-devic.patch +patches.renesas/0256-ARM-shmobile-r8a7740-Use-macros-to-declare-SCIF-devi.patch +patches.renesas/0257-ARM-shmobile-r8a7779-Use-macros-to-declare-SCIF-devi.patch +patches.renesas/0258-ARM-shmobile-r8a73a4-Don-t-define-SCIF-platform-data.patch +patches.renesas/0259-ARM-shmobile-r7s72100-Don-t-define-SCIF-platform-dat.patch +patches.renesas/0260-ARM-shmobile-r8a7778-Don-t-define-SCIF-platform-data.patch +patches.renesas/0261-ARM-shmobile-r8a7791-Don-t-define-SCIF-platform-data.patch +patches.renesas/0262-ARM-shmobile-r8a7790-Don-t-define-SCIF-platform-data.patch +patches.renesas/0263-ARM-shmobile-sh7372-Declare-SCIF-register-base-and-I.patch +patches.renesas/0264-ARM-shmobile-sh73a0-Declare-SCIF-register-base-and-I.patch +patches.renesas/0265-ARM-shmobile-r7s72100-Declare-SCIF-register-base-and.patch +patches.renesas/0266-ARM-shmobile-r8a73a4-Declare-SCIF-register-base-and-.patch +patches.renesas/0267-ARM-shmobile-r8a7740-Declare-SCIF-register-base-and-.patch +patches.renesas/0268-ARM-shmobile-r8a7779-Declare-SCIF-register-base-and-.patch +patches.renesas/0269-ARM-shmobile-sh7372-Don-t-set-plat_sci_port-scbrr_al.patch +patches.renesas/0270-ARM-shmobile-r8a7778-Declare-SCIF-register-base-and-.patch +patches.renesas/0271-ARM-shmobile-r8a7791-Declare-SCIF-register-base-and-.patch +patches.renesas/0272-ARM-shmobile-r8a7790-Declare-SCIF-register-base-and-.patch +patches.renesas/0273-ARM-shmobile-sh73a0-Don-t-set-plat_sci_port-scbrr_al.patch +patches.renesas/0274-ARM-shmobile-r7s72100-Don-t-set-plat_sci_port-scbrr_.patch +patches.renesas/0275-ARM-shmobile-r8a7778-Don-t-set-plat_sci_port-scbrr_a.patch +patches.renesas/0276-ARM-shmobile-r8a73a4-Don-t-set-plat_sci_port-scbrr_a.patch +patches.renesas/0277-ARM-shmobile-r8a7740-Don-t-set-plat_sci_port-scbrr_a.patch +patches.renesas/0278-ARM-shmobile-r8a7790-Don-t-set-plat_sci_port-scbrr_a.patch +patches.renesas/0279-ARM-shmobile-r8a7779-Don-t-set-plat_sci_port-scbrr_a.patch +patches.renesas/0280-ARM-shmobile-r8a7791-Don-t-set-plat_sci_port-scbrr_a.patch +patches.renesas/0281-arm-shmobile-r7s72100-add-i2c-clocks.patch +patches.renesas/0282-net-sh_eth-do-not-issue-a-wild-PHY-reset-through-BMC.patch +patches.renesas/0283-sh_eth-add-R8A7791-support.patch +patches.renesas/0284-sh_eth-add-PHY-IRQ-to-platform-data.patch +patches.renesas/0285-sh_eth-do-not-reset-PHY-needlessly.patch +patches.renesas/0286-ARM-7789-1-Do-not-run-dummy_flush_tlb_a15_erratum-on.patch ############################################################################# @@ -2242,7 +2528,6 @@ patches.zynq/0104-video-xilinxfb-Fix-for-Use-standard-variable-name-co.patch patches.zynq/0107-i2c-xiic-Remove-casting-the-return-value-which-is-a-.patch patches.zynq/0108-i2c-Include-linux-of.h-header.patch patches.zynq/0001-i2c-xilinx-merge-i2c-driver-from-Xilinx-repository-i.patch -patches.zynq/0002-i2c-si570-merge-support-for-si570-clock-generator.patch patches.zynq/0003-mmc-arasan-add-a-driver-for-Arasan-s-SDHCI-controlle.patch patches.zynq/0004-net-ethernet-xilinx-Merge-driver-from-Xilinx-reposit.patch patches.zynq/0005-gpio-xilinx-merge-Xilinx-gpio-support-into-LTSI-3.10.patch -- 2.7.4