notro / fbtft

Linux Framebuffer drivers for small TFT LCD display modules. Development has moved to https://git.kernel.org/cgit/linux/kernel/git/gregkh/staging.git/tree/drivers/staging/fbtft?h=staging-testing
1.86k stars 494 forks source link

Flexfb for NT35310 and spi circuit #75

Closed mwilliams03 closed 10 years ago

mwilliams03 commented 10 years ago

Hi Notro I am trying to get this display working with flexfb; http://www.wayengineer.com/index.php?main_page=product_info&products_id=5475 It uses NT35310.

I have all the init registers and the init sequence and I am able to get the display initialized using my own SPI code. However, I would like to use it with fbtft, and use your spi circuit. When using flexb, how do you specify that you want to use the spi circuit?

notro commented 10 years ago

The speed= argument makes it a SPI device See: https://github.com/notro/fbtft/wiki/fbtft_device#wiki-custom-display

modprobe fbtft_device custom name=flexfb width=XX height=XX buswidth=XX speed=XX gpios=XX init=XX
notro commented 10 years ago

I'm sorry, but that was wrong, flexfb is a special case. This is hopefully more correct:

modprobe flexfb width=XX height=XX buswidth=XX regwidth=XX init=XX
modprobe fbtft_device name=flexfb [speed=] [gpios=]

fbtft_device flexfb defaults: https://github.com/notro/fbtft/blob/master/fbtft_device.c#L259

mwilliams03 commented 10 years ago

Thanks, Notro. With the two lines below, I am able to get some information on screen. I can even see the cursor flashing.... however it isnt correct. Image below I'm not sure if the issue is my init sequence, or the parameters i am using for fbtft. Any assistance would be appreciated.

sudo modprobe flexfb  width=480 height=320 regwidth=16 init=-1,0x11,-2,250,-1,0X20,-1,0X38,-1,0X13,-1,0X29,-3
sudo modprobe fbtft_device debug=3 name=flexfb speed=16000000 gpios=reset:25,dc:24

tftalieantek

BTW, what is regwidth used for?

notro commented 10 years ago

I have seen that before when I tried to discover the right register values to do rotation on a display I have. I guess it's an initialization problem. Your init sequence is the shortest I have ever seen. Where did you get it?

From product page

the drive IC: RM68042.

Looking at the datasheet, this is what you're init sequence does: 1,0x11, - Exit_sleep_mode -2,250, - Sleep -1,0X20, - Exit_invert_mode -1,0X38, - Exit_idle_mode -1,0X13, - Enter_normal_mode -1,0X29, - Set_display_on -3

No setup of power supply, size of panel etc.

BTW, what is regwidth used for?

This is the bit-width of the register in the LCD controller that we are writing to. it is 8-bit on RM68042

From datasheet

The RM68041 incorporates command method 18-/16-/9-/8-bits bus display command interface, which consists of 8 bits command registers and 8 bits parameter registers. Parameter registers consist of 8 bits write data register (WDR) and 8bit read data register (RDR).

notro commented 10 years ago

Closing issue since there has been no activity for more than 2 months. Reopen if needed.