mxcfb late_init

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

mxcfb late_init

827件の閲覧回数
lyashmik
Contributor II

I was looking into how could I make linux not to redraw the framebuffer right after it takes over from u-boot, because I need the image to stay until psplash is started. I've found out through looking into the linux's source code (mxc_ipuv3_fb.c), that late_init could help, so I've found it in the device tree and set to 1:

	mxcfb1: fb@0 {
		compatible = "fsl,mxc_sdc_fb";
		disp_dev = "ldb";
		interface_pix_fmt = "RGB666";
		default_bpp = <16>;
		int_clk = <0>;
		late_init = <1>;
		status = "okay";
	};
And it indeed helped, the image stayed, when the linux started, but now the new problem arose, which is that psplash was not working anymore, further more it seemed that the framebuffer was locked, because I could not output anything on the screen.

So my question is, what is the right sequence of steps here to give control of framebuffer back to linux?
タグ(4)
0 件の賞賛
返信
2 返答(返信)

818件の閲覧回数
Bio_TICFSL
NXP TechSupport
NXP TechSupport

Hello,

I don't see anything wrong with the device tree, but frame buffer need to IPU driver before is up maybe that's the case.

Regards

0 件の賞賛
返信

815件の閲覧回数
lyashmik
Contributor II

@Bio_TICFSL do you mean, that when late_init is enabled, ipu is not getting the framebuffer address from u-boot? In either case IPU should be running and when late_init is set to 0, the display blinks and after a while psplash image is seen.
In mxc_ipuv3_fb.c I've identified, that the crusial piece of code involving late_init is mxcfb_register function:

if (!mxcfbi->late_init) {
		fbi->var.activate |= FB_ACTIVATE_FORCE;
		console_lock();
		ret = fb_set_var(fbi, &fbi->var);
		if (!ret)
			fbcon_update_vcs(fbi, fbi->var.activate & FB_ACTIVATE_ALL);
		console_unlock();
		if (ret < 0) {
			dev_err(fbi->device, "Error fb_set_var ret:%d\n", ret);
			goto err3;
		}

		if (mxcfbi->next_blank == FB_BLANK_UNBLANK) {
			console_lock();
			ret = fb_blank(fbi, FB_BLANK_UNBLANK);
			console_unlock();
			if (ret < 0) {
				dev_err(fbi->device,
					"Error fb_blank ret:%d\n", ret);
				goto err4;
			}
		}
	} else {
		/*
		 * Setup the channel again though bootloader
		 * has done this, then set_par() can stop the
		 * channel neatly and re-initialize it .
		 */
		if (mxcfbi->next_blank == FB_BLANK_UNBLANK) {
			console_lock();
			_setup_disp_channel1(fbi);
			ipu_enable_channel(mxcfbi->ipu, mxcfbi->ipu_ch);
			console_unlock();
		}
	}

So I've create a function in mxc_ipuv3_fb.c base on that if part of the statement, which is not getting called when late_init is 1:

int mxcfb_reinit(struct fb_info *fbi)
{
	struct mxcfb_info *mxcfbi = (struct mxcfb_info *)fbi->par;
	int ret = 0;
	
	if (!fbi || !mxcfbi)
		return -EINVAL;

	fbi->var.activate |= FB_ACTIVATE_FORCE;

	// console_lock();
	ret = fb_set_var(fbi, &fbi->var);
	if (!ret)
		fbcon_update_vcs(fbi, fbi->var.activate & FB_ACTIVATE_ALL);
	// console_unlock();

	if (ret < 0)
		return ret;

	// console_lock();
	ret = fb_blank(fbi, FB_BLANK_UNBLANK);
	//console_unlock();

	return 0;
}
EXPORT_SYMBOL(mxcfb_reinit);

And I've added it to mxcfb_ioctl, so I could call it from user space, but the problem is that I get a lot of warnings about deadlock, when the function is called and sometimes the deadlock really happens, which is of consern, but at least the display is refreshed and if I call psplash explicitly, then display is updated with the psplash image, but the progress bar is not working, but it could be another problem. This could be a solution, but I would really appreceate a more cleaner one.

