Это старый, возможно, мертвый вопрос, но, похоже, существует некоторая путаница с тем, что на самом деле представляет собой __u32, но по крайней мере в 3.16.1, на которую я сейчас обращаю внимание, __u32 определен в. /include/uapi/asm-generic/int-ll64.h таким образом:
typedef unsigned int __u32;
Итак, это просто целое число без знака.
в противном случае ваш синтаксис неправильный, так как это определение функции, вам нужно присвоить указателю имя, чтобы ссылаться на него внутри функции:
extern int Si4709_dev_chan_get(__u32 *x);
В противном случае, смотрите это подробнее.
http://en.wikipedia.org/wiki/Pointer_%28computer_programming%29#Pass-by-address_using_pointers