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


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

相关文章

    用Superboot的USB下载功能,需要: Windows XP / Window 7 USB驱动-tiny6410 适用于win7 64bit的dnw 的USB下载驱动 解压得到win7-64......
    uboot环境变量(设置bootargs向linux内核传递正确的参数);这是我uboot的环境变量设置,在该设置下可以运行initram内核(从内存下载到nandflash再运行),但是运行nfs......
    路板操作提供电压和功率。 STEVAL-LLL002V1套件跳线模拟LED开路故障,4脚位SWIM连接器用于调试和开发STM8AF6266微控制器城市。 套件可以在总线驱动模式(BDM),独立模式(SAM)和......
    为boot参数区(传递给内核的参数),一个为内核区,一个为文件系统区。 而对于bootloader中只要能将内核下载到A~B区的A地址开始处就可以,C~D区的C起始地址下载文件系统。。。这些......
    :255.255.255.0::eth0:off init=/linuxrc console=ttySAC0,115200 bootcmd=nand read.jffs2 0x30007FC0......
    Linux 3.3.0移植到S3C6410开发板上之一;这里仅仅是移植成功内核,可以挂载文件系统运行,至于驱动会陆续添加。 第一步:到内核官网上下载最新的内核,我下载的是linux-3.3-rc3......
    {                 stdout-path = &;serial_0; +               bootargs = "root=/dev/ram0 rw rootfstype=ext4 console......
    控制器的LPC2294作为主控制器,设计给出了应用于电源模块控制系统中的CAN总线网状冗余节点方案。 二、目前几种总线冗余方法 典型的CAN电路可分为4个环节,即单片机、总线控制器、CAN总线驱动器、总线......
    Parker直线驱动器OSP系列七种驱动方式;01 Parker直线驱动器OSP系列七种驱动方式 1、带有同步带和集成精密球轴承导轨或集成滚轮导轨的直线驱动器OSP-E..BHD系列 一种高性能的直线驱动......
    -2014.04时写的文档,可以到这里下载:http://pan.baidu.com/s/1jGxEYQq 首先说明一下u-boot-2015.01跟之前版本的差别 从http......

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

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

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

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

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

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

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