免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4314 | 回复: 5
打印 上一主题 下一主题

求助: lm-sensors中adt7475驱动编译出错 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-07-08 09:26 |只看该作者 |倒序浏览
想通过lm-sensors来检测系统的运行的状态,比如风扇,温度等,但是主板上面的使用的风扇的控制芯片是ADT7475,本机安装的操作系统为RHEL5.4 64位版本,内核的版本为2.6.18-164.el5,在这版本的内核下,还不支持该芯片,所以从http://www.lm-sensors.org/wiki/Devices上面下载了AD7475的芯片驱动的源码进行编译,编译出现了错误,详细的信息如下,本人对驱动和C程序不熟悉,请各位帮忙看看,看有什么法子可以解决这个问题,非常感谢

编译出错的详细的信息:
[root@localhost adt7475]# make
  CC [M]  /adt7475/adt7475.o
/adt7475/adt7475.c:154: warning: initialization makes integer from pointer without a cast
/adt7475/adt7475.c:154: error: initializer element is not computable at load time
/adt7475/adt7475.c:154: error: (near initialization for 'adt7475_id[0].id')
/adt7475/adt7475.c:154: warning: excess elements in struct initializer
/adt7475/adt7475.c:154: warning: (near initialization for 'adt7475_id[0]')
/adt7475/adt7475.c:155: warning: initialization makes integer from pointer without a cast
/adt7475/adt7475.c:155: error: initializer element is not computable at load time
/adt7475/adt7475.c:155: error: (near initialization for 'adt7475_id[1].id')
/adt7475/adt7475.c:155: warning: excess elements in struct initializer
/adt7475/adt7475.c:155: warning: (near initialization for 'adt7475_id[1]')
/adt7475/adt7475.c:156: warning: initialization makes integer from pointer without a cast
/adt7475/adt7475.c:156: error: initializer element is not computable at load time
/adt7475/adt7475.c:156: error: (near initialization for 'adt7475_id[2].id')
/adt7475/adt7475.c:156: warning: excess elements in struct initializer
/adt7475/adt7475.c:156: warning: (near initialization for 'adt7475_id[2]')
/adt7475/adt7475.c:157: warning: initialization makes integer from pointer without a cast
/adt7475/adt7475.c:157: error: initializer element is not computable at load time
/adt7475/adt7475.c:157: error: (near initialization for 'adt7475_id[3].id')
/adt7475/adt7475.c:157: warning: excess elements in struct initializer
/adt7475/adt7475.c:157: warning: (near initialization for 'adt7475_id[3]')
/adt7475/adt7475.c: In function 'reg2volt':
/adt7475/adt7475.c:259: error: implicit declaration of function 'DIV_ROUND_CLOSEST'
/adt7475/adt7475.c: In function 'set_voltage':
/adt7475/adt7475.c:346: error: implicit declaration of function 'strict_strtol'
/adt7475/adt7475.c: In function 'set_tach':
/adt7475/adt7475.c:605: error: implicit declaration of function 'strict_strtoul'
/adt7475/adt7475.c: At top level:
/adt7475/adt7475.c:1176: warning: 'struct i2c_board_info' declared inside parameter list
/adt7475/adt7475.c:1176: warning: its scope is only this definition or declaration, which is probably not what you want
/adt7475/adt7475.c: In function 'adt7475_detect':
/adt7475/adt7475.c:1207: error: dereferencing pointer to incomplete type
/adt7475/adt7475.c:1207: error: request for member 'type' in something not a structure or union
/adt7475/adt7475.c:1207: warning: passing argument 1 of 'strlcpy' from incompatible pointer type
/adt7475/adt7475.c: In function 'adt7475_probe':
/adt7475/adt7475.c:1254: error: 'const struct i2c_device_id' has no member named 'driver_data'
/adt7475/adt7475.c:1275: error: 'const struct i2c_device_id' has no member named 'driver_data'
/adt7475/adt7475.c:1275: warning: comparison between pointer and integer
/adt7475/adt7475.c:1286: error: 'const struct i2c_device_id' has no member named 'driver_data'
/adt7475/adt7475.c:1286: warning: comparison between pointer and integer
/adt7475/adt7475.c:1291: error: 'const struct i2c_device_id' has no member named 'driver_data'
/adt7475/adt7475.c:1291: warning: comparison between pointer and integer
/adt7475/adt7475.c:1291: error: 'const struct i2c_device_id' has no member named 'driver_data'
/adt7475/adt7475.c:1291: warning: comparison between pointer and integer
/adt7475/adt7475.c:1299: error: 'const struct i2c_device_id' has no member named 'driver_data'
/adt7475/adt7475.c:1299: warning: comparison between pointer and integer
/adt7475/adt7475.c:1364: warning: assignment from incompatible pointer type
/adt7475/adt7475.c:1370: error: 'const struct i2c_device_id' has no member named 'driver_data'
/adt7475/adt7475.c:1370: error: array subscript is not an integer
/adt7475/adt7475.c:1370: warning: format '%s' expects type 'char *', but argument 4 has type 'const struct i2c_device_id *'
/adt7475/adt7475.c: In function 'adt7475_remove':
/adt7475/adt7475.c:1399: warning: passing argument 1 of 'hwmon_device_unregister' from incompatible pointer type
/adt7475/adt7475.c: At top level:
/adt7475/adt7475.c:1411: error: unknown field 'probe' specified in initializer
/adt7475/adt7475.c:1411: warning: missing braces around initializer
/adt7475/adt7475.c:1411: warning: (near initialization for 'adt7475_driver.list')
/adt7475/adt7475.c:1411: warning: initialization from incompatible pointer type
/adt7475/adt7475.c:1412: error: unknown field 'remove' specified in initializer
/adt7475/adt7475.c:1412: warning: excess elements in struct initializer
/adt7475/adt7475.c:1412: warning: (near initialization for 'adt7475_driver')
/adt7475/adt7475.c:1413: error: unknown field 'id_table' specified in initializer
/adt7475/adt7475.c:1413: warning: excess elements in struct initializer
/adt7475/adt7475.c:1413: warning: (near initialization for 'adt7475_driver')
/adt7475/adt7475.c:1414: error: unknown field 'detect' specified in initializer
/adt7475/adt7475.c:1414: warning: excess elements in struct initializer
/adt7475/adt7475.c:1414: warning: (near initialization for 'adt7475_driver')
/adt7475/adt7475.c:1415: error: unknown field 'address_data' specified in initializer
/adt7475/adt7475.c:1415: warning: excess elements in struct initializer
/adt7475/adt7475.c:1415: warning: (near initialization for 'adt7475_driver')
make[2]: *** [/adt7475/adt7475.o] Error 1
make[1]: *** [_module_/adt7475] Error 2
make: *** [modules] Error 2

