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 */


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

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>