0 件の賞賛
返信
%3CLINGO-SUB%20id%3D%22lingo-sub-2138399%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3Emxcfb%20%E9%81%85%E5%BB%B6%E5%88%9D%E6%9C%9F%E5%8C%96%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2138399%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E7%A7%81%E3%81%AF%E3%80%81psplash%20%E3%81%8C%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B%E3%81%BE%E3%81%A7%E3%82%A4%E3%83%A1%E3%83%BC%E3%82%B8%E3%82%92%E4%BF%9D%E6%8C%81%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8B%E3%81%9F%E3%82%81%E3%80%81Linux%20%E3%81%8C%20u-boot%20%E3%81%8B%E3%82%89%E5%BC%95%E3%81%8D%E7%B6%99%E3%81%84%E3%81%A0%E7%9B%B4%E5%BE%8C%E3%81%AB%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%83%BC%E3%82%92%E5%86%8D%E6%8F%8F%E7%94%BB%E3%81%97%E3%81%AA%E3%81%84%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%82%92%E8%AA%BF%E3%81%B9%E3%81%A6%E3%81%84%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82Linux%20%E3%81%AE%E3%82%BD%E3%83%BC%E3%82%B9%20%E3%82%B3%E3%83%BC%E3%83%89%20(mxc_ipuv3_fb.c)%20%E3%82%92%E8%AA%BF%E3%81%B9%E3%81%9F%E3%81%A8%E3%81%93%E3%82%8D%E3%80%81%20%3CSTRONG%3Elate_init%20%E3%81%8C%3C%2FSTRONG%3E%E5%BD%B9%E7%AB%8B%E3%81%A4%E3%81%93%E3%81%A8%E3%81%8C%E3%82%8F%E3%81%8B%E3%81%A3%E3%81%9F%E3%81%AE%E3%81%A7%E3%80%81%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%20%E3%83%84%E3%83%AA%E3%83%BC%E3%81%A7%E3%81%9D%E3%82%8C%E3%82%92%E8%A6%8B%E3%81%A4%E3%81%91%E3%81%A6%201%20%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3E%09mxcfb1%3A%20fb%400%20%7B%0A%09%09compatible%20%3D%20%22fsl%2Cmxc_sdc_fb%22%3B%0A%09%09disp_dev%20%3D%20%22ldb%22%3B%0A%09%09interface_pix_fmt%20%3D%20%22RGB666%22%3B%0A%09%09default_bpp%20%3D%20%26lt%3B16%26gt%3B%3B%0A%09%09int_clk%20%3D%20%26lt%3B0%26gt%3B%3B%0A%09%09late_init%20%3D%20%26lt%3B1%26gt%3B%3B%0A%09%09status%20%3D%20%22okay%22%3B%0A%09%7D%3B%3C%2FCODE%3E%3C%2FPRE%3E%3CDIV%3E%E3%81%9D%E3%81%97%E3%81%A6%E3%81%9D%E3%82%8C%E3%81%AF%E7%A2%BA%E3%81%8B%E3%81%AB%E5%BD%B9%E7%AB%8B%E3%81%A1%E3%81%BE%E3%81%97%E3%81%9F%E3%80%81Linux%20%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B%E3%81%A8%E7%94%BB%E5%83%8F%E3%81%AF%E6%AE%8B%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F%E3%81%8C%E3%80%81%E4%BB%8A%E5%BA%A6%E3%81%AF%E6%96%B0%E3%81%9F%E3%81%AA%E5%95%8F%E9%A1%8C%E3%81%8C%E7%99%BA%E7%94%9F%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%E3%81%9D%E3%82%8C%E3%81%AF%E3%80%81psplash%20%E3%81%8C%E5%8B%95%E4%BD%9C%E3%81%97%E3%81%AA%E3%81%8F%E3%81%AA%E3%82%8A%E3%80%81%E3%81%95%E3%82%89%E3%81%AB%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%83%BC%E3%81%8C%E3%83%AD%E3%83%83%E3%82%AF%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%82%88%E3%81%86%E3%81%A7%E3%80%81%E7%94%BB%E9%9D%A2%E3%81%AB%E4%BD%95%E3%82%82%E5%87%BA%E5%8A%9B%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%8B%E3%81%A3%E3%81%9F%E3%81%AE%E3%81%A7%E3%81%99%E3%80%82%3CBR%20%2F%3E%3CBR%20%2F%3ESO%E7%A7%81%E3%81%AE%E8%B3%AA%E5%95%8F%E3%81%AF%E3%80%81%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%81%AE%E5%88%B6%E5%BE%A1%E3%82%92Linux%E3%81%AB%E6%88%BB%E3%81%99%E3%81%9F%E3%82%81%E3%81%AE%E6%AD%A3%E3%81%97%E3%81%84%E6%89%8B%E9%A0%86%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%99%E3%81%8B%3F%3C%2FDIV%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2138617%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20mxcfb%20late_init%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2138617%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F34846%22%20target%3D%22_blank%22%3E%40Bio_TICFSL%20%E3%81%AF%3C%2FA%3E%E3%80%81late_init%20%E3%81%8C%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E3%81%A8%E3%80%81ipu%20%E3%81%8C%20u-boot%20%E3%81%8B%E3%82%89%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%83%BC%20%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%82%92%E5%8F%96%E5%BE%97%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%E3%81%A8%E3%81%84%E3%81%86%E6%84%8F%E5%91%B3%E3%81%A7%E3%81%99%E3%81%8B%3F%E3%81%A9%E3%81%A1%E3%82%89%E3%81%AECASE%E3%81%A7%E3%82%82%20IPU%20%E3%81%AF%E5%AE%9F%E8%A1%8C%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%80%81late_init%20%E3%81%8C%200%20%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%95%E3%82%8C%E3%82%8B%E3%81%A8%E3%80%81%E3%83%87%E3%82%A3%E3%82%B9%E3%83%97%E3%83%AC%E3%82%A4%E3%81%8C%E7%82%B9%E6%BB%85%E3%81%97%E3%80%81%E3%81%97%E3%81%B0%E3%82%89%E3%81%8F%E3%81%99%E3%82%8B%E3%81%A8%20psplash%20%E3%82%A4%E3%83%A1%E3%83%BC%E3%82%B8%E3%81%8C%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%3CBR%20%2F%3E%3CSTRONG%3Emxc_ipuv3_fb.c%3C%2FSTRONG%3E%E5%86%85%E7%A7%81%E3%81%AF%E3%80%81%20%3CSTRONG%3Elate_init%3C%2FSTRONG%3E%E3%81%AB%E9%96%A2%E9%80%A3%E3%81%99%E3%82%8B%E9%87%8D%E8%A6%81%E3%81%AA%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AF%20mxcfb_register%20%E9%96%A2%E6%95%B0%E3%81%A7%E3%81%82%E3%82%8B%E3%81%93%E3%81%A8%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%3CBR%20%2F%3E%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3Eif%20(!mxcfbi-%26gt%3Blate_init)%20%7B%0A%09%09fbi-%26gt%3Bvar.activate%20%7C%3D%20FB_ACTIVATE_FORCE%3B%0A%09%09console_lock()%3B%0A%09%09ret%20%3D%20fb_set_var(fbi%2C%20%26amp%3Bfbi-%26gt%3Bvar)%3B%0A%09%09if%20(!ret)%0A%09%09%09fbcon_update_vcs(fbi%2C%20fbi-%26gt%3Bvar.activate%20%26amp%3B%20FB_ACTIVATE_ALL)%3B%0A%09%09console_unlock()%3B%0A%09%09if%20(ret%20%26lt%3B%200)%20%7B%0A%09%09%09dev_err(fbi-%26gt%3Bdevice%2C%20%22Error%20fb_set_var%20ret%3A%25d%5Cn%22%2C%20ret)%3B%0A%09%09%09goto%20err3%3B%0A%09%09%7D%0A%0A%09%09if%20(mxcfbi-%26gt%3Bnext_blank%20%3D%3D%20FB_BLANK_UNBLANK)%20%7B%0A%09%09%09console_lock()%3B%0A%09%09%09ret%20%3D%20fb_blank(fbi%2C%20FB_BLANK_UNBLANK)%3B%0A%09%09%09console_unlock()%3B%0A%09%09%09if%20(ret%20%26lt%3B%200)%20%7B%0A%09%09%09%09dev_err(fbi-%26gt%3Bdevice%2C%0A%09%09%09%09%09%22Error%20fb_blank%20ret%3A%25d%5Cn%22%2C%20ret)%3B%0A%09%09%09%09goto%20err4%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%20else%20%7B%0A%09%09%2F*%0A%09%09%20*%20Setup%20the%20channel%20again%20though%20bootloader%0A%09%09%20*%20has%20done%20this%2C%20then%20set_par()%20can%20stop%20the%0A%09%09%20*%20channel%20neatly%20and%20re-initialize%20it%20.%0A%09%09%20*%2F%0A%09%09if%20(mxcfbi-%26gt%3Bnext_blank%20%3D%3D%20FB_BLANK_UNBLANK)%20%7B%0A%09%09%09console_lock()%3B%0A%09%09%09_setup_disp_channel1(fbi)%3B%0A%09%09%09ipu_enable_channel(mxcfbi-%26gt%3Bipu%2C%20mxcfbi-%26gt%3Bipu_ch)%3B%0A%09%09%09console_unlock()%3B%0A%09%09%7D%0A%09%7D%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3ESO%E3%80%81%20%3CSTRONG%3Emxc_ipuv3_fb.c%3C%2FSTRONG%3E%E3%81%AB%E9%96%A2%E6%95%B0%E3%82%92%E4%BD%9C%E6%88%90%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82late_init%20%E3%81%8C%201%20%E3%81%AE%E3%81%A8%E3%81%8D%E3%81%AB%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84%E3%82%B9%E3%83%86%E3%83%BC%E3%83%88%E3%83%A1%E3%83%B3%E3%83%88%E3%81%AE%20if%20%E9%83%A8%E5%88%86%E3%81%AB%E5%9F%BA%E3%81%A5%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3Eint%20mxcfb_reinit(struct%20fb_info%20*fbi)%0A%7B%0A%09struct%20mxcfb_info%20*mxcfbi%20%3D%20(struct%20mxcfb_info%20*)fbi-%26gt%3Bpar%3B%0A%09int%20ret%20%3D%200%3B%0A%09%0A%09if%20(!fbi%20%7C%7C%20!mxcfbi)%0A%09%09return%20-EINVAL%3B%0A%0A%09fbi-%26gt%3Bvar.activate%20%7C%3D%20FB_ACTIVATE_FORCE%3B%0A%0A%09%2F%2F%20console_lock()%3B%0A%09ret%20%3D%20fb_set_var(fbi%2C%20%26amp%3Bfbi-%26gt%3Bvar)%3B%0A%09if%20(!ret)%0A%09%09fbcon_update_vcs(fbi%2C%20fbi-%26gt%3Bvar.activate%20%26amp%3B%20FB_ACTIVATE_ALL)%3B%0A%09%2F%2F%20console_unlock()%3B%0A%0A%09if%20(ret%20%26lt%3B%200)%0A%09%09return%20ret%3B%0A%0A%09%2F%2F%20console_lock()%3B%0A%09ret%20%3D%20fb_blank(fbi%2C%20FB_BLANK_UNBLANK)%3B%0A%09%2F%2Fconsole_unlock()%3B%0A%0A%09return%200%3B%0A%7D%0AEXPORT_SYMBOL(mxcfb_reinit)%3B%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%E3%81%BE%E3%81%9F%E3%80%81%E3%81%93%E3%82%8C%E3%82%92%20mxcfb_ioctl%20%E3%81%AB%E8%BF%BD%E5%8A%A0%E3%81%97%E3%81%9F%E3%81%AE%E3%81%A7%E3%80%81%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E7%A9%BA%E9%96%93%E3%81%8B%E3%82%89%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81%E9%96%A2%E6%95%B0%E3%81%8C%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%95%E3%82%8C%E3%81%9F%E3%81%A8%E3%81%8D%E3%81%AB%E3%83%87%E3%83%83%E3%83%89%E3%83%AD%E3%83%83%E3%82%AF%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E8%AD%A6%E5%91%8A%E3%81%8C%E5%A4%9A%E6%95%B0%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%80%81%E5%AE%9F%E9%9A%9B%E3%81%AB%E3%83%87%E3%83%83%E3%83%89%E3%83%AD%E3%83%83%E3%82%AF%E3%81%8C%E7%99%BA%E7%94%9F%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%82%82%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%E3%81%93%E3%82%8C%E3%81%AF%E6%87%B8%E5%BF%B5%E3%81%99%E3%81%B9%E3%81%8D%E3%81%93%E3%81%A8%E3%81%A7%E3%81%99%E3%81%8C%E3%80%81%E5%B0%91%E3%81%AA%E3%81%8F%E3%81%A8%E3%82%82%E3%83%87%E3%82%A3%E3%82%B9%E3%83%97%E3%83%AC%E3%82%A4%E3%81%AF%E6%9B%B4%E6%96%B0%E3%81%95%E3%82%8C%E3%80%81psplash%20%E3%82%92%E6%98%8E%E7%A4%BA%E7%9A%84%E3%81%AB%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99%E3%81%A8%E3%80%81%E3%83%87%E3%82%A3%E3%82%B9%E3%83%97%E3%83%AC%E3%82%A4%E3%81%AF%20psplash%20%E3%82%A4%E3%83%A1%E3%83%BC%E3%82%B8%E3%81%A7%E6%9B%B4%E6%96%B0%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81%E9%80%B2%E8%A1%8C%E7%8A%B6%E6%B3%81%E3%83%90%E3%83%BC%E3%81%AF%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%E3%81%93%E3%82%8C%E3%81%AF%E5%88%A5%E3%81%AE%E5%95%8F%E9%A1%8C%E3%81%A7%E3%81%82%E3%82%8B%E5%8F%AF%E8%83%BD%E6%80%A7%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%E3%81%93%E3%82%8C%E3%81%AF%E8%A7%A3%E6%B1%BA%E7%AD%96%E3%81%AB%E3%81%AA%E3%82%8B%E3%81%8B%E3%82%82%E3%81%97%E3%82%8C%E3%81%BE%E3%81%9B%E3%82%93%E3%81%8C%E3%80%81%E3%82%82%E3%81%A3%E3%81%A8%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%81%AA%E8%A7%A3%E6%B1%BA%E7%AD%96%E3%81%8C%E3%81%82%E3%82%8C%E3%81%B0%E5%AC%89%E3%81%97%E3%81%84%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2138485%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20mxcfb%20late_init%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2138485%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E3%80%81%3C%2FP%3E%0A%3CP%3E%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%20%E3%83%84%E3%83%AA%E3%83%BC%E3%81%AB%E5%95%8F%E9%A1%8C%E3%81%AF%E8%A6%8B%E5%BD%93%E3%81%9F%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%E3%81%8C%E3%80%81%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%20%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%83%BC%E3%81%8C%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B%E5%89%8D%E3%81%AB%20IPU%20%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%AA%E3%81%AE%E3%81%8B%E3%82%82%E3%81%97%E3%82%8C%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%3C%2FP%3E%0A%3CP%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E