Merge branch 'omap-for-v3.8/cleanup-headers-prepare-multiplatform-v3' into omap-for-v3.8/dt
Conflicts: arch/arm/plat-omap/dmtimer.c Resolved as suggested by Jon Hunter.
This commit is contained in:
@@ -20,28 +20,28 @@
|
||||
int devpts_new_index(struct inode *ptmx_inode);
|
||||
void devpts_kill_index(struct inode *ptmx_inode, int idx);
|
||||
/* mknod in devpts */
|
||||
int devpts_pty_new(struct inode *ptmx_inode, struct tty_struct *tty);
|
||||
/* get tty structure */
|
||||
struct tty_struct *devpts_get_tty(struct inode *pts_inode, int number);
|
||||
struct inode *devpts_pty_new(struct inode *ptmx_inode, dev_t device, int index,
|
||||
void *priv);
|
||||
/* get private structure */
|
||||
void *devpts_get_priv(struct inode *pts_inode);
|
||||
/* unlink */
|
||||
void devpts_pty_kill(struct tty_struct *tty);
|
||||
void devpts_pty_kill(struct inode *inode);
|
||||
|
||||
#else
|
||||
|
||||
/* Dummy stubs in the no-pty case */
|
||||
static inline int devpts_new_index(struct inode *ptmx_inode) { return -EINVAL; }
|
||||
static inline void devpts_kill_index(struct inode *ptmx_inode, int idx) { }
|
||||
static inline int devpts_pty_new(struct inode *ptmx_inode,
|
||||
struct tty_struct *tty)
|
||||
static inline struct inode *devpts_pty_new(struct inode *ptmx_inode,
|
||||
dev_t device, int index, void *priv)
|
||||
{
|
||||
return -EINVAL;
|
||||
return ERR_PTR(-EINVAL);
|
||||
}
|
||||
static inline struct tty_struct *devpts_get_tty(struct inode *pts_inode,
|
||||
int number)
|
||||
static inline void *devpts_get_priv(struct inode *pts_inode)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
static inline void devpts_pty_kill(struct tty_struct *tty) { }
|
||||
static inline void devpts_pty_kill(struct inode *inode) { }
|
||||
|
||||
#endif
|
||||
|
||||
|
47
include/linux/mfd/menelaus.h
Normal file
47
include/linux/mfd/menelaus.h
Normal file
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Functions to access Menelaus power management chip
|
||||
*/
|
||||
|
||||
#ifndef __ASM_ARCH_MENELAUS_H
|
||||
#define __ASM_ARCH_MENELAUS_H
|
||||
|
||||
struct device;
|
||||
|
||||
struct menelaus_platform_data {
|
||||
int (* late_init)(struct device *dev);
|
||||
};
|
||||
|
||||
extern int menelaus_register_mmc_callback(void (*callback)(void *data, u8 card_mask),
|
||||
void *data);
|
||||
extern void menelaus_unregister_mmc_callback(void);
|
||||
extern int menelaus_set_mmc_opendrain(int slot, int enable);
|
||||
extern int menelaus_set_mmc_slot(int slot, int enable, int power, int cd_on);
|
||||
|
||||
extern int menelaus_set_vmem(unsigned int mV);
|
||||
extern int menelaus_set_vio(unsigned int mV);
|
||||
extern int menelaus_set_vmmc(unsigned int mV);
|
||||
extern int menelaus_set_vaux(unsigned int mV);
|
||||
extern int menelaus_set_vdcdc(int dcdc, unsigned int mV);
|
||||
extern int menelaus_set_slot_sel(int enable);
|
||||
extern int menelaus_get_slot_pin_states(void);
|
||||
extern int menelaus_set_vcore_sw(unsigned int mV);
|
||||
extern int menelaus_set_vcore_hw(unsigned int roof_mV, unsigned int floor_mV);
|
||||
|
||||
#define EN_VPLL_SLEEP (1 << 7)
|
||||
#define EN_VMMC_SLEEP (1 << 6)
|
||||
#define EN_VAUX_SLEEP (1 << 5)
|
||||
#define EN_VIO_SLEEP (1 << 4)
|
||||
#define EN_VMEM_SLEEP (1 << 3)
|
||||
#define EN_DC3_SLEEP (1 << 2)
|
||||
#define EN_DC2_SLEEP (1 << 1)
|
||||
#define EN_VC_SLEEP (1 << 0)
|
||||
|
||||
extern int menelaus_set_regulator_sleep(int enable, u32 val);
|
||||
|
||||
#if defined(CONFIG_ARCH_OMAP2) && defined(CONFIG_MENELAUS)
|
||||
#define omap_has_menelaus() 1
|
||||
#else
|
||||
#define omap_has_menelaus() 0
|
||||
#endif
|
||||
|
||||
#endif
|
@@ -26,7 +26,6 @@
|
||||
|
||||
#include <linux/io.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <mach/irqs.h>
|
||||
|
||||
#define OMAP1_MPUIO_BASE 0xfffb5000
|
||||
|
||||
|
22
include/linux/platform_data/leds-omap.h
Normal file
22
include/linux/platform_data/leds-omap.h
Normal file
@@ -0,0 +1,22 @@
|
||||
/*
|
||||
* Copyright (C) 2006 Samsung Electronics
|
||||
* Kyungmin Park <kyungmin.park@samsung.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
#ifndef ASMARM_ARCH_LED_H
|
||||
#define ASMARM_ARCH_LED_H
|
||||
|
||||
struct omap_led_config {
|
||||
struct led_classdev cdev;
|
||||
s16 gpio;
|
||||
};
|
||||
|
||||
struct omap_led_platform_data {
|
||||
s16 nr_leds;
|
||||
struct omap_led_config *leds;
|
||||
};
|
||||
|
||||
#endif
|
150
include/linux/platform_data/mmc-omap.h
Normal file
150
include/linux/platform_data/mmc-omap.h
Normal file
@@ -0,0 +1,150 @@
|
||||
/*
|
||||
* MMC definitions for OMAP2
|
||||
*
|
||||
* Copyright (C) 2006 Nokia Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#define OMAP_MMC_MAX_SLOTS 2
|
||||
|
||||
/*
|
||||
* struct omap_mmc_dev_attr.flags possibilities
|
||||
*
|
||||
* OMAP_HSMMC_SUPPORTS_DUAL_VOLT: Some HSMMC controller instances can
|
||||
* operate with either 1.8Vdc or 3.0Vdc card voltages; this flag
|
||||
* should be set if this is the case. See for example Section 22.5.3
|
||||
* "MMC/SD/SDIO1 Bus Voltage Selection" of the OMAP34xx Multimedia
|
||||
* Device Silicon Revision 3.1.x Revision ZR (July 2011) (SWPU223R).
|
||||
*
|
||||
* OMAP_HSMMC_BROKEN_MULTIBLOCK_READ: Multiple-block read transfers
|
||||
* don't work correctly on some MMC controller instances on some
|
||||
* OMAP3 SoCs; this flag should be set if this is the case. See
|
||||
* for example Advisory 2.1.1.128 "MMC: Multiple Block Read
|
||||
* Operation Issue" in _OMAP3530/3525/3515/3503 Silicon Errata_
|
||||
* Revision F (October 2010) (SPRZ278F).
|
||||
*/
|
||||
#define OMAP_HSMMC_SUPPORTS_DUAL_VOLT BIT(0)
|
||||
#define OMAP_HSMMC_BROKEN_MULTIBLOCK_READ BIT(1)
|
||||
|
||||
struct mmc_card;
|
||||
|
||||
struct omap_mmc_dev_attr {
|
||||
u8 flags;
|
||||
};
|
||||
|
||||
struct omap_mmc_platform_data {
|
||||
/* back-link to device */
|
||||
struct device *dev;
|
||||
|
||||
/* number of slots per controller */
|
||||
unsigned nr_slots:2;
|
||||
|
||||
/* set if your board has components or wiring that limits the
|
||||
* maximum frequency on the MMC bus */
|
||||
unsigned int max_freq;
|
||||
|
||||
/* switch the bus to a new slot */
|
||||
int (*switch_slot)(struct device *dev, int slot);
|
||||
/* initialize board-specific MMC functionality, can be NULL if
|
||||
* not supported */
|
||||
int (*init)(struct device *dev);
|
||||
void (*cleanup)(struct device *dev);
|
||||
void (*shutdown)(struct device *dev);
|
||||
|
||||
/* To handle board related suspend/resume functionality for MMC */
|
||||
int (*suspend)(struct device *dev, int slot);
|
||||
int (*resume)(struct device *dev, int slot);
|
||||
|
||||
/* Return context loss count due to PM states changing */
|
||||
int (*get_context_loss_count)(struct device *dev);
|
||||
|
||||
/* Integrating attributes from the omap_hwmod layer */
|
||||
u8 controller_flags;
|
||||
|
||||
/* Register offset deviation */
|
||||
u16 reg_offset;
|
||||
|
||||
struct omap_mmc_slot_data {
|
||||
|
||||
/*
|
||||
* 4/8 wires and any additional host capabilities
|
||||
* need to OR'd all capabilities (ref. linux/mmc/host.h)
|
||||
*/
|
||||
u8 wires; /* Used for the MMC driver on omap1 and 2420 */
|
||||
u32 caps; /* Used for the MMC driver on 2430 and later */
|
||||
u32 pm_caps; /* PM capabilities of the mmc */
|
||||
|
||||
/*
|
||||
* nomux means "standard" muxing is wrong on this board, and
|
||||
* that board-specific code handled it before common init logic.
|
||||
*/
|
||||
unsigned nomux:1;
|
||||
|
||||
/* switch pin can be for card detect (default) or card cover */
|
||||
unsigned cover:1;
|
||||
|
||||
/* use the internal clock */
|
||||
unsigned internal_clock:1;
|
||||
|
||||
/* nonremovable e.g. eMMC */
|
||||
unsigned nonremovable:1;
|
||||
|
||||
/* Try to sleep or power off when possible */
|
||||
unsigned power_saving:1;
|
||||
|
||||
/* If using power_saving and the MMC power is not to go off */
|
||||
unsigned no_off:1;
|
||||
|
||||
/* eMMC does not handle power off when not in sleep state */
|
||||
unsigned no_regulator_off_init:1;
|
||||
|
||||
/* Regulator off remapped to sleep */
|
||||
unsigned vcc_aux_disable_is_sleep:1;
|
||||
|
||||
/* we can put the features above into this variable */
|
||||
#define HSMMC_HAS_PBIAS (1 << 0)
|
||||
#define HSMMC_HAS_UPDATED_RESET (1 << 1)
|
||||
#define MMC_OMAP7XX (1 << 2)
|
||||
#define MMC_OMAP15XX (1 << 3)
|
||||
#define MMC_OMAP16XX (1 << 4)
|
||||
unsigned features;
|
||||
|
||||
int switch_pin; /* gpio (card detect) */
|
||||
int gpio_wp; /* gpio (write protect) */
|
||||
|
||||
int (*set_bus_mode)(struct device *dev, int slot, int bus_mode);
|
||||
int (*set_power)(struct device *dev, int slot,
|
||||
int power_on, int vdd);
|
||||
int (*get_ro)(struct device *dev, int slot);
|
||||
void (*remux)(struct device *dev, int slot, int power_on);
|
||||
/* Call back before enabling / disabling regulators */
|
||||
void (*before_set_reg)(struct device *dev, int slot,
|
||||
int power_on, int vdd);
|
||||
/* Call back after enabling / disabling regulators */
|
||||
void (*after_set_reg)(struct device *dev, int slot,
|
||||
int power_on, int vdd);
|
||||
/* if we have special card, init it using this callback */
|
||||
void (*init_card)(struct mmc_card *card);
|
||||
|
||||
/* return MMC cover switch state, can be NULL if not supported.
|
||||
*
|
||||
* possible return values:
|
||||
* 0 - closed
|
||||
* 1 - open
|
||||
*/
|
||||
int (*get_cover_state)(struct device *dev, int slot);
|
||||
|
||||
const char *name;
|
||||
u32 ocr_mask;
|
||||
|
||||
/* Card detection IRQs */
|
||||
int card_detect_irq;
|
||||
int (*card_detect)(struct device *dev, int slot);
|
||||
|
||||
unsigned int ban_openended:1;
|
||||
|
||||
} slots[OMAP_MMC_MAX_SLOTS];
|
||||
};
|
@@ -8,9 +8,13 @@
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#include <plat/gpmc.h>
|
||||
#ifndef _MTD_NAND_OMAP2_H
|
||||
#define _MTD_NAND_OMAP2_H
|
||||
|
||||
#include <linux/mtd/partitions.h>
|
||||
|
||||
#define GPMC_BCH_NUM_REMAINDER 8
|
||||
|
||||
enum nand_io {
|
||||
NAND_OMAP_PREFETCH_POLLED = 0, /* prefetch polled mode, default */
|
||||
NAND_OMAP_POLLED, /* polled mode, without prefetch */
|
||||
@@ -18,10 +22,38 @@ enum nand_io {
|
||||
NAND_OMAP_PREFETCH_IRQ /* prefetch enabled irq mode */
|
||||
};
|
||||
|
||||
enum omap_ecc {
|
||||
/* 1-bit ecc: stored at end of spare area */
|
||||
OMAP_ECC_HAMMING_CODE_DEFAULT = 0, /* Default, s/w method */
|
||||
OMAP_ECC_HAMMING_CODE_HW, /* gpmc to detect the error */
|
||||
/* 1-bit ecc: stored at beginning of spare area as romcode */
|
||||
OMAP_ECC_HAMMING_CODE_HW_ROMCODE, /* gpmc method & romcode layout */
|
||||
OMAP_ECC_BCH4_CODE_HW, /* 4-bit BCH ecc code */
|
||||
OMAP_ECC_BCH8_CODE_HW, /* 8-bit BCH ecc code */
|
||||
};
|
||||
|
||||
struct gpmc_nand_regs {
|
||||
void __iomem *gpmc_status;
|
||||
void __iomem *gpmc_nand_command;
|
||||
void __iomem *gpmc_nand_address;
|
||||
void __iomem *gpmc_nand_data;
|
||||
void __iomem *gpmc_prefetch_config1;
|
||||
void __iomem *gpmc_prefetch_config2;
|
||||
void __iomem *gpmc_prefetch_control;
|
||||
void __iomem *gpmc_prefetch_status;
|
||||
void __iomem *gpmc_ecc_config;
|
||||
void __iomem *gpmc_ecc_control;
|
||||
void __iomem *gpmc_ecc_size_config;
|
||||
void __iomem *gpmc_ecc1_result;
|
||||
void __iomem *gpmc_bch_result0[GPMC_BCH_NUM_REMAINDER];
|
||||
void __iomem *gpmc_bch_result1[GPMC_BCH_NUM_REMAINDER];
|
||||
void __iomem *gpmc_bch_result2[GPMC_BCH_NUM_REMAINDER];
|
||||
void __iomem *gpmc_bch_result3[GPMC_BCH_NUM_REMAINDER];
|
||||
};
|
||||
|
||||
struct omap_nand_platform_data {
|
||||
int cs;
|
||||
struct mtd_partition *parts;
|
||||
struct gpmc_timings *gpmc_t;
|
||||
int nr_parts;
|
||||
bool dev_ready;
|
||||
enum nand_io xfer_type;
|
||||
@@ -30,14 +62,4 @@ struct omap_nand_platform_data {
|
||||
struct gpmc_nand_regs reg;
|
||||
};
|
||||
|
||||
/* minimum size for IO mapping */
|
||||
#define NAND_IO_SIZE 4
|
||||
|
||||
#if defined(CONFIG_MTD_NAND_OMAP2) || defined(CONFIG_MTD_NAND_OMAP2_MODULE)
|
||||
extern int gpmc_nand_init(struct omap_nand_platform_data *d);
|
||||
#else
|
||||
static inline int gpmc_nand_init(struct omap_nand_platform_data *d)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
@@ -9,17 +9,15 @@
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#ifndef __MTD_ONENAND_OMAP2_H
|
||||
#define __MTD_ONENAND_OMAP2_H
|
||||
|
||||
#include <linux/mtd/mtd.h>
|
||||
#include <linux/mtd/partitions.h>
|
||||
|
||||
#define ONENAND_SYNC_READ (1 << 0)
|
||||
#define ONENAND_SYNC_READWRITE (1 << 1)
|
||||
|
||||
struct onenand_freq_info {
|
||||
u16 maf_id;
|
||||
u16 dev_id;
|
||||
u16 ver_id;
|
||||
};
|
||||
#define ONENAND_IN_OMAP34XX (1 << 2)
|
||||
|
||||
struct omap_onenand_platform_data {
|
||||
int cs;
|
||||
@@ -27,27 +25,9 @@ struct omap_onenand_platform_data {
|
||||
struct mtd_partition *parts;
|
||||
int nr_parts;
|
||||
int (*onenand_setup)(void __iomem *, int *freq_ptr);
|
||||
int (*get_freq)(const struct onenand_freq_info *freq_info,
|
||||
bool *clk_dep);
|
||||
int dma_channel;
|
||||
u8 flags;
|
||||
u8 regulator_can_sleep;
|
||||
u8 skip_initial_unlocking;
|
||||
};
|
||||
|
||||
#define ONENAND_MAX_PARTITIONS 8
|
||||
|
||||
#if defined(CONFIG_MTD_ONENAND_OMAP2) || \
|
||||
defined(CONFIG_MTD_ONENAND_OMAP2_MODULE)
|
||||
|
||||
extern void gpmc_onenand_init(struct omap_onenand_platform_data *d);
|
||||
|
||||
#else
|
||||
|
||||
#define board_onenand_data NULL
|
||||
|
||||
static inline void gpmc_onenand_init(struct omap_onenand_platform_data *d)
|
||||
{
|
||||
}
|
||||
|
||||
#endif
|
||||
|
80
include/linux/platform_data/usb-omap.h
Normal file
80
include/linux/platform_data/usb-omap.h
Normal file
@@ -0,0 +1,80 @@
|
||||
/*
|
||||
* usb-omap.h - Platform data for the various OMAP USB IPs
|
||||
*
|
||||
* Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com
|
||||
*
|
||||
* This software is distributed under the terms of the GNU General Public
|
||||
* License ("GPL") version 2, as published by the Free Software Foundation.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#define OMAP3_HS_USB_PORTS 3
|
||||
|
||||
enum usbhs_omap_port_mode {
|
||||
OMAP_USBHS_PORT_MODE_UNUSED,
|
||||
OMAP_EHCI_PORT_MODE_PHY,
|
||||
OMAP_EHCI_PORT_MODE_TLL,
|
||||
OMAP_EHCI_PORT_MODE_HSIC,
|
||||
OMAP_OHCI_PORT_MODE_PHY_6PIN_DATSE0,
|
||||
OMAP_OHCI_PORT_MODE_PHY_6PIN_DPDM,
|
||||
OMAP_OHCI_PORT_MODE_PHY_3PIN_DATSE0,
|
||||
OMAP_OHCI_PORT_MODE_PHY_4PIN_DPDM,
|
||||
OMAP_OHCI_PORT_MODE_TLL_6PIN_DATSE0,
|
||||
OMAP_OHCI_PORT_MODE_TLL_6PIN_DPDM,
|
||||
OMAP_OHCI_PORT_MODE_TLL_3PIN_DATSE0,
|
||||
OMAP_OHCI_PORT_MODE_TLL_4PIN_DPDM,
|
||||
OMAP_OHCI_PORT_MODE_TLL_2PIN_DATSE0,
|
||||
OMAP_OHCI_PORT_MODE_TLL_2PIN_DPDM
|
||||
};
|
||||
|
||||
struct usbtll_omap_platform_data {
|
||||
enum usbhs_omap_port_mode port_mode[OMAP3_HS_USB_PORTS];
|
||||
};
|
||||
|
||||
struct ehci_hcd_omap_platform_data {
|
||||
enum usbhs_omap_port_mode port_mode[OMAP3_HS_USB_PORTS];
|
||||
int reset_gpio_port[OMAP3_HS_USB_PORTS];
|
||||
struct regulator *regulator[OMAP3_HS_USB_PORTS];
|
||||
unsigned phy_reset:1;
|
||||
};
|
||||
|
||||
struct ohci_hcd_omap_platform_data {
|
||||
enum usbhs_omap_port_mode port_mode[OMAP3_HS_USB_PORTS];
|
||||
unsigned es2_compatibility:1;
|
||||
};
|
||||
|
||||
struct usbhs_omap_platform_data {
|
||||
enum usbhs_omap_port_mode port_mode[OMAP3_HS_USB_PORTS];
|
||||
|
||||
struct ehci_hcd_omap_platform_data *ehci_data;
|
||||
struct ohci_hcd_omap_platform_data *ohci_data;
|
||||
};
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
struct omap_musb_board_data {
|
||||
u8 interface_type;
|
||||
u8 mode;
|
||||
u16 power;
|
||||
unsigned extvbus:1;
|
||||
void (*set_phy_power)(u8 on);
|
||||
void (*clear_irq)(void);
|
||||
void (*set_mode)(u8 mode);
|
||||
void (*reset)(void);
|
||||
};
|
||||
|
||||
enum musb_interface {
|
||||
MUSB_INTERFACE_ULPI,
|
||||
MUSB_INTERFACE_UTMI
|
||||
};
|
@@ -188,7 +188,9 @@ struct tty_port_operations {
|
||||
};
|
||||
|
||||
struct tty_port {
|
||||
struct tty_bufhead buf; /* Locked internally */
|
||||
struct tty_struct *tty; /* Back pointer */
|
||||
struct tty_struct *itty; /* internal back ptr */
|
||||
const struct tty_port_operations *ops; /* Port operations */
|
||||
spinlock_t lock; /* Lock protecting tty field */
|
||||
int blocked_open; /* Waiting to open */
|
||||
@@ -197,6 +199,9 @@ struct tty_port {
|
||||
wait_queue_head_t close_wait; /* Close waiters */
|
||||
wait_queue_head_t delta_msr_wait; /* Modem status change */
|
||||
unsigned long flags; /* TTY flags ASY_*/
|
||||
unsigned long iflags; /* TTYP_ internal flags */
|
||||
#define TTYP_FLUSHING 1 /* Flushing to ldisc in progress */
|
||||
#define TTYP_FLUSHPENDING 2 /* Queued buffer flush pending */
|
||||
unsigned char console:1; /* port is a console */
|
||||
struct mutex mutex; /* Locking */
|
||||
struct mutex buf_mutex; /* Buffer alloc lock */
|
||||
@@ -235,6 +240,7 @@ struct tty_struct {
|
||||
struct mutex ldisc_mutex;
|
||||
struct tty_ldisc *ldisc;
|
||||
|
||||
struct mutex atomic_write_lock;
|
||||
struct mutex legacy_mutex;
|
||||
struct mutex termios_mutex;
|
||||
spinlock_t ctrl_lock;
|
||||
@@ -254,7 +260,6 @@ struct tty_struct {
|
||||
|
||||
struct tty_struct *link;
|
||||
struct fasync_struct *fasync;
|
||||
struct tty_bufhead buf; /* Locked internally */
|
||||
int alt_speed; /* For magic substitution of 38400 bps */
|
||||
wait_queue_head_t write_wait;
|
||||
wait_queue_head_t read_wait;
|
||||
@@ -265,37 +270,10 @@ struct tty_struct {
|
||||
|
||||
#define N_TTY_BUF_SIZE 4096
|
||||
|
||||
/*
|
||||
* The following is data for the N_TTY line discipline. For
|
||||
* historical reasons, this is included in the tty structure.
|
||||
* Mostly locked by the BKL.
|
||||
*/
|
||||
unsigned int column;
|
||||
unsigned char lnext:1, erasing:1, raw:1, real_raw:1, icanon:1;
|
||||
unsigned char closing:1;
|
||||
unsigned char echo_overrun:1;
|
||||
unsigned short minimum_to_wake;
|
||||
unsigned long overrun_time;
|
||||
int num_overrun;
|
||||
unsigned long process_char_map[256/(8*sizeof(unsigned long))];
|
||||
char *read_buf;
|
||||
int read_head;
|
||||
int read_tail;
|
||||
int read_cnt;
|
||||
unsigned long read_flags[N_TTY_BUF_SIZE/(8*sizeof(unsigned long))];
|
||||
unsigned char *echo_buf;
|
||||
unsigned int echo_pos;
|
||||
unsigned int echo_cnt;
|
||||
int canon_data;
|
||||
unsigned long canon_head;
|
||||
unsigned int canon_column;
|
||||
struct mutex atomic_read_lock;
|
||||
struct mutex atomic_write_lock;
|
||||
struct mutex output_lock;
|
||||
struct mutex echo_lock;
|
||||
unsigned char *write_buf;
|
||||
int write_cnt;
|
||||
spinlock_t read_lock;
|
||||
/* If the tty has a pending do_SAK, queue it here - akpm */
|
||||
struct work_struct SAK_work;
|
||||
struct tty_port *port;
|
||||
@@ -335,8 +313,6 @@ struct tty_file_private {
|
||||
#define TTY_PTY_LOCK 16 /* pty private */
|
||||
#define TTY_NO_WRITE_SPLIT 17 /* Preserve write boundaries to driver */
|
||||
#define TTY_HUPPED 18 /* Post driver->hangup() */
|
||||
#define TTY_FLUSHING 19 /* Flushing to ldisc in progress */
|
||||
#define TTY_FLUSHPENDING 20 /* Queued buffer flush pending */
|
||||
#define TTY_HUPPING 21 /* ->hangup() in progress */
|
||||
|
||||
#define TTY_WRITE_FLUSH(tty) tty_write_flush((tty))
|
||||
@@ -412,9 +388,9 @@ extern void disassociate_ctty(int priv);
|
||||
extern void no_tty(void);
|
||||
extern void tty_flip_buffer_push(struct tty_struct *tty);
|
||||
extern void tty_flush_to_ldisc(struct tty_struct *tty);
|
||||
extern void tty_buffer_free_all(struct tty_struct *tty);
|
||||
extern void tty_buffer_free_all(struct tty_port *port);
|
||||
extern void tty_buffer_flush(struct tty_struct *tty);
|
||||
extern void tty_buffer_init(struct tty_struct *tty);
|
||||
extern void tty_buffer_init(struct tty_port *port);
|
||||
extern speed_t tty_get_baud_rate(struct tty_struct *tty);
|
||||
extern speed_t tty_termios_baud_rate(struct ktermios *termios);
|
||||
extern speed_t tty_termios_input_baud_rate(struct ktermios *termios);
|
||||
@@ -535,7 +511,7 @@ extern void n_tty_inherit_ops(struct tty_ldisc_ops *ops);
|
||||
/* tty_audit.c */
|
||||
#ifdef CONFIG_AUDIT
|
||||
extern void tty_audit_add_data(struct tty_struct *tty, unsigned char *data,
|
||||
size_t size);
|
||||
size_t size, unsigned icanon);
|
||||
extern void tty_audit_exit(void);
|
||||
extern void tty_audit_fork(struct signal_struct *sig);
|
||||
extern void tty_audit_tiocsti(struct tty_struct *tty, char ch);
|
||||
@@ -544,7 +520,7 @@ extern int tty_audit_push_task(struct task_struct *tsk,
|
||||
kuid_t loginuid, u32 sessionid);
|
||||
#else
|
||||
static inline void tty_audit_add_data(struct tty_struct *tty,
|
||||
unsigned char *data, size_t size)
|
||||
unsigned char *data, size_t size, unsigned icanon)
|
||||
{
|
||||
}
|
||||
static inline void tty_audit_tiocsti(struct tty_struct *tty, char ch)
|
||||
|
@@ -11,7 +11,7 @@ void tty_schedule_flip(struct tty_struct *tty);
|
||||
static inline int tty_insert_flip_char(struct tty_struct *tty,
|
||||
unsigned char ch, char flag)
|
||||
{
|
||||
struct tty_buffer *tb = tty->buf.tail;
|
||||
struct tty_buffer *tb = tty->port->buf.tail;
|
||||
if (tb && tb->used < tb->size) {
|
||||
tb->flag_buf_ptr[tb->used] = flag;
|
||||
tb->char_buf_ptr[tb->used++] = ch;
|
||||
|
Reference in New Issue
Block a user