From: kernel test robot <lkp@intel.com>
To: Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
linux-mmc@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev,
Aubin Constans <aubin.constans@microchip.com>,
Ulf Hansson <ulf.hansson@linaro.org>,
Nicolas Ferre <nicolas.ferre@microchip.com>,
Alexandre Belloni <alexandre.belloni@bootlin.com>,
Claudiu Beznea <claudiu.beznea@tuxon.dev>
Subject: Re: [PATCH v1 4/5] mmc: atmel-mci: Incapsulate used to be a platform data into host structure
Date: Thu, 18 Apr 2024 04:42:07 +0800 [thread overview]
Message-ID: <202404180428.bZDYDFAE-lkp@intel.com> (raw)
In-Reply-To: <20240417165708.2965612-5-andriy.shevchenko@linux.intel.com>
Hi Andy,
kernel test robot noticed the following build warnings:
[auto build test WARNING on soc/for-next]
[also build test WARNING on linus/master v6.9-rc4 next-20240417]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Andy-Shevchenko/mmc-atmel-mci-Get-rid-of-platform-data-leftovers/20240418-005915
base: https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git for-next
patch link: https://lore.kernel.org/r/20240417165708.2965612-5-andriy.shevchenko%40linux.intel.com
patch subject: [PATCH v1 4/5] mmc: atmel-mci: Incapsulate used to be a platform data into host structure
config: arm-defconfig (https://download.01.org/0day-ci/archive/20240418/202404180428.bZDYDFAE-lkp@intel.com/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project.git f28c006a5895fc0e329fe15fead81e37457cb1d1)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240418/202404180428.bZDYDFAE-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202404180428.bZDYDFAE-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/mmc/host/atmel-mci.c:378: warning: Function parameter or struct member 'pdata' not described in 'atmel_mci'
vim +378 drivers/mmc/host/atmel-mci.c
65e8b083fc8ec3 Haavard Skinnemoen 2008-07-30 245
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 246 /**
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 247 * struct atmel_mci - MMC controller state shared between all slots
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 248 * @lock: Spinlock protecting the queue and associated data.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 249 * @regs: Pointer to MMIO registers.
796211b7953bd1 Ludovic Desroches 2011-08-11 250 * @sg: Scatterlist entry currently being processed by PIO or PDC code.
f51874b7ec92cb Lee Jones 2020-07-01 251 * @sg_len: Size of the scatterlist
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 252 * @pio_offset: Offset into the current scatterlist entry.
7a90dcc2d7ceb6 Ludovic Desroches 2012-05-16 253 * @buffer: Buffer used if we don't have the r/w proof capability. We
7a90dcc2d7ceb6 Ludovic Desroches 2012-05-16 254 * don't have the time to switch pdc buffers so we have to use only
7a90dcc2d7ceb6 Ludovic Desroches 2012-05-16 255 * one buffer for the full transaction.
7a90dcc2d7ceb6 Ludovic Desroches 2012-05-16 256 * @buf_size: size of the buffer.
f51874b7ec92cb Lee Jones 2020-07-01 257 * @buf_phys_addr: buffer address needed for pdc.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 258 * @cur_slot: The slot which is currently using the controller.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 259 * @mrq: The request currently being processed on @cur_slot,
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 260 * or NULL if the controller is idle.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 261 * @cmd: The command currently being sent to the card, or NULL.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 262 * @data: The data currently being transferred, or NULL if no data
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 263 * transfer is in progress.
796211b7953bd1 Ludovic Desroches 2011-08-11 264 * @data_size: just data->blocks * data->blksz.
65e8b083fc8ec3 Haavard Skinnemoen 2008-07-30 265 * @dma: DMA client state.
65e8b083fc8ec3 Haavard Skinnemoen 2008-07-30 266 * @data_chan: DMA channel being used for the current data transfer.
f51874b7ec92cb Lee Jones 2020-07-01 267 * @dma_conf: Configuration for the DMA slave
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 268 * @cmd_status: Snapshot of SR taken upon completion of the current
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 269 * command. Only valid when EVENT_CMD_COMPLETE is pending.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 270 * @data_status: Snapshot of SR taken upon completion of the current
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 271 * data transfer. Only valid when EVENT_DATA_COMPLETE or
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 272 * EVENT_DATA_ERROR is pending.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 273 * @stop_cmdr: Value to be loaded into CMDR when the stop command is
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 274 * to be sent.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 275 * @tasklet: Tasklet running the request state machine.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 276 * @pending_events: Bitmask of events flagged by the interrupt handler
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 277 * to be processed by the tasklet.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 278 * @completed_events: Bitmask of events which the state machine has
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 279 * processed.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 280 * @state: Tasklet state.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 281 * @queue: List of slots waiting for access to the controller.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 282 * @need_clock_update: Update the clock rate before the next request.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 283 * @need_reset: Reset controller before next request.
24011f346471f7 Ludovic Desroches 2012-05-16 284 * @timer: Timer to balance the data timeout error flag which cannot rise.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 285 * @mode_reg: Value of the MR register.
74791a2dc8dc2a Nicolas Ferre 2009-12-14 286 * @cfg_reg: Value of the CFG register.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 287 * @bus_hz: The rate of @mck in Hz. This forms the basis for MMC bus
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 288 * rate and timeout calculations.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 289 * @mapbase: Physical address of the MMIO registers.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 290 * @mck: The peripheral bus clock hooked up to the MMC controller.
d9faa6e8381c3a Andy Shevchenko 2024-04-17 291 * @dev: Device associated with the MMC controller.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 292 * @slot: Slots sharing this MMC controller.
796211b7953bd1 Ludovic Desroches 2011-08-11 293 * @caps: MCI capabilities depending on MCI version.
796211b7953bd1 Ludovic Desroches 2011-08-11 294 * @prepare_data: function to setup MCI before data transfer which
796211b7953bd1 Ludovic Desroches 2011-08-11 295 * depends on MCI capabilities.
796211b7953bd1 Ludovic Desroches 2011-08-11 296 * @submit_data: function to start data transfer which depends on MCI
796211b7953bd1 Ludovic Desroches 2011-08-11 297 * capabilities.
796211b7953bd1 Ludovic Desroches 2011-08-11 298 * @stop_transfer: function to stop data transfer which depends on MCI
796211b7953bd1 Ludovic Desroches 2011-08-11 299 * capabilities.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 300 *
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 301 * Locking
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 302 * =======
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 303 *
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 304 * @lock is a softirq-safe spinlock protecting @queue as well as
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 305 * @cur_slot, @mrq and @state. These must always be updated
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 306 * at the same time while holding @lock.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 307 *
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 308 * @lock also protects mode_reg and need_clock_update since these are
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 309 * used to synchronize mode register updates with the queue
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 310 * processing.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 311 *
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 312 * The @mrq field of struct atmel_mci_slot is also protected by @lock,
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 313 * and must always be written at the same time as the slot is added to
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 314 * @queue.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 315 *
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 316 * @pending_events and @completed_events are accessed using atomic bit
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 317 * operations, so they don't need any locking.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 318 *
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 319 * None of the fields touched by the interrupt handler need any
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 320 * locking. However, ordering is important: Before EVENT_DATA_ERROR or
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 321 * EVENT_DATA_COMPLETE is set in @pending_events, all data-related
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 322 * interrupts must be disabled and @data_status updated with a
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 323 * snapshot of SR. Similarly, before EVENT_CMD_COMPLETE is set, the
25985edcedea63 Lucas De Marchi 2011-03-30 324 * CMDRDY interrupt must be disabled and @cmd_status updated with a
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 325 * snapshot of SR, and before EVENT_XFER_COMPLETE can be set, the
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 326 * bytes_xfered field of @data must be written. This is ensured by
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 327 * using barriers.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 328 */
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 329 struct atmel_mci {
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 330 spinlock_t lock;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 331 void __iomem *regs;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 332
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 333 struct scatterlist *sg;
bdbc5d0c60f3e9 Terry Barnaby 2013-04-08 334 unsigned int sg_len;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 335 unsigned int pio_offset;
7a90dcc2d7ceb6 Ludovic Desroches 2012-05-16 336 unsigned int *buffer;
7a90dcc2d7ceb6 Ludovic Desroches 2012-05-16 337 unsigned int buf_size;
7a90dcc2d7ceb6 Ludovic Desroches 2012-05-16 338 dma_addr_t buf_phys_addr;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 339
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 340 struct atmel_mci_slot *cur_slot;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 341 struct mmc_request *mrq;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 342 struct mmc_command *cmd;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 343 struct mmc_data *data;
796211b7953bd1 Ludovic Desroches 2011-08-11 344 unsigned int data_size;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 345
65e8b083fc8ec3 Haavard Skinnemoen 2008-07-30 346 struct atmel_mci_dma dma;
65e8b083fc8ec3 Haavard Skinnemoen 2008-07-30 347 struct dma_chan *data_chan;
e2b35f3dbfc080 Viresh Kumar 2012-02-01 348 struct dma_slave_config dma_conf;
65e8b083fc8ec3 Haavard Skinnemoen 2008-07-30 349
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 350 u32 cmd_status;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 351 u32 data_status;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 352 u32 stop_cmdr;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 353
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 354 struct tasklet_struct tasklet;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 355 unsigned long pending_events;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 356 unsigned long completed_events;
c06ad2580dca4e Haavard Skinnemoen 2008-07-31 357 enum atmel_mci_state state;
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 358 struct list_head queue;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 359
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 360 bool need_clock_update;
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 361 bool need_reset;
24011f346471f7 Ludovic Desroches 2012-05-16 362 struct timer_list timer;
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 363 u32 mode_reg;
74791a2dc8dc2a Nicolas Ferre 2009-12-14 364 u32 cfg_reg;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 365 unsigned long bus_hz;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 366 unsigned long mapbase;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 367 struct clk *mck;
d9faa6e8381c3a Andy Shevchenko 2024-04-17 368 struct device *dev;
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 369
e20b1c52f08695 Andy Shevchenko 2024-04-17 370 struct mci_slot_pdata pdata[ATMCI_MAX_NR_SLOTS];
2c96a293bbd6b3 Ludovic Desroches 2011-08-11 371 struct atmel_mci_slot *slot[ATMCI_MAX_NR_SLOTS];
796211b7953bd1 Ludovic Desroches 2011-08-11 372
796211b7953bd1 Ludovic Desroches 2011-08-11 373 struct atmel_mci_caps caps;
796211b7953bd1 Ludovic Desroches 2011-08-11 374
796211b7953bd1 Ludovic Desroches 2011-08-11 375 u32 (*prepare_data)(struct atmel_mci *host, struct mmc_data *data);
796211b7953bd1 Ludovic Desroches 2011-08-11 376 void (*submit_data)(struct atmel_mci *host, struct mmc_data *data);
796211b7953bd1 Ludovic Desroches 2011-08-11 377 void (*stop_transfer)(struct atmel_mci *host);
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 @378 };
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 379
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
linux-mmc@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
Cc: Ulf Hansson <ulf.hansson@linaro.org>,
Alexandre Belloni <alexandre.belloni@bootlin.com>,
Aubin Constans <aubin.constans@microchip.com>,
llvm@lists.linux.dev, Claudiu Beznea <claudiu.beznea@tuxon.dev>,
oe-kbuild-all@lists.linux.dev
Subject: Re: [PATCH v1 4/5] mmc: atmel-mci: Incapsulate used to be a platform data into host structure
Date: Thu, 18 Apr 2024 04:42:07 +0800 [thread overview]
Message-ID: <202404180428.bZDYDFAE-lkp@intel.com> (raw)
In-Reply-To: <20240417165708.2965612-5-andriy.shevchenko@linux.intel.com>
Hi Andy,
kernel test robot noticed the following build warnings:
[auto build test WARNING on soc/for-next]
[also build test WARNING on linus/master v6.9-rc4 next-20240417]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Andy-Shevchenko/mmc-atmel-mci-Get-rid-of-platform-data-leftovers/20240418-005915
base: https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git for-next
patch link: https://lore.kernel.org/r/20240417165708.2965612-5-andriy.shevchenko%40linux.intel.com
patch subject: [PATCH v1 4/5] mmc: atmel-mci: Incapsulate used to be a platform data into host structure
config: arm-defconfig (https://download.01.org/0day-ci/archive/20240418/202404180428.bZDYDFAE-lkp@intel.com/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project.git f28c006a5895fc0e329fe15fead81e37457cb1d1)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240418/202404180428.bZDYDFAE-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202404180428.bZDYDFAE-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/mmc/host/atmel-mci.c:378: warning: Function parameter or struct member 'pdata' not described in 'atmel_mci'
vim +378 drivers/mmc/host/atmel-mci.c
65e8b083fc8ec3 Haavard Skinnemoen 2008-07-30 245
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 246 /**
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 247 * struct atmel_mci - MMC controller state shared between all slots
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 248 * @lock: Spinlock protecting the queue and associated data.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 249 * @regs: Pointer to MMIO registers.
796211b7953bd1 Ludovic Desroches 2011-08-11 250 * @sg: Scatterlist entry currently being processed by PIO or PDC code.
f51874b7ec92cb Lee Jones 2020-07-01 251 * @sg_len: Size of the scatterlist
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 252 * @pio_offset: Offset into the current scatterlist entry.
7a90dcc2d7ceb6 Ludovic Desroches 2012-05-16 253 * @buffer: Buffer used if we don't have the r/w proof capability. We
7a90dcc2d7ceb6 Ludovic Desroches 2012-05-16 254 * don't have the time to switch pdc buffers so we have to use only
7a90dcc2d7ceb6 Ludovic Desroches 2012-05-16 255 * one buffer for the full transaction.
7a90dcc2d7ceb6 Ludovic Desroches 2012-05-16 256 * @buf_size: size of the buffer.
f51874b7ec92cb Lee Jones 2020-07-01 257 * @buf_phys_addr: buffer address needed for pdc.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 258 * @cur_slot: The slot which is currently using the controller.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 259 * @mrq: The request currently being processed on @cur_slot,
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 260 * or NULL if the controller is idle.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 261 * @cmd: The command currently being sent to the card, or NULL.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 262 * @data: The data currently being transferred, or NULL if no data
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 263 * transfer is in progress.
796211b7953bd1 Ludovic Desroches 2011-08-11 264 * @data_size: just data->blocks * data->blksz.
65e8b083fc8ec3 Haavard Skinnemoen 2008-07-30 265 * @dma: DMA client state.
65e8b083fc8ec3 Haavard Skinnemoen 2008-07-30 266 * @data_chan: DMA channel being used for the current data transfer.
f51874b7ec92cb Lee Jones 2020-07-01 267 * @dma_conf: Configuration for the DMA slave
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 268 * @cmd_status: Snapshot of SR taken upon completion of the current
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 269 * command. Only valid when EVENT_CMD_COMPLETE is pending.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 270 * @data_status: Snapshot of SR taken upon completion of the current
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 271 * data transfer. Only valid when EVENT_DATA_COMPLETE or
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 272 * EVENT_DATA_ERROR is pending.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 273 * @stop_cmdr: Value to be loaded into CMDR when the stop command is
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 274 * to be sent.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 275 * @tasklet: Tasklet running the request state machine.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 276 * @pending_events: Bitmask of events flagged by the interrupt handler
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 277 * to be processed by the tasklet.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 278 * @completed_events: Bitmask of events which the state machine has
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 279 * processed.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 280 * @state: Tasklet state.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 281 * @queue: List of slots waiting for access to the controller.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 282 * @need_clock_update: Update the clock rate before the next request.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 283 * @need_reset: Reset controller before next request.
24011f346471f7 Ludovic Desroches 2012-05-16 284 * @timer: Timer to balance the data timeout error flag which cannot rise.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 285 * @mode_reg: Value of the MR register.
74791a2dc8dc2a Nicolas Ferre 2009-12-14 286 * @cfg_reg: Value of the CFG register.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 287 * @bus_hz: The rate of @mck in Hz. This forms the basis for MMC bus
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 288 * rate and timeout calculations.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 289 * @mapbase: Physical address of the MMIO registers.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 290 * @mck: The peripheral bus clock hooked up to the MMC controller.
d9faa6e8381c3a Andy Shevchenko 2024-04-17 291 * @dev: Device associated with the MMC controller.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 292 * @slot: Slots sharing this MMC controller.
796211b7953bd1 Ludovic Desroches 2011-08-11 293 * @caps: MCI capabilities depending on MCI version.
796211b7953bd1 Ludovic Desroches 2011-08-11 294 * @prepare_data: function to setup MCI before data transfer which
796211b7953bd1 Ludovic Desroches 2011-08-11 295 * depends on MCI capabilities.
796211b7953bd1 Ludovic Desroches 2011-08-11 296 * @submit_data: function to start data transfer which depends on MCI
796211b7953bd1 Ludovic Desroches 2011-08-11 297 * capabilities.
796211b7953bd1 Ludovic Desroches 2011-08-11 298 * @stop_transfer: function to stop data transfer which depends on MCI
796211b7953bd1 Ludovic Desroches 2011-08-11 299 * capabilities.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 300 *
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 301 * Locking
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 302 * =======
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 303 *
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 304 * @lock is a softirq-safe spinlock protecting @queue as well as
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 305 * @cur_slot, @mrq and @state. These must always be updated
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 306 * at the same time while holding @lock.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 307 *
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 308 * @lock also protects mode_reg and need_clock_update since these are
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 309 * used to synchronize mode register updates with the queue
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 310 * processing.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 311 *
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 312 * The @mrq field of struct atmel_mci_slot is also protected by @lock,
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 313 * and must always be written at the same time as the slot is added to
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 314 * @queue.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 315 *
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 316 * @pending_events and @completed_events are accessed using atomic bit
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 317 * operations, so they don't need any locking.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 318 *
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 319 * None of the fields touched by the interrupt handler need any
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 320 * locking. However, ordering is important: Before EVENT_DATA_ERROR or
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 321 * EVENT_DATA_COMPLETE is set in @pending_events, all data-related
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 322 * interrupts must be disabled and @data_status updated with a
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 323 * snapshot of SR. Similarly, before EVENT_CMD_COMPLETE is set, the
25985edcedea63 Lucas De Marchi 2011-03-30 324 * CMDRDY interrupt must be disabled and @cmd_status updated with a
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 325 * snapshot of SR, and before EVENT_XFER_COMPLETE can be set, the
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 326 * bytes_xfered field of @data must be written. This is ensured by
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 327 * using barriers.
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 328 */
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 329 struct atmel_mci {
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 330 spinlock_t lock;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 331 void __iomem *regs;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 332
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 333 struct scatterlist *sg;
bdbc5d0c60f3e9 Terry Barnaby 2013-04-08 334 unsigned int sg_len;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 335 unsigned int pio_offset;
7a90dcc2d7ceb6 Ludovic Desroches 2012-05-16 336 unsigned int *buffer;
7a90dcc2d7ceb6 Ludovic Desroches 2012-05-16 337 unsigned int buf_size;
7a90dcc2d7ceb6 Ludovic Desroches 2012-05-16 338 dma_addr_t buf_phys_addr;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 339
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 340 struct atmel_mci_slot *cur_slot;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 341 struct mmc_request *mrq;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 342 struct mmc_command *cmd;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 343 struct mmc_data *data;
796211b7953bd1 Ludovic Desroches 2011-08-11 344 unsigned int data_size;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 345
65e8b083fc8ec3 Haavard Skinnemoen 2008-07-30 346 struct atmel_mci_dma dma;
65e8b083fc8ec3 Haavard Skinnemoen 2008-07-30 347 struct dma_chan *data_chan;
e2b35f3dbfc080 Viresh Kumar 2012-02-01 348 struct dma_slave_config dma_conf;
65e8b083fc8ec3 Haavard Skinnemoen 2008-07-30 349
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 350 u32 cmd_status;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 351 u32 data_status;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 352 u32 stop_cmdr;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 353
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 354 struct tasklet_struct tasklet;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 355 unsigned long pending_events;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 356 unsigned long completed_events;
c06ad2580dca4e Haavard Skinnemoen 2008-07-31 357 enum atmel_mci_state state;
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 358 struct list_head queue;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 359
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 360 bool need_clock_update;
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 361 bool need_reset;
24011f346471f7 Ludovic Desroches 2012-05-16 362 struct timer_list timer;
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 363 u32 mode_reg;
74791a2dc8dc2a Nicolas Ferre 2009-12-14 364 u32 cfg_reg;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 365 unsigned long bus_hz;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 366 unsigned long mapbase;
7d2be0749a5909 Haavard Skinnemoen 2008-06-30 367 struct clk *mck;
d9faa6e8381c3a Andy Shevchenko 2024-04-17 368 struct device *dev;
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 369
e20b1c52f08695 Andy Shevchenko 2024-04-17 370 struct mci_slot_pdata pdata[ATMCI_MAX_NR_SLOTS];
2c96a293bbd6b3 Ludovic Desroches 2011-08-11 371 struct atmel_mci_slot *slot[ATMCI_MAX_NR_SLOTS];
796211b7953bd1 Ludovic Desroches 2011-08-11 372
796211b7953bd1 Ludovic Desroches 2011-08-11 373 struct atmel_mci_caps caps;
796211b7953bd1 Ludovic Desroches 2011-08-11 374
796211b7953bd1 Ludovic Desroches 2011-08-11 375 u32 (*prepare_data)(struct atmel_mci *host, struct mmc_data *data);
796211b7953bd1 Ludovic Desroches 2011-08-11 376 void (*submit_data)(struct atmel_mci *host, struct mmc_data *data);
796211b7953bd1 Ludovic Desroches 2011-08-11 377 void (*stop_transfer)(struct atmel_mci *host);
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 @378 };
965ebf33ea5afb Haavard Skinnemoen 2008-09-17 379
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2024-04-17 20:42 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-17 16:55 [PATCH v1 0/5] mmc: atmel-mci: Get rid of leftovers and clean up Andy Shevchenko
2024-04-17 16:55 ` Andy Shevchenko
2024-04-17 16:55 ` [PATCH v1 1/5] mmc: atmel-mci: Get rid of platform data leftovers Andy Shevchenko
2024-04-17 16:55 ` Andy Shevchenko
2024-04-17 16:55 ` [PATCH v1 2/5] mmc: atmel-mci: Use temporary variable for struct device Andy Shevchenko
2024-04-17 16:55 ` Andy Shevchenko
2024-04-17 16:55 ` [PATCH v1 3/5] mmc: atmel-mci: Replace platform device pointer by generic one Andy Shevchenko
2024-04-17 16:55 ` Andy Shevchenko
2024-04-17 16:55 ` [PATCH v1 4/5] mmc: atmel-mci: Incapsulate used to be a platform data into host structure Andy Shevchenko
2024-04-17 16:55 ` Andy Shevchenko
2024-04-17 20:42 ` kernel test robot [this message]
2024-04-17 20:42 ` kernel test robot
2024-04-18 9:33 ` Andy Shevchenko
2024-04-18 9:33 ` Andy Shevchenko
2024-04-17 16:55 ` [PATCH v1 5/5] mmc: atmel-mci: Switch to use dev_err_probe() Andy Shevchenko
2024-04-17 16:55 ` Andy Shevchenko
2024-04-25 16:22 ` [PATCH v1 0/5] mmc: atmel-mci: Get rid of leftovers and clean up Ulf Hansson
2024-04-25 16:22 ` Ulf Hansson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202404180428.bZDYDFAE-lkp@intel.com \
--to=lkp@intel.com \
--cc=alexandre.belloni@bootlin.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=aubin.constans@microchip.com \
--cc=claudiu.beznea@tuxon.dev \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
--cc=llvm@lists.linux.dev \
--cc=nicolas.ferre@microchip.com \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=ulf.hansson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.