Thread (1 message) 1 message, 1 author, 2015-10-05

Re: [PATCH] sc16is7xx: null ptr check

From: Mark Brown <hidden>
Date: 2015-10-05 08:10:04
Also in: linux-spi

Possibly related (same subject, not in this thread)

On Mon, Oct 05, 2015 at 08:31:28AM +0200, Uwe Kleine-König wrote:
So in the broken case the device in question was bound to the
sc16is7xx driver because the compatible name was matched by the
id_table and not the of_match_table. My first thought was that in this
case the spi_device's dev->of_node should not be set, but after having
thought a bit more I think this is right.
Yes, it's intended behaviour - the DT is buggy here.
But the .probe routine could be a tad more clever here:
	devtype = of_device_get_match_data(&spi->dev);
	if (!devtype) {
		const struct spi_device_id *id_entry = spi_get_device_id(spi);

		/* Do I need to check id_entry being != NULL here? */
		devtype = (struct sc16is7xx_devtype *)id_entry->driver_data;
		flags = IRQF_TRIGGER_FALLING;
	}
That's pretty much a requirement - the driver should work no matter
which binding method gets used, OF only drivers aren't great practice at
the best of times and for off-SoC devices like this one it's definitely
not appropriate.
Apart from that using "flags = IRQF_TRIGGER_FALLING" iff the device was
probed via spi_id_table is strange.
That seems like an obvious bug.

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help