static int tegra_clk_rst_assert(struct reset_controller_dev *rcdev, unsigned long id) { tegra_read_chipid(); writel(BIT(id % 32), car_base + periph_regs[id / 32].rst_set_reg); return 0; }
static void __init tegra20_fuse_add_randomness(void) { u32 randomness[7]; randomness[0] = tegra_sku_info.sku_id; randomness[1] = tegra_read_straps(); randomness[2] = tegra_read_chipid(); randomness[3] = tegra_sku_info.cpu_process_id << 16; randomness[3] |= tegra_sku_info.core_process_id; randomness[4] = tegra_sku_info.cpu_speedo_id << 16; randomness[4] |= tegra_sku_info.soc_speedo_id; randomness[5] = tegra20_fuse_early(FUSE_UID_LOW); randomness[6] = tegra20_fuse_early(FUSE_UID_HIGH); add_device_randomness(randomness, sizeof(randomness)); }
static int tegra_clk_rst_assert(struct reset_controller_dev *rcdev, unsigned long id) { /* * If peripheral is on the APB bus then we must read the APB bus to * flush the write operation in apb bus. This will avoid peripheral * access after disabling clock. Since the reset driver has no * knowledge of which reset IDs represent which devices, simply do * this all the time. */ tegra_read_chipid(); writel_relaxed(BIT(id % 32), clk_base + periph_regs[id / 32].rst_set_reg); return 0; }
static void __init tegra30_fuse_add_randomness(void) { u32 randomness[12]; randomness[0] = tegra_sku_info.sku_id; randomness[1] = tegra_read_straps(); randomness[2] = tegra_read_chipid(); randomness[3] = tegra_sku_info.cpu_process_id << 16; randomness[3] |= tegra_sku_info.core_process_id; randomness[4] = tegra_sku_info.cpu_speedo_id << 16; randomness[4] |= tegra_sku_info.soc_speedo_id; randomness[5] = tegra30_fuse_readl(FUSE_VENDOR_CODE); randomness[6] = tegra30_fuse_readl(FUSE_FAB_CODE); randomness[7] = tegra30_fuse_readl(FUSE_LOT_CODE_0); randomness[8] = tegra30_fuse_readl(FUSE_LOT_CODE_1); randomness[9] = tegra30_fuse_readl(FUSE_WAFER_ID); randomness[10] = tegra30_fuse_readl(FUSE_X_COORDINATE); randomness[11] = tegra30_fuse_readl(FUSE_Y_COORDINATE); add_device_randomness(randomness, sizeof(randomness)); }