arch/arm/mach-sa1100/assabet.c
Source file repositories/reference/linux-study-clean/arch/arm/mach-sa1100/assabet.c
File Facts
- System
- Linux kernel
- Corpus path
arch/arm/mach-sa1100/assabet.c- Extension
.c- Size
- 18345 bytes
- Lines
- 746
- Domain
- Architecture Layer
- Bucket
- arch/arm
- Inferred role
- Architecture Layer: exported/initcall integration point
- Status
- integration implementation candidate
Why This File Exists
CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.
- CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.
- Exports symbols or registers init work; inspect boot/module ordering and who consumes the exported contract.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/init.hlinux/kernel.hlinux/module.hlinux/errno.hlinux/gpio/driver.hlinux/gpio/gpio-reg.hlinux/gpio/machine.hlinux/gpio_keys.hlinux/ioport.hlinux/platform_data/sa11x0-serial.hlinux/regulator/fixed.hlinux/regulator/machine.hlinux/serial_core.hlinux/platform_device.hlinux/mfd/ucb1x00.hlinux/mtd/mtd.hlinux/mtd/partitions.hlinux/delay.hlinux/mm.hlinux/leds.hlinux/slab.hvideo/sa1100fb.hmach/hardware.hasm/mach-types.hasm/setup.hasm/page.hasm/pgtable-hwdef.hasm/tlbflush.hasm/mach/arch.hasm/mach/flash.hasm/mach/map.hmach/assabet.h
Detected Declarations
function ASSABET_BCR_frobfunction assabet_init_gpiofunction adv7171_startfunction adv7171_stopfunction adv7171_sendfunction adv7171_writefunction adv7171_sleepfunction assabet_codec_resetfunction assabet_ucb1x00_resetfunction assabet_uda1341_resetfunction assabet_lcd_set_visualfunction assabet_lcd_backlight_powerfunction controllerfunction assabet_pal_backlight_powerfunction assabet_pal_powerfunction assabet_initfunction paging_initfunction get_assabet_scrfunction fixup_assabetfunction assabet_uart_pmfunction assabet_map_iofunction assabet_init_irqexport SCR_valueexport ASSABET_BCR_frobexport assabet_uda1341_reset
Annotated Snippet
if (codec_nreset) {
ASSABET_BCR_set(ASSABET_BCR_NCODEC_RST);
adv7171_sleep();
} else {
ASSABET_BCR_clear(ASSABET_BCR_NCODEC_RST);
}
}
local_irq_restore(flags);
}
static void assabet_ucb1x00_reset(enum ucb1x00_reset state)
{
int set = state == UCB_RST_REMOVE || state == UCB_RST_SUSPEND ||
state == UCB_RST_PROBE_FAIL;
assabet_codec_reset(RST_UCB1X00, set);
}
void assabet_uda1341_reset(int set)
{
assabet_codec_reset(RST_UDA1341, set);
}
EXPORT_SYMBOL(assabet_uda1341_reset);
/*
* Assabet flash support code.
*/
#ifdef ASSABET_REV_4
/*
* Phase 4 Assabet has two 28F160B3 flash parts in bank 0:
*/
static struct mtd_partition assabet_partitions[] = {
{
.name = "bootloader",
.size = 0x00020000,
.offset = 0,
.mask_flags = MTD_WRITEABLE,
}, {
.name = "bootloader params",
.size = 0x00020000,
.offset = MTDPART_OFS_APPEND,
.mask_flags = MTD_WRITEABLE,
}, {
.name = "jffs",
.size = MTDPART_SIZ_FULL,
.offset = MTDPART_OFS_APPEND,
}
};
#else
/*
* Phase 5 Assabet has two 28F128J3A flash parts in bank 0:
*/
static struct mtd_partition assabet_partitions[] = {
{
.name = "bootloader",
.size = 0x00040000,
.offset = 0,
.mask_flags = MTD_WRITEABLE,
}, {
.name = "bootloader params",
.size = 0x00040000,
.offset = MTDPART_OFS_APPEND,
.mask_flags = MTD_WRITEABLE,
}, {
.name = "jffs",
.size = MTDPART_SIZ_FULL,
.offset = MTDPART_OFS_APPEND,
}
};
#endif
static struct flash_platform_data assabet_flash_data = {
.map_name = "cfi_probe",
.parts = assabet_partitions,
.nr_parts = ARRAY_SIZE(assabet_partitions),
};
static struct resource assabet_flash_resources[] = {
DEFINE_RES_MEM(SA1100_CS0_PHYS, SZ_32M),
DEFINE_RES_MEM(SA1100_CS1_PHYS, SZ_32M),
};
static struct ucb1x00_plat_data assabet_ucb1x00_data = {
.reset = assabet_ucb1x00_reset,
.gpio_base = -1,
.can_wakeup = 1,
};
Annotation
- Immediate include surface: `linux/init.h`, `linux/kernel.h`, `linux/module.h`, `linux/errno.h`, `linux/gpio/driver.h`, `linux/gpio/gpio-reg.h`, `linux/gpio/machine.h`, `linux/gpio_keys.h`.
- Detected declarations: `function ASSABET_BCR_frob`, `function assabet_init_gpio`, `function adv7171_start`, `function adv7171_stop`, `function adv7171_send`, `function adv7171_write`, `function adv7171_sleep`, `function assabet_codec_reset`, `function assabet_ucb1x00_reset`, `function assabet_uda1341_reset`.
- Atlas domain: Architecture Layer / arch/arm.
- Implementation status: integration implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.