Skip to content

Commit

Permalink
Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel…
Browse files Browse the repository at this point in the history
…/git/mchehab/linux-2.6

* 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6: (38 commits)
  V4L/DVB (12441): siano: read buffer overflow
  V4L/DVB (12440): Use kzalloc for frontend states to have struct dvb_frontend properly
  V4L/DVB (12438): Read buffer overflow
  V4L/DVB (12437): dvb: siano uses/depends on INPUT
  V4L/DVB (12436): stk-webcam: read buffer overflow
  V4L/DVB (12432): em28xx: fix regression in Empire DualTV digital tuning
  V4L/DVB (12429): v4l2-ioctl: fix G_STD and G_PARM default handlers
  V4L/DVB (12428): hdpvr: add missing initialization of current_norm
  V4L/DVB (12424): soc-camera: fix recursive locking in .buf_queue()
  V4L/DVB (12422): media/zr364xx: fix build errors
  V4L/DVB (12405): em28xx-cards: move register 0x13 setting to the proper place
  V4L/DVB (12411): em28xx: Fix artifacts with Silvercrest webcam
  V4L/DVB (12410): em28xx: Move the non-board dependent part to be outside em28xx_pre_card_setup()
  V4L/DVB (12407): em28xx: Adjust Silvercrest xtal frequency
  V4L/DVB (12406): em28xx: fix: don't do image interlacing on webcams
  V4L/DVB (12403): em28xx: properly reports some em2710 chips
  V4L/DVB (12402): em28xx: fix: some em2710 chips use a different vendor ID
  V4L/DVB (12401): m9v011: add vflip/hflip controls to control mirror/upside down
  V4L/DVB (12400): em28xx: Allow changing fps on webcams
  V4L/DVB (12399): mt9v011: Add support for controlling frame rates
  ...
  • Loading branch information
Linus Torvalds committed Aug 14, 2009
2 parents 64f1607 + 08b3964 commit 3011c7f
Show file tree
Hide file tree
Showing 64 changed files with 478 additions and 306 deletions.
2 changes: 1 addition & 1 deletion Documentation/video4linux/CARDLIST.em28xx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
0 -> Unknown EM2800 video grabber (em2800) [eb1a:2800]
1 -> Unknown EM2750/28xx video grabber (em2820/em2840) [eb1a:2820,eb1a:2821,eb1a:2860,eb1a:2861,eb1a:2870,eb1a:2881,eb1a:2883]
1 -> Unknown EM2750/28xx video grabber (em2820/em2840) [eb1a:2710,eb1a:2820,eb1a:2821,eb1a:2860,eb1a:2861,eb1a:2870,eb1a:2881,eb1a:2883]
2 -> Terratec Cinergy 250 USB (em2820/em2840) [0ccd:0036]
3 -> Pinnacle PCTV USB 2 (em2820/em2840) [2304:0208]
4 -> Hauppauge WinTV USB 2 (em2820/em2840) [2040:4200,2040:4201]
Expand Down
4 changes: 2 additions & 2 deletions Documentation/video4linux/CARDLIST.saa7134
Original file line number Diff line number Diff line change
Expand Up @@ -153,8 +153,8 @@
152 -> Asus Tiger Rev:1.00 [1043:4857]
153 -> Kworld Plus TV Analog Lite PCI [17de:7128]
154 -> Avermedia AVerTV GO 007 FM Plus [1461:f31d]
155 -> Hauppauge WinTV-HVR1120 ATSC/QAM-Hybrid [0070:6706,0070:6708]
156 -> Hauppauge WinTV-HVR1110r3 DVB-T/Hybrid [0070:6707,0070:6709,0070:670a]
155 -> Hauppauge WinTV-HVR1150 ATSC/QAM-Hybrid [0070:6706,0070:6708]
156 -> Hauppauge WinTV-HVR1120 DVB-T/Hybrid [0070:6707,0070:6709,0070:670a]
157 -> Avermedia AVerTV Studio 507UA [1461:a11b]
158 -> AVerMedia Cardbus TV/Radio (E501R) [1461:b7e9]
159 -> Beholder BeholdTV 505 RDS [0000:505B]
Expand Down
8 changes: 8 additions & 0 deletions MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -2238,6 +2238,14 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
S: Maintained
F: drivers/media/video/gspca/pac207.c

