Linux裝置驅動剖析之SPI(三)

來源:互聯網
上載者:User

       spi_device    *                     u8            * };

  N_SPI_MINORS            32    /* ... up to 256 */   DECLARE_BITMAP(minors, N_SPI_MINORS);

 DECLARE_BITMAP(name,bits) \ name[BITS_TO_LONGS(bits)]

   spidev_open( inode *inode,  file *      spidev_data    *                 status = -      mutex_lock(&           list_for_each_entry(spidev, &          (spidev->devt == inode->             status =                    (status ==           (!spidev->             spidev->buffer =              (!spidev->                 dev_dbg(&spidev->spi->dev,                  status = -          (status ==              spidev->users++             filp->private_data =     }          pr_debug(      mutex_unlock(&      }

  spidev_write( file *filp,   __user *         size_t count, loff_t *      spidev_data    *     ssize_t            status =      unsigned             (count >          -      spidev = filp->      mutex_lock(&spidev->     missing = copy_from_user(spidev->      (missing ==          status =     }          status = -     mutex_unlock(&spidev->       }

  spidev_sync_write( spidev_data *      spi_transfer    t =             .tx_buf        = spidev->             .len        =           spi_message_init(&     spi_message_add_tail(&t, &      spidev_sync(spidev, & }

                *             *       unsigned    cs_change:       };

             spi_device    *      unsigned        is_dma_mapped:                             (*complete)( *                 *                                 * };

  inline  spi_message_init( spi_message *     memset(m, ,  *     INIT_LIST_HEAD(&m-> }

  inline  spi_message_add_tail( spi_transfer *t,  spi_message *     list_add_tail(&t->transfer_list, &m-> }

  spidev_sync( spidev_data *spidev,  spi_message *           message->complete =     message->context = &      spin_lock_irq(&spidev->      (spidev->spi ==         status = -              status = spi_async(spidev->     spin_unlock_irq(&spidev->       (status ==          wait_for_completion(&         status = message->          (status ==              status = message->      }

   spidev_complete( * }

  spi_async( spi_device *spi,  spi_message *      spi_master *master = spi->          unsigned       spin_lock_irqsave(&master->       (master->         ret = -              ret =      spin_unlock_irqrestore(&master->       }

   __spi_async( spi_device *spi,  spi_message *      spi_master *master = spi->            ((master->flags &             || (spi->mode &          spi_transfer *         unsigned flags = master->          list_for_each_entry(xfer, &message->              (xfer->rx_buf && xfer->                  -              ((flags & SPI_MASTER_NO_TX) && xfer->                  -              ((flags & SPI_MASTER_NO_RX) && xfer->                  -      message->spi =     message->status = -      master-> }

   s3c64xx_spi_transfer( spi_device *                          spi_message *      s3c64xx_spi_driver_data *     unsigned       sdd = spi_master_get_devdata(spi->      spin_lock_irqsave(&sdd->       (sdd->state &         spin_unlock_irqrestore(&sdd->          -      msg->status = -     msg->actual_length =       list_add_tail(&msg->queue, &sdd->      queue_work(sdd->workqueue, &sdd->      spin_unlock_irqrestore(&sdd->        }

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.