Home
last modified time | relevance | path

Searched refs:tf (Results 1 – 25 of 94) sorted by relevance

1234

/drivers/ata/
Dsata_promise.h44 static inline unsigned int pdc_pkt_header(struct ata_taskfile *tf, in pdc_pkt_header() argument
54 switch (tf->protocol) { in pdc_pkt_header()
56 if (!(tf->flags & ATA_TFLAG_WRITE)) in pdc_pkt_header()
85 buf[15] = tf->ctl; in pdc_pkt_header()
90 static inline unsigned int pdc_pkt_footer(struct ata_taskfile *tf, u8 *buf, in pdc_pkt_footer() argument
93 if (tf->flags & ATA_TFLAG_DEVICE) { in pdc_pkt_footer()
95 buf[i++] = tf->device; in pdc_pkt_footer()
100 buf[i++] = tf->command; in pdc_pkt_footer()
105 static inline unsigned int pdc_prep_lba28(struct ata_taskfile *tf, u8 *buf, unsigned int i) in pdc_prep_lba28() argument
111 buf[i++] = tf->feature; in pdc_prep_lba28()
[all …]
Dsata_vsc.c158 static void vsc_sata_tf_load(struct ata_port *ap, const struct ata_taskfile *tf) in vsc_sata_tf_load() argument
161 unsigned int is_addr = tf->flags & ATA_TFLAG_ISADDR; in vsc_sata_tf_load()
169 if ((tf->ctl & ATA_NIEN) != (ap->last_ctl & ATA_NIEN)) { in vsc_sata_tf_load()
170 ap->last_ctl = tf->ctl; in vsc_sata_tf_load()
171 vsc_intr_mask_update(ap, tf->ctl & ATA_NIEN); in vsc_sata_tf_load()
173 if (is_addr && (tf->flags & ATA_TFLAG_LBA48)) { in vsc_sata_tf_load()
174 writew(tf->feature | (((u16)tf->hob_feature) << 8), in vsc_sata_tf_load()
176 writew(tf->nsect | (((u16)tf->hob_nsect) << 8), in vsc_sata_tf_load()
178 writew(tf->lbal | (((u16)tf->hob_lbal) << 8), in vsc_sata_tf_load()
180 writew(tf->lbam | (((u16)tf->hob_lbam) << 8), in vsc_sata_tf_load()
[all …]
Dsata_svw.c174 static void k2_sata_tf_load(struct ata_port *ap, const struct ata_taskfile *tf) in k2_sata_tf_load() argument
177 unsigned int is_addr = tf->flags & ATA_TFLAG_ISADDR; in k2_sata_tf_load()
179 if (tf->ctl != ap->last_ctl) { in k2_sata_tf_load()
180 writeb(tf->ctl, ioaddr->ctl_addr); in k2_sata_tf_load()
181 ap->last_ctl = tf->ctl; in k2_sata_tf_load()
184 if (is_addr && (tf->flags & ATA_TFLAG_LBA48)) { in k2_sata_tf_load()
185 writew(tf->feature | (((u16)tf->hob_feature) << 8), in k2_sata_tf_load()
187 writew(tf->nsect | (((u16)tf->hob_nsect) << 8), in k2_sata_tf_load()
189 writew(tf->lbal | (((u16)tf->hob_lbal) << 8), in k2_sata_tf_load()
191 writew(tf->lbam | (((u16)tf->hob_lbam) << 8), in k2_sata_tf_load()
[all …]
Dlibata-scsi.c288 const struct ata_taskfile *tf) in ata_scsi_set_sense_information() argument
295 information = ata_tf_read_block(tf, dev); in ata_scsi_set_sense_information()
834 static void ata_dump_status(unsigned id, struct ata_taskfile *tf) in ata_dump_status() argument
836 u8 stat = tf->command, err = tf->feature; in ata_dump_status()
1020 struct ata_taskfile *tf = &qc->result_tf; in ata_gen_passthru_sense() local
1035 tf->command & (ATA_BUSY | ATA_DF | ATA_ERR | ATA_DRQ)) { in ata_gen_passthru_sense()
1036 ata_to_sense_error(qc->ap->print_id, tf->command, tf->feature, in ata_gen_passthru_sense()
1066 desc[3] = tf->feature; /* == error reg */ in ata_gen_passthru_sense()
1067 desc[5] = tf->nsect; in ata_gen_passthru_sense()
1068 desc[7] = tf->lbal; in ata_gen_passthru_sense()
[all …]
Dlibata-acpi.c32 u8 tf[REGS_PER_GTF]; /* regs. 0x1f1 - 0x1f7 */ member
550 struct ata_taskfile *tf) in ata_acpi_gtf_to_tf() argument
552 ata_tf_init(dev, tf); in ata_acpi_gtf_to_tf()
554 tf->flags |= ATA_TFLAG_ISADDR | ATA_TFLAG_DEVICE; in ata_acpi_gtf_to_tf()
555 tf->protocol = ATA_PROT_NODATA; in ata_acpi_gtf_to_tf()
556 tf->feature = gtf->tf[0]; /* 0x1f1 */ in ata_acpi_gtf_to_tf()
557 tf->nsect = gtf->tf[1]; /* 0x1f2 */ in ata_acpi_gtf_to_tf()
558 tf->lbal = gtf->tf[2]; /* 0x1f3 */ in ata_acpi_gtf_to_tf()
559 tf->lbam = gtf->tf[3]; /* 0x1f4 */ in ata_acpi_gtf_to_tf()
560 tf->lbah = gtf->tf[4]; /* 0x1f5 */ in ata_acpi_gtf_to_tf()
[all …]
Dpata_octeon_cf.c390 static void octeon_cf_tf_read16(struct ata_port *ap, struct ata_taskfile *tf) in octeon_cf_tf_read16() argument
397 tf->feature = blob >> 8; in octeon_cf_tf_read16()
400 tf->nsect = blob & 0xff; in octeon_cf_tf_read16()
401 tf->lbal = blob >> 8; in octeon_cf_tf_read16()
404 tf->lbam = blob & 0xff; in octeon_cf_tf_read16()
405 tf->lbah = blob >> 8; in octeon_cf_tf_read16()
408 tf->device = blob & 0xff; in octeon_cf_tf_read16()
409 tf->command = blob >> 8; in octeon_cf_tf_read16()
411 if (tf->flags & ATA_TFLAG_LBA48) { in octeon_cf_tf_read16()
413 iowrite8(tf->ctl | ATA_HOB, ap->ioaddr.ctl_addr); in octeon_cf_tf_read16()
[all …]
Dsata_rcar.c370 const struct ata_taskfile *tf) in sata_rcar_tf_load() argument
373 unsigned int is_addr = tf->flags & ATA_TFLAG_ISADDR; in sata_rcar_tf_load()
375 if (tf->ctl != ap->last_ctl) { in sata_rcar_tf_load()
376 iowrite32(tf->ctl, ioaddr->ctl_addr); in sata_rcar_tf_load()
377 ap->last_ctl = tf->ctl; in sata_rcar_tf_load()
381 if (is_addr && (tf->flags & ATA_TFLAG_LBA48)) { in sata_rcar_tf_load()
382 iowrite32(tf->hob_feature, ioaddr->feature_addr); in sata_rcar_tf_load()
383 iowrite32(tf->hob_nsect, ioaddr->nsect_addr); in sata_rcar_tf_load()
384 iowrite32(tf->hob_lbal, ioaddr->lbal_addr); in sata_rcar_tf_load()
385 iowrite32(tf->hob_lbam, ioaddr->lbam_addr); in sata_rcar_tf_load()
[all …]
Dpata_samsung_cf.c178 const struct ata_taskfile *tf) in pata_s3c_tf_load() argument
181 unsigned int is_addr = tf->flags & ATA_TFLAG_ISADDR; in pata_s3c_tf_load()
183 if (tf->ctl != ap->last_ctl) { in pata_s3c_tf_load()
184 ata_outb(ap->host, tf->ctl, ioaddr->ctl_addr); in pata_s3c_tf_load()
185 ap->last_ctl = tf->ctl; in pata_s3c_tf_load()
189 if (is_addr && (tf->flags & ATA_TFLAG_LBA48)) { in pata_s3c_tf_load()
190 ata_outb(ap->host, tf->hob_feature, ioaddr->feature_addr); in pata_s3c_tf_load()
191 ata_outb(ap->host, tf->hob_nsect, ioaddr->nsect_addr); in pata_s3c_tf_load()
192 ata_outb(ap->host, tf->hob_lbal, ioaddr->lbal_addr); in pata_s3c_tf_load()
193 ata_outb(ap->host, tf->hob_lbam, ioaddr->lbam_addr); in pata_s3c_tf_load()
[all …]
Dlibata-sff.c413 void ata_sff_tf_load(struct ata_port *ap, const struct ata_taskfile *tf) in ata_sff_tf_load() argument
416 unsigned int is_addr = tf->flags & ATA_TFLAG_ISADDR; in ata_sff_tf_load()
418 if (tf->ctl != ap->last_ctl) { in ata_sff_tf_load()
420 iowrite8(tf->ctl, ioaddr->ctl_addr); in ata_sff_tf_load()
421 ap->last_ctl = tf->ctl; in ata_sff_tf_load()
425 if (is_addr && (tf->flags & ATA_TFLAG_LBA48)) { in ata_sff_tf_load()
427 iowrite8(tf->hob_feature, ioaddr->feature_addr); in ata_sff_tf_load()
428 iowrite8(tf->hob_nsect, ioaddr->nsect_addr); in ata_sff_tf_load()
429 iowrite8(tf->hob_lbal, ioaddr->lbal_addr); in ata_sff_tf_load()
430 iowrite8(tf->hob_lbam, ioaddr->lbam_addr); in ata_sff_tf_load()
[all …]
Dpata_ns87415.c123 unsigned int rw = (qc->tf.flags & ATA_TFLAG_WRITE); in ns87415_bmdma_setup()
140 ap->ops->sff_exec_command(ap, &qc->tf); in ns87415_bmdma_setup()
263 void ns87560_tf_read(struct ata_port *ap, struct ata_taskfile *tf) in ns87560_tf_read() argument
267 tf->command = ns87560_check_status(ap); in ns87560_tf_read()
268 tf->feature = ioread8(ioaddr->error_addr); in ns87560_tf_read()
269 tf->nsect = ioread8(ioaddr->nsect_addr); in ns87560_tf_read()
270 tf->lbal = ioread8(ioaddr->lbal_addr); in ns87560_tf_read()
271 tf->lbam = ioread8(ioaddr->lbam_addr); in ns87560_tf_read()
272 tf->lbah = ioread8(ioaddr->lbah_addr); in ns87560_tf_read()
273 tf->device = ns87560_read_buggy(ioaddr->device_addr); in ns87560_tf_read()
[all …]
Dlibata-core.c554 void ata_tf_to_fis(const struct ata_taskfile *tf, u8 pmp, int is_cmd, u8 *fis) in ata_tf_to_fis() argument
561 fis[2] = tf->command; in ata_tf_to_fis()
562 fis[3] = tf->feature; in ata_tf_to_fis()
564 fis[4] = tf->lbal; in ata_tf_to_fis()
565 fis[5] = tf->lbam; in ata_tf_to_fis()
566 fis[6] = tf->lbah; in ata_tf_to_fis()
567 fis[7] = tf->device; in ata_tf_to_fis()
569 fis[8] = tf->hob_lbal; in ata_tf_to_fis()
570 fis[9] = tf->hob_lbam; in ata_tf_to_fis()
571 fis[10] = tf->hob_lbah; in ata_tf_to_fis()
[all …]
Dpata_bf54x.c669 static void bfin_tf_load(struct ata_port *ap, const struct ata_taskfile *tf) in bfin_tf_load() argument
672 unsigned int is_addr = tf->flags & ATA_TFLAG_ISADDR; in bfin_tf_load()
674 if (tf->ctl != ap->last_ctl) { in bfin_tf_load()
675 write_atapi_register(base, ATA_REG_CTRL, tf->ctl); in bfin_tf_load()
676 ap->last_ctl = tf->ctl; in bfin_tf_load()
681 if (tf->flags & ATA_TFLAG_LBA48) { in bfin_tf_load()
683 tf->hob_feature); in bfin_tf_load()
685 tf->hob_nsect); in bfin_tf_load()
686 write_atapi_register(base, ATA_REG_LBAL, tf->hob_lbal); in bfin_tf_load()
687 write_atapi_register(base, ATA_REG_LBAM, tf->hob_lbam); in bfin_tf_load()
[all …]
Dpata_via.c389 static void via_tf_load(struct ata_port *ap, const struct ata_taskfile *tf) in via_tf_load() argument
393 unsigned int is_addr = tf->flags & ATA_TFLAG_ISADDR; in via_tf_load()
396 if (tf->ctl != ap->last_ctl) { in via_tf_load()
397 iowrite8(tf->ctl, ioaddr->ctl_addr); in via_tf_load()
398 ap->last_ctl = tf->ctl; in via_tf_load()
403 if (tf->flags & ATA_TFLAG_DEVICE) { in via_tf_load()
404 iowrite8(tf->device, ioaddr->device_addr); in via_tf_load()
405 vp->cached_device = tf->device; in via_tf_load()
409 if (is_addr && (tf->flags & ATA_TFLAG_LBA48)) { in via_tf_load()
411 iowrite8(tf->hob_feature, ioaddr->feature_addr); in via_tf_load()
[all …]
Dpata_ep93xx.c373 const struct ata_taskfile *tf) in ep93xx_pata_tf_load() argument
376 unsigned int is_addr = tf->flags & ATA_TFLAG_ISADDR; in ep93xx_pata_tf_load()
378 if (tf->ctl != ap->last_ctl) { in ep93xx_pata_tf_load()
379 ep93xx_pata_write_reg(drv_data, tf->ctl, IDECTRL_ADDR_CTL); in ep93xx_pata_tf_load()
380 ap->last_ctl = tf->ctl; in ep93xx_pata_tf_load()
384 if (is_addr && (tf->flags & ATA_TFLAG_LBA48)) { in ep93xx_pata_tf_load()
385 ep93xx_pata_write_reg(drv_data, tf->hob_feature, in ep93xx_pata_tf_load()
387 ep93xx_pata_write_reg(drv_data, tf->hob_nsect, in ep93xx_pata_tf_load()
389 ep93xx_pata_write_reg(drv_data, tf->hob_lbal, in ep93xx_pata_tf_load()
391 ep93xx_pata_write_reg(drv_data, tf->hob_lbam, in ep93xx_pata_tf_load()
[all …]
Dsata_inic162x.c410 qc ? qc->tf.command : 0xff, irq_stat, idma_stat); in inic_host_intr()
458 if (qc->tf.flags & ATA_TFLAG_WRITE) in inic_fill_sg()
461 if (ata_is_dma(qc->tf.protocol)) in inic_fill_sg()
481 bool is_atapi = ata_is_atapi(qc->tf.protocol); in inic_qc_prep()
482 bool is_data = ata_is_data(qc->tf.protocol); in inic_qc_prep()
500 cpb->device = qc->tf.device; in inic_qc_prep()
501 cpb->feature = qc->tf.feature; in inic_qc_prep()
502 cpb->nsect = qc->tf.nsect; in inic_qc_prep()
503 cpb->lbal = qc->tf.lbal; in inic_qc_prep()
504 cpb->lbam = qc->tf.lbam; in inic_qc_prep()
[all …]
Dlibata-zpodd.c36 struct ata_taskfile tf; in eject_tray() local
43 ata_tf_init(dev, &tf); in eject_tray()
44 tf.flags = ATA_TFLAG_ISADDR | ATA_TFLAG_DEVICE; in eject_tray()
45 tf.command = ATA_CMD_PACKET; in eject_tray()
46 tf.protocol = ATAPI_PROT_NODATA; in eject_tray()
48 return ata_exec_internal(dev, &tf, cdb, DMA_NONE, NULL, 0, 0); in eject_tray()
57 struct ata_taskfile tf; in zpodd_get_mech_type() local
66 ata_tf_init(dev, &tf); in zpodd_get_mech_type()
67 tf.flags = ATA_TFLAG_ISADDR | ATA_TFLAG_DEVICE; in zpodd_get_mech_type()
68 tf.command = ATA_CMD_PACKET; in zpodd_get_mech_type()
[all …]
Dsata_dwc_460ex.c317 static void sata_dwc_tf_dump(struct ata_port *ap, struct ata_taskfile *tf) in sata_dwc_tf_dump() argument
321 tf->command, get_prot_descript(tf->protocol), tf->flags, in sata_dwc_tf_dump()
322 tf->device); in sata_dwc_tf_dump()
325 tf->feature, tf->nsect, tf->lbal, tf->lbam, tf->lbah); in sata_dwc_tf_dump()
328 tf->hob_feature, tf->hob_nsect, tf->hob_lbal, tf->hob_lbam, in sata_dwc_tf_dump()
329 tf->hob_lbah); in sata_dwc_tf_dump()
572 if (unlikely(!qc || (qc->tf.flags & ATA_TFLAG_POLLING))) { in sata_dwc_isr()
593 __func__, get_prot_descript(qc->tf.protocol)); in sata_dwc_isr()
595 if (ata_is_dma(qc->tf.protocol)) { in sata_dwc_isr()
613 } else if (ata_is_pio(qc->tf.protocol)) { in sata_dwc_isr()
[all …]
/drivers/target/
Dtarget_core_fabric_configfs.c44 static void target_fabric_setup_##_name##_cit(struct target_fabric_configfs *tf) \
46 struct config_item_type *cit = &tf->tf_##_name##_cit; \
51 cit->ct_owner = tf->tf_ops->module; \
56 static void target_fabric_setup_##_name##_cit(struct target_fabric_configfs *tf) \
58 struct config_item_type *cit = &tf->tf_##_name##_cit; \
59 struct configfs_attribute **attrs = tf->tf_ops->tfc_##_name##_attrs; \
64 cit->ct_owner = tf->tf_ops->module; \
275 struct target_fabric_configfs *tf = se_tpg->se_tpg_wwn->wwn_tf; in target_fabric_make_mappedlun() local
312 &tf->tf_tpg_mappedlun_cit); in target_fabric_make_mappedlun()
315 "statistics", &tf->tf_tpg_mappedlun_stat_cit); in target_fabric_make_mappedlun()
[all …]
/drivers/ide/
Dide-disk.c74 cmd->tf.command = ide_rw_cmds[index + lba48 + write]; in ide_tf_set_cmd()
89 struct ide_taskfile *tf = &cmd.tf; in __ide_do_rw_disk() local
100 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE; in __ide_do_rw_disk()
101 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE; in __ide_do_rw_disk()
108 tf->nsect = nsectors & 0xff; in __ide_do_rw_disk()
109 tf->lbal = (u8) block; in __ide_do_rw_disk()
110 tf->lbam = (u8)(block >> 8); in __ide_do_rw_disk()
111 tf->lbah = (u8)(block >> 16); in __ide_do_rw_disk()
112 tf->device = ATA_LBA; in __ide_do_rw_disk()
114 tf = &cmd.hob; in __ide_do_rw_disk()
[all …]
Dide-lib.c37 struct ide_taskfile *tf = &cmd->tf; in ide_get_lba_addr() local
40 low = (tf->lbah << 16) | (tf->lbam << 8) | tf->lbal; in ide_get_lba_addr()
42 tf = &cmd->hob; in ide_get_lba_addr()
43 high = (tf->lbah << 16) | (tf->lbam << 8) | tf->lbal; in ide_get_lba_addr()
45 high = tf->device & 0xf; in ide_get_lba_addr()
54 struct ide_taskfile *tf = &cmd.tf; in ide_dump_sector() local
59 cmd.valid.in.tf = IDE_VALID_LBA; in ide_dump_sector()
63 cmd.valid.in.tf = IDE_VALID_LBA | IDE_VALID_DEVICE; in ide_dump_sector()
67 if (lba48 || (tf->device & ATA_LBA)) in ide_dump_sector()
71 printk(KERN_CONT ", CHS=%d/%d/%d", (tf->lbah << 8) + tf->lbam, in ide_dump_sector()
[all …]
Dide-ioctls.c123 struct ide_taskfile *tf = &cmd.tf; in ide_cmd_ioctl() local
140 tf->feature = args[2]; in ide_cmd_ioctl()
142 tf->nsect = args[3]; in ide_cmd_ioctl()
143 tf->lbal = args[1]; in ide_cmd_ioctl()
144 tf->lbam = ATA_SMART_LBAM_PASS; in ide_cmd_ioctl()
145 tf->lbah = ATA_SMART_LBAH_PASS; in ide_cmd_ioctl()
146 cmd.valid.out.tf = IDE_VALID_OUT_TF; in ide_cmd_ioctl()
147 cmd.valid.in.tf = IDE_VALID_NSECT; in ide_cmd_ioctl()
149 tf->nsect = args[1]; in ide_cmd_ioctl()
150 cmd.valid.out.tf = IDE_VALID_FEATURE | IDE_VALID_NSECT; in ide_cmd_ioctl()
[all …]
Dide-taskfile.c35 tp_ops->tf_read(drive, &cmd->tf, cmd->valid.in.tf); in ide_tf_readback()
49 s, cmd->tf.feature, cmd->tf.nsect, in ide_tf_dump()
50 cmd->tf.lbal, cmd->tf.lbam, cmd->tf.lbah, in ide_tf_dump()
51 cmd->tf.device, cmd->tf.command); in ide_tf_dump()
62 cmd.tf.nsect = 0x01; in taskfile_lib_get_identify()
64 cmd.tf.command = ATA_CMD_ID_ATA; in taskfile_lib_get_identify()
66 cmd.tf.command = ATA_CMD_ID_ATAPI; in taskfile_lib_get_identify()
67 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE; in taskfile_lib_get_identify()
68 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE; in taskfile_lib_get_identify()
82 struct ide_taskfile *tf = &cmd->tf; in do_rw_taskfile() local
[all …]
Dide-disk_proc.c12 struct ide_taskfile *tf = &cmd.tf; in smart_enable() local
15 tf->feature = ATA_SMART_ENABLE; in smart_enable()
16 tf->lbam = ATA_SMART_LBAM_PASS; in smart_enable()
17 tf->lbah = ATA_SMART_LBAH_PASS; in smart_enable()
18 tf->command = ATA_CMD_SMART; in smart_enable()
19 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE; in smart_enable()
20 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE; in smart_enable()
28 struct ide_taskfile *tf = &cmd.tf; in get_smart_data() local
31 tf->feature = sub_cmd; in get_smart_data()
32 tf->nsect = 0x01; in get_smart_data()
[all …]
Dide-io-std.c89 void ide_tf_load(ide_drive_t *drive, struct ide_taskfile *tf, u8 valid) in ide_tf_load() argument
102 tf_outb(tf->feature, io_ports->feature_addr); in ide_tf_load()
104 tf_outb(tf->nsect, io_ports->nsect_addr); in ide_tf_load()
106 tf_outb(tf->lbal, io_ports->lbal_addr); in ide_tf_load()
108 tf_outb(tf->lbam, io_ports->lbam_addr); in ide_tf_load()
110 tf_outb(tf->lbah, io_ports->lbah_addr); in ide_tf_load()
112 tf_outb(tf->device, io_ports->device_addr); in ide_tf_load()
116 void ide_tf_read(ide_drive_t *drive, struct ide_taskfile *tf, u8 valid) in ide_tf_read() argument
129 tf->error = tf_inb(io_ports->feature_addr); in ide_tf_read()
131 tf->nsect = tf_inb(io_ports->nsect_addr); in ide_tf_read()
[all …]
Dide-park.c64 struct ide_taskfile *tf = &cmd.tf; in ide_do_park_unpark() local
70 tf->command = ATA_CMD_IDLEIMMEDIATE; in ide_do_park_unpark()
71 tf->feature = 0x44; in ide_do_park_unpark()
72 tf->lbal = 0x4c; in ide_do_park_unpark()
73 tf->lbam = 0x4e; in ide_do_park_unpark()
74 tf->lbah = 0x55; in ide_do_park_unpark()
75 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE; in ide_do_park_unpark()
76 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE; in ide_do_park_unpark()
78 tf->command = ATA_CMD_CHK_POWER; in ide_do_park_unpark()

1234