Update all dependencies, and bump kernel to 5.0

Change-Id: I33719ab22943b41ee02fbe54e3e392207511be8e
diff --git a/board/czechlight/clearfog/patches/linux.patch b/board/czechlight/clearfog/patches/linux.patch
index 81dbd2f..d975bf6 100644
--- a/board/czechlight/clearfog/patches/linux.patch
+++ b/board/czechlight/clearfog/patches/linux.patch
@@ -165,7 +165,7 @@
  }
  
 diff --git a/drivers/pinctrl/pinctrl-mcp23s08.c b/drivers/pinctrl/pinctrl-mcp23s08.c
-index cf73a403d22d..250e5e536a9c 100644
+index 98905d4a79ca..64c67478f781 100644
 --- a/drivers/pinctrl/pinctrl-mcp23s08.c
 +++ b/drivers/pinctrl/pinctrl-mcp23s08.c
 @@ -16,6 +16,7 @@
@@ -176,7 +176,15 @@
  
  /*
   * MCP types supported by driver
-@@ -265,7 +266,6 @@ static int mcp_pinconf_get(struct pinctrl_dev *pctldev, unsigned int pin,
+@@ -68,6 +69,7 @@ struct mcp23s08 {
+ 	struct mutex		lock;
+ 
+ 	struct gpio_chip	chip;
++	struct irq_chip		irq_chip;
+ 
+ 	struct regmap		*regmap;
+ 	struct device		*dev;
+@@ -265,7 +267,6 @@ static int mcp_pinconf_get(struct pinctrl_dev *pctldev, unsigned int pin,
  		status = (data & BIT(pin)) ? 1 : 0;
  		break;
  	default:
@@ -184,7 +192,7 @@
  		return -ENOTSUPP;
  	}
  
-@@ -292,7 +292,7 @@ static int mcp_pinconf_set(struct pinctrl_dev *pctldev, unsigned int pin,
+@@ -292,7 +293,7 @@ static int mcp_pinconf_set(struct pinctrl_dev *pctldev, unsigned int pin,
  			ret = mcp_set_bit(mcp, MCP_GPPU, pin, arg);
  			break;
  		default:
@@ -193,7 +201,41 @@
  			return -ENOTSUPP;
  		}
  	}
-@@ -664,115 +664,6 @@ static int mcp23s08_irqchip_setup(struct mcp23s08 *mcp)
+@@ -607,15 +608,6 @@ static void mcp23s08_irq_bus_unlock(struct irq_data *data)
+ 	mutex_unlock(&mcp->lock);
+ }
+ 
+-static struct irq_chip mcp23s08_irq_chip = {
+-	.name = "gpio-mcp23xxx",
+-	.irq_mask = mcp23s08_irq_mask,
+-	.irq_unmask = mcp23s08_irq_unmask,
+-	.irq_set_type = mcp23s08_irq_set_type,
+-	.irq_bus_lock = mcp23s08_irq_bus_lock,
+-	.irq_bus_sync_unlock = mcp23s08_irq_bus_unlock,
+-};
+-
+ static int mcp23s08_irq_setup(struct mcp23s08 *mcp)
+ {
+ 	struct gpio_chip *chip = &mcp->chip;
+@@ -645,7 +637,7 @@ static int mcp23s08_irqchip_setup(struct mcp23s08 *mcp)
+ 	int err;
+ 
+ 	err =  gpiochip_irqchip_add_nested(chip,
+-					   &mcp23s08_irq_chip,
++					   &mcp->irq_chip,
+ 					   0,
+ 					   handle_simple_irq,
+ 					   IRQ_TYPE_NONE);
+@@ -656,7 +648,7 @@ static int mcp23s08_irqchip_setup(struct mcp23s08 *mcp)
+ 	}
+ 
+ 	gpiochip_set_nested_irqchip(chip,
+-				    &mcp23s08_irq_chip,
++				    &mcp->irq_chip,
+ 				    mcp->irq);
+ 
+ 	return 0;
+@@ -664,115 +656,6 @@ static int mcp23s08_irqchip_setup(struct mcp23s08 *mcp)
  
  /*----------------------------------------------------------------------*/
  
