/* Addresses for security related data in FLASH */ #define M10BMC_N3000_BMC_REH_ADDR 0x17ffc004 #define M10BMC_N3000_BMC_PROG_ADDR 0x17ffc000 #define M10BMC_N3000_BMC_PROG_MAGIC 0x5746
/* Addresses for security related data in FLASH */ #define M10BMC_N6000_BMC_REH_ADDR 0x7ffc004 #define M10BMC_N6000_BMC_PROG_ADDR 0x7ffc000 #define M10BMC_N6000_BMC_PROG_MAGIC 0x5746
/** * struct intel_m10bmc_platform_info - Intel MAX 10 BMC platform specific information * @cells: MFD cells * @n_cells: MFD cells ARRAY_SIZE() * @handshake_sys_reg_ranges: array of register ranges for fw handshake regs * @handshake_sys_reg_nranges: number of register ranges for fw handshake regs * @csr_map: the mappings for register definition of MAX10 BMC
*/ struct intel_m10bmc_platform_info { struct mfd_cell *cells; int n_cells; conststruct regmap_range *handshake_sys_reg_ranges; unsignedint handshake_sys_reg_nranges; conststruct m10bmc_csr_map *csr_map;
};
struct intel_m10bmc;
/** * struct intel_m10bmc_flash_bulk_ops - device specific operations for flash R/W * @read: read a block of data from flash * @write: write a block of data to flash * @lock_write: locks flash access for erase+write * @unlock_write: unlock flash access * * Write must be protected with @lock_write and @unlock_write. While the flash * is locked, @read returns -EBUSY.
*/ struct intel_m10bmc_flash_bulk_ops { int (*read)(struct intel_m10bmc *m10bmc, u8 *buf, u32 addr, u32 size); int (*write)(struct intel_m10bmc *m10bmc, const u8 *buf, u32 offset, u32 size); int (*lock_write)(struct intel_m10bmc *m10bmc); void (*unlock_write)(struct intel_m10bmc *m10bmc);
};
/** * struct intel_m10bmc - Intel MAX 10 BMC parent driver data structure * @dev: this device * @regmap: the regmap used to access registers by m10bmc itself * @info: the platform information for MAX10 BMC * @flash_bulk_ops: optional device specific operations for flash R/W * @bmcfw_lock: read/write semaphore to BMC firmware running state * @bmcfw_state: BMC firmware running state. Available only when * handshake_sys_reg_nranges > 0.
*/ struct intel_m10bmc { struct device *dev; struct regmap *regmap; conststruct intel_m10bmc_platform_info *info; conststruct intel_m10bmc_flash_bulk_ops *flash_bulk_ops; struct rw_semaphore bmcfw_lock; /* Protects bmcfw_state */ enum m10bmc_fw_state bmcfw_state;
};
/* * register access helper functions. * * m10bmc_raw_read - read m10bmc register per addr * m10bmc_sys_read - read m10bmc system register per offset * m10bmc_sys_update_bits - update m10bmc system register per offset
*/ staticinlineint
m10bmc_raw_read(struct intel_m10bmc *m10bmc, unsignedint addr, unsignedint *val)
{ int ret;
ret = regmap_read(m10bmc->regmap, addr, val); if (ret)
dev_err(m10bmc->dev, "fail to read raw reg %x: %d\n",
addr, ret);
return ret;
}
int m10bmc_sys_read(struct intel_m10bmc *m10bmc, unsignedint offset, unsignedint *val); int m10bmc_sys_update_bits(struct intel_m10bmc *m10bmc, unsignedint offset, unsignedint msk, unsignedint val);
/* * Track the state of the firmware, as it is not available for register * handshakes during secure updates on some MAX 10 cards.
*/ void m10bmc_fw_state_set(struct intel_m10bmc *m10bmc, enum m10bmc_fw_state new_state);
/* * MAX10 BMC Core support
*/ int m10bmc_dev_init(struct intel_m10bmc *m10bmc, conststruct intel_m10bmc_platform_info *info); externconststruct attribute_group *m10bmc_dev_groups[];
#endif/* __MFD_INTEL_M10_BMC_H */
Messung V0.5
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.