From mboxrd@z Thu Jan 1 00:00:00 1970 From: munisekharrms@gmail.com (Muni Sekhar) Date: Thu, 31 Mar 2016 16:43:09 +0530 Subject: kernel mode termios API's In-Reply-To: <20160330180258.GA25063@kroah.com> References: <20160330180258.GA25063@kroah.com> Message-ID: To: kernelnewbies@lists.kernelnewbies.org List-Id: kernelnewbies.lists.kernelnewbies.org On Wed, Mar 30, 2016 at 11:32 PM, Greg KH wrote: > On Wed, Mar 30, 2016 at 09:23:00PM +0530, Muni Sekhar wrote: >> Hi, >> >> We are having customized serial port driver, it always sets the baud >> to 9600 (by configuring UART BAUD_RATE register) on device file open, >> but not updating the termios structure. > > Please fix your driver. You do have the source for it, so this > shouldn't be a problem, right? > > thanks, > > greg k-h Yes, I am having the source code. It is a tiny TTY driver. It sets the baud rate in three different functions [ tty_operations->open(), tty_operations->set_termios (), tty_operations->ioctl() ] It sets the fixed hard coded baud rate 9600 in tty_operations->open() , in other places sets baud rate as user-space function requested. I don?t know why it uses fixed baud rate in open. If a user-space function queries baud (cfgetospeed() API) after open, it gets the wrong value. Can I update the termios structure before setting the baud rate as mentioned below in tty_operations->open()? tiny_tty_driver->init_termios = tty_std_termios; tiny_tty_driver->init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL; In LINUX DEVICE DRIVERS book, TTY divers chapter says ?When the port is opened for the first time, any needed hardware initialization and memory allocation can be done?, I would like to know what kind of hardware initialization might be needed for the first time? -- Thanks, Sekhar