@@ -309,7 +351,7 @@
  static int mcp23s08_probe_one(struct mcp23s08 *mcp, struct device *dev,
  			      void *data, unsigned addr, unsigned type,
  			      unsigned int base, int cs)
-@@ -793,7 +684,6 @@ static int mcp23s08_probe_one(struct mcp23s08 *mcp, struct device *dev,
+@@ -793,7 +676,6 @@ static int mcp23s08_probe_one(struct mcp23s08 *mcp, struct device *dev,
  	mcp->chip.get = mcp23s08_get;
  	mcp->chip.direction_output = mcp23s08_direction_output;
  	mcp->chip.set = mcp23s08_set;
@@ -317,7 +359,21 @@
  #ifdef CONFIG_OF_GPIO
  	mcp->chip.of_gpio_n_cells = 2;
  	mcp->chip.of_node = dev->of_node;
-@@ -1099,6 +989,7 @@ static int mcp23s08_probe(struct spi_device *spi)
+@@ -1047,6 +929,13 @@ static int mcp230xx_probe(struct i2c_client *client,
+ 		return -ENOMEM;
+ 
+ 	mcp->irq = client->irq;
++	mcp->irq_chip.name = dev_name(&client->dev);
++	mcp->irq_chip.irq_mask = mcp23s08_irq_mask;
++	mcp->irq_chip.irq_unmask = mcp23s08_irq_unmask;
++	mcp->irq_chip.irq_set_type = mcp23s08_irq_set_type;
++	mcp->irq_chip.irq_bus_lock = mcp23s08_irq_bus_lock;
++	mcp->irq_chip.irq_bus_sync_unlock = mcp23s08_irq_bus_unlock;
++
+ 	status = mcp23s08_probe_one(mcp, &client->dev, client, client->addr,
+ 				    id->driver_data, pdata->base, 0);
+ 	if (status)
+@@ -1104,6 +993,7 @@ static int mcp23s08_probe(struct spi_device *spi)
  	int				status, type;
  	unsigned			ngpio = 0;
  	const struct			of_device_id *match;
@@ -325,7 +381,31 @@
  
  	match = of_match_device(of_match_ptr(mcp23s08_spi_of_match), &spi->dev);
  	if (match)
-@@ -1161,6 +1052,16 @@ static int mcp23s08_probe(struct spi_device *spi)
+@@ -1144,8 +1034,7 @@ static int mcp23s08_probe(struct spi_device *spi)
+ 		return -ENODEV;
+ 
+ 	data = devm_kzalloc(&spi->dev,
+-			    sizeof(*data) + chips * sizeof(struct mcp23s08),
+-			    GFP_KERNEL);
++			    struct_size(data, chip, chips), GFP_KERNEL);
+ 	if (!data)
+ 		return -ENOMEM;
+ 
+@@ -1157,6 +1046,13 @@ static int mcp23s08_probe(struct spi_device *spi)
+ 		chips--;
+ 		data->mcp[addr] = &data->chip[chips];
+ 		data->mcp[addr]->irq = spi->irq;
++		data->mcp[addr]->irq_chip.name = dev_name(&spi->dev);
++		data->mcp[addr]->irq_chip.irq_mask = mcp23s08_irq_mask;
++		data->mcp[addr]->irq_chip.irq_unmask = mcp23s08_irq_unmask;
++		data->mcp[addr]->irq_chip.irq_set_type = mcp23s08_irq_set_type;
++		data->mcp[addr]->irq_chip.irq_bus_lock = mcp23s08_irq_bus_lock;
++		data->mcp[addr]->irq_chip.irq_bus_sync_unlock =
++			mcp23s08_irq_bus_unlock;
+ 		status = mcp23s08_probe_one(data->mcp[addr], &spi->dev, spi,
+ 					    0x40 | (addr << 1), type,
+ 					    pdata->base, addr);
+@@ -1166,6 +1062,16 @@ static int mcp23s08_probe(struct spi_device *spi)
  		if (pdata->base != -1)
  			pdata->base += data->mcp[addr]->chip.ngpio;
  		ngpio += data->mcp[addr]->chip.ngpio;
@@ -343,7 +423,7 @@
  	data->ngpio = ngpio;
  
 diff --git a/drivers/spi/spi-orion.c b/drivers/spi/spi-orion.c
-index 47ef6b1a2e76..d28ecdf3bafc 100644
+index 7f280567093e..1c4ec4452700 100644
 --- a/drivers/spi/spi-orion.c
 +++ b/drivers/spi/spi-orion.c
 @@ -93,6 +93,7 @@ struct orion_direct_acc {
@@ -354,9 +434,9 @@
  };
  
  struct orion_spi {
-@@ -432,7 +433,7 @@ orion_spi_write_read(struct spi_device *spi, struct spi_transfer *xfer)
- 	struct orion_spi *orion_spi;
+@@ -433,7 +434,7 @@ orion_spi_write_read(struct spi_device *spi, struct spi_transfer *xfer)
  	int cs = spi->chip_select;
+ 	void __iomem *vaddr;
  
 -	word_len = spi->bits_per_word;
 +	word_len = xfer->bits_per_word;
@@ -381,7 +461,7 @@
  			count -= 2;
  		} while (count);
  	}
-@@ -733,6 +738,12 @@ static int orion_spi_probe(struct platform_device *pdev)
+@@ -734,6 +739,12 @@ static int orion_spi_probe(struct platform_device *pdev)
  			}
  		}
  