GSPCA SN9C20X SUBDRIVER
P: Brian Johnson
M: brijohn@gmail.com
L: linux-media@vger.kernel.org
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
S: Maintained
F: drivers/media/video/gspca/sn9c20x.c

GSPCA T613 SUBDRIVER
M: Leandro Costantino <lcostantino@gmail.com>
L: linux-media@vger.kernel.org
Expand Down
12 changes: 5 additions & 7 deletions drivers/media/common/tuners/qt1010.c
Original file line number Diff line number Diff line change
Expand Up @@ -64,24 +64,22 @@ static int qt1010_writereg(struct qt1010_priv *priv, u8 reg, u8 val)
/* dump all registers */
static void qt1010_dump_regs(struct qt1010_priv *priv)
{
char buf[52], buf2[4];
u8 reg, val;

for (reg = 0; ; reg++) {
if (reg % 16 == 0) {
if (reg)
printk("%s\n", buf);
sprintf(buf, "%02x: ", reg);
printk(KERN_CONT "\n");
printk(KERN_DEBUG "%02x:", reg);
}
if (qt1010_readreg(priv, reg, &val) == 0)
sprintf(buf2, "%02x ", val);
printk(KERN_CONT " %02x", val);
else
strcpy(buf2, "-- ");
strcat(buf, buf2);
printk(KERN_CONT " --");
if (reg == 0x2f)
break;
}
printk("%s\n", buf);
printk(KERN_CONT "\n");
}

