提交 c3f3e771 编写于 作者: A Andreas Larsson 提交者: Grant Likely

spi/spi-fsl-spi: Introduce a type for the driver

For being able to distinguishing between the regular type of cores and others
with different entries in of_fsl_spi_match.
Acked-by: NAnton Vorontsov <anton@enomsg.org>
Signed-off-by: NAndreas Larsson <andreas@gaisler.com>
Signed-off-by: NGrant Likely <grant.likely@secretlab.ca>
上级 b48c4e3c
...@@ -70,6 +70,8 @@ struct mpc8xxx_spi { ...@@ -70,6 +70,8 @@ struct mpc8xxx_spi {
unsigned int flags; unsigned int flags;
#ifdef CONFIG_SPI_FSL_SPI #ifdef CONFIG_SPI_FSL_SPI
int type;
void (*set_shifts)(u32 *rx_shift, u32 *tx_shift, void (*set_shifts)(u32 *rx_shift, u32 *tx_shift,
int bits_per_word, int msb_first); int bits_per_word, int msb_first);
#endif #endif
......
...@@ -39,6 +39,37 @@ ...@@ -39,6 +39,37 @@
#include "spi-fsl-cpm.h" #include "spi-fsl-cpm.h"
#include "spi-fsl-spi.h" #include "spi-fsl-spi.h"
#define TYPE_FSL 0
struct fsl_spi_match_data {
int type;
};
static struct fsl_spi_match_data of_fsl_spi_fsl_config = {
.type = TYPE_FSL,
};
static struct of_device_id of_fsl_spi_match[] = {
{
.compatible = "fsl,spi",
.data = &of_fsl_spi_fsl_config,
},
{}
};
MODULE_DEVICE_TABLE(of, of_fsl_spi_match);
static int fsl_spi_get_type(struct device *dev)
{
const struct of_device_id *match;
if (dev->of_node) {
match = of_match_node(of_fsl_spi_match, dev->of_node);
if (match && match->data)
return ((struct fsl_spi_match_data *)match->data)->type;
}
return TYPE_FSL;
}
static void fsl_spi_change_mode(struct spi_device *spi) static void fsl_spi_change_mode(struct spi_device *spi)
{ {
struct mpc8xxx_spi *mspi = spi_master_get_devdata(spi->master); struct mpc8xxx_spi *mspi = spi_master_get_devdata(spi->master);
...@@ -489,7 +520,7 @@ static struct spi_master * fsl_spi_probe(struct device *dev, ...@@ -489,7 +520,7 @@ static struct spi_master * fsl_spi_probe(struct device *dev,
mpc8xxx_spi = spi_master_get_devdata(master); mpc8xxx_spi = spi_master_get_devdata(master);
mpc8xxx_spi->spi_do_one_msg = fsl_spi_do_one_msg; mpc8xxx_spi->spi_do_one_msg = fsl_spi_do_one_msg;
mpc8xxx_spi->spi_remove = fsl_spi_remove; mpc8xxx_spi->spi_remove = fsl_spi_remove;
mpc8xxx_spi->type = fsl_spi_get_type(dev);
ret = fsl_spi_cpm_init(mpc8xxx_spi); ret = fsl_spi_cpm_init(mpc8xxx_spi);
if (ret) if (ret)
...@@ -714,12 +745,6 @@ static int of_fsl_spi_remove(struct platform_device *ofdev) ...@@ -714,12 +745,6 @@ static int of_fsl_spi_remove(struct platform_device *ofdev)
return 0; return 0;
} }
static const struct of_device_id of_fsl_spi_match[] = {
{ .compatible = "fsl,spi" },
{}
};
MODULE_DEVICE_TABLE(of, of_fsl_spi_match);
static struct platform_driver of_fsl_spi_driver = { static struct platform_driver of_fsl_spi_driver = {
.driver = { .driver = {
.name = "fsl_spi", .name = "fsl_spi",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册