@@ -394,7 +474,7 @@
  		/*
  		 * Check if an address is configured for this SPI device. If
  		 * not, the MBus mapping via the 'ranges' property in the 'soc'
-@@ -744,6 +755,12 @@ static int orion_spi_probe(struct platform_device *pdev)
+@@ -745,6 +756,12 @@ static int orion_spi_probe(struct platform_device *pdev)
  		if (status)
  			continue;
  
@@ -408,123 +488,27 @@
  		 * Only map one page for direct access. This is enough for the
  		 * simple TX transfer which only writes to the first word.
 diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
-index 9da0bc5a036c..097883f1fabd 100644
+index 9a7def7c3237..1c618bd5b55c 100644
 --- a/drivers/spi/spi.c
 +++ b/drivers/spi/spi.c
-@@ -60,6 +60,7 @@ static void spidev_release(struct device *dev)
- 		spi->controller->cleanup(spi);
- 
- 	spi_controller_put(spi->controller);
-+	kfree(spi->driver_override);
- 	kfree(spi);
- }
- 
-@@ -77,6 +78,58 @@ modalias_show(struct device *dev, struct device_attribute *a, char *buf)
- }
- static DEVICE_ATTR_RO(modalias);
- 
-+static ssize_t driver_override_store(struct device *dev,
-+				     struct device_attribute *a,
-+				     const char *buf, size_t count)
-+{
-+	struct spi_device *spi = to_spi_device(dev);
-+	const char *end = memchr(buf, '\n', count);
-+	const size_t len = end ? end - buf : count;
-+	const char *driver_override, *old;
+@@ -75,6 +75,7 @@ static ssize_t driver_override_store(struct device *dev,
+ 	const char *end = memchr(buf, '\n', count);
+ 	const size_t len = end ? end - buf : count;
+ 	const char *driver_override, *old;
 +	int ret;
-+
-+	/* We need to keep extra room for a newline when displaying value */
-+	if (len >= (PAGE_SIZE - 1))
-+		return -EINVAL;
-+
-+	driver_override = kstrndup(buf, len, GFP_KERNEL);
-+	if (!driver_override)
-+		return -ENOMEM;
-+
-+	device_lock(dev);
-+	old = spi->driver_override;
-+	if (len) {
-+		spi->driver_override = driver_override;
-+	} else {
-+		/* Emptry string, disable driver override */
-+		spi->driver_override = NULL;
-+		kfree(driver_override);
-+	}
-+	device_unlock(dev);
-+	kfree(old);
-+
+ 
+ 	/* We need to keep extra room for a newline when displaying value */
+ 	if (len >= (PAGE_SIZE - 1))
+@@ -96,6 +97,12 @@ static ssize_t driver_override_store(struct device *dev,
+ 	device_unlock(dev);
+ 	kfree(old);
+ 
 +	/* Attach device to new driver if it's not already attached */
 +	ret = device_attach(dev);
 +	if (ret < 0 && ret != -EPROBE_DEFER)
 +		dev_warn(dev, "device attach to '%s' failed (%d)\n",
 +			 spi->driver_override, ret);
 +
-+	return count;
-+}
-+
-+static ssize_t driver_override_show(struct device *dev,
-+				    struct device_attribute *a, char *buf)
-+{
-+	const struct spi_device *spi = to_spi_device(dev);
-+	ssize_t len;
-+
-+	device_lock(dev);
-+	len = snprintf(buf, PAGE_SIZE, "%s\n", spi->driver_override ? : "");
-+	device_unlock(dev);
-+	return len;
-+}
-+static DEVICE_ATTR_RW(driver_override);
-+
- #define SPI_STATISTICS_ATTRS(field, file)				\
- static ssize_t spi_controller_##field##_show(struct device *dev,	\
- 					     struct device_attribute *attr, \
-@@ -158,6 +211,7 @@ SPI_STATISTICS_SHOW(transfers_split_maxsize, "%lu");
+ 	return count;
+ }
  
