Skip to content

Commit

Permalink
spi/spi-fsl-spi: Introduce a type for the driver
Browse files Browse the repository at this point in the history
For being able to distinguishing between the regular type of cores and others
with different entries in of_fsl_spi_match.

Acked-by: Anton Vorontsov <[email protected]>
Signed-off-by: Andreas Larsson <[email protected]>
Signed-off-by: Grant Likely <[email protected]>
  • Loading branch information
andreas-gaisler authored and glikely committed Apr 7, 2013
1 parent b48c4e3 commit c3f3e77
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 7 deletions.
2 changes: 2 additions & 0 deletions drivers/spi/spi-fsl-lib.h
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ struct mpc8xxx_spi {
unsigned int flags;

#ifdef CONFIG_SPI_FSL_SPI
int type;

void (*set_shifts)(u32 *rx_shift, u32 *tx_shift,
int bits_per_word, int msb_first);
#endif
Expand Down
39 changes: 32 additions & 7 deletions drivers/spi/spi-fsl-spi.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,37 @@
#include "spi-fsl-cpm.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)
{
struct mpc8xxx_spi *mspi = spi_master_get_devdata(spi->master);
Expand Down Expand Up @@ -489,7 +520,7 @@ static struct spi_master * fsl_spi_probe(struct device *dev,
mpc8xxx_spi = spi_master_get_devdata(master);
mpc8xxx_spi->spi_do_one_msg = fsl_spi_do_one_msg;
mpc8xxx_spi->spi_remove = fsl_spi_remove;

mpc8xxx_spi->type = fsl_spi_get_type(dev);

ret = fsl_spi_cpm_init(mpc8xxx_spi);
if (ret)
Expand Down Expand Up @@ -714,12 +745,6 @@ static int of_fsl_spi_remove(struct platform_device *ofdev)
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 = {
.driver = {
.name = "fsl_spi",
Expand Down

0 comments on commit c3f3e77

Please sign in to comment.