鬼門(動かない or 決まった kernel 以外は使えない)という話ですが、何らかの勉強になれば、と。
先人の知恵を参考にしましたが、それ以外のエラーもあったので、やっつけで。
環境:
slacko_530
lang_pack_ja-1.4.sfs
kernel_sources-2.6.37.6-patched_spup2.sfs
devx_slacko_5.3.sfs
intel のダウンロードセンターにあったドライバセットに入ってる「Readme_gfx.txt」によると、
まずは「DRM Kernel driver」を作れということらしい。
当面必要となりそうなものはセットの中に入ってるみたいですけど、
「新しい方がいいんじゃないか?」(←フラグ?)
と「psb-kernel-source_4.41.1.orig.tar.gz」というものを、私が使っている PC のダウンロード広場から拾ってきました。
何はともあれ、解凍して make
コード: 全て選択
make psb.o
「include/linux/irqreturn.h: note: previous declaration of 'irqreturn_t' was here」
drm_os_linux.h の 「typedef void irqreturn_t;」をコメントアウト
以下、error 修正のたびに make psb.o してます
エラー表示のファイル内行数ははしょってます
「〜drm_fops.c: error: 'struct task_struct' has no member 'euid'」
drm_fops.c の 「priv->uid = current->euid;」を「priv->uid = "root";」に書き換え
(puppy なら root でいいんじゃない?という短絡思考)
「drm_memory.c: error: 'struct agp_memory' has no member named 'memory'」
drm_memory.c の「agpmem->memory->memory」を「agpmem->memory->pages」に書き換え
その後、drm_vm.c でも同様のエラーが起こるので、同じく書き換え
「〜drm_sysfs.c: error: 'struct device' has no member named 'bus_id'」
drm_sysfs.c の「snprintf(dev->dev.bus_id, BUS_ID_SIZE, "card%d", head->minor);」をコメントアウト
「〜drm_agpsupport.c: error: 'struct agp_memory' has no member named 'memory'」
「mem->memory[mem->page_count++]」をmem->pages[mem->page_count++]」に書き換え
「〜drm_edid.c: error: expected ')' before 'PREFIX'」
drm_edid.c の「printk(KERN_ERR PREFIX "Invalid _DDC data\n");」をコメントアウト
「〜psb_drv.c: error: unknown field 'ioctl' specified in initializer」
psb_drv.c の「.ioctl = drm_ioctl,」をコメントアウト
「〜intel_lvds.c: error: too few arguments to function 'backlight_device_register'」
「psbbl_device = backlight_device_register("psblvds", &dev->pdev->dev, dev, &psbbl_ops);」を「psbbl_device = "";」に書き換え
「〜psb_i2c.c: error: 'I2C_HW_B_INTELFB' undeclared (first use in this function)」
psb_i2c.c の「chan->adapter.id = I2C_HW_B_INTELFB;」をコメントアウト
これで形だけとはいえ psb.ko と drm.ko ができる
おかしいなぁ、「Readme_gfx.txt」によると psb_drm.ko ができるみたいなんだけど…。
そもそも、相性の点から、セットに入ってるものを使わなきゃいけないのかな?
いずれ続きをやってみたいけど、…たぶん続かない
さて、寝ます