S3C2440 SPI驱动框架

发布时间: 2024-08-21
来源: 电子工程世界

S3C2440 SPI驱动代码详细解读:


https://www.linuxidc.com/Linux/2012-08/68402p4.htm


一、platform device and board_info


/* /arch/arm/plat-s3c24xx*/

static struct resource s3c_spi0_resource[] = {    

[0] = {

        .start = S3C24XX_PA_SPI,

        .end   = S3C24XX_PA_SPI + 0x1f,

        .flags = IORESOURCE_MEM,

    },

    [1] = {

        .start = IRQ_SPI0,

        .end   = IRQ_SPI0,

        .flags = IORESOURCE_IRQ,

    }


};

static u64 s3c_device_spi0_dmamask = 0xffffffffUL;

struct platform_device s3c_device_spi0 = {

    .name          = 's3c2410-spi',      /* 匹配platform_device 的.driver.namen */

    .id          = 0,

    .num_resources      = ARRAY_SIZE(s3c_spi0_resource),

    .resource      = s3c_spi0_resource,

        .dev              = {

                .dma_mask = &s3c_device_spi0_dmamask,

                .coherent_dma_mask = 0xffffffffUL

        }

};

EXPORT_SYMBOL(s3c_device_spi0);


/* /arch/arm/mach-s3c2440/mach-tq2440.c */

static struct spi_board_info s3c2440_spi0_board[] = {

        [0] = {

                 .modalias = 'spidev',

                .bus_num        = 0,

                .chip_select        = 0,

                .irq =         IRQ_SPI0,    //IRQ_EINT10,/* 修改无效 */

                .max_speed_hz         = 10*1000*1000,

        },

};


static struct s3c2410_spi_info s3c2440_spi0_platdata = {

        .pin_cs = S3C2410_GPG2,

        .num_cs = 1,

        .bus_num = 0,

};


static struct platform_device *tq2440_devices[] __initdata = {

  ......&s3c_device_spi0,            /* sunhj add for spi0 */

    &s3c_device_spi1,

};

static void __init tq2440_machine_init(void)

{

  platform_add_devices(tq2440_devices, ARRAY_SIZE(tq2440_devices));

  /* sunhj add for spi */

    s3c_device_spi0.dev.platform_data= &s3c2440_spi0_platdata;

    spi_register_board_info(s3c2440_spi0_board, ARRAY_SIZE(s3c2440_spi0_board));

}



二、Platform driver


/* /driver/spi/spi_s3c24xx.c */


文章来源于: 电子工程世界 原文链接

本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。