- static struct attribute *spi_dev_attrs[] = {
- 	&dev_attr_modalias.attr,
-+	&dev_attr_driver_override.attr,
- 	NULL,
- };
- 
-@@ -305,6 +359,10 @@ static int spi_match_device(struct device *dev, struct device_driver *drv)
- 	const struct spi_device	*spi = to_spi_device(dev);
- 	const struct spi_driver	*sdrv = to_spi_driver(drv);
- 
-+	/* Check override first, and if set, only use the named driver */
-+	if (spi->driver_override)
-+		return strcmp(spi->driver_override, drv->name) == 0;
-+
- 	/* Attempt an OF style match */
- 	if (of_driver_match_device(dev, drv))
- 		return 1;
-diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c
-index cda10719d1d1..c5fe08bc34a0 100644
---- a/drivers/spi/spidev.c
-+++ b/drivers/spi/spidev.c
-@@ -724,11 +724,9 @@ static int spidev_probe(struct spi_device *spi)
- 	 * compatible string, it is a Linux implementation thing
- 	 * rather than a description of the hardware.
- 	 */
--	if (spi->dev.of_node && !of_match_device(spidev_dt_ids, &spi->dev)) {
--		dev_err(&spi->dev, "buggy DT: spidev listed directly in DT\n");
--		WARN_ON(spi->dev.of_node &&
--			!of_match_device(spidev_dt_ids, &spi->dev));
--	}
-+	WARN(spi->dev.of_node &&
-+	     of_device_is_compatible(spi->dev.of_node, "spidev"),
-+	     "%pOF: buggy DT: spidev listed directly in DT\n", spi->dev.of_node);
- 
- 	spidev_probe_acpi(spi);
- 
-diff --git a/include/linux/spi/spi.h b/include/linux/spi/spi.h
-index a64235e05321..e28f7c5d6eb6 100644
---- a/include/linux/spi/spi.h
-+++ b/include/linux/spi/spi.h
-@@ -167,6 +167,7 @@ struct spi_device {
- 	void			*controller_state;
- 	void			*controller_data;
- 	char			modalias[SPI_NAME_SIZE];
-+	const char		*driver_override;
- 	int			cs_gpio;	/* chip select gpio */
- 
- 	/* the statistics */