spi: spi-altera-dfl: support n5010 feature revision
authorMartin Hundebøll <mhu@silicom.dk>
Fri, 16 Jul 2021 13:54:40 +0000 (15:54 +0200)
committerMoritz Fischer <mdf@kernel.org>
Thu, 29 Jul 2021 20:02:28 +0000 (13:02 -0700)
The Max10 BMC on the Silicom n5010 PAC is slightly different than the
existing BMCs, so use a dedicated feature revision detect it.

Acked-by: Mark Brown <broonie@kernel.org>
Reviewed-by: Tom Rix <trix@redhat.com>
Signed-off-by: Martin Hundebøll <mhu@silicom.dk>
Signed-off-by: Moritz Fischer <mdf@kernel.org>
drivers/spi/spi-altera-dfl.c

index 39a3e1a..44fc9ee 100644 (file)
@@ -104,13 +104,6 @@ static const struct regmap_config indirect_regbus_cfg = {
        .reg_read = indirect_bus_reg_read,
 };
 
-static struct spi_board_info m10_bmc_info = {
-       .modalias = "m10-d5005",
-       .max_speed_hz = 12500000,
-       .bus_num = 0,
-       .chip_select = 0,
-};
-
 static void config_spi_master(void __iomem *base, struct spi_master *master)
 {
        u64 v;
@@ -130,6 +123,7 @@ static void config_spi_master(void __iomem *base, struct spi_master *master)
 
 static int dfl_spi_altera_probe(struct dfl_device *dfl_dev)
 {
+       struct spi_board_info board_info = { 0 };
        struct device *dev = &dfl_dev->dev;
        struct spi_master *master;
        struct altera_spi *hw;
@@ -170,9 +164,18 @@ static int dfl_spi_altera_probe(struct dfl_device *dfl_dev)
                goto exit;
        }
 
-       if (!spi_new_device(master,  &m10_bmc_info)) {
+       if (dfl_dev->revision == FME_FEATURE_REV_MAX10_SPI_N5010)
+               strscpy(board_info.modalias, "m10-n5010", SPI_NAME_SIZE);
+       else
+               strscpy(board_info.modalias, "m10-d5005", SPI_NAME_SIZE);
+
+       board_info.max_speed_hz = 12500000;
+       board_info.bus_num = 0;
+       board_info.chip_select = 0;
+
+       if (!spi_new_device(master, &board_info)) {
                dev_err(dev, "%s failed to create SPI device: %s\n",
-                       __func__, m10_bmc_info.modalias);
+                       __func__, board_info.modalias);
        }
 
        return 0;