I.mx6s上移植wm8960驱动(基于linux3.0.101版本)

I.mx6s上移植wm8960驱动
  此篇博文只记录移植的步骤,其他不做分析。首先上一张wm8960的硬件连接图:







































1  上电操作
   配置wm8960的上电脚,文件位置:arch/arm/mach-mx6/board-mx6q_sabresd.c

         #define SABRESD_CODEC_PWR_EN    IMX_GPIO_NR(7, 12)
 440     /* Enable wm8960 power supply */
 441     gpio_request(SABRESD_CODEC_PWR_EN, "audio-power");
 442     gpio_direction_output(SABRESD_CODEC_PWR_EN, 1);
 443     msleep(1);
 444     gpio_set_value(SABRESD_CODEC_PWR_EN, 1);
 445     printk("Power up wm8960 successful %s\n", __FUNCTION__);

另外,根据原理图可知上电脚为GPIO17,所以相关配置头文件里需将其配置为gpio口,文件位置:arch/arm/mach-mx6/board-mx6dl_sabresd.h

236     /* CODEC_PWR_EN */
237     MX6DL_PAD_GPIO_17__GPIO_7_12,

2:配置I2C,用于client的生成 ,文件位置:arch/arm/mach-mx6/board-mx6q_sabresd.c 需确认你的i2c是接的哪个控制器。

 805 static struct i2c_board_info mxc_i2c0_board_info[] __initdata = {
 806     {
 807         I2C_BOARD_INFO("wm8960", 0x1a),
 808     },
};

3: 修改wm8960  codec相关的数据结构,此处根据wm8962修改而来,文件位置: arch/arm/mach-mx6/board-mx6q_sabresd.c
以下是修改的地方

 57 #include <sound/wm8962.h>
 58 #include <sound/wm8960.h>

        ...省略部分内容...

 410 static struct platform_device mx6_sabresd_audio_wm8960_device = {
 411     .name = "imx-wm8960",
 412 };
 413 
 414 static struct mxc_audio_platform_data wm8960_data;
 415 
 416 static int wm8960_clk_enable(int enable)
 417 {
 418     if (enable) {
 419         clk_enable(clko);
 420         printk("%s:wm clk enable\n", __FUNCTION__);
 421     }
 422     else {
 423         clk_disable(clko);
 424         printk("%s:wm clk disable\n", __FUNCTION__);
 425     }
 426     return 0;
 427 }
 428
 429 static int mxc_wm8960_init(void)
 430 {
 431     int rate;
 432 
 433     clko = clk_get(NULL, "clko_clk");
 434     if (IS_ERR(clko)) {
 435         pr_err("can't get CLKO clock.\n");
 436         return PTR_ERR(clko);
 437     }
 438     /* both audio codec and comera use CLKO clk*/
 439     rate = clk_round_rate(clko, 24000000);
 440     clk_set_rate(clko, rate);
 441 
 442     wm8960_data.sysclk = rate;
 443 
 444     /* Enable wm8960 power supply */
 445     gpio_request(SABRESD_CODEC_PWR_EN, "audio-power");
 446     gpio_direction_output(SABRESD_CODEC_PWR_EN, 1);
 447     msleep(
  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值