diff options
| author | Heiner Kallweit <hkallweit1@gmail.com> | 2016-09-13 17:16:02 -0400 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2016-09-14 13:24:47 -0400 |
| commit | 46afd38b7de347fd329767957886901ee9912d7a (patch) | |
| tree | d0c1bf02c11ee07343347a92627cb74789ddf2cd /drivers/spi | |
| parent | 35f5d71e38f2c0a9e7fdfbe0e9527efc712cfbcf (diff) | |
spi: fsl-espi: align register access with other drivers
Change register access to the method used in other drivers too.
- use register names as in the chip spec for constants
- avoid hard to read statements like
__be32 __iomem *espi_mode = ®_base->mode
- get rid of old powerpc-specific functions like in_8
In addition annotate reg_base in struct mpc8xxx_spi as __iomem.
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'drivers/spi')
| -rw-r--r-- | drivers/spi/spi-fsl-espi.c | 135 | ||||
| -rw-r--r-- | drivers/spi/spi-fsl-lib.h | 2 |
2 files changed, 73 insertions, 64 deletions
diff --git a/drivers/spi/spi-fsl-espi.c b/drivers/spi/spi-fsl-espi.c index 032bf3af8388..328b04a36328 100644 --- a/drivers/spi/spi-fsl-espi.c +++ b/drivers/spi/spi-fsl-espi.c | |||
| @@ -26,16 +26,15 @@ | |||
| 26 | #include "spi-fsl-lib.h" | 26 | #include "spi-fsl-lib.h" |
| 27 | 27 | ||
| 28 | /* eSPI Controller registers */ | 28 | /* eSPI Controller registers */ |
| 29 | struct fsl_espi_reg { | 29 | #define ESPI_SPMODE 0x00 /* eSPI mode register */ |
| 30 | __be32 mode; /* 0x000 - eSPI mode register */ | 30 | #define ESPI_SPIE 0x04 /* eSPI event register */ |
| 31 | __be32 event; /* 0x004 - eSPI event register */ | 31 | #define ESPI_SPIM 0x08 /* eSPI mask register */ |
| 32 | __be32 mask; /* 0x008 - eSPI mask register */ | 32 | #define ESPI_SPCOM 0x0c /* eSPI command register */ |
| 33 | __be32 command; /* 0x00c - eSPI command register */ | 33 | #define ESPI_SPITF 0x10 /* eSPI transmit FIFO access register*/ |
| 34 | __be32 transmit; /* 0x010 - eSPI transmit FIFO access register*/ | 34 | #define ESPI_SPIRF 0x14 /* eSPI receive FIFO access register*/ |
| 35 | __be32 receive; /* 0x014 - eSPI receive FIFO access register*/ | 35 | #define ESPI_SPMODE0 0x20 /* eSPI cs0 mode register */ |
| 36 | u8 res[8]; /* 0x018 - 0x01c reserved */ | 36 | |
| 37 | __be32 csmode[4]; /* 0x020 - 0x02c eSPI cs mode register */ | 37 | #define ESPI_SPMODEx(x) (ESPI_SPMODE0 + (x) * 4) |
| 38 | }; | ||
| 39 | 38 | ||
| 40 | /* eSPI Controller mode register definitions */ | 39 | /* eSPI Controller mode register definitions */ |
| 41 | #define SPMODE_ENABLE (1 << 31) | 40 | #define SPMODE_ENABLE (1 << 31) |
| @@ -77,6 +76,28 @@ struct fsl_espi_reg { | |||
| 77 | 76 | ||
| 78 | #define AUTOSUSPEND_TIMEOUT 2000 | 77 | #define AUTOSUSPEND_TIMEOUT 2000 |
| 79 | 78 | ||
| 79 | static inline u32 fsl_espi_read_reg(struct mpc8xxx_spi *mspi, int offset) | ||
| 80 | { | ||
| 81 | return ioread32be(mspi->reg_base + offset); | ||
| 82 | } | ||
| 83 | |||
| 84 | static inline u8 fsl_espi_read_reg8(struct mpc8xxx_spi *mspi, int offset) | ||
| 85 | { | ||
| 86 | return ioread8(mspi->reg_base + offset); | ||
| 87 | } | ||
| 88 | |||
| 89 | static inline void fsl_espi_write_reg(struct mpc8xxx_spi *mspi, int offset, | ||
| 90 | u32 val) | ||
| 91 | { | ||
| 92 | iowrite32be(val, mspi->reg_base + offset); | ||
| 93 | } | ||
| 94 | |||
| 95 | static inline void fsl_espi_write_reg8(struct mpc8xxx_spi *mspi, int offset, | ||
| 96 | u8 val) | ||
| 97 | { | ||
| 98 | iowrite8(val, mspi->reg_base + offset); | ||
| 99 | } | ||
| 100 | |||
| 80 | static void fsl_espi_copy_to_buf(struct spi_message *m, | 101 | static void fsl_espi_copy_to_buf(struct spi_message *m, |
| 81 | struct mpc8xxx_spi *mspi) | 102 | struct mpc8xxx_spi *mspi) |
| 82 | { | 103 | { |
| @@ -133,9 +154,6 @@ static void fsl_espi_change_mode(struct spi_device *spi) | |||
| 133 | { | 154 | { |
| 134 | struct mpc8xxx_spi *mspi = spi_master_get_devdata(spi->master); | 155 | struct mpc8xxx_spi *mspi = spi_master_get_devdata(spi->master); |
| 135 | struct spi_mpc8xxx_cs *cs = spi->controller_state; | 156 | struct spi_mpc8xxx_cs *cs = spi->controller_state; |
| 136 | struct fsl_espi_reg *reg_base = mspi->reg_base; | ||
| 137 | __be32 __iomem *mode = ®_base->csmode[spi->chip_select]; | ||
| 138 | __be32 __iomem *espi_mode = ®_base->mode; | ||
| 139 | u32 tmp; | 157 | u32 tmp; |
| 140 | unsigned long flags; | 158 | unsigned long flags; |
| 141 | 159 | ||
| @@ -143,10 +161,11 @@ static void fsl_espi_change_mode(struct spi_device *spi) | |||
| 143 | local_irq_save(flags); | 161 | local_irq_save(flags); |
| 144 | 162 | ||
| 145 | /* Turn off SPI unit prior changing mode */ | 163 | /* Turn off SPI unit prior changing mode */ |
| 146 | tmp = mpc8xxx_spi_read_reg(espi_mode); | 164 | tmp = fsl_espi_read_reg(mspi, ESPI_SPMODE); |
| 147 | mpc8xxx_spi_write_reg(espi_mode, tmp & ~SPMODE_ENABLE); | 165 | fsl_espi_write_reg(mspi, ESPI_SPMODE, tmp & ~SPMODE_ENABLE); |
| 148 | mpc8xxx_spi_write_reg(mode, cs->hw_mode); | 166 | fsl_espi_write_reg(mspi, ESPI_SPMODEx(spi->chip_select), |
| 149 | mpc8xxx_spi_write_reg(espi_mode, tmp); | 167 | cs->hw_mode); |
| 168 | fsl_espi_write_reg(mspi, ESPI_SPMODE, tmp); | ||
| 150 | 169 | ||
| 151 | local_irq_restore(flags); | 170 | local_irq_restore(flags); |
| 152 | } | 171 | } |
| @@ -228,7 +247,6 @@ static void fsl_espi_setup_transfer(struct spi_device *spi, | |||
| 228 | static int fsl_espi_bufs(struct spi_device *spi, struct spi_transfer *t) | 247 | static int fsl_espi_bufs(struct spi_device *spi, struct spi_transfer *t) |
| 229 | { | 248 | { |
| 230 | struct mpc8xxx_spi *mpc8xxx_spi = spi_master_get_devdata(spi->master); | 249 | struct mpc8xxx_spi *mpc8xxx_spi = spi_master_get_devdata(spi->master); |
| 231 | struct fsl_espi_reg *reg_base = mpc8xxx_spi->reg_base; | ||
| 232 | u32 word; | 250 | u32 word; |
| 233 | int ret; | 251 | int ret; |
| 234 | 252 | ||
| @@ -241,15 +259,15 @@ static int fsl_espi_bufs(struct spi_device *spi, struct spi_transfer *t) | |||
| 241 | reinit_completion(&mpc8xxx_spi->done); | 259 | reinit_completion(&mpc8xxx_spi->done); |
| 242 | 260 | ||
| 243 | /* Set SPCOM[CS] and SPCOM[TRANLEN] field */ | 261 | /* Set SPCOM[CS] and SPCOM[TRANLEN] field */ |
| 244 | mpc8xxx_spi_write_reg(®_base->command, | 262 | fsl_espi_write_reg(mpc8xxx_spi, ESPI_SPCOM, |
| 245 | (SPCOM_CS(spi->chip_select) | SPCOM_TRANLEN(t->len - 1))); | 263 | (SPCOM_CS(spi->chip_select) | SPCOM_TRANLEN(t->len - 1))); |
| 246 | 264 | ||
| 247 | /* enable rx ints */ | 265 | /* enable rx ints */ |
| 248 | mpc8xxx_spi_write_reg(®_base->mask, SPIM_NE); | 266 | fsl_espi_write_reg(mpc8xxx_spi, ESPI_SPIM, SPIM_NE); |
| 249 | 267 | ||
| 250 | /* transmit word */ | 268 | /* transmit word */ |
| 251 | word = mpc8xxx_spi->get_tx(mpc8xxx_spi); | 269 | word = mpc8xxx_spi->get_tx(mpc8xxx_spi); |
| 252 | mpc8xxx_spi_write_reg(®_base->transmit, word); | 270 | fsl_espi_write_reg(mpc8xxx_spi, ESPI_SPITF, word); |
| 253 | 271 | ||
| 254 | /* Won't hang up forever, SPI bus sometimes got lost interrupts... */ | 272 | /* Won't hang up forever, SPI bus sometimes got lost interrupts... */ |
| 255 | ret = wait_for_completion_timeout(&mpc8xxx_spi->done, 2 * HZ); | 273 | ret = wait_for_completion_timeout(&mpc8xxx_spi->done, 2 * HZ); |
| @@ -259,7 +277,7 @@ static int fsl_espi_bufs(struct spi_device *spi, struct spi_transfer *t) | |||
| 259 | mpc8xxx_spi->count); | 277 | mpc8xxx_spi->count); |
| 260 | 278 | ||
| 261 | /* disable rx ints */ | 279 | /* disable rx ints */ |
| 262 | mpc8xxx_spi_write_reg(®_base->mask, 0); | 280 | fsl_espi_write_reg(mpc8xxx_spi, ESPI_SPIM, 0); |
| 263 | 281 | ||
| 264 | return mpc8xxx_spi->count > 0 ? -EMSGSIZE : 0; | 282 | return mpc8xxx_spi->count > 0 ? -EMSGSIZE : 0; |
| 265 | } | 283 | } |
| @@ -329,7 +347,6 @@ out: | |||
| 329 | static int fsl_espi_setup(struct spi_device *spi) | 347 | static int fsl_espi_setup(struct spi_device *spi) |
| 330 | { | 348 | { |
| 331 | struct mpc8xxx_spi *mpc8xxx_spi; | 349 | struct mpc8xxx_spi *mpc8xxx_spi; |
| 332 | struct fsl_espi_reg *reg_base; | ||
| 333 | u32 hw_mode; | 350 | u32 hw_mode; |
| 334 | u32 loop_mode; | 351 | u32 loop_mode; |
| 335 | struct spi_mpc8xxx_cs *cs = spi_get_ctldata(spi); | 352 | struct spi_mpc8xxx_cs *cs = spi_get_ctldata(spi); |
| @@ -345,13 +362,12 @@ static int fsl_espi_setup(struct spi_device *spi) | |||
| 345 | } | 362 | } |
| 346 | 363 | ||
| 347 | mpc8xxx_spi = spi_master_get_devdata(spi->master); | 364 | mpc8xxx_spi = spi_master_get_devdata(spi->master); |
| 348 | reg_base = mpc8xxx_spi->reg_base; | ||
| 349 | 365 | ||
| 350 | pm_runtime_get_sync(mpc8xxx_spi->dev); | 366 | pm_runtime_get_sync(mpc8xxx_spi->dev); |
| 351 | 367 | ||
| 352 | hw_mode = cs->hw_mode; /* Save original settings */ | 368 | hw_mode = cs->hw_mode; /* Save original settings */ |
| 353 | cs->hw_mode = mpc8xxx_spi_read_reg( | 369 | cs->hw_mode = fsl_espi_read_reg(mpc8xxx_spi, |
| 354 | ®_base->csmode[spi->chip_select]); | 370 | ESPI_SPMODEx(spi->chip_select)); |
| 355 | /* mask out bits we are going to set */ | 371 | /* mask out bits we are going to set */ |
| 356 | cs->hw_mode &= ~(CSMODE_CP_BEGIN_EDGECLK | CSMODE_CI_INACTIVEHIGH | 372 | cs->hw_mode &= ~(CSMODE_CP_BEGIN_EDGECLK | CSMODE_CI_INACTIVEHIGH |
| 357 | | CSMODE_REV); | 373 | | CSMODE_REV); |
| @@ -364,11 +380,11 @@ static int fsl_espi_setup(struct spi_device *spi) | |||
| 364 | cs->hw_mode |= CSMODE_REV; | 380 | cs->hw_mode |= CSMODE_REV; |
| 365 | 381 | ||
| 366 | /* Handle the loop mode */ | 382 | /* Handle the loop mode */ |
| 367 | loop_mode = mpc8xxx_spi_read_reg(®_base->mode); | 383 | loop_mode = fsl_espi_read_reg(mpc8xxx_spi, ESPI_SPMODE); |
| 368 | loop_mode &= ~SPMODE_LOOP; | 384 | loop_mode &= ~SPMODE_LOOP; |
| 369 | if (spi->mode & SPI_LOOP) | 385 | if (spi->mode & SPI_LOOP) |
| 370 | loop_mode |= SPMODE_LOOP; | 386 | loop_mode |= SPMODE_LOOP; |
| 371 | mpc8xxx_spi_write_reg(®_base->mode, loop_mode); | 387 | fsl_espi_write_reg(mpc8xxx_spi, ESPI_SPMODE, loop_mode); |
| 372 | 388 | ||
| 373 | fsl_espi_setup_transfer(spi, NULL); | 389 | fsl_espi_setup_transfer(spi, NULL); |
| 374 | 390 | ||
| @@ -388,8 +404,6 @@ static void fsl_espi_cleanup(struct spi_device *spi) | |||
| 388 | 404 | ||
| 389 | static void fsl_espi_cpu_irq(struct mpc8xxx_spi *mspi, u32 events) | 405 | static void fsl_espi_cpu_irq(struct mpc8xxx_spi *mspi, u32 events) |
| 390 | { | 406 | { |
| 391 | struct fsl_espi_reg *reg_base = mspi->reg_base; | ||
| 392 | |||
| 393 | /* We need handle RX first */ | 407 | /* We need handle RX first */ |
| 394 | if (events & SPIE_NE) { | 408 | if (events & SPIE_NE) { |
| 395 | u32 rx_data, tmp; | 409 | u32 rx_data, tmp; |
| @@ -401,7 +415,7 @@ static void fsl_espi_cpu_irq(struct mpc8xxx_spi *mspi, u32 events) | |||
| 401 | if (SPIE_RXCNT(events) < min(4, mspi->len)) { | 415 | if (SPIE_RXCNT(events) < min(4, mspi->len)) { |
| 402 | ret = spin_event_timeout( | 416 | ret = spin_event_timeout( |
| 403 | !(SPIE_RXCNT(events = | 417 | !(SPIE_RXCNT(events = |
| 404 | mpc8xxx_spi_read_reg(®_base->event)) < | 418 | fsl_espi_read_reg(mspi, ESPI_SPIE)) < |
| 405 | min(4, mspi->len)), | 419 | min(4, mspi->len)), |
| 406 | 10000, 0); /* 10 msec */ | 420 | 10000, 0); /* 10 msec */ |
| 407 | if (!ret) | 421 | if (!ret) |
| @@ -410,7 +424,7 @@ static void fsl_espi_cpu_irq(struct mpc8xxx_spi *mspi, u32 events) | |||
| 410 | } | 424 | } |
| 411 | 425 | ||
| 412 | if (mspi->len >= 4) { | 426 | if (mspi->len >= 4) { |
| 413 | rx_data = mpc8xxx_spi_read_reg(®_base->receive); | 427 | rx_data = fsl_espi_read_reg(mspi, ESPI_SPIRF); |
| 414 | } else if (mspi->len <= 0) { | 428 | } else if (mspi->len <= 0) { |
| 415 | dev_err(mspi->dev, | 429 | dev_err(mspi->dev, |
| 416 | "unexpected RX(SPIE_NE) interrupt occurred,\n" | 430 | "unexpected RX(SPIE_NE) interrupt occurred,\n" |
| @@ -422,7 +436,8 @@ static void fsl_espi_cpu_irq(struct mpc8xxx_spi *mspi, u32 events) | |||
| 422 | tmp = mspi->len; | 436 | tmp = mspi->len; |
| 423 | rx_data = 0; | 437 | rx_data = 0; |
| 424 | while (tmp--) { | 438 | while (tmp--) { |
| 425 | rx_data_8 = in_8((u8 *)®_base->receive); | 439 | rx_data_8 = fsl_espi_read_reg8(mspi, |
| 440 | ESPI_SPIRF); | ||
| 426 | rx_data |= (rx_data_8 << (tmp * 8)); | 441 | rx_data |= (rx_data_8 << (tmp * 8)); |
| 427 | } | 442 | } |
| 428 | 443 | ||
| @@ -439,8 +454,8 @@ static void fsl_espi_cpu_irq(struct mpc8xxx_spi *mspi, u32 events) | |||
| 439 | int ret; | 454 | int ret; |
| 440 | 455 | ||
| 441 | /* spin until TX is done */ | 456 | /* spin until TX is done */ |
| 442 | ret = spin_event_timeout(((events = mpc8xxx_spi_read_reg( | 457 | ret = spin_event_timeout(((events = fsl_espi_read_reg( |
| 443 | ®_base->event)) & SPIE_NF), 1000, 0); | 458 | mspi, ESPI_SPIE)) & SPIE_NF), 1000, 0); |
| 444 | if (!ret) { | 459 | if (!ret) { |
| 445 | dev_err(mspi->dev, "tired waiting for SPIE_NF\n"); | 460 | dev_err(mspi->dev, "tired waiting for SPIE_NF\n"); |
| 446 | complete(&mspi->done); | 461 | complete(&mspi->done); |
| @@ -452,7 +467,7 @@ static void fsl_espi_cpu_irq(struct mpc8xxx_spi *mspi, u32 events) | |||
| 452 | if (mspi->count) { | 467 | if (mspi->count) { |
| 453 | u32 word = mspi->get_tx(mspi); | 468 | u32 word = mspi->get_tx(mspi); |
| 454 | 469 | ||
| 455 | mpc8xxx_spi_write_reg(®_base->transmit, word); | 470 | fsl_espi_write_reg(mspi, ESPI_SPITF, word); |
| 456 | } else { | 471 | } else { |
| 457 | complete(&mspi->done); | 472 | complete(&mspi->done); |
| 458 | } | 473 | } |
| @@ -461,11 +476,10 @@ static void fsl_espi_cpu_irq(struct mpc8xxx_spi *mspi, u32 events) | |||
| 461 | static irqreturn_t fsl_espi_irq(s32 irq, void *context_data) | 476 | static irqreturn_t fsl_espi_irq(s32 irq, void *context_data) |
| 462 | { | 477 | { |
| 463 | struct mpc8xxx_spi *mspi = context_data; | 478 | struct mpc8xxx_spi *mspi = context_data; |
| 464 | struct fsl_espi_reg *reg_base = mspi->reg_base; | ||
| 465 | u32 events; | 479 | u32 events; |
| 466 | 480 | ||
| 467 | /* Get interrupt events(tx/rx) */ | 481 | /* Get interrupt events(tx/rx) */ |
| 468 | events = mpc8xxx_spi_read_reg(®_base->event); | 482 | events = fsl_espi_read_reg(mspi, ESPI_SPIE); |
| 469 | if (!events) | 483 | if (!events) |
| 470 | return IRQ_NONE; | 484 | return IRQ_NONE; |
| 471 | 485 | ||
| @@ -474,7 +488,7 @@ static irqreturn_t fsl_espi_irq(s32 irq, void *context_data) | |||
| 474 | fsl_espi_cpu_irq(mspi, events); | 488 | fsl_espi_cpu_irq(mspi, events); |
| 475 | 489 | ||
| 476 | /* Clear the events */ | 490 | /* Clear the events */ |
| 477 | mpc8xxx_spi_write_reg(®_base->event, events); | 491 | fsl_espi_write_reg(mspi, ESPI_SPIE, events); |
| 478 | 492 | ||
| 479 | return IRQ_HANDLED; | 493 | return IRQ_HANDLED; |
| 480 | } | 494 | } |
| @@ -484,12 +498,11 @@ static int fsl_espi_runtime_suspend(struct device *dev) | |||
| 484 | { | 498 | { |
| 485 | struct spi_master *master = dev_get_drvdata(dev); | 499 | struct spi_master *master = dev_get_drvdata(dev); |
| 486 | struct mpc8xxx_spi *mpc8xxx_spi = spi_master_get_devdata(master); | 500 | struct mpc8xxx_spi *mpc8xxx_spi = spi_master_get_devdata(master); |
| 487 | struct fsl_espi_reg *reg_base = mpc8xxx_spi->reg_base; | ||
| 488 | u32 regval; | 501 | u32 regval; |
| 489 | 502 | ||
| 490 | regval = mpc8xxx_spi_read_reg(®_base->mode); | 503 | regval = fsl_espi_read_reg(mpc8xxx_spi, ESPI_SPMODE); |
| 491 | regval &= ~SPMODE_ENABLE; | 504 | regval &= ~SPMODE_ENABLE; |
| 492 | mpc8xxx_spi_write_reg(®_base->mode, regval); | 505 | fsl_espi_write_reg(mpc8xxx_spi, ESPI_SPMODE, regval); |
| 493 | 506 | ||
| 494 | return 0; | 507 | return 0; |
| 495 | } | 508 | } |
| @@ -498,12 +511,11 @@ static int fsl_espi_runtime_resume(struct device *dev) | |||
| 498 | { | 511 | { |
| 499 | struct spi_master *master = dev_get_drvdata(dev); | 512 | struct spi_master *master = dev_get_drvdata(dev); |
| 500 | struct mpc8xxx_spi *mpc8xxx_spi = spi_master_get_devdata(master); | 513 | struct mpc8xxx_spi *mpc8xxx_spi = spi_master_get_devdata(master); |
| 501 | struct fsl_espi_reg *reg_base = mpc8xxx_spi->reg_base; | ||
| 502 | u32 regval; | 514 | u32 regval; |
| 503 | 515 | ||
| 504 | regval = mpc8xxx_spi_read_reg(®_base->mode); | 516 | regval = fsl_espi_read_reg(mpc8xxx_spi, ESPI_SPMODE); |
| 505 | regval |= SPMODE_ENABLE; | 517 | regval |= SPMODE_ENABLE; |
| 506 | mpc8xxx_spi_write_reg(®_base->mode, regval); | 518 | fsl_espi_write_reg(mpc8xxx_spi, ESPI_SPMODE, regval); |
| 507 | 519 | ||
| 508 | return 0; | 520 | return 0; |
| 509 | } | 521 | } |
| @@ -520,7 +532,6 @@ static struct spi_master * fsl_espi_probe(struct device *dev, | |||
| 520 | struct fsl_spi_platform_data *pdata = dev_get_platdata(dev); | 532 | struct fsl_spi_platform_data *pdata = dev_get_platdata(dev); |
| 521 | struct spi_master *master; | 533 | struct spi_master *master; |
| 522 | struct mpc8xxx_spi *mpc8xxx_spi; | 534 | struct mpc8xxx_spi *mpc8xxx_spi; |
| 523 | struct fsl_espi_reg *reg_base; | ||
| 524 | struct device_node *nc; | 535 | struct device_node *nc; |
| 525 | const __be32 *prop; | 536 | const __be32 *prop; |
| 526 | u32 regval, csmode; | 537 | u32 regval, csmode; |
| @@ -558,8 +569,6 @@ static struct spi_master * fsl_espi_probe(struct device *dev, | |||
| 558 | goto err_probe; | 569 | goto err_probe; |
| 559 | } | 570 | } |
| 560 | 571 | ||
| 561 | reg_base = mpc8xxx_spi->reg_base; | ||
| 562 | |||
| 563 | /* Register for SPI Interrupt */ | 572 | /* Register for SPI Interrupt */ |
| 564 | ret = devm_request_irq(dev, mpc8xxx_spi->irq, fsl_espi_irq, | 573 | ret = devm_request_irq(dev, mpc8xxx_spi->irq, fsl_espi_irq, |
| 565 | 0, "fsl_espi", mpc8xxx_spi); | 574 | 0, "fsl_espi", mpc8xxx_spi); |
| @@ -572,10 +581,10 @@ static struct spi_master * fsl_espi_probe(struct device *dev, | |||
| 572 | } | 581 | } |
| 573 | 582 | ||
| 574 | /* SPI controller initializations */ | 583 | /* SPI controller initializations */ |
| 575 | mpc8xxx_spi_write_reg(®_base->mode, 0); | 584 | fsl_espi_write_reg(mpc8xxx_spi, ESPI_SPMODE, 0); |
| 576 | mpc8xxx_spi_write_reg(®_base->mask, 0); | 585 | fsl_espi_write_reg(mpc8xxx_spi, ESPI_SPIM, 0); |
| 577 | mpc8xxx_spi_write_reg(®_base->command, 0); | 586 | fsl_espi_write_reg(mpc8xxx_spi, ESPI_SPCOM, 0); |
| 578 | mpc8xxx_spi_write_reg(®_base->event, 0xffffffff); | 587 | fsl_espi_write_reg(mpc8xxx_spi, ESPI_SPIE, 0xffffffff); |
| 579 | 588 | ||
| 580 | /* Init eSPI CS mode register */ | 589 | /* Init eSPI CS mode register */ |
| 581 | for_each_available_child_of_node(master->dev.of_node, nc) { | 590 | for_each_available_child_of_node(master->dev.of_node, nc) { |
| @@ -600,7 +609,7 @@ static struct spi_master * fsl_espi_probe(struct device *dev, | |||
| 600 | csmode &= ~(CSMODE_AFT(0xf)); | 609 | csmode &= ~(CSMODE_AFT(0xf)); |
| 601 | csmode |= CSMODE_AFT(be32_to_cpup(prop)); | 610 | csmode |= CSMODE_AFT(be32_to_cpup(prop)); |
| 602 | } | 611 | } |
| 603 | mpc8xxx_spi_write_reg(®_base->csmode[i], csmode); | 612 | fsl_espi_write_reg(mpc8xxx_spi, ESPI_SPMODEx(i), csmode); |
| 604 | 613 | ||
| 605 | dev_info(dev, "cs=%d, init_csmode=0x%x\n", i, csmode); | 614 | dev_info(dev, "cs=%d, init_csmode=0x%x\n", i, csmode); |
| 606 | } | 615 | } |
| @@ -608,7 +617,7 @@ static struct spi_master * fsl_espi_probe(struct device *dev, | |||
| 608 | /* Enable SPI interface */ | 617 | /* Enable SPI interface */ |
| 609 | regval = pdata->initial_spmode | SPMODE_INIT_VAL | SPMODE_ENABLE; | 618 | regval = pdata->initial_spmode | SPMODE_INIT_VAL | SPMODE_ENABLE; |
| 610 | 619 | ||
| 611 | mpc8xxx_spi_write_reg(®_base->mode, regval); | 620 | fsl_espi_write_reg(mpc8xxx_spi, ESPI_SPMODE, regval); |
| 612 | 621 | ||
| 613 | pm_runtime_set_autosuspend_delay(dev, AUTOSUSPEND_TIMEOUT); | 622 | pm_runtime_set_autosuspend_delay(dev, AUTOSUSPEND_TIMEOUT); |
| 614 | pm_runtime_use_autosuspend(dev); | 623 | pm_runtime_use_autosuspend(dev); |
| @@ -620,7 +629,8 @@ static struct spi_master * fsl_espi_probe(struct device *dev, | |||
| 620 | if (ret < 0) | 629 | if (ret < 0) |
| 621 | goto err_pm; | 630 | goto err_pm; |
| 622 | 631 | ||
| 623 | dev_info(dev, "at 0x%p (irq = %d)\n", reg_base, mpc8xxx_spi->irq); | 632 | dev_info(dev, "at 0x%p (irq = %d)\n", mpc8xxx_spi->reg_base, |
| 633 | mpc8xxx_spi->irq); | ||
| 624 | 634 | ||
| 625 | pm_runtime_mark_last_busy(dev); | 635 | pm_runtime_mark_last_busy(dev); |
| 626 | pm_runtime_put_autosuspend(dev); | 636 | pm_runtime_put_autosuspend(dev); |
| @@ -726,27 +736,26 @@ static int of_fsl_espi_resume(struct device *dev) | |||
| 726 | struct fsl_spi_platform_data *pdata = dev_get_platdata(dev); | 736 | struct fsl_spi_platform_data *pdata = dev_get_platdata(dev); |
| 727 | struct spi_master *master = dev_get_drvdata(dev); | 737 | struct spi_master *master = dev_get_drvdata(dev); |
| 728 | struct mpc8xxx_spi *mpc8xxx_spi; | 738 | struct mpc8xxx_spi *mpc8xxx_spi; |
| 729 | struct fsl_espi_reg *reg_base; | ||
| 730 | u32 regval; | 739 | u32 regval; |
| 731 | int i, ret; | 740 | int i, ret; |
| 732 | 741 | ||
| 733 | mpc8xxx_spi = spi_master_get_devdata(master); | 742 | mpc8xxx_spi = spi_master_get_devdata(master); |
| 734 | reg_base = mpc8xxx_spi->reg_base; | ||
| 735 | 743 | ||
| 736 | /* SPI controller initializations */ | 744 | /* SPI controller initializations */ |
| 737 | mpc8xxx_spi_write_reg(®_base->mode, 0); | 745 | fsl_espi_write_reg(mpc8xxx_spi, ESPI_SPMODE, 0); |
| 738 | mpc8xxx_spi_write_reg(®_base->mask, 0); | 746 | fsl_espi_write_reg(mpc8xxx_spi, ESPI_SPIM, 0); |
| 739 | mpc8xxx_spi_write_reg(®_base->command, 0); | 747 | fsl_espi_write_reg(mpc8xxx_spi, ESPI_SPCOM, 0); |
| 740 | mpc8xxx_spi_write_reg(®_base->event, 0xffffffff); | 748 | fsl_espi_write_reg(mpc8xxx_spi, ESPI_SPIE, 0xffffffff); |
| 741 | 749 | ||
| 742 | /* Init eSPI CS mode register */ | 750 | /* Init eSPI CS mode register */ |
| 743 | for (i = 0; i < pdata->max_chipselect; i++) | 751 | for (i = 0; i < pdata->max_chipselect; i++) |
| 744 | mpc8xxx_spi_write_reg(®_base->csmode[i], CSMODE_INIT_VAL); | 752 | fsl_espi_write_reg(mpc8xxx_spi, ESPI_SPMODEx(i), |
| 753 | CSMODE_INIT_VAL); | ||
| 745 | 754 | ||
| 746 | /* Enable SPI interface */ | 755 | /* Enable SPI interface */ |
| 747 | regval = pdata->initial_spmode | SPMODE_INIT_VAL | SPMODE_ENABLE; | 756 | regval = pdata->initial_spmode | SPMODE_INIT_VAL | SPMODE_ENABLE; |
| 748 | 757 | ||
| 749 | mpc8xxx_spi_write_reg(®_base->mode, regval); | 758 | fsl_espi_write_reg(mpc8xxx_spi, ESPI_SPMODE, regval); |
| 750 | 759 | ||
| 751 | ret = pm_runtime_force_resume(dev); | 760 | ret = pm_runtime_force_resume(dev); |
| 752 | if (ret < 0) | 761 | if (ret < 0) |
diff --git a/drivers/spi/spi-fsl-lib.h b/drivers/spi/spi-fsl-lib.h index 065b9db212cf..2925c8089fd9 100644 --- a/drivers/spi/spi-fsl-lib.h +++ b/drivers/spi/spi-fsl-lib.h | |||
| @@ -23,7 +23,7 @@ | |||
| 23 | /* SPI/eSPI Controller driver's private data. */ | 23 | /* SPI/eSPI Controller driver's private data. */ |
| 24 | struct mpc8xxx_spi { | 24 | struct mpc8xxx_spi { |
| 25 | struct device *dev; | 25 | struct device *dev; |
| 26 | void *reg_base; | 26 | void __iomem *reg_base; |
| 27 | 27 | ||
| 28 | /* rx & tx bufs from the spi_transfer */ | 28 | /* rx & tx bufs from the spi_transfer */ |
| 29 | const void *tx; | 29 | const void *tx; |