static int qt1010_set_params(struct dvb_frontend *fe,
Expand Down
4 changes: 2 additions & 2 deletions drivers/media/common/tuners/tuner-xc2028.c
Original file line number Diff line number Diff line change
Expand Up @@ -1119,8 +1119,8 @@ static int xc2028_sleep(struct dvb_frontend *fe)
struct xc2028_data *priv = fe->tuner_priv;
int rc = 0;

/* Avoid firmware reload on slow devices */
if (no_poweroff)
/* Avoid firmware reload on slow devices or if PM disabled */
if (no_poweroff || priv->ctrl.disable_power_mgmt)
return 0;

tuner_dbg("Putting xc2028/3028 into poweroff mode.\n");
Expand Down
1 change: 1 addition & 0 deletions drivers/media/common/tuners/tuner-xc2028.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ struct xc2028_ctrl {
unsigned int input1:1;
unsigned int vhfbw7:1;
unsigned int uhfbw8:1;
unsigned int disable_power_mgmt:1;
unsigned int demod;
enum firmware_type type:2;
};
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/dvb/dvb-usb/af9015.c
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,6 @@ static int af9015_rw_udev(struct usb_device *udev, struct req_t *req)

switch (req->cmd) {
case GET_CONFIG:
case BOOT:
case READ_MEMORY:
case RECONNECT_USB:
case GET_IR_CODE:
Expand All @@ -100,6 +99,7 @@ static int af9015_rw_udev(struct usb_device *udev, struct req_t *req)
case WRITE_VIRTUAL_MEMORY:
case COPY_FIRMWARE:
case DOWNLOAD_FIRMWARE:
case BOOT:
break;
default:
err("unknown command:%d", req->cmd);
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/dvb/frontends/cx22700.c
Original file line number Diff line number Diff line change
Expand Up @@ -380,7 +380,7 @@ struct dvb_frontend* cx22700_attach(const struct cx22700_config* config,
struct cx22700_state* state = NULL;

/* allocate memory for the internal state */
state = kmalloc(sizeof(struct cx22700_state), GFP_KERNEL);
state = kzalloc(sizeof(struct cx22700_state), GFP_KERNEL);
if (state == NULL) goto error;

/* setup the state */
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/dvb/frontends/cx22702.c
Original file line number Diff line number Diff line change
Expand Up @@ -580,7 +580,7 @@ struct dvb_frontend *cx22702_attach(const struct cx22702_config *config,
struct cx22702_state *state = NULL;

/* allocate memory for the internal state */
state = kmalloc(sizeof(struct cx22702_state), GFP_KERNEL);
state = kzalloc(sizeof(struct cx22702_state), GFP_KERNEL);
if (state == NULL)
goto error;

Expand Down
2 changes: 1 addition & 1 deletion drivers/media/dvb/frontends/cx24110.c
Original file line number Diff line number Diff line change
Expand Up @@ -598,7 +598,7 @@ struct dvb_frontend* cx24110_attach(const struct cx24110_config* config,
int ret;

/* allocate memory for the internal state */
state = kmalloc(sizeof(struct cx24110_state), GFP_KERNEL);
state = kzalloc(sizeof(struct cx24110_state), GFP_KERNEL);
if (state == NULL) goto error;

/* setup the state */
Expand Down
6 changes: 3 additions & 3 deletions drivers/media/dvb/frontends/dvb_dummy_fe.c
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ struct dvb_frontend* dvb_dummy_fe_ofdm_attach(void)
struct dvb_dummy_fe_state* state = NULL;

/* allocate memory for the internal state */
state = kmalloc(sizeof(struct dvb_dummy_fe_state), GFP_KERNEL);
state = kzalloc(sizeof(struct dvb_dummy_fe_state), GFP_KERNEL);
if (state == NULL) goto error;

/* create dvb_frontend */
Expand All @@ -137,7 +137,7 @@ struct dvb_frontend *dvb_dummy_fe_qpsk_attach(void)
struct dvb_dummy_fe_state* state = NULL;

/* allocate memory for the internal state */
state = kmalloc(sizeof(struct dvb_dummy_fe_state), GFP_KERNEL);
state = kzalloc(sizeof(struct dvb_dummy_fe_state), GFP_KERNEL);
if (state == NULL) goto error;

/* create dvb_frontend */
Expand All @@ -157,7 +157,7 @@ struct dvb_frontend *dvb_dummy_fe_qam_attach(void)
struct dvb_dummy_fe_state* state = NULL;

/* allocate memory for the internal state */
state = kmalloc(sizeof(struct dvb_dummy_fe_state), GFP_KERNEL);
state = kzalloc(sizeof(struct dvb_dummy_fe_state), GFP_KERNEL);
if (state == NULL) goto error;

/* create dvb_frontend */
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/dvb/frontends/l64781.c
Original file line number Diff line number Diff line change
Expand Up @@ -501,7 +501,7 @@ struct dvb_frontend* l64781_attach(const struct l64781_config* config,
{ .addr = config->demod_address, .flags = I2C_M_RD, .buf = b1, .len = 1 } };

/* allocate memory for the internal state */
state = kmalloc(sizeof(struct l64781_state), GFP_KERNEL);
state = kzalloc(sizeof(struct l64781_state), GFP_KERNEL);
if (state == NULL) goto error;

/* setup the state */
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/dvb/frontends/lgs8gl5.c
Original file line number Diff line number Diff line change
Expand Up @@ -387,7 +387,7 @@ lgs8gl5_attach(const struct lgs8gl5_config *config, struct i2c_adapter *i2c)
dprintk("%s\n", __func__);

/* Allocate memory for the internal state */
state = kmalloc(sizeof(struct lgs8gl5_state), GFP_KERNEL);
state = kzalloc(sizeof(struct lgs8gl5_state), GFP_KERNEL);
if (state == NULL)
goto error;

Expand Down
2 changes: 1 addition & 1 deletion drivers/media/dvb/frontends/mt312.c
Original file line number Diff line number Diff line change
Expand Up @@ -782,7 +782,7 @@ struct dvb_frontend *mt312_attach(const struct mt312_config *config,
struct mt312_state *state = NULL;

/* allocate memory for the internal state */
state = kmalloc(sizeof(struct mt312_state), GFP_KERNEL);
state = kzalloc(sizeof(struct mt312_state), GFP_KERNEL);
if (state == NULL)
goto error;

Expand Down
2 changes: 1 addition & 1 deletion drivers/media/dvb/frontends/nxt6000.c
Original file line number Diff line number Diff line change
Expand Up @@ -545,7 +545,7 @@ struct dvb_frontend* nxt6000_attach(const struct nxt6000_config* config,
struct nxt6000_state* state = NULL;

/* allocate memory for the internal state */
state = kmalloc(sizeof(struct nxt6000_state), GFP_KERNEL);
state = kzalloc(sizeof(struct nxt6000_state), GFP_KERNEL);
if (state == NULL) goto error;

/* setup the state */
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/dvb/frontends/or51132.c
Original file line number Diff line number Diff line change
Expand Up @@ -562,7 +562,7 @@ struct dvb_frontend* or51132_attach(const struct or51132_config* config,
struct or51132_state* state = NULL;

/* Allocate memory for the internal state */
state = kmalloc(sizeof(struct or51132_state), GFP_KERNEL);
state = kzalloc(sizeof(struct or51132_state), GFP_KERNEL);
if (state == NULL)
return NULL;

Expand Down
2 changes: 1 addition & 1 deletion drivers/media/dvb/frontends/or51211.c
Original file line number Diff line number Diff line change
Expand Up @@ -527,7 +527,7 @@ struct dvb_frontend* or51211_attach(const struct or51211_config* config,
struct or51211_state* state = NULL;

/* Allocate memory for the internal state */
state = kmalloc(sizeof(struct or51211_state), GFP_KERNEL);
state = kzalloc(sizeof(struct or51211_state), GFP_KERNEL);
if (state == NULL)
return NULL;

Expand Down
2 changes: 1 addition & 1 deletion drivers/media/dvb/frontends/s5h1409.c
Original file line number Diff line number Diff line change
Expand Up @@ -796,7 +796,7 @@ struct dvb_frontend *s5h1409_attach(const struct s5h1409_config *config,
u16 reg;

/* allocate memory for the internal state */
state = kmalloc(sizeof(struct s5h1409_state), GFP_KERNEL);
state = kzalloc(sizeof(struct s5h1409_state), GFP_KERNEL);
if (state == NULL)
goto error;

Expand Down
2 changes: 1 addition & 1 deletion drivers/media/dvb/frontends/s5h1411.c
Original file line number Diff line number Diff line change
Expand Up @@ -844,7 +844,7 @@ struct dvb_frontend *s5h1411_attach(const struct s5h1411_config *config,
u16 reg;

/* allocate memory for the internal state */
state = kmalloc(sizeof(struct s5h1411_state), GFP_KERNEL);
state = kzalloc(sizeof(struct s5h1411_state), GFP_KERNEL);
if (state == NULL)
goto error;

Expand Down
2 changes: 1 addition & 1 deletion drivers/media/dvb/frontends/si21xx.c
Original file line number Diff line number Diff line change
Expand Up @@ -928,7 +928,7 @@ struct dvb_frontend *si21xx_attach(const struct si21xx_config *config,
dprintk("%s\n", __func__);

/* allocate memory for the internal state */
state = kmalloc(sizeof(struct si21xx_state), GFP_KERNEL);
state = kzalloc(sizeof(struct si21xx_state), GFP_KERNEL);
if (state == NULL)
goto error;

Expand Down
2 changes: 1 addition & 1 deletion drivers/media/dvb/frontends/sp8870.c
Original file line number Diff line number Diff line change
Expand Up @@ -557,7 +557,7 @@ struct dvb_frontend* sp8870_attach(const struct sp8870_config* config,
struct sp8870_state* state = NULL;

/* allocate memory for the internal state */
state = kmalloc(sizeof(struct sp8870_state), GFP_KERNEL);
state = kzalloc(sizeof(struct sp8870_state), GFP_KERNEL);
if (state == NULL) goto error;

/* setup the state */
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/dvb/frontends/sp887x.c
Original file line number Diff line number Diff line change
Expand Up @@ -557,7 +557,7 @@ struct dvb_frontend* sp887x_attach(const struct sp887x_config* config,
struct sp887x_state* state = NULL;

/* allocate memory for the internal state */
state = kmalloc(sizeof(struct sp887x_state), GFP_KERNEL);
state = kzalloc(sizeof(struct sp887x_state), GFP_KERNEL);
if (state == NULL) goto error;

/* setup the state */
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/dvb/frontends/stv0288.c
Original file line number Diff line number Diff line change
Expand Up @@ -570,7 +570,7 @@ struct dvb_frontend *stv0288_attach(const struct stv0288_config *config,
int id;

/* allocate memory for the internal state */
state = kmalloc(sizeof(struct stv0288_state), GFP_KERNEL);
state = kzalloc(sizeof(struct stv0288_state), GFP_KERNEL);
if (state == NULL)
goto error;

Expand Down
2 changes: 1 addition & 1 deletion drivers/media/dvb/frontends/stv0297.c
Original file line number Diff line number Diff line change
Expand Up @@ -663,7 +663,7 @@ struct dvb_frontend *stv0297_attach(const struct stv0297_config *config,
struct stv0297_state *state = NULL;

/* allocate memory for the internal state */
state = kmalloc(sizeof(struct stv0297_state), GFP_KERNEL);
state = kzalloc(sizeof(struct stv0297_state), GFP_KERNEL);
if (state == NULL)
goto error;

Expand Down
2 changes: 1 addition & 1 deletion drivers/media/dvb/frontends/stv0299.c
Original file line number Diff line number Diff line change
Expand Up @@ -667,7 +667,7 @@ struct dvb_frontend* stv0299_attach(const struct stv0299_config* config,
int id;

/* allocate memory for the internal state */
state = kmalloc(sizeof(struct stv0299_state), GFP_KERNEL);
state = kzalloc(sizeof(struct stv0299_state), GFP_KERNEL);
if (state == NULL) goto error;

/* setup the state */
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/dvb/frontends/tda10021.c
Original file line number Diff line number Diff line change
Expand Up @@ -413,7 +413,7 @@ struct dvb_frontend* tda10021_attach(const struct tda1002x_config* config,
u8 id;

/* allocate memory for the internal state */
state = kmalloc(sizeof(struct tda10021_state), GFP_KERNEL);
state = kzalloc(sizeof(struct tda10021_state), GFP_KERNEL);
if (state == NULL) goto error;

/* setup the state */
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/dvb/frontends/tda10048.c
Original file line number Diff line number Diff line change
Expand Up @@ -1095,7 +1095,7 @@ struct dvb_frontend *tda10048_attach(const struct tda10048_config *config,
dprintk(1, "%s()\n", __func__);

/* allocate memory for the internal state */
state = kmalloc(sizeof(struct tda10048_state), GFP_KERNEL);
state = kzalloc(sizeof(struct tda10048_state), GFP_KERNEL);
if (state == NULL)
goto error;

Expand Down
4 changes: 2 additions & 2 deletions drivers/media/dvb/frontends/tda1004x.c
Original file line number Diff line number Diff line change
Expand Up @@ -1269,7 +1269,7 @@ struct dvb_frontend* tda10045_attach(const struct tda1004x_config* config,
int id;

/* allocate memory for the internal state */
state = kmalloc(sizeof(struct tda1004x_state), GFP_KERNEL);
state = kzalloc(sizeof(struct tda1004x_state), GFP_KERNEL);
if (!state) {
printk(KERN_ERR "Can't alocate memory for tda10045 state\n");
return NULL;
Expand Down Expand Up @@ -1339,7 +1339,7 @@ struct dvb_frontend* tda10046_attach(const struct tda1004x_config* config,
int id;

/* allocate memory for the internal state */
state = kmalloc(sizeof(struct tda1004x_state), GFP_KERNEL);
state = kzalloc(sizeof(struct tda1004x_state), GFP_KERNEL);
if (!state) {
printk(KERN_ERR "Can't alocate memory for tda10046 state\n");
return NULL;
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/dvb/frontends/tda10086.c
Original file line number Diff line number Diff line change
Expand Up @@ -745,7 +745,7 @@ struct dvb_frontend* tda10086_attach(const struct tda10086_config* config,
dprintk ("%s\n", __func__);

/* allocate memory for the internal state */
state = kmalloc(sizeof(struct tda10086_state), GFP_KERNEL);
state = kzalloc(sizeof(struct tda10086_state), GFP_KERNEL);
if (!state)
return NULL;

Expand Down
2 changes: 1 addition & 1 deletion drivers/media/dvb/frontends/tda8083.c
Original file line number Diff line number Diff line change
Expand Up @@ -417,7 +417,7 @@ struct dvb_frontend* tda8083_attach(const struct tda8083_config* config,
struct tda8083_state* state = NULL;

/* allocate memory for the internal state */
state = kmalloc(sizeof(struct tda8083_state), GFP_KERNEL);
state = kzalloc(sizeof(struct tda8083_state), GFP_KERNEL);
if (state == NULL) goto error;

/* setup the state */
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/dvb/frontends/ves1820.c
Original file line number Diff line number Diff line change
Expand Up @@ -374,7 +374,7 @@ struct dvb_frontend* ves1820_attach(const struct ves1820_config* config,
struct ves1820_state* state = NULL;

/* allocate memory for the internal state */
state = kmalloc(sizeof(struct ves1820_state), GFP_KERNEL);
state = kzalloc(sizeof(struct ves1820_state), GFP_KERNEL);
if (state == NULL)
goto error;

Expand Down
2 changes: 1 addition & 1 deletion drivers/media/dvb/frontends/ves1x93.c
Original file line number Diff line number Diff line change
Expand Up @@ -456,7 +456,7 @@ struct dvb_frontend* ves1x93_attach(const struct ves1x93_config* config,
u8 identity;

/* allocate memory for the internal state */
state = kmalloc(sizeof(struct ves1x93_state), GFP_KERNEL);
state = kzalloc(sizeof(struct ves1x93_state), GFP_KERNEL);
if (state == NULL) goto error;

/* setup the state */
Expand Down
12 changes: 5 additions & 7 deletions drivers/media/dvb/frontends/zl10353.c
Original file line number Diff line number Diff line change
Expand Up @@ -98,27 +98,25 @@ static int zl10353_read_register(struct zl10353_state *state, u8 reg)
static void zl10353_dump_regs(struct dvb_frontend *fe)
{
struct zl10353_state *state = fe->demodulator_priv;
char buf[52], buf2[4];
int ret;
u8 reg;

/* Dump all registers. */
for (reg = 0; ; reg++) {
if (reg % 16 == 0) {
if (reg)
printk(KERN_DEBUG "%s\n", buf);
sprintf(buf, "%02x: ", reg);
printk(KERN_CONT "\n");
printk(KERN_DEBUG "%02x:", reg);
}
ret = zl10353_read_register(state, reg);
if (ret >= 0)
sprintf(buf2, "%02x ", (u8)ret);
printk(KERN_CONT " %02x", (u8)ret);
else
strcpy(buf2, "-- ");
strcat(buf, buf2);
printk(KERN_CONT " --");
if (reg == 0xff)
break;
}
printk(KERN_DEBUG "%s\n", buf);
printk(KERN_CONT "\n");
}

static void zl10353_calc_nominal_rate(struct dvb_frontend *fe,
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/dvb/siano/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

config DVB_SIANO_SMS1XXX
tristate "Siano SMS1XXX USB dongle support"
depends on DVB_CORE && USB
depends on DVB_CORE && USB && INPUT
---help---
Choose Y here if you have a USB dongle with a SMS1XXX chipset.

Expand Down
Loading

0 comments on commit 3011c7f

Please sign in to comment.