编译使用的Makefile和源代码
驱动源代码.rar (9.2 KB, 下载次数: 34)

论坛徽章:
0
2 [报告]
发表于 2010-07-08 09:42 |只看该作者
回复 1# adams_leo


    内核版本的原因,版本太低了吧,,,我这边也没编过(2.6.26),,不过错误相比你那个少多了。。。
   i2c接口在近几个版本变化都比较大,,建议下个高版本的kernel试试...或者就找kernel是你那个版本的adt7475.c

论坛徽章:
0
3 [报告]
发表于 2010-07-08 09:49 |只看该作者
您好,使用最新的内核 2.6.34的话这个是可以编译通过的,但是由于我当前的系统里面的使用了Marvell的SAS控制卡,要命的是这个卡的驱动只能在RHEL 5.4上面使用,其他的不支持,所以只有从编译这个驱动来解决。

我当前使用的这个版本的内核还不支持这个芯片,也就是还没有adt7475.c这个代码在里面呢

论坛徽章:
0
4 [报告]
发表于 2010-07-08 09:54 |只看该作者
回复 3# adams_leo


    确实升级kernel比较麻烦,,看来你只有修改驱动文件adt7475.c了,直接用不了。。

论坛徽章:
0
5 [报告]
发表于 2010-07-08 10:12 |只看该作者
回复 4# wmmy2008


   非常感谢您的回复,本人就是不懂C编程 dizzy:

论坛徽章:
0
6 [报告]
发表于 2010-07-08 10:30 |只看该作者
回复 5# adams_leo


    光有这个文件你的adt7475芯片还不能工作,,你还需要一个i2c adapter驱动...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP