mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-05 01:54:09 +08:00
4793f2ebff
Now that the SPDX tag is in all tty files, that identifies the license in a specific and legally-defined manner. So the extra GPL text wording can be removed as it is no longer needed at all. This is done on a quest to remove the 700+ different ways that files in the kernel describe the GPL license text. And there's unneeded stuff like the address (sometimes incorrect) for the FSF which is never needed. No copyright headers or other non-license-description text was removed. Cc: Jiri Slaby <jslaby@suse.com> Cc: Eric Anholt <eric@anholt.net> Cc: Stefan Wahren <stefan.wahren@i2se.com> Cc: Florian Fainelli <f.fainelli@gmail.com> Cc: Ray Jui <rjui@broadcom.com> Cc: Scott Branden <sbranden@broadcom.com> Cc: bcm-kernel-feedback-list@broadcom.com Cc: "James E.J. Bottomley" <jejb@parisc-linux.org> Cc: Helge Deller <deller@gmx.de> Cc: Joachim Eastwood <manabian@gmail.com> Cc: Matthias Brugger <matthias.bgg@gmail.com> Cc: Masahiro Yamada <yamada.masahiro@socionext.com> Cc: Tobias Klauser <tklauser@distanz.ch> Cc: Russell King <linux@armlinux.org.uk> Cc: Vineet Gupta <vgupta@synopsys.com> Cc: Richard Genoud <richard.genoud@gmail.com> Cc: Alexander Shiyan <shc_work@mail.ru> Cc: Baruch Siach <baruch@tkos.co.il> Cc: Pat Gefre <pfg@sgi.com> Cc: "Guilherme G. Piccoli" <gpiccoli@linux.vnet.ibm.com> Cc: Jason Wessel <jason.wessel@windriver.com> Cc: Vladimir Zapolskiy <vz@mleia.com> Cc: Sylvain Lemieux <slemieux.tyco@gmail.com> Cc: Carlo Caione <carlo@caione.org> Cc: Kevin Hilman <khilman@baylibre.com> Cc: Liviu Dudau <liviu.dudau@arm.com> Cc: Sudeep Holla <sudeep.holla@arm.com> Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Cc: Andy Gross <andy.gross@linaro.org> Cc: David Brown <david.brown@linaro.org> Cc: "Andreas Färber" <afaerber@suse.de> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Kevin Cernekee <cernekee@gmail.com> Cc: Laxman Dewangan <ldewangan@nvidia.com> Cc: Thierry Reding <thierry.reding@gmail.com> Cc: Jonathan Hunter <jonathanh@nvidia.com> Cc: Barry Song <baohua@kernel.org> Cc: Patrice Chotard <patrice.chotard@st.com> Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com> Cc: Alexandre Torgue <alexandre.torgue@st.com> Cc: Chris Metcalf <cmetcalf@mellanox.com> Cc: Peter Korsgaard <jacmet@sunsite.dk> Cc: Timur Tabi <timur@tabi.org> Cc: Tony Prisk <linux@prisktech.co.nz> Cc: Michal Simek <michal.simek@xilinx.com> Cc: "Sören Brinkmann" <soren.brinkmann@xilinx.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
148 lines
3.2 KiB
C
148 lines
3.2 KiB
C
// SPDX-License-Identifier: GPL-2.0
|
|
#ifndef __SAMSUNG_H
|
|
#define __SAMSUNG_H
|
|
|
|
/*
|
|
* Driver for Samsung SoC onboard UARTs.
|
|
*
|
|
* Ben Dooks, Copyright (c) 2003-2008 Simtec Electronics
|
|
* http://armlinux.simtec.co.uk/
|
|
*/
|
|
|
|
#include <linux/dmaengine.h>
|
|
|
|
struct s3c24xx_uart_info {
|
|
char *name;
|
|
unsigned int type;
|
|
unsigned int fifosize;
|
|
unsigned long rx_fifomask;
|
|
unsigned long rx_fifoshift;
|
|
unsigned long rx_fifofull;
|
|
unsigned long tx_fifomask;
|
|
unsigned long tx_fifoshift;
|
|
unsigned long tx_fifofull;
|
|
unsigned int def_clk_sel;
|
|
unsigned long num_clks;
|
|
unsigned long clksel_mask;
|
|
unsigned long clksel_shift;
|
|
|
|
/* uart port features */
|
|
|
|
unsigned int has_divslot:1;
|
|
|
|
/* uart controls */
|
|
int (*reset_port)(struct uart_port *, struct s3c2410_uartcfg *);
|
|
};
|
|
|
|
struct s3c24xx_serial_drv_data {
|
|
struct s3c24xx_uart_info *info;
|
|
struct s3c2410_uartcfg *def_cfg;
|
|
unsigned int fifosize[CONFIG_SERIAL_SAMSUNG_UARTS];
|
|
};
|
|
|
|
struct s3c24xx_uart_dma {
|
|
unsigned int rx_chan_id;
|
|
unsigned int tx_chan_id;
|
|
|
|
struct dma_slave_config rx_conf;
|
|
struct dma_slave_config tx_conf;
|
|
|
|
struct dma_chan *rx_chan;
|
|
struct dma_chan *tx_chan;
|
|
|
|
dma_addr_t rx_addr;
|
|
dma_addr_t tx_addr;
|
|
|
|
dma_cookie_t rx_cookie;
|
|
dma_cookie_t tx_cookie;
|
|
|
|
char *rx_buf;
|
|
|
|
dma_addr_t tx_transfer_addr;
|
|
|
|
size_t rx_size;
|
|
size_t tx_size;
|
|
|
|
struct dma_async_tx_descriptor *tx_desc;
|
|
struct dma_async_tx_descriptor *rx_desc;
|
|
|
|
int tx_bytes_requested;
|
|
int rx_bytes_requested;
|
|
};
|
|
|
|
struct s3c24xx_uart_port {
|
|
unsigned char rx_claimed;
|
|
unsigned char tx_claimed;
|
|
unsigned int pm_level;
|
|
unsigned long baudclk_rate;
|
|
unsigned int min_dma_size;
|
|
|
|
unsigned int rx_irq;
|
|
unsigned int tx_irq;
|
|
|
|
unsigned int tx_in_progress;
|
|
unsigned int tx_mode;
|
|
unsigned int rx_mode;
|
|
|
|
struct s3c24xx_uart_info *info;
|
|
struct clk *clk;
|
|
struct clk *baudclk;
|
|
struct uart_port port;
|
|
struct s3c24xx_serial_drv_data *drv_data;
|
|
|
|
/* reference to platform data */
|
|
struct s3c2410_uartcfg *cfg;
|
|
|
|
struct s3c24xx_uart_dma *dma;
|
|
|
|
#ifdef CONFIG_ARM_S3C24XX_CPUFREQ
|
|
struct notifier_block freq_transition;
|
|
#endif
|
|
};
|
|
|
|
/* conversion functions */
|
|
|
|
#define s3c24xx_dev_to_port(__dev) dev_get_drvdata(__dev)
|
|
|
|
/* register access controls */
|
|
|
|
#define portaddr(port, reg) ((port)->membase + (reg))
|
|
#define portaddrl(port, reg) \
|
|
((unsigned long *)(unsigned long)((port)->membase + (reg)))
|
|
|
|
#define rd_regb(port, reg) (readb_relaxed(portaddr(port, reg)))
|
|
#define rd_regl(port, reg) (readl_relaxed(portaddr(port, reg)))
|
|
|
|
#define wr_regb(port, reg, val) writeb_relaxed(val, portaddr(port, reg))
|
|
#define wr_regl(port, reg, val) writel_relaxed(val, portaddr(port, reg))
|
|
|
|
/* Byte-order aware bit setting/clearing functions. */
|
|
|
|
static inline void s3c24xx_set_bit(struct uart_port *port, int idx,
|
|
unsigned int reg)
|
|
{
|
|
unsigned long flags;
|
|
u32 val;
|
|
|
|
local_irq_save(flags);
|
|
val = rd_regl(port, reg);
|
|
val |= (1 << idx);
|
|
wr_regl(port, reg, val);
|
|
local_irq_restore(flags);
|
|
}
|
|
|
|
static inline void s3c24xx_clear_bit(struct uart_port *port, int idx,
|
|
unsigned int reg)
|
|
{
|
|
unsigned long flags;
|
|
u32 val;
|
|
|
|
local_irq_save(flags);
|
|
val = rd_regl(port, reg);
|
|
val &= ~(1 << idx);
|
|
wr_regl(port, reg, val);
|
|
local_irq_restore(flags);
|
|
}
|
|
|
|
#endif
|